ما هي عملية ضغط الملفات ؟ وكيف تتم ؟

دوماً ما كان يسعى مهندسو البرمجيات لتطوير طرق جديدة تمكّن من تخزين حجم كبير من البيانات في مساحة تخزينية صغيرة، وهذا الأمر كان مهماً عندما كانت محركات الأقراص الصلبة صغيرة جداً، وقد جعله ظهور الانترنت أيضاً أكثر أهمية.

إن ضغط الملفات له دور كبير في الاتصال عبر الشبكة ، حيث يسمح لنا بإرسال بيانات أقل حجماً عبر خطوط الاتصال بحيث يمكننا رفع و تحميل الملفات بشكل أسرع ، وهذا الأمر مفيد جداً خاصة من أجل الشبكات المزدحمة..

فكيف يتمّ ضغط الملفات ؟

تتضمن الإجابة على هذا السؤال تفسير عمليات رياضية معقدة للغاية، وهي أكثر مما يمكن أن نغطيه في هذه المقالة، لكن يمكنك فهم الأساسيات دون الحاجة إلى التعمّق بالعمليات الرياضية والحسابية التي تستخدمها خوارزميات ضغط الملفات ..

تعتمد المكتبات الأكثر شيوعاً لضغط النص على خوارزميتين ، وتستخدمان معاً في نفس الوقت للحصول على نسب ضغط عالية جداً، هما  LZ77 ( Lempel-Ziv Coding )  و Huffman Coding.

Huffman Coding (خوارزميّة هوفمان )هي خوارزمية معقدة للغاية، ولن نغطي كافة التفاصيل المتعلقة بها هنا… لكن بشكل أساسي ، تستخدم هذه الخوارزمية الرياضيات لترميز الأحرف الفردية برموز ثنائية أقصر، بالتالي تتقلص أحجام الملفات بعد هذه العملية.

من ناحية أخرى ، LZ77 خوارزمية بسيطة نسبياً، حيث تسعى لاستبدال الكلمات المكررة بمفتاح أصغر يمثل الكلمة.

لنأخذ هذا النص كمثال:خوارزمية LZ77 تقرأ النص، وتحدد الكلمات المكررة مثل SyrianTech ، فتستبدلها كما يلي:بعد ذلك، عندما تتمّ قراءة النص، سيتمّ استبدال كل (S) ب SyrianTech ، أي يظهر لنا النص الأصلي كما هو دون ضياع أو فقدان في البيانات .

لكن حقيقةً خوارزمية LZ77 لا تستخدم قائمة مفاتيح للدلالة على الكلمات ، وإنما  تستبدل كلّ ظهور مكرّر لكلمة في النص ( في مثالنا هنا SyrianTech) بمؤشر مرجعي في الذاكرة يعود إلى الكلمة الأولى ، فتقرأ SyrianTech بدلاً من (S) :لكي تفهم آلية عمل الخوارزميّة بشكل أفضل ننصحك بمتابعة هذا الفيديو التعليمي :

لا تقوم الخوارزميّة بضغط الكلمات المكررة و حسب بل أيضاً جزء من الكلمة قد يتكرّر في كلمة أخرى  , مثلاً، سيتم ضغط كلمة The حتى ضمن كلمات أخرى مثل  There  و Their و Then

عند وجود عدد كبير من الكلمات المكررة، سنحصل على نسبة عالية من الضغط ، فمثلاً إذا كررنا كلمة SyrianTech مئة مرة، سيكون حجم النص الأساسي 3 كيلوبايت، وعند ضغط الملف، سيأخذ حجماً يصل إلى 158 بايت فقط، فتكون نسبة الضغط 95 % .

لكن هذه النسبة لا تنطبق حقيقةً على النصوص العاديّة إذ أننا نفترض هنا أنّ النص يحوي كلمة واحدة فقط مكررة أكثر من مرّة , لكن بشكل عام عند ضغط الملفات النصية تكون نسبة الضغط بين 30-40% وذلك باستخدام إحدى تنسيقات الضغط مثل ZIP للملف النصي ..

تُطبّق خوارزمية LZ77 على جميع البيانات الثنائية Binary Data, وليس فقط على النص..

و على الرغم من أن ضغط النص بهذه الطريقة يكون أسهل عادة بسبب الكلمات المتكررة التي تستخدمها معظم اللغات ، فقط تكون لغة مثل اللغة الصينية أصعب قليلا لتطبيق الخوارزميّة  …

كيف يتم ضغط الصور والفيديو؟

يتم ضغط الفيديو والصور بشكل مختلف تماما، على عكس النص حيث يمكنك الحصول على ما يسمى Lossless Compression أيّ ( ضغط بدون فقدان للبيانات) …

عند التعامل مع الصور سنحصل على ما يسمى Lossy Compression بمعنى (الضغط مع خسارة ) ، أيّ مع فقدان لبعض البيانات الأصلية ، بحيث أنه كلما زاد ضغط الصورة ، زادت كميّة البيانات المفقودة .

لنأخذ هذا المثال، هذه لقطة شاشة لم يتم ضغطها:لنأخذ الصورة ونفتحها من خلال برنامج الفوتوشوب عدة مرات، وفي كل مرة نقوم بتصدير الصورة بصيغة JPEG بدقة منخفضة، وهذه هي النتيجة:تبدو النتيجة سيئة جداً، أليس كذلك ؟!

ذلك لأننا قمنا بتصدير الصورة كـ JPEG في كل مرة بدقة (جودة الصورة Quality) 0 % , ما يعني أننا قمنا بضغط ملف الصورة وتقليل حجمه ,

الصورة التالية هي الصورة ذاتها بصيغة JPEG ولكن بدقة  50% ، ونلاحظ أنها ً لا تختلف كثيراً عن الصورة الأصل إذا لم تدقق بها عن قرب ! ..الصورة بصيغة PNG كانت بحجم 200 كيلوبايت، أما هذه الصورة ذات الصيغة JPEG بدقة (جودة ) 50 % من دقة الصورة الأصلية فهي بحجم 28 كيلوبايت فقط .

إذاً، كيف يتم توفير كل هذه المساحة؟ خوارزمية JPEG هي بالفعل إنجاز هندسي…

معظم الصور تُخزن كقائمة من الأرقام، وكل رقم يمثل بكسل واحد (وحدة الصورة ), تقوم الخوارزمية  JPEG بتخزين الصور باستخدام ما يسمى Discrete Cosine Transform (التحويل التجيبي المتقطع ) و هو عبارة عن مجموعة موجات جيبية  Sine Waves تمت إضافتها مع بعضها بترددات مختلفة .

تقدم هذه الخوارزمية 64 معادلة ، لكن لا تستخدم جميعها ، كما يحصل في الفوتوشوب وغيره من تطبيقات تحرير الصور (اختيار عدد المعادلات التي يجب استخدامها)، ثم تستخدم هذه التطبيقات ترميز Huffman لتقليل حجم الملف أكثر.

وهذا يعطي صور بصيغة JPEG بنسبة ضغط عالية جداً، حيث بإمكانها تقليل حجم صورة يمكن أن يكون حجمها عدة ميغابايتات إلى بضع كيلوبايتات فقط  ..

يمكنك الإطلاع على هذا الشرح لمعرفة المزيد عن التحويل التجيبي المتقطع وعمل خوارزميّة JPEG :

لكن إن قمت بتكرار ضغط الصورة بهذه الطريقة أكثر من مرة قد تنتج لديك صورة كهذه :إذاً كمية قليلة من عملية الضغط باستخدام JPEG يمكن أن يكون لها تأثير كبير على حجم الملف، وهذا ما يجعل خوارزمية JPEG مفيدة جداً لضغط الصور في مواقع الويب, حيث يتم ضغط معظم الصور التي تراها على الانترنت لتقليل زمن تحميل هذه الصور، خصوصاً لمستخدمي أجهزة الهاتف المحمول و الذين يملكون اتصال بيانات ضعيف.

ضغط الفيديو :

يعمل الفيديو بطريقة مختلفة قليلاً عن الصور ، قد تعتقد أن ضغط الفيديو يتم عن طريق ضغط كل إطار من الفيديو باستخدام خوارزميّة  JPEG ، بالتأكيد يتم ذلك، ولكن بطريقة أفضل ..

إذ يتمّ باستخدام ما يسمى (ضغط الإطار البيني) Interframe Compression ، والذي يقوم بحساب التغييرات بين كل إطار ويخزن هذه التغييرات فقط ، لذلك وعلى سبيل المثال إذا كان لديك مقطع فيديو بلقطة ثابتة نسبياً ولعدة ثوان، فسيتم توفير الكثير من المساحة، لأن خوارزمية الضغط لا تحتاج إلى تخزين كل عناصر اللقطات التي لا تتغير.

Interframe Compression هو السبب الرئيسي في وجود التلفاز الرقمي اليوم والفيديو على الانترنت، فبدونه ستكون مقاطع الفيديو بحجم كبير جداً يصل إلى مئات الجيجابايت، وهذا أكثر مما كان عليه متوسط حجم محركات الأقراص الثابتة عام 2005 عند إطلاق موقع اليوتيوب !!.

نلاحظ أن الصور المتحركة GIF لا تقوم بالضغط باستخدام هذه العملية، وهذا ما يفسر أنها غالباً ما تكون قصيرة وصغيرة، و يبقى حجمها كبير جداً .

هناك ما يجب أخذه بعين الاعتبار حول الفيديو، ألا وهو معدل البت Bit-rate (أي مقدار البيانات المسموح به في كل ثانية )

فإذا كان معدل البت 200 كيلوبت/ثانية ، على سبيل المثال ، عندها سيبدو مقطع الفيديو رديئاً جداً، حيث ترتفع الجودة مع ارتفاع معدل البت ، ولكن في حال وصل إلى أكثر من ميغابايت Megabyte في الثانية، ستحصل أيضاً على مردود سيء !..

لنأخذ على سبيل المثال إطار مكبر من فيديو لـسمكة قنديل البحر، الإطار على اليسار له معدل بت  3 ميغابت/ثانية ، والذي على اليمين بمعدل  100 ميغابت/ثانية :نلاحظ هنا زيادة حجم الملف 30 ضعف، ولكن لا نلاحظ زيادة كبيرة في الجودة !….

بشكل عام، يتراوح معدل البت لمقاطع فيديو اليوتيوب بين 2 و 10 ميغابت/ثانية وذلك يعتمد أيضاً على سرعة الاتصال لديك..

ضغط الصوت:

عملية ضغط الصوت مشابهة بشكل كبير لعملية ضغط النص والصور، فكما أن خوارزمية JPEG تحذف التفاصيل التي لا تراها في الصورة، فإن ضغط الصوت يتمّ بنفس الطريقة (الضغط مع فقدان بعض البيانات ), فأنت لا تحتاج مثلاً لسماع صرير الريشة على أوتار الغيتار إذا كان الصوت الأساسي للغيتار أعلى من هذا الصرير بكثير !.

الملفات الصوتيّة ذات الصيغة mp3 تستخدم أيضاً معدل البت ، ويكون المعدل المنخفض بين 48 و 96 كيلوبت/ثانية ( kb/s  )، والمعدل الجيد جداً يصل إلى  128 إلى 240 كيلوبت/ثانية( kb/s

في حين أن المعدل المرتفع يصل إلى 320 كيلوبت/ثانية ،  لكنّك على الأرجح لن تلاحظ  هذا الاختلاف إلا باستخدام مكبرات جيدة (أو سماعات أذن )…

هناك أيضاً ترميزات أخرى لضغط الصوت دون فقدان البيانات، كـ ترميز FLAC  , الذي يستخدم ترميز LZ77 لضغط الملفات الصوتية دون ضياع للبيانات …

مقالات قد تعجبك :

ما هو ملف DAT , وكيف يمكن فتحه؟
ما هي ملفات XML؟ وكيف يمكن فتحها؟
أفضل مواقع تعديل الصور أون لاين دون برامج
أفضل برامج تشغيل الموسيقى على أجهزة أندرويد
ما هي ملفات PDF؟ وكيف يمكن فتحها ؟

دليل شامل لفهم وحدات تخزين المعلومات

مما لا شك فيه أن واحد من أكثر الأسئلة التقنية شيوعاً هي السؤال عن قياسات سعة التخزين و التحويل فيما بينها مثل كم يساوي 1 تيرا بايت مثلاً .

هذه المقالة تعتبر دليلاً إرشادياً فيما يتعلق بوحدات تخزين المعلومات أو البيانات.

وحدات تخزين المعلومات

في الحاسوب هي الوحدات التي تستخدم لحساب مساحات الذاكرة في الحاسوب، وهي تعبر أساساً عن كمية المعلومات المخزنة وتقاس عادة بالبايتومضاعفاته.

ترتيب وحدات تخزين المعلومات من الأصغر إلى الأكبر :

هذه الوحدات من الأصغر إلى الأكبر  مع التنويه أن كل هذه الوحدات تعتمد على وحدة البايت و التي هي السعة التخزينية اللازمة لتخزين حرف واحد أو رقم واحد .

ترتيب الوحداث القياسية من الأصغر إلى الأكبر :

بيت bit

بايت (B) byte 

كيلو بايت (KB) kilobyte

ميغا بايت (MB) megabyte

غيغا بايت (GB) gigabyte 

تيرا بايت  (TB) terabyte

بيتا بايت (PB) petabyte

إكسا بايت (EB) exabyte

زيتا بايت (ZB) zettabyte

يوتا بايت (YB) yottabyte

التحويل بين هذه الوحدات :

و من أجل التحويل من وحدة أكبر إلى الوحدة الأصغر التي تليها : نضرب ب 1.024

من أجل التحويل من وحدة أصغر إلى الوحدة الأكبر التي تليها مباشرة : نقسم على 1.024

تنويه : قد تجد العديد من المصادر التي تقول أن الفرق بين الوحدة و التي تليها هي 1000 بدلا من 1024 و هذا الأمر قد يكون صحيح في بعض الحالات و لكن في المصلح العملي و مع الأخذ بعين الاعتبار الطريقة التي يستخدم الكومبيوتر فيها أقراص التخزين فإن 1024 هو الأكثر واقعية .

الآن مع بعض الأمثلة للوحدات القياسية :

1 تيرا بايت = 1024 غيغا بايت1,048,576ميغا بايت = 1,073,741,824 كيلو بايت = 1,099,511,627,776بايت

1 غيغا بايت = 1024 ميغا بايت = 1,048,576 كيلو بايت = 1,073,741,824 بايت …

1 ميغا بايت = 1024 كيلو بايت = 1,048,576بايت 

1 كيلو بايت = 1024 بايت 

من أجل التحويل من غيغا بايت إلى ميغا بايت نقوم بالضرب ب 1024 ، و للتحويل من غيغا بايت إلى كيلو بايت نقوم بالضرب ب 1024 مرفوعاً إلى الأس 2 أي نضرب ب 1024 × 1024 = 1,048,576ميغا 

من غيغا بايت إلى بايت نضرب ب 1024 مرفوعاً إلى الأس 3 … و هكذا

كم هو كبر الغيغا بايت GB) gigabyte) :

 

إن الحديث غن الغيغا بايت أمر إعتيادي و يمكن تصور هذه السعة بأريحية كوننا نتعامل معها في الحياة اليومية و مع ذلك نورد الأمثلة التالية :

1 – 1 غيغا بايت يخزن حوالي 300 أغنية بصيغة MP3

2 – إن فيلما واحداً بدقة HD من أفلام نيتفليكس يمكن أن يصل حتى حجم 4 غيغا بايت . أما فيلما بدقة 4K يمكن أن يصل حجمه حتى أكثر من 20 غيغا بايت .

3 – فيلم دي في دي DVD يمكن أن يتسع ل 9.4 غيغا بايت .

4 – معظم ذاكرة التخزين للهواتف الذكية الحالية تبلغ 64 غيغا أو 128 غيغا .

كم هو كبر التيرا بايت Terabyte (TB)

التيرا بايت هي الوحدة الأكثر استخداما حالياً عند الحديث عن الأقراص الصلبة أو الهارد و لتقريب مدى ضخامة سعتها إلى الذهن سنستعين بالأمثلة التالية :

1 – يتطلب لتخزين 1 تيرا بايت 728.177 قرص فلوبي أو 1.498 سيدي .

2 – حالياً فإن معظم الحواسيب الحديثة تستعمل هارد بسعة تتراوح بين 1 إلى 3 تيرا بايت

3 – العديد من مزودات خدمة الإنترنت تزود باقة إنترنت ب التيرا بايت شهرياً

4 – التيليسكوب الفضائي هابل Hubble  يسجل بيانات بحجم حوالي 10 تيرا بايت سنوياً .

5 – تخزين حوالي 130 ألف صورة رقمية يتطلب 1 تيرا بايت من المساحة أي ما يقارب تخزين 400 صورة كل يوم لمدة عام كامل .

6 – حواسيب واستون Waston الخارقة من تصنيع شركة IBM و المخصصة للألعاب تحوي ذاكرة وصول عشوائية 16 تيرا بايت

7 – 1 تيرا بايت يساوي تقريبا أكثر من واحد تريليون بايت .

كم هو كبر البيتا بايت Petabyte

(PB)

من أجل تخيل مدى كبر سعة 1 بيتا بايت نورد الأمثلة التالية :

1 – لتخزين ا بيتا بايت من البيانات نحتاج إلى أكثر من 745 مليون قرص فلوبي أو 1.5 مليون سي دي .

2 – فيلم آفاتر Avatar احتاج إلى حوالي 1 بيتا بايت من التخزين من أجل تصميم الغرافيك الخاص به

3 – إن دماغ الإنسان يمكنه تقديريا تخزين ما قيمته 2.5 بيتا بايت من بيانات الذاكرة .

4 -إن تسجيل فيديو بدقة Full HD بشكل مستمر لمدة 3.4 سنوات دون أي لحظة انقطاع يتطلب 1 بيتا بايت.

5 – 1 بيتاا بايت يكفي لحفظ 4000 صورة رقمية يومياً كامل حياتك .

كم كبر الإكسا بايت Exabyte

(EB)

إن مجرد التفكير بهذه السعة قد تجلب الصداع و لكن من يدري لعنلنا نراها وحدة أساسية في يوم من الأيام و هذا غير مستبعد بسبب التطور التقني الهاائل .

1 – 1 إكسا بايت يعادل السعة التخزينية لحوالي 763 مليار قرص فلوبي أو 1.5 مليار سي دي … هل يمكنك التخيل ؟؟

2 – منذ عام 2010 فقد فإن الإنترنت يتعامل مع حوالي 21 إكسا بايت شهرياً

3 -يمكن حفظ  حوالي 11 مليون فيلم بدقة 4K في 1 إكسا بايت و بسهولة .

4 – 1 إكسا بايت يستطيع تخزين 3000 أضعاف حجم مكتبة الكونغرس الحالية .

5 – إن 1 غرام من الحمض النووي دي إن إي DNA يمكنه تخزين 490 إكسا بايت ( على الأقل نظرياً )

 

نهاية نقوم بوضع هذا الجدول المساعد :