الترميز الحسابي ومعدّل البِت
المرمّز يتّخذ ملايين القرارات (أي وضع تنبّؤ؟ أي حجم بلوك؟ أي MV؟).
ما المعيار؟ ومعادلةٌ واحدة — J = D + λR — تحكمها كلّها. ثم نرى كيف
يبلغ الترميز الحسابي حدّ شانون ويتكيّف مع السياق.
بلوك واحد، خياران لترميزه: (أ) متّجه حركة دقيق + باقٍ صغير = جودة عالية لكن بِتّات أكثر. (ب) متّجه تقريبيّ + باقٍ أكبر = بِتّات أقل لكن جودة أدنى.
أيّهما "أفضل"؟ السؤال بلا معنى وحده — يعتمد على ميزانيتك. لو كان النطاق وفيراً، اختر (أ)؛ ولو ضيّقاً، (ب). تحتاج رقماً واحداً يوازن بين "الخطأ البصري" و"عدد البِتّات" بحيث تقارن أي خيارين. كيف توحّد كمّيتين بوحدتين مختلفتين (تشويه مقابل بِتّات) في معيار قرار واحد؟
معيار لاجرانج — حلّ اللغز
الحلّ هو دالّة التكلفة rate-distortion:
RD costJ = D + λ · R D = التشويه (خطأ بصري، مثلاً SSE) R = عدد البِتّات λ = "سعر البِت" — يربط الوحدتين
لكل خيار، احسب J واختر الأصغر. λ هو المفتاح:
كبير = البِتّات غالية → اختر خيارات أصغر (جودة أقل، حجم أقل).
صغير = البِتّات رخيصة → اختر جودة أعلى. ضبط λ يضبط
نقطة التشغيل على المنحنى — وهو مرتبط بمعامل التكميم.
λ = اختيار ميل المماسّ = نقطة التشغيل. تثبيت λ عبر كل القرارات يعطي ترميزاً متّسقاً (الجودة موزّعة بعدالة على البِتّات).التحكّم بمعدّل البِت — CRF/CBR/VBR
| الوضع | يثبّت | الاستعمال |
|---|---|---|
| CRF (جودة ثابتة) | الجودة (λ تقريباً) — الحجم يتغيّر | التخزين/الأرشفة (أبسط وأكفأ) |
| CBR (معدّل ثابت) | البِتّات/الثانية — الجودة تتغيّر | البثّ بنطاق محدود |
| VBR / مرورين | متوسّط الحجم، يوزّع البِتّات حسب الصعوبة | أفضل جودة لحجم مستهدف |
المرور الثاني (two-pass): المرور الأول يحلّل صعوبة كل مشهد، والثاني يوزّع البِتّات — يعطي المشاهد المعقّدة (انفجار، ماء) أكثر، والثابتة أقل. هذا "تخصيص بِتّات إدراكي" على مستوى الفيلم — نظير تخصيص البِتّات في ضغط الصوت (مسار الصوت، العقدة ٦).
CABAC — الترميز الحسابي المتكيّف
CABAC (Context-Adaptive Binary Arithmetic Coding) يبلغ حدّ شانون (مثل الترميز الحسابي، مسار الصور العقدة ٢) زائداً ميزتين: يحوّل كل رمز لبِتّات ثنائية (binarization)، ويحدّث الاحتمالات حسب السياق أثناء الترميز (احتمال "معامل غير صفري" يعتمد على جيرانه). هذا "الإنتروبي المشروط بالسياق" الذي وعد به مسار الصور — مطبَّقاً ديناميكياً. يكسب ~10-15% فوق Huffman/ CAVLC.
- لبلوك واحد، ولّد عدّة خيارات ترميز (معاملات تكميم مختلفة، أوضاع تنبّؤ مختلفة). لكلٍّ احسب
D(SSE عن الأصل) وR(بِتّات بعد ترميزك). - لقيمة
λمعطاة، احسبJ=D+λRواختر الأصغر. غيّرλوراقب القرار يتحوّل من "جودة عالية" إلى "حجم صغير". ارسم نقاط (R,D) ومماسّاتها. - طبّق
λثابتاً على كل بلوكات إطار، ثمλعشوائياً لكل بلوك. قارن الجودة البصرية عند نفس الحجم — لماذا الثابت أفضل (توزيع عادل)؟ - تحدٍّ: نفّذ ترميزاً حسابياً ثنائياً متكيّف السياق بسيطاً (سياق = قيمة الجار)، وقارنه بـHuffman ثابت على نفس المعاملات.
كل قرارات المرمّز تُحسَم بـJ=D+λR؛ λ يضبط نقطة التشغيل.
التحكّم بالمعدّل (CRF/CBR/VBR/two-pass) يوزّع البِتّات حسب الصعوبة. CABAC يبلغ
H ويتكيّف مع السياق. الآن نملك كوديكاً كاملاً ومُحكَماً. لكن التكميم
يترك آثاراً (مربّعات، رنين)، والمحتوى القديم interlaced. ندخل عالم الفلاتر.