CE40-342_MMS-HW4.pdf

‫بسمه تعالی‬
‫سیستمهای چندرسانهای (‪)40-342‬‬
‫تمرین ‪ :4‬پردازش ویدئو‬
‫دانشکده ی مهندسی کامپیوتر‬
‫دانشگاه شریف‬
‫مهدی امیری‬
‫بهار ‪59‬‬
‫مقدمه‬
‫در این تمرین ابتدا مبانی ویدئو را فرا می گیرید‪ .‬سپس در ادامه نحوهی پردازش و فشردهسازی ویدئو را خواهید آموخت‪.‬در‬
‫انتها باید گزارش از نحوهی انجام تمرین به فرمت ‪ ،pdf‬نمودارها و شکل های خروجی و خود ‪ m‬فایلها را به عنوان جواب‬
‫تمرین ارسال کنید‪.‬‬
‫تمامی فایل های الزم باید به صورت فشرده‪ ،‬که نام آن به صورت ‪ MM_HW4_LastName_StudentID‬است‪ ،‬ارسال‬
‫شوند‪ .‬فایل فشرده ی حاصل باید به آدرس ایمیل ‪ mms2016a@gmail.com‬ارسال شود‪ .‬عنوان ایمیل باید مشابه عنوان‬
‫فایل فشرده ی تمرین باشد‪ .‬آخرین مهلت ارسال تمرین ساعت ‪ 95:95‬تاریخ ‪ 5559/29/92‬میباشد‪.‬‬
‫‪1‬‬
‫‪ .1‬آشنایی با دستورات متلب‬
‫الف‪ ):‬دستورات رایج متلب برای کار با ویدئو در جدول زیر آمده است‪ .‬ابتدا با جستوجو‪ ،‬با نحوهی کار این دستورات‬
‫آشنا شوید‪ ،‬سپس با استفاده از این اطالعات جدول زیر را تکلمیل کنید‪.‬‬
‫کارکرد‬
‫نام دستور‬
‫مثال‬
‫‪aviread‬‬
‫‪mmreader‬‬
‫‪avifile‬‬
‫‪frame2im‬‬
‫‪im2frame‬‬
‫‪addframe‬‬
‫‪movie2avi‬‬
‫ب‪ ):‬با استفاده از دستوراتی که در باال نام برده شد‪ ،‬اطالعات جدول زیر را از ویدئوی شمارهی یک استخراج کنید‪ .‬دقت‬
‫کنید کدهای این قسمت نیز باید تحویل داده شود‪.‬‬
‫ویژگی‬
‫مقدار به همراه واحد و نحوهی به دست آوردن آن‬
‫تعداد فریمهای ویدئو‬
‫نرخ فریمها‬
‫نوع فشردهسازی‬
‫تعداد بیت در هر پیکسل‬
‫فرمت ویدئو (در این مورد تحقیق کنید و به طور خالصه‬
‫توضیح دهید‪).‬‬
‫طول و عرض‬
‫‪ .2‬فشردهسازی و پردازش ویدئو‬
‫‪ 9،5‬ویدئوی شماره ی ‪ 1‬را در متلب بخوانید و برای سواالت زیر کد مربوطه را نوشته و برای هر قسمت توضیحات الزم‬
‫را بنویسید‪.‬‬
‫الف‪ ):‬فریم اول آن را با دستور ‪ imshow‬نمایش دهید ‪.‬هر فریم دارای یك داده ساختاری است که دو فیلد را نگهداری‬
‫میکند ‪.‬در مورد آن تحقیق و ذکر کنید هر فیلد چیست و چه اطالعاتی دربر دارد ‪.‬دستور ‪ imshow‬را برای هر یك از‬
‫فیلدها اجرا و نتیجه را بررسی نمایید ‪.‬تصاویر را در فایل مستند خود قرار دهید‪.‬‬
‫ب‪ ):‬برای کاهش نویز و جزییات ویدیو میتوان ‪ Gaussian filter‬را بر روی ویدیو اجرا نمود ‪.‬در مورد این فیلتر به طور‬
‫خالصه توضیح دهید‪ .‬برنامهای بنویسید که این فیلتر را روی فریم های مضرب ‪ 5‬ویدئو اعمال کند‪ .‬ویدئوی حاصل را در‬
‫فایل جدیدی ذخیره کنید‪.‬‬
‫ج‪ ):‬برنامه ای بنو یسید که روی تمام فریمهای ویدئو فیلتر ‪ median‬را اعمال کند‪ .‬ویدئوی حاصل را در فایل جدیدی‬
‫ذخیره کنید‬
‫د‪ ):‬یکی از روشهای فشردهسازی ویدئو‪ ،‬حذف فریمهایی از آن است‪ ،‬طوری که تماشاگر متوجه این اتفاق نشود‪.‬‬
‫ویدئوی مورد نظر را با این روش فشردهسازی کنید‪ .‬باید فریمهایی از ویدئو حذف شوند که اختالف آنها با فریم‬
‫قبلی و بعدی خود کم باشد‪ .‬به نوع فریمها توجه (‪ )P,I,B‬کنید‪ .‬توضیحات را در گزارش تمرین ذکر کنید‪.‬‬
‫ه‪ ):‬راه دیگر برای فشردهسازی ویدئو‪ ،‬تغییر دادن سایز فریمها است‪ .‬برنامهای بنویسید که ابعاد فریمها را نصف‬
‫کند و حاصل را در فایل جدیدی ذخیره کند‪.‬‬
‫و‪ ):‬ویدئوی شماره ی دو‪ ،‬نسخهی فشرده ی ویدئوی یک است‪ .‬برنامه ای بنویسید که ‪ PSNR‬برای ویدئوی دو‬
‫را به دست آورد‪ .‬روال کار را در گزارش توضیح دهید‪( .‬برای این کار‪ ،‬باید از ‪ luminance‬استفاده کنید‪ .‬بنابراین‬
‫باید برای محاسبهی ‪ ،PSNR‬در ابتدا یک تغییر در فضای رنگ ایجاد کنید‪).‬‬
‫‪ 9،9‬دو تصویر ‪ 5‬و ‪ 4‬در ضمیمه متعلق به دو فریم در یک ویدئو هستند‪ .‬می خواهیم در این قسمت بردارهای‬
‫حرکت دو فریم و تخمین فریم ها با استفاده از آنها را به دست آوریم‪.‬‬
‫الف‪ ):‬دو فریم را در متلب بخوانید و فضای رنگ را به ‪ grayscale‬تبدیل کنید‪ .‬علت نیاز به این تغییر چیست؟‬
‫ب‪ ):‬اختالف دو تصویر را حساب کرده و با استفاده از ‪ imshow‬نشان دهید‪.‬‬
‫ج‪):‬برای پیدا کردن بردار های حرکت‪ ،‬بالک های فریم دوم را در سطح فریم اول جستجو کنید‪ .‬از جستجوی‬
‫کامل استفاده کنید‪ .‬بالکها را ‪ 52×52‬در نظر بگیرید‪ .‬حاال اختالف فریم ها را با استفاده از ‪motion‬‬
‫‪ compensation‬محاسبه کنید و با استفاده از ‪ imshow‬نشان دهید‪.‬‬
‫د‪):‬در مورد روش جستجوی ‪ divide and conquer‬در کالس درس توضیح داده شده است‪ .‬در این قسمت‪،‬‬
‫به جای جستجوی کامل‪ ،‬از این جست وجو استفاده کنید و بردارهای حرکت را به دست آورید‪ .‬در انتهای این‬
‫قسمت نیز اختالف فریم به دست آمده از ‪ motion compensation‬و فریم اصلی را با استفاده از ‪imshow‬‬
‫نشان دهید‪.‬‬
‫‪ 5،9‬تشخیص عوض شدن صحنه‪ 5‬در ویدئو نقش بسیار مهمی دارد‪ .‬در این بخش‪ ،‬به دنبال پیاده سازی یک‬
‫تشخیص دهندهی تعویض صحنه هستیم که انواع مختلف تعویض صحنه را تشخیص دهد‪ .‬تعویض صحنه از‬
‫انواع مختلفی می تواند باشد‪.‬‬
‫‪ :Cut‬یک تغییر ناگهانی در صحنه است‪ .‬برای درک این موضوع با استفاده از ‪ Cut.mpg ،mpgread.m‬را‬
‫بخوانید‪ .‬مشاهده خواهید کرد که تغییر صحنه به صورت کامال ناگهانی و بدون هیچ فریم واسطی انجام خواهد‬
‫شد‪.‬‬
‫‪ :Dissolve‬یک ترکیب خطی وابسته به زمان برای دو صحنه است‪ .‬برای درک این موضوع با استفاده از‬
‫‪ Dissolve.mpg ،mpgread.m‬را بخوانید‪.‬‬
‫‪ :Wipe‬یک صحنه ی قدیمی با یک الگوی خاص به صحنه ی بعدی می رود‪ .‬برای درک بهتر ‪ ،Wipe‬با استفاده‬
‫از ‪ Wipe.mpg ،mpgread.m‬را بخوانید‪.‬‬
‫برای هریک از این سه نوع‪ ،‬یک تابع متلب بنو یسید که تعویض صحنه را تشخیص دهد و فریمی که تغییر صحنه‬
‫در آن رخ داده است را مشخص کند‪.‬‬
‫تشخیص دهنده را بر فایل های ‪ Dissolve.mpg ،Wipe.mpg‬و ‪ Cut.mpg‬اعمال کنید و اندیس فریمهایی‬
‫که تغییر صحنه در آنها رخ می دهد را مشخص کنید‪ .‬اگر تعویض صحنه چند فریم طول کشید‪( ،‬مثال در حالت‬
‫‪ wipe‬ممکن است ده فریم طول بکشد) شما باید بازه ای که تغییر صحنه در آن رخ می دهد را مشخص کنید‪.‬‬
‫در فایل ‪ ،cbswipe.mpg‬انواع مختلفی از تغییر صحنه رخ می دهد‪ .‬توابع خود را برروی این ویدئو اعمال کنید‬
‫و خروجی را گزارش کنید‪.‬‬
‫‪Scene cut‬‬
‫‪1‬‬