0% found this document useful (0 votes)
11 views

Assignment 1- Loss-Less Compression

Uploaded by

radin1381s
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Assignment 1- Loss-Less Compression

Uploaded by

radin1381s
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

‫« بسمه تعالی»‬

‫سیستمهای چندرسانهای‬

‫‪Multimedia Systems‬‬
‫مدرس‪ :‬میثم روستائی‬

‫تاریخ تحویل‪1402/09/10 :‬‬ ‫تمرین اول‪LossLess Coding Techniques :‬‬

‫مقدمه‬
‫یک تصویر دیجیتال بدست آمده از یک عکس معمولی‪ ،‬فضای ذخیره سازی زیادی نیاز دارد‪ .‬به عنوان مثال یک تصویر رنگی‬
‫‪ ٥12*٥12‬كه رنگ هر پیکسل را با ‪ 24‬بیت نشان میدهد‪ ٧٦٨ ،‬كیلوبایت از حجم یک دیسک را اشغال میكند‪ .‬برای انتقال چنین‬
‫تصویری سادهای با یک مودم به زمان زیادی نیاز است‪ .‬هدف از فشرده سازی تصویر كاهش میزان دادههای مورد نیاز برای نشان دادن‬
‫تصاویر دیجیتال و بنابراین كاهش هزینه انتقال و ذخیره سازی میباشد‪.‬‬
‫فشردهسازی تصویر نقش كلیدی در بسیاری از كاربردها دارد‪ .‬این كاربردها شامل پایگاه داده تصویر‪ ،‬مخابره تصویر‪ ،‬استفاده از تصاویر‬
‫ماهواره ای برای كاربردهای آب و هوا‪ ،‬تصویربرداری اسناد‪ ،‬تصویر برداری پزشکی‪ ،‬انتقال توسط دورنگار‪ ،‬كنترل وسایل نقلیه نظامی و‬
‫فضایی از راه دور كاربرد دارد‪ .‬به طور خالصه‪ ،‬كاربردهای روزافزون پردازش تصویر‪ ،‬به دستکاری‪ ،‬ذخیره سازی و انتقال تصاویر دودویی‪،‬‬
‫سیاه سفید یا رنگی به شکلی كارا و مؤثر بستگی دارد‪.‬‬

‫الگوریتم کدگذاری‬
‫به طور كلی‪ ،‬روش های كدینگ می توانند به دو دسته بدون تلفات (‪ )LossLess‬و با تلفات (‪ )Lossy‬تقسیمبندی شوند‪ .‬در كدینگ‬
‫بدون تلفات‪ ،‬مقادیر نمونههای اصلی دوباره دقیقا ً به دست میآیند‪ .‬در كدینگ با تلفات‪ ،‬سیگنال اصلی تا حدودی تغییر میكند ولی‬
‫به نرخ فشردهسازی باالتری دست مییابیم‪ .‬در تمرین اول بر روی پیاده سازی الگوریتم كدگذاری بدون تلفات ‪ LZW‬تمركز میكنیم‬
‫و خروجی بدست آمده را با نرخ بهینه (‪ )Entropy‬مورد مقایسه قرار میدهیم‪.‬‬
‫كدینگ ‪ LZW‬الگوریتم مورد استفاده در بسیاری از نرمافزارهای عمومی فشرده سازی اطالعات مانند ‪ gzip‬و ‪ pkzip‬بوده است‪.‬‬
‫یکی از مشهورترین فرمتهای فایلهای گرافیکی‪ GIF‬هم از طرح كدینگ ‪ LZW‬استفاده میكند‪ .‬این رویکرد یک از روشهای‬
‫تطبیقی (‪ )Adaptive‬مبتنی بر لغتنامه است كه به دنبال آمادهسازی لیستی از الگوهای پرتکرار و استفاده از آن برای كدگذاری‬
‫است‪ .‬این الگوریتم با یک لغتنامه از نمادهای پایهای شروع میكند‪.‬‬

‫آزمایش‬
‫در این تمرین به دنبال فشرده سازی یک تصویر تصادفی ‪ gray scale‬هستیم‪ .‬نمادها در این حالت شماره رنگها میباشد كه‬
‫میتواند در بازه ‪ 0‬تا ‪ 255‬تغییر كند‪.‬‬
‫الگوریتم مورد استفاده ‪ LZW‬میباشد و لغتنامه اولیه شامل سه عنصر }‪ {0: 1, 155:2, 255:3‬میباشد و این لغتنامه حداكثر‬
‫میتواند شامل ‪ 512‬عنصر شود (پس هر عنصر ارسالی به ‪ 9‬بیت نیاز دارد در حالی كه در ارسال عادی هر نماد ارسالی به ‪ 8‬بیت نیاز‬
‫دارد‪ .‬احتماال به این فکر میكنید پس چرا فشردهسازی را انجام میدهیم؟! واقعا چرا؟)‪ .‬دقت كنید با تنظیمات در نظر گرفته شده‪،‬‬
‫زمانی كه لغتنامه تکمیل شود‪ ،‬لغتنامه دوباره به حالت اولیه برگشت میكند‪.‬‬
‫جهت راهنمایی‪ ،‬توجه داشته باشید كه نمادهای پشت سر هم میتواند به شکل یک لیست در دیکشنری به عنوان ‪ key‬ذخیره شوند‬
‫(به عنوان مثال‪ ،‬كلید مربوط به دو پیکسل پشت سر هم با مقادیر ‪ 0‬و ‪ 255‬میتواند به صورت ]‪ [0,255‬به دیکشنری اضافه شود)‬
‫و یا میتوانید از توابع پردازش رشتهها استفاده كنید (به عنوان مثال كلید مربوط به دو پیکسل متوالی با مقادیر رنگ ‪ 0‬و ‪ 255‬را به‬
‫صورت "‪ "0, 255‬ذخیره كنید‪.‬‬
‫بخش اول‪ :‬برنامه اصلی به عنوان ورودی یک تصویر ‪ gray scale‬را دریافت كرده و تابع ‪ LZW_Encoder‬را فراخوانی‬ ‫‪-‬‬
‫میكند تا آن را كدگذاری كند و به عنوان خروجی برگرداند‪.‬‬
‫بخش دوم‪ :‬برنامه اصلی خروجی تابع ‪ Encoder‬را دریافت كرده و تابع ‪ LZW_Decoder‬را فراخوانی میكند تا رمزگشایی‬ ‫‪-‬‬
‫انجام شود و ماتریس تصویر را به عنوان خروجی برگرداند‪.‬‬
‫بخش سوم‪ :‬برنامه اصلی‪ ،‬تصویر ورودی و تصویر رمزگشایی شده پس از مرحله دوم را در خروجی نمایش میدهد و همچنین‬ ‫‪-‬‬
‫میزان كارایی الگوریتم ‪ LZW‬پیاده سازی شده را در مقایسه با كدگذاری هر یک از نمادها به صورت مجزا (ارسال تک نماد) و‬
‫در مقایسه با مقدار ‪ Entropy‬مورد بررسی قرار میدهد‪.‬‬

‫گزارش‬

‫برای پیادهسازی میتوانید از هر زبان برنامهنویسی دلخواه استفاده كنید‪ .‬در برخی از زبانها تابع ‪ LZW‬وجود دارد‪ .‬از این تابع‬
‫نمیتوانید استفاده كنید و الگوریتم آن را میبایست خودتان پیادهسازی كنید (در مورد نحوه كار این الگوریتم در ‪ Lecture 5‬به‬
‫طور كامل توضیح داده شده است)‪.‬‬

‫انجام تمرین در قالب گروههای حداكثر دو نفره امکانپذیر است‪ .‬پاسخ تمرین را تا تاریخ مشخص شده در سامانه آپلود بفرمایید‪ .‬فایل‬
‫فشرده ارسالی می بایست شامل كد برنامه و یک فایل گزارش حاوی نحوه پیادهسازی‪ ،‬كامپایل و اجرای برنامه‪ ،‬شیوه پیادهسازی هر‬
‫بخش‪ ،‬و خروجی آن با توجه به ورودی داده شده است‪ .‬ارائه فایل گزارش بسیار مهم میباشد‪.‬‬

‫ضمنا تاریخی برای تحویل تمرین مشخص خواهد شد كه در آن هر گروه موظف به كامپایل برنامه خود‪ ،‬اجرا و پاسخ به سواالت در‬
‫مورد نحوه كد نویسی و عملکرد هر بخش میباشد‪ .‬از هر دو عضو سگروه سواالتی پرسیده خواهد شد‪.‬‬

You might also like