فصل هفتم - مقدمات تئوری اطالعات Run-Length Coding Variable-Length Coding کدینگ بر مبنای Dictionary کدینگ حسابی )Arithmetic( فشردهسازی بدون اتالف تصویر الگوریتمهای فشردهسازی بدون اتالف )Lossless( (VLC) سیستم های چندرسانه ای 1
مقدمات تئوری اطالعات 2 سیستم های چندرسانه ای
مقدمات تئوری اطالعات فشردهسازی :)Compression( به فرایند کد کردن که منجر به کاهش موثر تعداد کل بیتهای الزم برای ارائه اطالعات مشخصی میشود فشردهسازی گفته میشود. شمای کلی از فشرده سازی 3 سیستم های چندرسانه ای
مقدمات تئوری اطالعات اگر فرایند فشردهسازی و بازگرداندن به حجم اولیه بدون از دست رفتن اطالعات صورت گیرد فشرده سازی بی اتالف )Lossless( است و در غیر این صورت با اتالف )Lossy( است. ضریب فشرده سازی: تعداد بیتها قبل از فشردهسازی تعداد بیتها بعد از فشردهسازی = ضریب فشرده سازی )بزرگتر از یک( 0 1-0 - 1 سیستم های چندرسانه ای 4
S={s 1, s 2,..., s n } مقدمات تئوری اطالعات از یک منبع اطالعاتی برابر است با: آنتروپی η H( S) p log n i1 i 2 1 p i n i1 p i log 2 p در S i - احتمال رخداد s i pi log مشخصکننده میزان اطالعات موجود در s i موجود است بنابراین 1 2 p i میتواند تعیین کننده تعداد بیتهای مورد نیاز برای کد کردن s i باشد. آنتروپی میزانی برای مقدار اطالعات موجود در یک منبع است. سیستم های چندرسانه ای 5
مقدمات تئوری اطالعات هیستوگرام سطح خاکستری دو تصویر )a( هیستوگرام یک تصویر با شدتهای توزیع سطح خاکستری یکنواخت و مساوی را نشان میدهد به ازای هر i داریم: = 1/256 i p بنابراین آنتروپی این تصویر برابر است با: )b( هیستوگرام یک تصویر با دو مقدار ممکن را نشان میدهد. آنتروپی آن 0.92 است. 256 i1 1 log 2 256 = 8 log 2 256 8 256 1 log 3 2 log 3 2 2 6 3 3 2 سیستمهای چندرسانهای
آنتروپی و طول کد آنتروپی η یک مجموع وزنی از مؤلفههای 1 میانگین مقدار اطالعات موجود در هر منبع S log 2 p i است بنابراین نشاندهنده است. آنتروپی η حد پایین برای میانگین تعداد بیتها برای کدکردن هر مجموعه سمبل S را مشخص میکند )با فرض آنکه عالیم ترکیب نشوند(. l میانگین طول )بر حسب بیت( کدهای تولید شده توسط کدکننده است. l سیستم های چندرسانه ای 7
(deterministic) سوال آنتروپی یک منبع قطعی چقدر است 1 ( ) 1 log 0 n HS 2 i1 1 8 سیستم های چندرسانه ای
تمرین اگر دو سمبل A و در سیستم موجود باشند و احتمال حضور هر یک به این ترتیب تعریف شود: P(A)=x و P()=1-x بطوریکه 1=>x=>0. به ازای چه مقداری از x آنتروپی ماکزیمم میشود مسئله را بهصورت تحلیلی حل کنید. 9 سیستم های چندرسانه ای
کدینگ Run-Length 10 سیستم های چندرسانه ای
کدینگ (RLC) Run-Length کدگذاری RLC از نحوه چینش اطالعات در منبع استفاده میکند. منطق اصلی :RLC اگر منبع اطالعات طوری باشد که نمادها به تشکیل گروههای پیوسته تمایل داشته باشند میتوان این نمادها و طول گروه هر یک را برای کدکردن استفاده نمود. سیستم های چندرسانه ای 11
RLC مثال: فرض کنید تصویری سیاه سفید داریم که به ترتیب زیر نمایش داده شده است. )W = سفید و = سیاه( WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW پس از کدگذاری به این رشته می رسیم: 12W112W324W114W کاربردها: بخشی از الگوریتم JPEG در دستگاههای فکس کاربردهای متفاوت بی اتالف 12 سیستم های چندرسانه ای
RLC 13 سیستم های چندرسانه ای
سوال اگر تصویری باینری داشته باشیم که مقادیر پیکسل آن در I نشان داده شده باشد آن را با الگوریتم RLC و با پیمایش Zig-zag کد کنید. 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 I 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 (1,1)(1,0)(4,1)(4,0)(1,1)(4,0)(1,1)(2,0)(1,1)(2,0)(2,1)(13,0) 14 سیستم های چندرسانه ای
کدگذاری با طول متغیر Variable-Length 15 سیستم های چندرسانه ای
کدگذاری با طول متغیر.1.2 الگوریتم کدینگ هافمن (Huffman) روند پایین به باال: تمام نمادها را بر اساس شمار فراوانی آنها در یک لیست مرتب کنید. تا زمانیکه فقط یک نماد باقی بماند ادامه دهید: )1( دو نمادی که دارای کمترین فراوانی هستند را از لیست بردارید. یک زیر درخت هافمن ایجاد کنید که این دو نماد را به عنوان گره فرزند قرار داده و یک گره پدر ایجاد کنید. )2( جمع تعداد فرزندان را به نود پدر اختصاص داده و در لیست به عنوان ترتیب قرارگیری وارد کنید. )3( فرزندان را از لیست حذف کنید. )4( یک کلیدواژه برای هر برگ بر اساس مسیر از ریشه تعیین میشود. سیستم های چندرسانه ای 16
کدگذاری با طول متغیر درخت کدینگ برای HELLO با استفاده از الگوریتم هافمن سیستم های چندرسانه ای 17
سوال مجموعه سمبلهای موجود در سیستم شامل پنج عنصر متفاوت C A D و E است. تعداد تکرار این سمبلها در توالی ورودی به ترتیب 10 12 24 8 و 8 مرتبه است. الف( با استفاده از روش Huffman کد هریک از سمبلها را مشخص نمایید. و طول میانگین کد برای این روش را حساب کنید. ب( انتروپی را برای این سیستم و مجموعه سمبل ها محاسبه کنید. 18 سیستم های چندرسانه ای
خصوصیات کدینگ هافمن 1- خصوصیت منحصر بهفرد پیشوندی: هیچ کد هافمنی پیشوند کد هافمن دیگر نیست. این نکته مانع ایجاد هر گونه ابهامی در مرحله رمزگشایی میشود. -2 بهینگی: حداقل افزونگی کد. دو نماد با کمترین فراوانی دارای طول مساوی برای کد هافمنشان هستند و تنها در آخرین بیت تفاوت دارند. نمادهایی با فراوانی بیشتر دارای کد هافمن کوتاه تری نسبت به نمادهای با فراوانی کمتر هستند. میانگین طول کد برای یک منبع اطالعات S حتما از η+1 کمتر است. l 1 سیستم های چندرسانه ای 19
کد هافمن توسعه یافته و تطبیقی 20 سیستم های چندرسانه ای
کد هافمن توسعه یافته هدف: تمام کدهایی که در کدینگ هافمن تولید میشوند به طول صحیح فضا اشغال log به سمت صفرمیل میکند و در نتیجه 1 میکنند.زمانی که p i خیلی بزرگ باشد بیدلیل حافظه اشغال میشود. 2 p i الفبای توسعه یافته: در مجموعه زیر: S = {s1, s2,..., sn}, اگر k سمبل با یکدیگر تشکیل یک گروه را داده باشند الفبای توسعه یافته به صورت زیر است: k symbols ( k ) S s1s1 s1 s1s1 s2 s1s1 sn s1s1 s2s1 snsn sn {,,,,,, }. -اندازه این الفبای جدید است. n k سیستم های چندرسانه ای 21
کد هافمن توسعه یافته بدست برای زیر رابطه آوردن میانگین تعداد بیت های هر سمبل قابل اثبات است: l 1 k که در مقایسه با کد نویسی هافمن اصلی بهبود یافته است البته نه به میزان زیاد. مشکل: اگر k نسبتا بزرگ باشد )مثال برای 3 k( ( k n( عدد بسیار بزرگی میشود. و 1 n تعداد سمبل ها سیستم های چندرسانه ای 22
کد هافمن توسعه یافته)مثال( WWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWW آنتروپی = 0.37 حجم فایل فشرده شده 70 بیت. ایجاد حروف الفبای جدید WWW=Z ZZZZZZZZZZZZZZZWWZZZZZZ حجم فایل فشرده شده 35 بیت. 23 سیستم های چندرسانه ای
کد هافمن تطبیقی اطالعات آماری سمبل ها به مرور جمع آوری شده و به صورت پویا به شکل یک رشته داده به روز رسانی می شوند. ENCODER ------- Initial_code(); while not EOF { get(c); encode(c); update_tree(c); } DECODER ------- Initial_code(); while not EOF { decode(c); output(c); update_tree(c); } سیستم های چندرسانه ای 24
کد هافمن تطبیقی Initial_code کدهای اولیه برای سمبلها بدون اطالع از تعدادشان را تعیین میکند. دستور update_tree یک درخت هافمن تطبیق یافته میسازد. در واقع این دستور دو عمل انجام میدهد: الف( تعداد )count( را برای سمبلها یک واحد افزایش میدهد یا سمبلی جدید ایجاد میکند. ب( وضعیت یا شکل درخت جدید را بهروز رسانی میکند. و update_tree به Initial_code از روالهای decoder و encoder طور کامال مشابهی استفاده میکنند. سیستم های چندرسانه ای 25
کد هافمن تطبیقی گرهها به ترتیب از چپ به راست و پایین به باال شمارهگذاری شدهاند. درخت همیشه باید خاصیت sibling خود را حفظ کند. یعنی تمام گرهها )داخلی و برگ( باید بر اساس تعدادشان خود به صورت صعودی مرتب باشند. اگر خاصیت sibling نقض شود رویه swap فراخوانی میشود تا درخت را مجددا مرتب و بهروزرسانی کند. هنگامی که استفاده از swap الزم میشود دورترین گره با مقدار count=n با گرهای که count آن برابر 1+N است جابجا میشود. سیستم های چندرسانه ای 26
کد هافمن تطبیقی) Swap ( +1 عدد داخل پرانتز تعداد تکرار را می رساند جابجایی گره ها برای به روز رسانی درخت هافمن تطبیق یافته سیستم های چندرسانه ای 27
کد هافمن تطبیقی) Swap ( سیستم های چندرسانه ای 28
کد هافمن تطبیقی هر کاراکتر یا سمبلی که برای اولین بار فرستاده میشود باید به وسیله نماد خاصی به نام NEW مشخص شود. مقدار اولیه کد NEW صفر است. تعداد آن همیشه صفر نگه داشته میشود )و هرگز افزایش نمییابد(. مثال: کدگذاری رشته AADCCDD Initial Code --------------------- NEW: 0 A: 00001 : 00010 C: 00011 D: 00100...... سیستم های چندرسانه ای 29
درخت هافمن تطبیقی برای AADCCDD سیستم های چندرسانه ای 30
درخت هافمن تطبیق یافته برای AADCCDD سیستم های چندرسانه ای 31
کد هافمن تطبیقی دنبالهای از سمبلها و کدهایی که به decoder فرستاده میشوند: Symbol NEW A A NEW D NEW C C D D Code 0 00001 1 0 00100 00 00011 001 101 101 نکته: کدی که برای یک سمبل خاص در نظر گرفته شده در طول عملیات کدگذاری هافمن تطبیق یافته تغییر میکند. 32 سیستم های چندرسانه ای
سوال کدگذاری هافمن تطبیقیافته Huffman) (Adaptive را برای کدکردن رشته This_is_simple درنظر بگیرید. شکل مقابل درخت تا مرحله This_is_ را نشان میدهد. کاراکتر بعدی s است. با آمدن آن یک swap نیاز است. گره حاوی s باید با کدام گره جابهجا شود 33 سیستم های چندرسانه ای
کدگذاری بر پایه دیکشنری 34 سیستم های چندرسانه ای
کدگذاری بر پایه دیکشنری (Lempel Ziv Welch) LZW dictionary هنگام دریافت داده decoder و encoder در LZW یکسانی را به صورت پویا تولید میکند. سیستم های چندرسانه ای 35
کدگذاری بر پایه دیکشنری LZW Compression EGIN s = next input character; while not EOF { c = next input character; if s + c exists in the dictionary s = s + c; else { output the code for s; add string s+c to the dictionary with a new code; s = c; } } output the code for s; END سیستم های چندرسانه ای 36
کدگذاری بر پایه دیکشنری)دیکشنری اولیه( AAACAAA مثال: کدکردن رشته Code String 1 A 2 3 C سیستم های چندرسانه ای 37
A A A A C A A A A A A S C Output Code String A A C A A A EOF 1 2 4 5 2 3 4 6 1 1 2 3 4 5 6 7 8 9 10 11 A C A A A A C CA AA AA کدگذاری بر پایه دیکشنری AAACAAA کدهای خروجی عبارتند از:.1 2 4 5 2 3 4 6 1 به جای فرستادن 14 کاراکتر تنها الزم است 9 کد فرستاده شود.)نرخ فشرده سازی : 1.56 = 14/9 ) سیستم های چندرسانه ای 38
کدگشایی بر پایه دیکشنری LZW Decompression EGIN s = NIL; while not EOF { k = next input code; entry = dictionary entry for k; output entry; if (s!= NIL) add string s+ entry[0] to dictionary with a new code; s = entry; } END سیستم های چندرسانه ای 39
40 NIL A A A C A A A. کدگشایی بر پایه دیکشنری AAACAAA مثال : رمزگشایی برای رشته کدهای ورودی به :decoder 1 1 2 4 5 2 3 4 6 S K Entry/output Code String 1 2 4 5 2 3 4 6 1 EO F A A A C A A A 1 2 3 4 5 6 7 8 9 10 11 سیستم های چندرسانه ای A C A A A A C CA AA AA
A A A A C A A A A A A AA 41 کدگذاری بر پایه دیکشنری )در برخی موارد الگوریتم ارایه شده ابهام در بازیابی ایجاد می کند(. AAACAAAX S C Output Code String A A C A A A X 1 2 4 5 2 3 6 10 1 2 3 4 5 6 7 8 9 10 A C A A A A C CA AA رشته مثال : 11 AAX سیستمهای چندرسانهای
S K Entry/output Code String کدگشایی بر پایه دیکشنری و ایجاد ابهام AAACAAAX رشته 1 2 3 A C NIL A A A C A 1 2 4 5 2 3 6 10 A A A C A??? 4 5 6 7 8 9 A A A A C CA 42 سیستم های چندرسانه ای
کدگذاری بر پایه دیکشنری)رفع ابهام( LZW Decompression (modified) EGIN s = NIL; while not EOF { k = next input code; entry = dictionary entry for k; /* exception handler */ if (entry == NULL) entry = s + s[0]; output entry; if (s!= NIL) add string s+entry[0] to dictionary with a new code; s = entry; } END 43 سیستم های چندرسانه ای
کدگذاری بر پایه دیکشنری باید بر روی تعداد مدخل دیکشنری محدودیتی باشد. در GIF ظرفیت دیکشنری 4096 مدخل است. در برنامههای کاربردی واقعی l طول کد در بازه ] max l] 0, l قرار میگیرد.سایز دیکشنری در ابتدا 2 l0 است. وقتی که این دیکشنری تکمیل میشود طول کد یکی یکی افزایش مییابد این افزایش تا زمانی مجاز است که طول کد به برسد. پس از پرشدن دیکشنری و رسیدن به متفاوتی را دنبال می کنند: l max l max برنامه های کاربردی سیاستهای 1- تبدیل شدن به یک دیکشنری با تعداد مدخل ثابت حذف حالت انطباقی 2- حذف مداخل با ارجاع های کم 3- خالی کردن کامل دیکشنری سیستم های چندرسانه ای 44
تمرین رشته ARACADARA را با استفاده از الگوریتم LZW تمامی فرضهای مورد نیاز را اتخاذ کرده و آنها را بیان کنید. کد کنید. 45 سیستم های چندرسانه ای
کدگذاری حسابی 46 سیستم های چندرسانه ای
کدگذاری حسابی نمادهای رمز مثال: CAEE$ کدگذاری از استفاده با حسابی نماد احتمال محدوده A 0.2 [0, 0.2) 0.1 [0.2, 0.3) C 0.2 [0.3, 0.5) D 0.05 [0.5, 0.55) E 0.3 [0.55, 0.85) F 0.05 [0.85, 0.9) $ 0.1 [0.9, 1.0) سیستم های چندرسانه ای 47
کدگذاری حسابی سیستم های چندرسانه ای 48
کدگذاری حسابی کدگذاری حسابی رشته CAEE$ Symbol Low High Range 0 1.0 1.0 C 0.3 0.5 0.2 A 0.30 0.34 0.04 E 0.322 0.334 0.012 E 0.3286 0.3322 0.0036 $ 0.33184 0.33220 0.00036 سیستم های چندرسانه ای 49
کدگذاری حسابی Arithmetic Coding Encoder EGIN low = 0.0; high = 1.0; range = 1.0; while (symbol!= terminator) { get (symbol); high = low + range * Range_high(symbol); low = low + range * Range_low(symbol); range = high - low; } output a code so that low <= code < high; END 50 Multimedia Systems (eadeli@iust.ac.ir)
کدگذاری حسابی تولید کلمه کد برای کدکننده (Codeword) EGIN code = 0; k = 1; while (value(code) < low) { assign 1 to the kth binary fraction bit if (value(code) > high) replace the kth bit by 0 k = k + 1; } END Code = inary Value(code) = decimal تولید عددی در بازه )حد باال حد پایین [ به عنوان نمونه اگر بازه انتخاب شده [0.33220,0.33184] باشد کد خروجی میشود 0.01010101 خواهد بود. سیستم های چندرسانه ای 51
کدگذاری حسابی Arithmetic Coding Decoder: EGIN get binary code and convert to decimal value = value(code); Do { find a symbol s so that Range_low(s) <= value < Range_high(s); output s; low = Rang_low(s); high = Range_high(s); range = high - low; value = [value - low] / range; } Until symbol s is a terminator END سیستم های چندرسانه ای 52
کدگذاری حسابی رمز گشایی نمادهای CAEE$ Value محدوده حدباال حد پایین نماد خروجی 0.33203125 C 0.3 0.5 0.2 0.16015625 A 0.0 0.2 0.2 0.80078125 E 0.55 0.85 0.3 0.8359375 E 0.55 0.85 0.3 0.953125 $ 0.9 1.0 0.1 سیستم های چندرسانه ای 53
ج) ب) د) تمرین ) فلا) ) فرض کنید میخواهیم رشته MULTIMEDIA را انتقال دهیم. کاراکترهای رشته از الفبای 8 کاراکتر موجود در این رشته انتخاب میشوند. در این رشته احتمال هرکدام از کاراکترها چقدر است آنتروپی این رشته را حساب کنید. ) اگر این رشته را توسط الگوریتم Huffman کد کنیم درخت انکودینگ را نمایش داده و تعداد بیتهای الزم برای انتقال این رشته و تعداد بیت میانگین را حساب کنید. ) اگر این رشته را با استفاده از الگوریتم Arithmetic Coding کد کنیم کلمهی کدی که برای ارسال تولید میشود چه خواهد بود تعداد بیتهای موردنیاز بهطور میانگین برای این روش چندتا خواهد بود 54 سیستم های چندرسانه ای
فشرده سازی بدون اتالف تصاویر 55 سیستم های چندرسانه ای
فشرده سازی بدون اتالف تصاویر روش های کدگذاری تفاضلی تصاویر: d(x, y) = I(x, y( I(x 1, y) d(x, y) = 4 I(x, y( I(x, y 1( I(x, y +1( I(x+1, y( I(x 1, y) تصویر اصلی هیستوگرام آن تصویر مشتق هیستوگرام تصویر مشتق شده سیستم های چندرسانه ای 56
JPEG بدون اتالف مدل مبتنی بر پیش بینی.1.2 ایجاد یک پیش بینی تفاضلی رمزگذاری پیکسلهای مجاور برای پیشبینیکننده در JPEG بدون اتالف سیستم های چندرسانه ای 57 نکته : هرکدام از مقادیر A و یا C قبل از اینکه در پیشبینی مورد استفاده قرار گیرند در سمت رمزگشا رمزگشایی شدهاند.
10 12 14 15 17 12 11 13 14 16 13 14 15 16 18 14 15 16 18 19 15 17 18 15 20 10 2 2 1 2 12-1 2 1 2 13 1 1 1 2 14 1 1 2 1 15 2 1-3 5 بدون اتالف)مثال( باال: ماتریس تصویر پایین: ماتریس با تابع پیش بینی x=a آنتروپی تصویر اصلی = ۳.2۳ آنتروپی تصویر پایین = 2.۵۴ JPEG 58 سیستم های چندرسانه ای
JPEG بدون اتالف پیش بینی کننده های JPEG بدون اتالف پیش گو پیش بینی P1 A P2 P3 C P4 A + C P5 A + ( C) / 2 P6 + (A C) / 2 P7 (A + ) / 2 سیستم های چندرسانه ای 59
100 169 62 54 92 251 210 111 I 121 132 150 76 31 42 13 177 تمرین در الگوریتم Lossless Jpeg )بدون تلف( هر پیکسل X را با استفاده از سه پیکسل قبلی آن )A یا C( پیشبینی میکنیم. سپس تنها میزان خطا )تفاضل پیشبینی با مقدار واقعی( را ذخیره میکنیم. فرض کنید از پیشبینی کننده X=(A+)/2 استفاده میکنیم. برای تصویر I مقادیر خطاها را حساب کنید و ماتریس 4 4 را نمایش دهید. )راهنمایی: برای سطر و ستون اول مقادیر واقعی ذخیره شده و پیشبینی انجام نمیشود.( سپس 16 مقدار بدست آمده را با الگوریتم Huffman کد کنید. 60 سیستم های چندرسانه ای