كيف تعمل برامج ضغط الملفات المعروفة مثل (WinRar)؟، وكيف يتم ضغط الملفات النصية وملفات الصوت والصور والفيديوهات؟، وما هي أشهر خوارزميّات الضغط المعروفة؟، كل هذا وأكثر سنتعرّف عليه في هذه المقالة، فتابعوا معنا..
مقدمة:
نستفيد من ضغط الملفات كثيرًا عند مواجهة صعوبات مثل: محدودية مِساحات التخزين، وبطء الاتصال الشبكي، فإذا استطعنا ضغط ملف حجمه 100 ميغا بنسبة 70% فإن إرسال 70 ميغا على شبكة الإنترنت أسرع من إرسال 100 ميغا خاصة إذا كان الاتصال بطيئًا، وكانت سعة قناة الاتصال محدودة، وكذلك عندما تكون مساحات التخزين محدودة بالمقارنة مع أحجام البيانات الضّخمة فإننا نضطر لتقليل حجم البيانات إذا تعذّّرت زيادة مساحة التخزين.
تعتمد خوارزميات ضغط الملفات في صلبها على فكرة التقليل من ظهور البيانات المتكررة (التقليل من الحشو)، فما معنى ذلك؟، لاحظ في هذا المثال البسيط كيف يمكننا اختصار الجملة
AAAAAABB إلى A)6(B)2), فيمكنك الآن اعتبار الجملة الجديدة بمثابة صيغة مضغوطة من الجملة الأصلية، ويمكننا قراءة الجملة الجديدة بالشكل: “كرر A 6 مرات ثمّ B مرتين”. لاحظ أن الجملة الأصلية تحتاج إلى 8 وَحدات تخزين بينما الثانية تحتاج إلى 4 فقط.
خوارزميات ضغط الملفات
يمكننا تقسيم خوارزميات الضغط إلى نوعين:
(Lossless compression): يعني يجب استعادة البيانات الأصلية عند فك الضغط بنسبة 100%، ويستخدم هذا النوع عند ضغط الملفات النصية دائمًا، إذ لا يجب استعادة نص مختلف عن النص الأصلي بعد فك الضغط، ومن أشهر الخوارزميات هذا النوع: هي خوارزمية (LZ77). وفكرتها بكل بساطة: هي استبدال النص الأصلي ب: (رموز + قاموس)، يحتوي القاموس على الحروف التي ظهرت في النص، وتعتبر الرموز هي مؤشرات إلى مداخل القاموس، وفي الحقيقة لا يتم استبدال (الحرف) بحد ذاته (كما في المثال السابق) وإنما يتم استبدال (النمط)، فمثلًا تلاحظ الخوارزمية أن النمط (THE) متكرر في الكلمات التالية:
(the, there, their, they.) فتقوم بوضع كلمة (the) في القاموس واستبدالها من الكلمات السابقة بمؤشر يشير إلى موضعها في القاموس، وعند فك الضغط يتم استبدال المؤشر بالكلمة التي يؤشر عليها.
(Lossy compression): يعني ليس من الضروري عند فك الضغط أن نستعيد البيانات الأصلية بنسبة 100%, بل من الممكن أن نسمح بفقدان بعض هذه البيانات! ويستخدم هذا النوع من الخوارزميات عند ضغط ملفات الصور والصوت والفيديو.. فمثلًا: قد تكون لدينا صورة بدقة (2048 x 1536) يعني أنها مرسومة باستخدام 3,145,728 نقطة لونية (بكسل) وعند تحميلها على الواتساب (whatsApp) مثلًا يقوم التطبيق بضغطها إلى نسخة بأبعاد أقل، ويمكننا ضغطها ببرنامج الضغط او ببرنامج تعديل الصور، مثل فوتوشوب إلى صورة أبعادها الجديدة هي (640×480) يعني إعادة رسمها مع استبدال كل 3 نقاط لونية بنقطة واحدة يكون اللون فيها هو متوسط الألوان الموجودة في الـ3 نقاط الأصلية.
ويمكننا الحصول على صورة جديدة وواضحة بحجم 28kb لصورة أصلية حجمها قبل الضغط حوالي 200kb، ويمكننا في هذا النوع من خوارزميات الضغط أن نحدد عتبة للضغط، فمثلًا يمكننا إعطاء قيمة للعتبة = 75% لضغط ملف حجمه 100 ميغا، ومعنى هذا أننا لا نسمح أن ينقص حجم الملف المضغوط عن 75 ميغا.
كيف يتم ضغط الصور والفيديوهات؟
ضغط الصور
معظم الصور يتم تخزينها على شكل مصفوفات رقمية، حيث تدل الأرقام على درجات لونية ما عدا الصور ذات اللاحظة (JPEG) حيث يتم استبدال المصفوفة الرقمية بتركيب 64 تابع جيبي SINE ويمكنك التلاعب بعددها، فكلما أنقصت عدد التوابع, قلّّت الدقة (في برنامج الفوتوشوب. يتم استخدام (slider) عند تحريكه يتم تغيير عدد هذه التوابع زيادةً ونقصانًا).
ضغط الفيديوهات
عند رفع الفيديو على اليوتيوب بدقة (1080p) نلاحظ أنه بإمكاننا تحميله بدقة (360p) أي بما يعادل ثلث الحجم الأصلي, فالفيديو هو عبارة عن تتالي عدد هائل من الصور (frames)، ولضغط الفيديو الأصلي يمكننا الاستفادة من حقيقة أن الصورة في الفيديو
في اللحظة 00:01 هي نفس الصورة الموجودة في اللحظة 00:02
مع تغيير بسيط في أحد مناطق الصورة, يعني الخلفية غالباً تظل نفسها بين الصورة والصورة التالية، وبناءً على ذلك: يتم:
1- ضغط صور الفيديو بصيغة (JPEG) + حساب الفروقات بين الـ
(frames) المتتالية, فإذا كانت فروقات كبيرة فإننا نخزّّن الـ(frame) الثاني كما هو, ولكن إذا كانت فروقات صغيرة فإننا عوضًا عن تخزين الـ (frame) التالي بكامل حجمه فإننا نقوم بتخزين ال(frame)
الأول + العمليات اللازمة للانتقال منه إلى الـ (frame) الثاني. وعند فك الضغط يتم توليد الـ (frame2) من ال(frame1) بعد أن نطبّّق عليه توابع الانتقال التي قمنا بتخزينها أثناء الضغط. وتسمى هذه التقنية بتقنية
(interframe compression).
ملاحظات:
ظهرت لاحقًا (zip) في عام 1989.
صيغة mp3 هي الأشهر في ضغط الملفات الصوتية.
(Zip): هي صيغة ملفات مضغوطة بينما (WinZip) و(WinRAR): هي برامج تجارية لضغط الملفات.
لا يمكننا ضغط ملف باستخدام خوارزمية (مثل Huffman) ثم فك ضغطه باستخدام خوارزمية أخرى (مثل LZ77).
أشهر خوارزميات الضغط هي: (Shannon-Fano Coding), (Huffman coding), (Run Length Encoding), (LZ77 & LZ78). وأفضلها هي (huffman)، وأسوؤها (نسبيًا) هي (RLE).
سؤال المقال:
هل يمكننا ضغط الملف المضغوط ثم ضغط الملف الناتج ثم ضغط الملف الناتج وهكذا؟؟ وإلى متى يمكننا الاستمرار بالضغط؟.
إعداد: محمد سليمان
تدقيق لُغوي: ليث النيص