IMG·ARCH
العقدة 05شجرة الخَسورة · القمّة الأولى
SIGNAL

أعظم اختراع في الصورتبني JPEG بيدك

التحويل، التكميم، و JPEG

هنا نبني — لبنة لبنة — أكثر صيغة انتشاراً في التاريخ. لكن الجائزة ليست JPEG، بل المبدأ الذي يحكم كل صيغة خَسورة بعده: الترميز بالتحويل (transform coding).

بلوك ٨×٨ من قيم السطوع. كل قيمة مجرّد رقم. أين "التفصيل الدقيق" وأين "الخشن"؟ لا يمكنك الإشارة لبِكسل وتقول "هذا دقيق" — الدقّة خاصّية للعلاقة بين البِكسلات.

هل يمكن إعادة كتابة البلوك كخليط من ٦٤ نمطاً موجياً معروفاً، فتصبح "كمّية الخشن" رقماً و"كمّية الدقيق" رقماً آخر — فتخفض دقّة أرقام الدقيق وتبقي الخشن؟ وكم نمطاً تحتاج؟ ولماذا ٦٤؟

ليش التحويل: من القيم إلى الترددات

فكرة فورييه: أي إشارة = مجموع موجات جيبية بترددات مختلفة، لكلٍّ وزن. لماذا هذا عبقري للضغط؟ تركيز الطاقة: في الصور الطبيعية معظم الطاقة في الترددات المنخفضة (الخشنة)؛ أوزان العالية ≈ صفر. فبدل ٦٤ قيمة كلّها مهمّة، نحصل على بضع أوزان كبيرة وكثير من الأصفار → إنتروبي منهار. وثانياً، "الدقيق" و"الخشن" صارا أرقاماً منفصلة → نطبّق خسارة متفاوتة (العين تتسامح مع خطأ الترددات العالية).

ليش DCT لا فورييه العادي

فورييه يفترض الإشارة دورية فيخلق قفزات وهمية عند الحواف. DCT يستعمل cosines فقط ويفترض امتداداً مرآتياً → لا قفزات → طاقة أقل في الترددات العالية = تركيز أفضل. لهذا DCT-II قريب من التحويل الأمثل نظرياً (KLT) للصور الطبيعية، لكنه ثابت ورخيص. مقايضة مثالية.

الأنماط الأساسية الـ٦٤ — "المكتبة" التي تخيّلتها

DCT ثنائي البُعد يفكّك بلوك ٨×٨ إلى مجموع موزون من ٦٤ نمطاً. كل نمط تموّج جيبي بتردد أفقي ورأسي محدّدين. هذه الأنماط مرسومة فعلياً بالمعادلة:

FIG 1 أساس DCT الكامل — 64 نمطاً (مرسومة من cos فعلياً)
أعلى-اليسار = DC (رمادي مسطّح = متوسّط البلوك، أخشن خشن). أسفل-اليمين = أعلى تردّد قطري (رقعة شطرنج دقيقة = أدقّ دقيق). معاملات DCT الـ٦٤ = "كم من كل نمط". أي بلوك ٨×٨ = مزيج موزون منها.
DCT-II 2D
F(u,v) = ¼ C(u)C(v) Σₓ Σᵧ f(x,y)·cos[(2x+1)uπ/16]·cos[(2y+1)vπ/16] C(0)=1/√2 , غيرها = 1 # DCT لاخسارة بذاته: IDCT يعيد البلوك بالضبط

التكميم — هنا تحدث الخسارة، وهنا تختبئ العين

نقسّم كل معامل على قيمة من جدول التكميم Q ونقرّب لصحيح. القسمة + التقريب = الخسارة الوحيدة في JPEG. والسحر: قيم Q صغيرة للترددات المنخفضة (خسارة قليلة) وكبيرة للعالية (خسارة كبيرة).

FIG 2 جدول Q = نموذج العين أرقاماً · ومسح zig-zag
جدول Q (يتزايد نحو أسفل-يمين) منخفض=خسارة قليلة (العين حسّاسة) مرتفع=خسارة كبيرة (العين عمياء) zig-zag: يجمع الأصفار في ذيل [DC, منخفض … عالٍ = 0 0 0 0] ← EOB
"إعداد الجودة 0–100" ليس إلا معامل تحجيم لجدول Q. zig-zag يرتّب المعاملات من المنخفض للعالي فيجمع أصفار الترددات العالية في ذيل متّصل → يُمكِّن RLE فعّالاً (رمز EOB يلتقط الباقي).
جذر "تأثير البلوكات" (blocking)

عند الجودة المنخفضة، تُكمَّم معاملات AC لصفر فيصير كل بلوك قريباً من متوسّطه (DC)، وتختلف المتوسّطات بين البلوكات المتجاورة → تظهر حدود ٨×٨. ليس عيباً عشوائياً، بل نتيجة مباشرة لـ(تكميم عدواني + بلوكات مستقلّة). العقدة ٠٦ ستحاربه بـin-loop filtering.

المقايضة الكبرى — rate-distortion

FIG 3 منحنى المعدّل/التشويه — كلّما صغر الحجم زاد الخطأ
الحجم (rate) → التشويه (distortion) → جودة 10: حجم صغير، خطأ فادح، مربّعات جودة 90: حجم أكبر، خطأ ضئيل
في التمرين ستضرب جدول Q بمعاملات مختلفة وترسم هذا المنحنى بنفسك — المقايضة الكبرى من العقدة ٠١، مجسّدة بأرقامك.

خطّ JPEG كاملاً — ٧ خطوات، كلٌّ عقدة بنيتها

RGB → YCbCr [٤] فصل إدراكي → chroma 4:2:0 [٤] خسارة لونية → بلوكات 8×8 → DCT لكل بلوك [٥] لمجال التردد → تكميم بجدول Q [٥] الخسارة الرئيسية = نموذج العين → DC تفاضلي + zig-zag + RLE + Huffman [٢] ترميز إنتروبي → بايتات JPEG (markers [٧])
  1. نفّذ DCT-II و IDCT من المعادلة. تحقّق IDCT(DCT(block))==block (يثبت أن التحويل لاخسارة).
  2. طبّق DCT على بلوك من منطقة ناعمة. اطبع المصفوفة — لاحظ DC ضخماً والبقية تتضاءل. عُدّ المعاملات <1. هذا "الهواء" مُقاساً.
  3. كمّم بجدول Q قياسي ثم أزِل التكميم ثم IDCT. اضرب Q بمعاملات (0.5, 2, 8, 32) وارسم (الجودة → عدد الأصفار → الخطأ) = منحنى rate-distortion.
  4. طبّق zig-zag وأرِ ذيل الأصفار، ثم مرّر على Huffman. قارن 64 بايت خاماً بالحجم بعد كل الخط.
  5. بصري: طبّق الخط على صورة كاملة بجودة منخفضة وشاهد تأثير البلوكات يظهر — أنت من صنعه، وتعرف جذره.
الخلاصة

الترميز بالتحويل يفصل الخشن عن الدقيق ويركّز الطاقة؛ DCT شبه أمثل ورخيص ولاخسارة بذاته؛ التكميم بجدول Q هو الخسارة الوحيدة ونموذج العين أرقاماً؛ ثم خطّ ترميز إنتروبي يجمع كل لبنات العقدتين ٠٢ و٠٣. التقت الشجرتان في آلة واحدة. عيوب JPEG (بلوكات ثابتة، لا تنبّؤ بينها، Huffman) = خارطة طريق لكل ما بعده.