0% found this document useful (0 votes)
11 views2 pages

Assignment 1- Loss-Less Compression

Uploaded by

radin1381s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views2 pages

Assignment 1- Loss-Less Compression

Uploaded by

radin1381s
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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