بسمه تعالی سیستمهای چندرسانهای ()44-243 تمرین :4پردازش ویدیو دانشکده مهندسی کامپیوتر دانشگاه صنعتی شریف دکتر حمیدرضا ربیعی اردیبهشت 49 مقدمه در این تمرین ابتدا مبانی ویدیو را فرا میگیرید سپس نحوهی فشردهسازی ویدیو را در ادامه بررسی خواهید کرد. آنچه که بایستی تحویل داده شود شامل پاسخ سواالت مطرح شده در صورت تمرینها )در قالب یك گزارش با فرمت ، PDF نمودارها و شكلهای خروجی mفایلها و خود mفایلها) هستند .لطفا تمامی فایلها را به صورت یك فایل فشرده ،که نام آن در قالب MM_HW4_StudentIDباشد که در آن به جای StudentIDشماره دانشجویی شما قرار میگیرد ،به آدرس multimedia.ce.sharif@gmail.comبفرستید .لطفا عنوان ایمیل ارسالی را نیز مانند نام قالب فوق قرار دهید .مهلت تحویل خروجیها ساعت ۹۵:۳۲تاریخ ۲۴/۸۵/۸۰است. .1آشنایی با امکانات متلب .1.1چند دستور رایجی که برای کار با ویدیو در نرمافزار متلب استفاده میشود ،در جدول زیر آمده است .با جستوجو و کار با این دستورات ضمن آشنایی با آنها برای بخشهای آتی این تمرین ،به تكمیل جدول زیر بپردازید: نام دستور aviread mmreader avifile frame2im im2frame addframe movie2avi توضیح عملكرد تابع ذکر مثال از کاربرد .1.1فایل ویدیو شمارهی 1ضمیمهی تمرین را در متلب بخوانید و اطالعات جدول زیر را از آن استخراج نمایید ،برای هر مورد ،دستور متلب ای که اطالعات را از آن استخراج نمودهاید و خروجی را قرار دهید .دستورات متلب نوشته شده و تكمیلشدهی جدول زیر ،خروجی این بخش هستند. ویژگی مقدار به همراه واحد و نحوهی استخراج آن تعداد فریمهای ویدیو نرخ فریمها نوع فشردهسازی تعداد بیت در هر پیكسل فرمت ویدیو (در مورد این فرمت تحقیق کنید و در حد یك پاراگراف توضیح دهید) طول و عرض .2فشردهسازی ویدیو .1.1فایل ویدیوی شمارهی 1را در متلب بخوانید و برای سواالت زیر برنامهی مربوط را نوشته و به آنها پاسخ دهید: الف) با استفاده از دستور ” “movieفیلم را در متلب مشاهده نمایید. ب) فریم اول آن را با دستور imshowنمایش دهید .هر فریم دارای یك دادهساختاری است که دو فیلد را نگهداری میکند .در مورد آن تحقیق و ذکر کنید هر فیلد چیست و چه اطالعاتی دربر دارد .دستور imshowرا برای هر یك از فیلدها اجرا و نتیجه را بررسی نمایید .تصاویر را در فایل مستند خود قرار دهید. ج) برای کاهش نویز و جزییات ویدیو میتوان Gaussian filterرا بر روی ویدیو اجرا نمود .در مورد این فیلتر در حد دو پاراگراف توضیح دهید .سپس برنامهای بنویسید که روی فریمهای ضریب ۳این ویدیو ( ،منظور فریم ۳ام 1۸ ،ام 1۳ ،ام و )...فیلتر مذکور را با توابع متلب اعمال نماید و سپس آن را در ویدیوی جدیدی ذخیره کنید. د) یكی از روشهای فشردهسازی ویدیو حذف فریمهایی از آن است ،بهطوری که خدشهای به روند پشروی فیلم وارد نشود و تماشاگر متوجه این اتفاق نشود .ویدیوی موردنظر را با این روش فشرده نمایید .روش خود را شرح دهید و برنامه و ویدیوی خروجی را نیز ضمیمه نمایید. * راهنمایی :فریمهایی باید از ویدیو حذف شوند که اختالف آن با فریم قبل و بعد خود کم باشد .در این بین به انواع فریمها ( I , Pو )..توجه داشته باشید .کدام یك از این فریمها را میتوان حذف کرد؟ معیار شما برای این تشخیص چیست؟ کلیهی موارد را که درنظر میگیرد در فایل توضیحات ذکر نمایید. ه) راه دیگر برای فشردهسازی ویدیو ،کاهش اندازهی فریمهاست .برنامهای بنویسید که اندازهی فریمهای ویدیو را نصف نماید .شرح روش خود را ذکر نمایید. و) کاهش کیفیت ویدیو ،راهکار دیگری برای فشردهسازی آن است .برای این منظور برنامهای بنویسید که پس از خواندن فریمهای ویدیو ابتدا با نرخ down sample ،۹نماید و سپس با همان نرخ up sampleکند .ویدیوی تولیدی از فریمهای جدید را با ویدیوی اولیه مقایسه کنید .تفاوت کیفیت خروجی با فیلم اصلی را شرح دهید .حجم و ویژگیهای ویدیو چه تغییری داشته است؟ .1.1 دو تصویر ۴و ۳دو فریم از یك ویدیو هستند .هدف ما در این بخش به دست آمدن بردار حرکت برای این دو فریم و تخمین فریمها با استفاده از آنهاست .مراحل گام به گام را زیر برای رسیدن به این هدف انجام دهید و در مستند خود خروجی هر مرحله را ذکر نمایید و برنامههای متلب را ضمیمهی تمرین قرار دهید. الف) دو فریم را در متلب بخوانید و به فضای رنگ grayscaleتبدیل کنید .علت نیاز به این تغییر فضا برای گام- های آتی چیست؟ ب) اختالف دو تصویر را حساب کرده و با دستور imshowنمایش دهید. ج) در تمامی سطح دو تصویر جستجوی کامل انجام دهید .برای این منظور از ماکروبالک 11 11استفاده نماید و تفاوت دو تصویر را با استفاده از motion compensationحساب کرده و آن را نمایش دهید. د) یك جستجوی سه مرحلهای motion estimationپیادهسازی کنید و motion vectorماکروبالک واقع شده در سطر 1۸و ستون 1۸را پیدا کنید. ه) خروجی به دست آمده از گامهای گذشته را باهم مقایسه کنید .کدام یك بیشتر فشرده است؟ * راهنمایی :آنتروپی خروجیها را باهم مقایسه کنید .برای این منظور میتوان از دستور )( entropyدر متلب استفاده کرد. و) با اجرای تابع قسمت "د" برای تمامی ماکروبالکها ،از روی فریم اول (تصویر شمارهی )۴فریم تخمینی بعدی را به دست آورید و آن را ذخیره نمایید و با فریم دوم (تصویر شمارهی )۳مقایسه کنید .میدان حرکت را با کمك دستور quiverدر متلب رسم کنید. .1.2 جستجوی 2D Logarithmicرا برای motion vectorهای شكل زیر به کار بگیرید .فریم کنونی و هدف در اینجا از نوع p-farmeهستند .سایز ماکروبالک ۴ ۴است MV(x, y) Motion vector .که در آن ] x[p, pو ] y[p, pکه p ۳است .ماکروبالک در فریم هدف مختصات نقطهی سمت چپ باالی ماکروبالک ) (xt , ytاست که ۲پیكسل پررنگ ماکروبالک دارای مقدار شدت 1۸است و 7پیكسل دیگر آن دارای مقدار شدت 1۸۸هستند .در فریم مرجع ۰ ،پیكسل پررنگ با شدت 1۸۸موجود است. الف) بهترین مقدار xو yو )Mean Absolute Error( MAEبرای این ماکروبالک را محاسبه کنید. ب) مرحله به مرحلهی روش جستجوی 2D Logarithmicرا بر روی شكل نشان دهید .در هر مرحله مكان و مسیر جستجو و مقادیر بخش الف را نشان دهید. .1.2شكل و توضیحات زیر برگرفته از صفحهی ،۹۲7کتاب درسی است که در آن در مورد نحوهی کدینگ فریم Iیك ویدیو توضیح داده شده است .پس از مطالعهی آن ،آزمایش زیر را بر روی ویدیوی شمارهی ،۹انجام دهید. الف) یك فریم Iاز این ویدیو انتخاب کنید .چگونه این کار رو انجام میدهید؟ روش شما برای تشخیص فریم I چیست؟ ب) در اولین گام این کدینگ ،بر روی فریم انتخابی سه مولفهی ( )Y, Cr, Cbرا جدا کنید. * برای اجرای سایر بخشها ،جهت راهنمایی ،نمونهی کدها نوشته شده است .آنها را بر روی خروجی گام دوم خود اعمال کنید و نتایج را بررسی نمایید. ج) بر روی بالکهای ۰ ۰هر یك از مولفهها ،تبدیل DCTاعمال کنید. ;)'A_DCT = blkproc (A,[8 8],'dct2 د) بر روی خروجی هر یك از مولفههای قسمت قبل ،کوانتایز انجام دهید. ;)'A_Q = blkproc(A_DCT,[8 8],'mask2 ه) برنامهای بنویسید که با اسكن زیگزاگ بر روی ماتریسهای گام قبل ،رشتهی Entropy codingآن را به دست آورید و در سه فایل notepadبا نامهای Cb_Entropy.txt ،Y_Entropy.txtو Cr_Entropy.txtضمیمهی تمرین خود قرار دهید. * تابع mask2استفاده شده در کدهای فوق به شرح زیر است: ;)function [y]=mask2(x % Normally c=1 ;c=1 ;mask=[16 11 10 16 24 40 51 61 ;12 12 14 19 26 58 60 55 ;14 13 16 24 40 57 69 56 ;14 17 22 29 51 87 80 62 ;18 22 37 56 68 109 103 77 ;24 35 55 64 81 104 113 92 ;49 64 78 87 103 121 120 101 ;]72 92 95 56 112 100 103 99 ;mask=c*mask ;)y=round(x./mask پایان
© Copyright 2025 Paperzz