السلام عليكم ورحمة الله وبركاته
تنبيه: إذا كنت تريد معرفة طريقة الإنتاج بـ 10 بت فقط فتوجه رأساً إلى نهاية الموضوع ودعك من وجع الدماغ. هذا الموضوع لا يزال مسودة، أنوي إضافة أشياء أخرى لمن يريد أن يتعلم.
طبعاً، (لا) تذكرون جميعاً أنني تحدثت عن شيء اسمه quantization في موضوع المرجع الشامل. و(لا) تذكرون أيضاً أنني وضعت صوراً تشرح مفهوم الـ quantization. ولا بد أنكم (لم تلاحظوا) لاحظتم الفرق بين شكل الإشارة قبل وبعد الـ quantization. هذا الفرق يسمى quantization error، يعني العيب الذي تتسبب فيه عملية الـ quantization (ربما تقولون الآن: يلعن أبو الـ quantization هذه). لكن، هذا ليس كل شيء. تحدثت أيضاً عن شيء (لا) تذكرونه بالطبع وهو motion estimation. هذه بدورها تضيف نوعين من العيوب إلى الفيديو وهما estimation error و rounding error. هنا ندخل بعجالة في لب الموضوع....
الديثر يساعد على التخلص من quantization error والإنتاج بـ 10 بت يستعمل الديثر للحد من rounding errors. يعني الإنتاج بعشرة بت يحد من كليهما معاً في ضربة واحد ويزيدك بقشيش إضافي قيمته تتمثل في التخفيض من حجم الفيديو بما يمكن أن يصل إلى 50 بالمئة مع نفس الجودة. إن كنتم لا تعرفون قصة septs d’un coup فسيصعب عليكم تصور مدى روعة أسلوب الإنتاج هذا.
randomn00b: لكن يا أخوي، إنت مو قلت إنتاج أبو عشرة بت يعني زيادة 2 بت، صح؟ يعني زيادة في الحجم مو تخفيض يا شيخ !
لا يا بُنيْ، العشرة يُقصد بها دقة الحسابات التي يجريها الانكودر (accuracy, precision... w/e) أما تخزين الـ bitstream فيكون في 8 بت !
بعدها، على مستوى الديكودر، يقع التحويل إلى 10 بت. وبالمناسبة، دقة الحسابات تعني دقة الألوان ومشابهتها لألوان المصدر.
ربما (لن) يطرح أحدكم هذا السؤال:
س: ما هذا الديثر الذي تتحدث عنه؟
ج: الديثر تقنية مستعملة في معالجة الإشارة عموما وخاصة الصوت والفيديو. ما يهمنا هنا هو الفيديو. يضيف الديثر نوعاً من الوشوشة (noise) التي من شأنها الحد من أخذ "بكسلات" كثيرة ومتجاورة من الصورة لقيمة واحدة. أخذ "بكسلات" كثيرة ومتجاورة من الصورة لقيمة واحدة من شأنه أن يؤدي إلى ما يعرف بالباندينغ وهو تدرج غير انسيابي للألوان. فلنفترض أن لديك مشهد داكن وفيه إضاءة قليلة (غرفة مظلمة في الليل وبابها مفتوح، مثلاً)؛ المناطق القريبة من الباب ستكون أكثر إضاءة من المناطق البعيدة عنه وستتقلص الإضاءة تدريجيا كلما ابتعدت عن الباب. ستأتي عملية الـ quantization وتحد من قيم البكسلات الممكنة (تحد من عدد الألوان الممكنة) وتجمع البكسلات المتجاورة وذات القيم المتقاربة معاً في مناطق جديدة أصغر حجماً ولجميع بكسلاتها قيمة واحدة (لون واحد). ماذا سيحدث حسب رأيك؟ ستحصل على مناطق متلاصقة ولكل منها قيمة مختلفة عن الأخرى = مناطق ذات ألوان مختلفة (تستطيع العين التمييز بينها) وتفصل بينها حدود واضحة للعيان. هنيئاً لك، أخيراً فهمتَ حقيقة الباندينغ وكيفية ظهوره.
الديثر، يا بُنيْ، يضيف الوشوشة (خاصة على الحدود الواضحة للمناطق ذات الأوان المتقاربة) كي لا تبقى هناك بكسلات متقاربة الألوان في منطقة ما بوسع الـ quantization أن تجمعهم في منطقة واحدة وتتسبب بذلك في الباندينغ.
الإنتاج بالـ 10 بت يتيح لك استعمال ألوان أكثر بأربع مرات من الإنتاج العادي بـ 8 بت. وهذا بدوره يساعد الـ quantization على تضييق خطوتها. رسم على السريع للتوضيح قبل أن يغمى عليك أو تقذف بحاسبك في دورة المياه:
لنفترض أن قيم الألوان في المصدر بهذا الشكل:
طبعاً، تلاحظون انسيابية في الانتقال من لون إلى لون كما هي الحال مع الصورة الحقيقية غير المضغوطة.
الآن نطبق الـ quantization، يعني نقلل من عدد القيم (= عدد الألوان) التي يمكن أن يأخذها كل بكسل. نحصل على شيء كهذا:
لاحظتم الانتقالات المفاجئة في القيم (= في الألوان)؟
تلك، يا بُنيْ، هي طريقة ظهور الحدود البشعة والانتقالات المفاجئة التي تسمى باندينغ. ترى منطقة لها امتداد لا بأس به ولون معين، ثم فجأة ترى منطقة أخرى لها لون آخر وبينهما برزخ!
الآن، إذا طبقنا الديثر على الصورة الأولى فسنحصل على شيء كهذا:
randomBakan00b: عمو، طرشتنا بالحديث عن الانتقالات المفاجئة بين القيم وكيف أنها تسبب الباندينغ. هذا الديثر تبعك يسبب انتقالات مفاجئة أكثر!
صغيري، لا أعتقد أنك فهمت شيئاً مما قلته. أنا أتحدث عن انتقالات مفاجئة (وإن كانت بقيم صغيرة) بين مناطق ممتدة لها نفس القيم (=ألوان). ما تراه في الصورة هو انتقال طفيف بين ألوان "بكسلات"، هذا الانتقال تعجز العين البشرية عن ملاحظته.
مع هذا، فإنتاج هذا الكم الهائل من القيم والمحافظة عليها يحتاج إلى عامل quantization صغير جداً (يعني crf صغير) وهذا الأمر يتطلب بترايت عالي جداً في حالة الإنتاج العادي بثمانية بت. هنا يظهر علو كعب الإنتاج بعشرة بت. الإنتاج بعشرة بت يتيح استخدام قيم أكثر بكثير من الإنتاج العادي، فالقيم التي كنت ستخفض الـ crf (= عامل الـ quantization) كي تحافظ عليها صار بوسعك المحافظة عليها دون تخفيض الـ crf. أكرر، لأن الإنتاج بعشرة بت يتيح قيم أكثر فإنك تستطيع المحافظة على القيم الكثيرة بشكل أفضل من الإنتاج العادي.
لا تحسبوا أنني أحسب أن هذا الكلام يسهل فهمه عليكم، لكن، صدقاً، قمت بكثير جداً من المقاربات (approximations) كي أوصل لكم المفهوم العام بشكل علمي حتى إذا تجرأ أحد وسولت له نفسه الطعن في جدوى الإنتاج بعشرة بت تصفعه مباشرة بالدليل العلمي بعيداً عن دروشةِ "الإنتاج بعشرة بت يخفض الحجم ويزيد الجودة، لا أعرف كيف، لكن هذه هي الحقيقة"
طريقة الإنتاج بالانكودر x264 أبو عشرة بت:
سأفترض أنكم تعلمتم من خلال موضوع المرجع كيفية التعامل مع command line أو prompt window أو الدوس كما يحلو لكثير منكم تسميتها.
- حمل ffms2 من هنا: http://ffmpegsource.googlecode.com/files/ffms-2.16.7z وضع الملفات ffms2.dll وffmsindexer.exe في مجلد plugins الخاص بـ avisynth
- افتح my



