من الفيديو إلى الصورة
أغرب وأهمّ نقلة في تاريخ صيغ الصور: أحدث الصيغ لم تُصمَّم كصيغ صور أصلاً. هي إطار واحد مقتطع من ضاغط فيديو. كل "تحسين" هنا هو تعميمٌ لقيدٍ كسرناه في JPEG.
صمّم خَلَفاً لـJPEG. قرّر قبل أن تقرأ:
- حجم البلوك: سماء مسطّحة لا تحتاج تقسيماً دقيقاً، وعين تحتاج بلوكات صغيرة. كيف تجعله متكيّفاً؟ ومن يدفع ثمن وصف التقسيم للفكّاك؟
- العلاقة بين البلوكات: تذكّر Paeth — كيف تتنبّأ ببلوك كامل من البلوكات المجاورة المُفكوكة؟ وكم اتجاهاً تحتاج؟
- تأثير البلوكات: متى تنعّم الحدود — قبل التخزين، بعد الفكّ، أم داخل حلقة الترميز؟
- المرمّز: بِمَ تستبدل Huffman وقد صار ANS متاحاً؟
أجب بحدسك. ستجد أنك أعدت اختراع HEVC/AV1.
ليش الفيديو؟ والإدراك المحوري
ضغط الفيديو مشكلة أصعب وأهمّ تجارياً، استثمرت فيها صناعة ضخمة عقوداً (H.264, HEVC, AV1). الإطار intra (keyframe) يُضغط وحده بلا مرجع زمني — بالضبط مثل صورة ثابتة، وطوّرته الصناعة حتى صار أرقى من JPEG.
إطار intra مضغوط = صيغة صورة جاهزة، متفوّقة، ومدعومة عتادياً في كل جهاز. بدل تصميم صيغة من الصفر، اقتطع intra frame من أحدث ضاغط فيديو وغلّفه. هذا كل سرّ WebP و HEIF و AVIF. المقايضة: ترميز بطيء جداً مقابل حجم أصغر وفكّ سريع مسرَّع عتادياً.
القرار ١: تقسيم متكيّف (Quadtree)
القرار ٢: intra prediction — Paeth على منشّطات
قبل التحويل، تنبّأ بمحتوى البلوك من بِكسلات البلوكات المجاورة المُفكوكة (أعلى ويسار)، ثم حوّل وكمّم الخطأ فقط. الخطأ بعد تنبّؤ جيّد إنتروبيه أقل بكثير → التحويل يعمل على إشارة أنظف.
القرارات ٣–٥: تحويلات، مرمّز، وترشيح الحلقة
- تحويلات متعدّدة: DCT و
ADST(يبدأ من صفر عند الحافة المتنبّأ بها) بأحجام ٤×٤ حتى ٦٤×٦٤. يكسر "DCT 8×8 وحيد". - مرمّز حديث: CABAC (ترميز حسابي ثنائي متكيّف السياق) في HEVC، وعائلة arithmetic/rANS في AV1. يكسر "Huffman".
- in-loop filtering: deblocking ينعّم الحدود داخل حلقة الترميز فتُستعمل الصورة المنعّمة كمرجع للتنبّؤ التالي — فلا يتراكم الخطأ. AV1 يضيف CDEF و Loop Restoration.
التنعيم ليس بعد الفكّ ولا قبل التخزين، بل داخل الحلقة: المرمّز والفكّاك يجب أن يبقيا متطابقين في كل خطوة، وإلا انجرف الخطأ.
الصيغ الثلاث — كلٌّ غلافٌ لإطار فيديو
| الصيغة | أصلها | السنة | ملاحظة فلسفية |
|---|---|---|---|
| WebP | VP8 intra | 2010 | أول اختراق "فيديو→صورة"؛ lossy+lossless+alpha+anim |
| HEIF/HEIC | HEVC intra | 2015 | أقوى من JPEG بكثير، لكن مثقل ببراءات HEVC |
| AVIF | AV1 intra | 2019 | royalty-free عمداً — ردّ AOMedia على براءات HEVC |
HEVC المثقل بالرسوم ولّد AV1 الحرّ، تماماً كما ولّدت LZW المثقلة (GIF) صيغةً حرّة (PNG)، وكما تجنّب JPEG الترميز الحسابي المُبرَّأ. تحالف AOMedia (Google, Netflix, Mozilla, Amazon…) صُنع خصّيصاً لبديل حرّ. القانون يصمّم الصيغ — للمرّة الثالثة.
أ — أعِد اختراع intra prediction بيدك (تبنيه فعلاً):
- قسّم صورة رمادية لبلوكات 8×8 وعالجها بترتيب raster. لكل بلوك نفّذ DC/رأسي/أفقي من بِكسلات الحافة المجاورة، واختر الأقلّ خطأً، واحسب residual.
- احسب إنتروبي residual مقابل البلوكات الخام — كم انخفض؟ هذا، بعينيك، لماذا تتفوّق الصيغ الحديثة. ثم طبّق DCT على residual ولاحظ تركيزاً أشدّ.
ب — حلّل بِكسلات حقيقية: حوّل صورة إلى JPEG و WebP و AVIF بجودة بصرية متماثلة، قارن الأحجام، وكبّر منطقة حادّة عند ضغط عنيف. اربط كل artifact بجذره المعماري.
أحدث الصيغ = إطار intra من ضاغط فيديو. كل تحسين = كسر قيد من JPEG: تقسيم متكيّف، intra-prediction (Paeth معمّماً)، تحويلات متعدّدة، مرمّز متكيّف، ترشيح داخل الحلقة. مقايضة جديدة: ترميز بطيء مقابل فكّ سريع عتادياً = صيغة "غير متماثلة". بقي: كيف تُحزَم كل هذه في ملف؟