آشنایی با کدک های تصویر (Video Codecs) - بخش سوم |
کد کردن به صورت Bidirectionalتمام بلاک های فربم های I به صورت کامل کد می شوند، بنابراین دارای بیشترین کیفیت هستند ولی حجم زیادی را اشغال می کنند. در فربم های P بعضی از بلاکها که نسبت به فربم های قبلی تغییر کرده اند به صورت بلاکهای اولیه به صورت کامل کد می شوند، اما بلاکهایی که نسبت به فربم های قبلی تغییر نداشته اند، به صورت فربمهای پیش بینی شده کد می شوند که در حقیقت فقط آدرس آنها را می گیرند. در فربم هایی که به صورت B کد می شوند تعدادی از بلاک ها به صورت بلاکهای اولیه و تعدادی از آنها به صورت بلاک های پیش بینی شده از فربم های قبلی و برخی نیز بصورت پیش بینی شده از فربم های بعدی کد می شوند. بنابراین این نوع از فربم ها داری کمترین حجم از داده ها و دارای پایین ترین کیفیت می باشد.
بسته به نوع تصویر و مقدار فشرده سازی که لازم داریم و همچنین دستگاهی که می خواهیم تصویر کد شده را در آن اجرا کنیم، انتخاب های مختلفی وجود دارد که هر یک بطور اجمال بیان می شوند:
در این حالت تصویر کد شده فاقد فربم هایی که به صورت B فربم کد شده باشند، است. این حالت برای تصاویری که دارای تغییرات تقریباً سریع می باشند، مناسب تر است. در این حالت بدلیل فقدان فربم های B تصویر کد شده در حجم مساوی با حالتی که تصویر کد شده دارای فربمهای B باشد، دارای کیفیتی پایین تر است.
کلمه Adaptive در اینجا به نوع هوشمندی در انتخاب B فریم ها اشاره می کند، به طور مثال اگر در فریمی که یک اسلحه شلیک می کند و آتش ناشی از شلیک اسلحه در یک فریم ظاهر می شود اگر این فریم به عنوان یک فریم B در نظر گرفته شود در تصویر کد شده تقریباً این آتش محو می گردد. به همین دلیل در کدک divx 5.2 در انتخاب B فریم نسبت به مقدار تغییرات نسبت به فریم های پیرامون هوشمندی خاصی صورت می گیرد.
در بعضی از قسمت های یک تصویر ممکن است چند فریم متوالی تقریباً دارای شامل یک صحنه ثابت با تغییرات جزئی باشد در این موارد می توان برای فشرده سازی بیشتر چند فریم به طور متوالی به صورت B فریم کد شوند، به عنوان مثال به صورت IBPBBBPBBP…. البته این انتخاب در صورتی فعال می شود که Divx certified را غیر فعال سازیم.
به دلیل آنکه فریمهای B در تصویر کد شده دارای بلاک هایی می باشد که از روی فریم های P کد شده اند، بنابراین در هنگام دیکد کردن تصویر باید ابتدا فریم های P و سپس فریم های B دیکد شوند. به همین منظور اگر یک فریم به صورت 1(I)2(B)3(P)4(B)5(B)6(B)7(P)… کد شده باشد طریقه چینش آنها در تصویر کد شده به صورت1(I)3(P)2(B)7(P)4(B)5(B)6(B)… خواهد بود تا در موقع دیکد شدن، ابتدا فریم های P کد شوند، سپس در محل مناسب خود قرار بگیرند. چنانچه قبلاً گفته شد در یک کدک divx در فریم های P و B (اگر وجود داشته باشند) هر بلاک در فریم های مجاور جستجو می شود، در حالت ساده هر بلاک با جابجا شدن یک پیکسل یک پیکسل تمام در جهت های گوناکون جستجو می شود که به این روش Whole-pixel گفته می شود. در بعضی مواقع که دوربین در یک تصویر زوم می کند و یا حرکت عرضی و یا گردشی دارد، تعداد زیادی از بلاک ها به اندازه ثابت جابجا می شوند که می توان همه آنها را با یک بردار عمومی در تصویر کد شده ذخیره نمود. در نتیجه این عمل، فشرده سازی زیادی در این نوع از تصاویر حاصل می گردد. این انتخاب نیز بدلیل آنکه دیکدینگ تصویر دارای پیچیدگی زیاد می باشد، جزء Divx certified نمی باشد. |