• ساده ترین فرمت تصویر چیست؟ الگوریتم های فشرده سازی تصویر الگوریتم JPEG یک الگوریتم فشرده سازی داده با اتلاف است.

    الگوریتم تبدیل یک تصویر گرافیکی JPEG شامل چندین مرحله است که به صورت متوالی و پشت سر هم بر روی تصویر انجام می شود:

    - تبدیل فضای رنگی،

    - نمونه گیری فرعی،

    - تبدیل کسینوس گسسته (DCT)

    - کوانتیزاسیون،

    - کد نویسی

    در مرحله تبدیل فضای رنگی، تصویر از فضای رنگی RGB به YCbCr تبدیل می شود (که در آن Y روشنایی است و Cb و Cr اجزای تفاوت رنگ نقطه تصویر هستند):

    کاربرد فضا YCbCrبه جای معمول RGBبا توجه به ویژگی های فیزیولوژیکی بینایی انسان، یعنی این واقعیت که سیستم عصبییک فرد حساسیت بسیار بیشتری به روشنایی دارد ( Y) نسبت به اجزای تفاوت رنگ (در این مورد Cbو Cr). تبدیل فضای رنگ معکوس (از YCrCb V RGB) به نظر می رسد:

    الگوریتم فشرده سازی JPEG به شما امکان می دهد تصاویر را با اندازه های صفحه رنگی مختلف فشرده کنید. با نشان دادن x iو y منعرض و ارتفاع من-مین صفحه رنگ تصویر. اجازه دهید ایکس= حداکثر(x i), Y= حداکثر(y من) برای هر صفحه ضرایبی را تعریف می کنیم سلام= ایکس/ x iو Vi= Y/ y من. بالاترین مقدار برای ایکسو Yطبق الگوریتم JPEG 2 16 است و برای سلامو Vi– 2 2 . بنابراین، عرض و ارتفاع صفحات رنگی می تواند از 1 تا 4 برابر کمتر از ابعاد بزرگترین هواپیما باشد. برای معمولی RGBدر تصاویر، ابعاد همه صفحات رنگی برابر است.

    نمونه برداری فرعی برای کاهش اندازه هواپیماها است Crو Cb. رایج ترین کاهش 2 برابر در عرض و 2 برابر در ارتفاع است (شکل 1 را ببینید). برای این Crو Cbصفحات تصویر به بلوک هایی با اندازه 2 در 2 نقطه تقسیم می شوند و بلوک با یک نمونه از اجزای تفاوت رنگ جایگزین می شود (به جای 4 نمونه موجود، میانگین حسابی آنها برای هر بلوک قرار می گیرد که امکان کاهش اندازه را فراهم می کند. از تصویر اصلی 2 برابر).

    شکل 1 - انواع متداول نمونه برداری فرعی

    سپس، به طور جداگانه برای هر جزء از فضای رنگ Y, Cbو Cr، تبدیل کسینوس گسسته مستقیم انجام می شود. برای انجام این کار، تصویر به بلوک هایی با اندازه 8 در 8 پیکسل تقسیم می شود و هر بلوک طبق فرمول تبدیل می شود:

    استفاده از تبدیل کسینوس گسسته امکان حرکت از نمایش فضایی تصویر به طیفی را فراهم می کند. تبدیل کسینوس گسسته معکوس به شکل زیر است:

    پس از آن می توانید به کمی سازی اطلاعات دریافتی اقدام کنید. ایده کوانتیزاسیون این است که مقداری از اطلاعات را کنار بگذاریم. شناخته شده است که چشم انسان کمتر در معرض فرکانس های بالا است (به ویژه در فرکانس های بالای اجزای تفاوت رنگ)، اکثر تصاویر عکاسی حاوی اجزای کمی با فرکانس بالا هستند. علاوه بر این، ظهور فرکانس‌های بالا نتیجه فرآیند دیجیتالی‌سازی است، یعنی. به دلیل ظهور نویز نمونه برداری و کوانتیزاسیون همراه. در این مرحله به اصطلاح جداول کوانتیزاسیون- ماتریس های متشکل از اعداد صحیح مثبت با اندازه 8 در 8، که فرکانس های مربوط به بلوک های تصویر به عناصر آنها تقسیم می شود، نتیجه به یک عدد صحیح گرد می شود:



    .

    جداول مشابهی در فرآیند کوانتیزاسیون استفاده می شود. کوانتیزاسیون عبارت است از ضرب فرکانس های کوانتیزه شده در عناصر مربوطه جدول کوانتیزاسیون:

    بنابراین، با افزایش ضریب کوانتیزاسیون، مقدار اطلاعات دور ریخته شده افزایش می یابد. بیایید با یک مثال به این موضوع با جزئیات بیشتری نگاه کنیم.

    بلوک قبل از کوانتیزه شدن:

    3862, –22, –162, –111, –414, 12, 717, 490,

    383, 902, 913, 234, –555, 18, –189, 236,

    229, 707, –708, 775, 423, –411, –66, –685,

    231, 34, –928, 34, –1221, 647, 98, –824,

    –394, 128, –307, 757, 10, –21, 431, 427,

    324, –874, –367, –103, –308, 74, –1017, 1502,

    208, –90, 114, –363, 478, 330, 52, 558,

    577, 1094, 62, 19, –810, –157, –979, –98

    جدول کوانتیزاسیون (کیفیت 90):

    24, 16, 16, 24, 40, 64, 80, 96,

    16, 16, 24, 32, 40, 96, 96, 88,

    24, 24, 24, 40, 64, 88, 112, 88,

    24, 24, 32, 48, 80, 136, 128, 96,

    32, 32, 56, 88, 112, 176, 168, 120,

    40, 56, 88, 104, 128, 168, 184, 144,

    80, 104, 128, 136, 168, 192, 192, 160,

    112, 144, 152, 160, 176, 160, 168, 160

    بلوک پس از کوانتیزاسیون:

    161, –1, –10, –5, –10, 0, 9, 5,

    24, 56, 38, 7, –14, 0, –2, 3,

    10, 29, –30, 19, 7, –5, –1, –8,

    10, 1, –29, 1, –15, 5, 1, –9,

    –12, 4, –5, 9, 0, 0, 3, 4,

    8, –16, –4, –1, –2, 0, –6, 10,

    3, –1, 1, –3, 3, 2, 0, 3,

    5, 8, 0, 0, –5, –1, –6, –1

    3864, –16, –160, –120, –400, 0, 720, 480,

    384, 896, 912, 224, –560, 0, –192, 264,

    240, 696, –720, 760, 448, –440, –112, –704,

    240, 24, –928, 48,–1200, 680, 128, –864,

    –384, 128, –280, 792, 0, 0, 504, 480,

    320, –896, –352, –104, –256, 0,–1104, 1440,

    240, –104, 128, –408, 504, 384, 0, 480,

    560, 1152, 0, 0, –880, –160,–1008, –160

    جدول کوانتیزاسیون (کیفیت 45):

    144, 96, 88, 144, 216, 352, 456, 544,

    104, 104, 128, 168, 232, 512, 536, 488,

    128, 112, 144, 216, 352, 504, 616, 496,

    128, 152, 192, 256, 456, 776, 712, 552,

    160, 192, 328, 496, 600, 968, 912, 680,

    216, 312, 488, 568, 720, 920, 1000, 816,

    432, 568, 696, 776, 912, 1072, 1064, 896,

    640, 816, 840, 872, 992, 888, 912, 880

    بلوک پس از کوانتیزاسیون:

    27, 0, –2, –1, –2, 0, 2, 1,

    4, 9, 7, 1, –2, 0, 0, 0,

    2, 6, –5, 4, 1, –1, 0, –1,

    2, 0, –5, 0, –3, 1, 0, –1,

    –2, 1, –1, 2, 0, 0, 0, 1,

    2, –3, –1, 0, 0, 0, –1, 2,

    0, 0, 0, 0, 1, 0, 0, 1,

    1, 1, 0, 0, –1, 0, –1, 0

    بلوک پس از تبدیل معکوس:

    3888, 0, –176, –144, –432, 0, 912, 544,

    416, 936, 896, 168, –464, 0, 0, 0,

    256, 672, –720, 864, 352, –504, 0, –496,

    256, 0, –960, 0,–1368, 776, 0, –552,

    –320, 192, –328, 992, 0, 0, 0, 680,

    432, –936, –488, 0, 0, 0,–1000, 1632,

    0, 0, 0, 0, 912, 0, 0, 896,

    640, 816, 0, 0, –992, 0, –912, 0

    همانطور که مشاهده می شود، در مورد اول، تغییر دی سیضریب در نتیجه فشرده سازی 2 و در دومی 26 است، در حالی که کوانتیزه شده است دی سیضریب در مورد دوم 6 برابر کمتر از مورد اول است.

    رمزگذاری مرحله نهایی فشرده سازی است که طی آن بلوک های تصویر به تبدیل می شوند شکل برداریطبق قانون مشخص شده توسط بلوک های فرم:

    0, 1, 5, 6, 14, 15, 27, 28,

    2, 4, 7, 13, 16, 26, 29, 42,

    3, 8, 12, 17, 25, 30, 41, 43,

    9, 11, 18, 24, 31, 40, 44, 53,

    10, 19, 23, 32, 39, 45, 52, 54,

    20, 22, 33, 38, 46, 51, 55, 60,

    21, 34, 37, 47, 50, 56, 59, 61,

    35, 36, 48, 49, 57, 58, 62, 63

    که در آن عناصر بلوک، شاخص های برداری اجزای ماتریس مربوطه هستند. در این حالت، عنصر صفر به عنوان تفاوت با عنصر صفر بلوک قبلی کدگذاری می شود. عناصر صفر نشان می دهد دی سی، آنها شامل جزء ثابت بلوک هستند (همه عناصر AC دیگر معمولاً نشان داده می شوند AC).

    سپس داده های به دست آمده با استفاده از کدگذاری حسابی یا اصلاح الگوریتم هافمن فشرده می شوند. این مرحله از نظر استگانوگرافی در آن چندان جالب نیست گرافیک، بنابراین خارج از محدوده توجه ما است.

    الگوریتم JPEG به طور خاص برای فشرده سازی تصویر توسط Joint Photographic Expert Group (JPEG) توسعه داده شد و بر اساس DCT است.

    DCT تصویر را به مجموعه ای از ضرایب تجزیه می کند که ممکن است برخی از آنها به دلیل عدم استفاده از برخی از توابع DCT برابر با صفر باشد. در حال حاضر با استفاده از این واقعیت، امکان فشرده سازی داده ها وجود دارد. با این حال، بیشترین اثر با حذف برخی از ضرایب ناچیز (معادل آنها با صفر) حاصل می شود.

    معمولا در خارج ماتریس دارای یک ویژگی به وضوح قابل مشاهده است. مقادیر عددی عناصر ماتریس به سرعت از گوشه سمت چپ بالا به گوشه پایین سمت راست کاهش می یابد. بنابراین، مهم ترین داده ها در گوشه سمت چپ بالا و کم اهمیت ترین داده ها در پایین سمت راست قرار می گیرند. با استفاده از این واقعیت می توان کم اهمیت ترین داده ها را حذف کرد. برای انجام این کار، داده های تبدیل شده را کمی کنید.

    ایده کوانتیزاسیون این است که اطلاعات طیفی (فرکانس) باید از یک آستانه شناخته شده فراتر رود تا بخش مهمی از تمام اطلاعات مربوط به یک قطعه تصویر معین را تشکیل دهد. در مرحله کمی سازی است که از بین رفتن بخشی از اطلاعات و در نتیجه افت کیفیت رخ می دهد.

    کوانتیزاسیون معمولاً بر اساس یک ماتریس خاص انجام می شود که شامل مقسوم علیه هایی است که لازم است عناصر DCT را به وسیله آنها تقسیم کنیم. اغلب از الگوریتم زیر استفاده می شود:

    Q(i,j) = 1 + ((1 + i + j)q);

    که در آن Q(i,j) ماتریس مقسوم علیه است،

    q - پارامتر کیفیت.

    با انتخاب پارامتر q می توانید مقادیر مقسوم را کنترل کرده و نسبت فشرده سازی را تنظیم کنید. به عنوان مثال، اگر q = 2 باشد، ماتریسی به شکل زیر دریافت می کنید (شکل 3.6):

    شکل 3.6. نمونه ای از ماتریس کوانتیزاسیون

    پس از تقسیم 64 عنصر ماتریس به عناصر ماتریس Q(i,j)، در نتیجه ماتریسی که دارای:

    تعداد زیادی مقادیر صفر اضافی وجود خواهد داشت،

    اثر کاهش مقادیر از بالا سمت چپ به سمت راست پایین حتی بیشتر خواهد بود.

    برای نشانه گذاری اقتصادی، لازم است ترتیب پیمایش مقادیر به دست آمده را به گونه ای تغییر دهید که دنباله های عناصر صفر تا حد امکان طولانی باشد. یکی از راه های ممکنتغییر ترتیب پیمایش به روش زیگزاگ است (شکل 3.7).

    شکل 3.7. تبدیل یک ماتریس دو بعدی به یک دنباله تک بعدی با استفاده از روش "زیگزاگ".

    همانطور که از شکل مشخص است، یک ماتریس دو بعدی متشکل از 8 در 8 عنصر به دنباله ای تک بعدی با طول 64 عنصر تبدیل شده است. خاصیت اصلی چنین دنباله ای محل قرارگیری مهم ترین ضرایب در ابتدای آن و کم اهمیت ترین عناصر (معمولاً صفر) در انتهای آن خواهد بود.

    اجرای الگوریتم شامل یک سری اقدامات متوالی است که در شکل 1 نشان داده شده است. 3.8.

    شکل 3.8. توالی عملیات در اجرای الگوریتم JPEG.

    1. در صورت لزوم، تصویر به فرمت YUV تبدیل می شود.

    2. تفاوت رنگ سیگنال های U و V مطابق با فرمت 4:2:0 نمونه برداری می شوند. تقسیم تصویر به قطعات 8×8 عنصر. علاوه بر این، پردازش سیگنال‌های درخشندگی و کرومینانس می‌تواند به طور مستقل و موازی انجام شود.

    3. تبدیل کسینوس گسسته بر روی تمام بلوک های 8*8 المان انجام می شود.

    4. کمی سازی با توجه به پارامتر کیفیت انتخاب شده.

    5. اسکن "زیگزاگ" برای به دست آوردن یک توالی یک بعدی از 64 عنصر.

    6. الگوریتم RLEروی یک دنباله تک بعدی اعمال می شود.

    7. الگوریتم هافمن به دنباله ای که قبلاً با RLE فشرده شده است اعمال می شود.

    8. P.p. 3 - 7 برای همه بلوک ها در قالب عناصر 8*8 و برای همه سطوح رنگی اجرا می شود.

    ویژگی های اصلی روش JPEG به شرح زیر است:

    1. نسبت فشرده سازی بالا، به ویژه برای تصاویری که کیفیت خوب یا عالی در نظر گرفته می شوند.

    2. تعداد زیادی پارامتر که به یک کاربر پیشرفته اجازه می دهد تنظیمات روش را آزمایش کند و به تعادل فشرده سازی/کیفیت مورد نیاز دست یابد.

    3. نتایج خوب برای همه انواع تصاویر تون پیوسته، صرف نظر از وضوح، فضای رنگ، اندازه پیکسل، یا سایر ویژگی های آنها.

    4. یک روش فشرده سازی نسبتاً پیچیده، اما نه خیلی پیچیده، که به شما امکان می دهد دستگاه های مناسب ایجاد کنید و برنامه هایی را برای اجرای این روش برای رایانه های اکثر سیستم عامل ها و همچنین سخت افزار بنویسید.

    5. امکان استفاده از فشرده سازی بدون از دست دادن اطلاعات با نسبت فشرده سازی نه چندان بالا.

    JPEG خوب قدیمی، علیرغم مزایای غیرقابل انکار زیاد، هنوز محدودیت های قابل توجهی دارد. آنها را صدا زدند تا آنها را پایین بیاورند. روش جدیدفشرده سازی تصویر، که برای مدت طولانی توسعه یافته است. اکنون که JPEG2000 به یک فرمت رسمی شناخته شده تبدیل شده است، این باید آغازی برای پشتیبانی فعال آن توسط تولیدکنندگان مختلف نرم افزار باشد.

    مطمئناً بسیاری از افرادی که با گرافیک روی رایانه کار می کنند به این سؤال علاقه مند هستند: چگونه می توان تصویری را که مقدار بسیار چشمگیری در حافظه رایانه شخصی اشغال می کند در اندازه بسیار کوچکتر روی دیسک فشرده شود؟ به یاد دارم که در طلوع فعالیت انتشاراتم، کلمه "فشرده سازی" برای من بسیار مرموز و شگفت انگیز بود ... در واقع، چگونه تصاویر فشرده می شوند - بالاخره بدون آن، اکنون نمی توان تصور کرد که شبکه یا عکاسی دیجیتال، چاپ رنگی ندارید؟

    بنابراین فشرده سازی. ممکن است منجر به کاهش کیفیت شود یا خیر. مورد آخر روش هایی مانند RLE (Run Length Encoding، کدگذاری طول اجرا، که در نتیجه جفت های نوع ( جست و خیز کردن, ارزش، جایی که جست و خیز کردنتعداد صفرهای متوالی است و ارزش- مقدار زیر آنها) و LZW (فشرده سازی با روش Lempel-Ziff-Welch)، که در قالب های PSD، GIF و TIFF پیاده سازی شده است. آنها به طور گسترده توسط آرشیوهایی مانند RAR و ZIP استفاده می شوند. میانگین نسبت فشرده سازی بدون تلفات 2-3 برابر است.

    اگر نیاز به فشرده سازی تصویر با شدت بیشتری دارید، بدون افت کیفیت نمی توانید این کار را انجام دهید. اصول چیست؟ اولاً، هر تصویر حاوی افزونگی خاصی است که حذف آن منجر به تغییر قابل توجهی در کیفیت تصویر نمی شود. ثانیاً، چشم انسان به تغییرات روشنایی حساس تر از رنگ است. بنابراین، نسبت های فشرده سازی مختلف برای کانال های مختلف تصویر استفاده می شود - اطلاعات از بین می رود، اما این از نظر بصری قابل توجه نیست. علاوه بر این، حساسیت چشم به عناصر کوچک تصویر کم است که حذف آنها را بدون افت کیفیت ممکن می سازد. به این ترتیب می توانید تصویر را (حتی اگر افت کیفیت از قبل محسوس باشد) تا حد آستانه قابل قبول فشرده کنید. درجه تنزل کیفیت برای هر مورد خاص تعیین می شود. برای چاپ، فقط حداقل تحریف قابل قبول است، و برای ارسال در اینترنت (بسته به هدف) - خیلی بیشتر.

    محبوب ترین روش فشرده سازی با اتلاف JPEG است که کیفیت تصویر کافی را حتی با فشرده سازی 30 برابر حفظ می کند. به هر حال، در اکثر روش های مدرن فشرده سازی داده ها (به عنوان مثال، Layer-4، معروف به mp3، و همچنین MPEG)، مکانیسم هایی شبیه به JPEG اجرا می شود. بیایید نگاهی دقیق‌تر به این قالب بیندازیم، به‌ویژه که چندی پیش آخرین پیاده‌سازی آن، JPEG2000، سرانجام تأیید شد، که شامل تمام موارد اضافه‌شده به JPEG/MPEG طی ده سال توسعه آن می‌شود.

    JPEG

    نام الگوریتم فشرده سازی مخفف Joint Photographic Expert Group است، یک گروه ابتکاری که توسط کارشناسان ITU (اتحادیه بین المللی مخابرات) و ISO (سازمان بین المللی استانداردسازی) تشکیل شده است. به همین دلیل است که پیشوند Joint در نام آن وجود دارد. در سال 1992، JPEG استاندارد بین المللی گرافیک اعلام شد.

    فشرده سازی JPEG همیشه کیفیت خود را از دست می دهد. در این مورد، همیشه یک انتخاب وجود دارد: اولویت دادن به کیفیت به ازای حجم (اندازه فایل حدود سه برابر فشرده می شود) یا برعکس، برای دستیابی به حداقل اندازه تصویر که در آن همچنان قابل تشخیص باقی بماند ( نسبت تراکم می تواند به 100 برسد). فشرده سازی، که در آن تفاوت کیفیت بین تصویر به دست آمده و تصویر اصلی هنوز قابل توجه نیست، باعث کاهش 10 تا 20 برابری در اندازه فایل می شود.

    منطقه برنامه

    JPEG تصاویر تمام رنگی و تک رنگ با کیفیت عکاسی را به بهترین نحو فشرده می کند. اگر می خواهید یک تصویر را با یک پالت فهرست ذخیره کنید، ابتدا آن را به رنگ کامل تبدیل می کنید. هنگام فشرده‌سازی با استفاده از روش JPEG، باید در نظر داشته باشید که همه چیز به ماهیت تصاویر بستگی دارد: آن‌هایی که تغییر رنگ در آن‌ها ناچیز است و تغییر رنگ واضحی وجود ندارد، حجم بسیار کمتری را اشغال می‌کنند. JPEG در هر جایی که نیاز است تصاویر عکس ذخیره شوند استفاده می شود: in دوربین های دیجیتال، پلی گرافی (EPS DCS 2.0)، اینترنت بدون آن غیرقابل تصور است.

    انواع مختلفی از فشرده سازی JPEG وجود دارد، اما ما تنها دو مورد از آنها را در نظر خواهیم گرفت که در بسته استاندارد برای کار با بیت مپ استفاده می شود. تصاویر ادوبیفتوشاپ، خط پایهو ترقی خواه. دو روش دیگر - ariphmetic وlessless - عجیب و غریب هستند، به دلایلی که به طور گسترده مورد استفاده قرار نمی گیرند.

    فشرده سازی چگونه اتفاق می افتد

    1. مرحله اول شامل تبدیل مدل رنگتصویر (معمولاً RGB) به مدلی تبدیل می شود که در آن اجزای روشنایی و رنگ از هم جدا می شوند (به عنوان مثال، YCbCr یا YUV)، که به شما امکان می دهد به طور بهینه به انتخاب سطوح فشرده سازی برای هر کانال (با در نظر گرفتن ادراک چشم) نزدیک شوید. تبدیل به این صورت است:

    Y = 0.299xR+0.587*G+0.114xB Cb = (B-Y)/0.866/2+128 Cr = (R-Y)/0.701/2+128

    2. در مرحله بعدی، به اصطلاح. پیش فیلتراسیون، که در آن پیکسل های مجاور به طور جداگانه در هر یک از کانال های Cb و Cr به صورت جفت در جهت افقی و عمودی گروه بندی می شوند و کانال روشنایی Y بدون تغییر باقی می ماند. پس از آن، کل گروه چهار پیکسلی مقدار متوسط ​​مولفه های Cb و Cr مربوطه را دریافت می کند. برای اختصار، چنین طرحی را می توان به عنوان 4: 1: 1 تعیین کرد (همان فرم نمایش در DRAW - پنجره صادرات jpeg اتخاذ شده است). با در نظر گرفتن این واقعیت که هر پیکسل در 3 بایت رمزگذاری شده است (256 سطح برای هر یک از سه کانال)، در نتیجه میزان داده به طور خودکار 2 برابر کاهش می یابد (به جای 12 بایت برای انتقال 4 پیکسل، برای انتقال فقط 4+1+1 = 6 بایت کافی است. از دیدگاه ریاضیات، چنین تحولی منجر به از دست دادن قابل توجه اطلاعات می شود، اما چشم انسان از دست دادن را درک نمی کند، زیرا در تصاویر عکاسی معمولی افزونگی قابل توجهی وجود دارد.

    3. اطلاعات دریافت شده، که مرحله "تمیز کردن" اولیه را پشت سر گذاشته است، دوباره در هر کانال به طور جداگانه به بلوک ها، اما در حال حاضر به اندازه 8x8 گروه بندی می شود، پس از آن فشرده سازی اصلی به آنها اعمال می شود - به اصطلاح. تبدیل کسینوس گسستهبه طور خلاصه - DCT (تبدیل کسینوس گسسته). در نتیجه اطلاعات در مورد توزیع روشنایی پیکسل به شکل دیگری تبدیل می شود، جایی که با توزیعی بر اساس توصیف می شود فراوانی وقوع یک یا آن روشنایی پیکسل DCT دارای تعدادی مزیت نسبت به سایر تبدیل ها (به عنوان مثال، تبدیل فوریه) است که بازیابی اطلاعات بهتری را ارائه می دهد.

    به جای آرایه ای از 64 مقدار (8x8 پیکسل) برای هر بلوک که تصویر را می سازد، آرایه ای از 64 فرکانس دریافت می کنیم. عملکرد DCT را در یک مثال در نظر بگیرید. فرض کنید روشنایی پیکسل ها در یک بلوک از تصویر ما به شکلی است که در شکل نشان داده شده است. 1 در سمت چپ، سپس نتیجه تبدیل مانند نشان داده شده در سمت راست خواهد بود.

    1

    با وجود دقت قابل توجه، مقداری از دست دادن اطلاعات در این مرحله رخ می دهد - به همین دلیل است که JPEG همیشه منجر به از دست دادن کیفیت می شود. هدف اصلی تغییر شکل یافتن تصویر کلی از توزیع اشیاء بزرگ (بالا سمت چپ در شکل) و کوچک (پایین سمت راست) است که بعداً هنگام حذف اطلاعات ناچیز مفید خواهد بود.

    4. مرحله بعدی حذف اطلاعاتی است که به سختی برای چشم قابل توجه است از بلوک یا کوانتیزاسیون(کوانتیزاسیون). همه اجزا به تقسیم می شوند ضرایب مختلف، که اهمیت هر یک از آنها را برای بازیابی کیفی تصویر اصلی و نتیجه تعیین می کند. گرد کردن به یک مقدار صحیح این روش است که بیشترین کاهش کیفیت را ایجاد می کند و حجم نهایی تصویر را کاهش می دهد. اجزای فرکانس بالا به صورت درشت کوانتیزه می شوند و اجزای فرکانس پایین با دقت بیشتری کوانتیزه می شوند، زیرا بیشتر قابل توجه هستند. برای هموار کردن کاهش کیفیت، از فاکتورهای تقسیم کوچکتری در کانال روشنایی نسبت به کانال های رنگ استفاده می شود. اما بیشتر اوقات (این برای سرعت بخشیدن به محاسبات انجام می شود) ، به جای مقادیر ویژه انتخاب شده ، فقط یکی گرفته می شود - موردی که کاربر هنگام انتخاب درجه فشرده سازی وارد می کند.

    برای مثال، هنگام ذخیره یک تصویر با استفاده از عملیات Save for web، پنجره فتوشاپ چگونه به نظر می رسد، جایی که پارامتر Quality (یا بهتر است بگوییم، مشتق آن) یکسان است. عامل گرد(شکل 2).

    در نتیجه کوانتیزه کردن، مجموعه ای از اجزا به دست می آید که بر اساس آن تصویر اصلی با دقت معینی بازیابی می شود (شکل 3).

    4

    روی انجیر شکل 4 نتیجه بازیابی مربع سیاه و سفید را به ترتیب با یک، چهار و پانزده جزء نشان می دهد.

    5. پس از انجام کار اصلی در فشرده سازی تصویر، تبدیلات بیشتر به وظایف ثانویه کاهش می یابد: اجزای باقی مانده به ترتیب رفتنبه گونه ای که ابتدا مسئولین جزئیات بزرگ و سپس همه موارد کوچکتر قرار می گیرند. اگر به شکل نگاه کنید، حرکت انکودر مانند یک خط زیگزاگ به نظر می رسد. مرحله زیگ زاگ نامیده می شود (شکل 5).

    5

    سپس توالی حاصل فشرده می شود: ابتدا با RLE معمول، سپس با روش هافمن.

    6. و در نهایت تمیز مرحله فنی- داده ها در یک پوسته محصور شده اند، همراه با یک هدر، که تمام پارامترهای فشرده سازی را نشان می دهد تا بتوان تصویر را بازیابی کرد. با این حال، گاهی اوقات این اطلاعات در هدرها گنجانده نمی‌شود، که باعث افزایش فشرده‌سازی می‌شود، اما در این مورد باید مطمئن باشید که برنامه‌ای که فایل را می‌خواند از آنها اطلاع دارد.

    در اینجا، به طور کلی، و همه تحولات. حالا بیایید محاسبه کنیم که در مثال ما چقدر فشرده سازی به دست آمده است. ما 7 مقدار دریافت کردیم که تصویر 8x8 اصلی را بازیابی می کند. بنابراین، فشرده سازی حاصل از استفاده از تبدیل DCT در هر دو کانال رنگی 8x8/7 9 برابر بود. بیایید نه هفت، بلکه 11 ضریب را به کانال روشنایی اختصاص دهیم، که 8x8/11 6 را می دهد. برای هر سه کانال، (9+9+6)/3=8 برابر می شود. کاهش کیفیت در هنگام "تخریب" تصویر که در مرحله دوم رخ داد افزایش مضاعف اضافی را به همراه دارد (طرح 4-1-1 با در نظر گرفتن ویژگی های رمزگذاری مؤلفه روشنایی) که نتیجه نهایی را به دست می دهد - 16 بار. این یک تخمین تقریبی است که برخی از جنبه ها را در نظر نمی گیرد، اما تصویر واقعی را منعکس می کند. برای کاهش 30 برابری اندازه فایل، باید تنها 3-4 جزء باقی بگذارید.

    فرآیند بازسازی تصویر به ترتیب معکوس انجام می شود: ابتدا مولفه ها در مقادیر جدول کوانتیزاسیون ضرب می شوند و ضرایب تقریبی برای تبدیل کسینوس معکوس به دست می آید. هرچه در هنگام فشرده سازی کیفیت بهتری انتخاب شود، درجه تقریب به ضرایب اصلی بیشتر می شود، به این معنی که تصویر با دقت بیشتری بازیابی می شود. باقی مانده است که فقط یک عمل اضافه کنیم: قبل از پایان، برخی تنظیمات (نویز) را در پیکسل های مرزی از بلوک های همسایه انجام دهید تا تفاوت های شدید بین آنها حذف شود.

    معایب JPEG

    1. عدم امکان دستیابی به نسبت تراکم بالا به دلیل محدودیت اندازه بلوک (فقط 8x8).
    2. ساختار بلوکی در نسبت تراکم بالا.
    3. گرد کردن گوشه های تیزو محو کردن عناصر ظریف در تصویر.
    4. فقط تصاویر RGB پشتیبانی می شوند (شما فقط می توانید از JPEG برای تصاویر CMYK در فرمت EPS از طریق DCS استفاده کنید).
    5. تا زمانی که تصویر به طور کامل بارگذاری نشده باشد، نمی توان آن را نمایش داد.

    ده سال از تایید JPEG به عنوان استاندارد می گذرد. در طول این مدت، گروه های تحقیقاتی تعدادی افزودنی قابل توجه به نسخه اصلی پیشنهاد کرده اند که منجر به ظهور استاندارد جدیدی در پایان سال گذشته شد.

    JPEG2000

    از سال 1997، کار با هدف ایجاد آغاز شده است سیستم جهانیکدگذاری، که تمام محدودیت های اعمال شده توسط JPEG را حذف می کند و می تواند به طور موثر با همه انواع تصاویر کار کند: سیاه و سفید، مقیاس خاکستری، تمام رنگی و چند جزیی، و صرف نظر از محتوا (خواه عکس باشد، متن نسبتاً کوچک، یا حتی نقاشی). همراه با سازمان های استاندارد بین المللی، غول های صنعتی مانند آگفا، کانن، فوجی فیلم، هیولت پاکارد، کداک، لوراتک، موتورولا، ریکو، سونی و دیگران در توسعه آن شرکت کردند.

    از آنجایی که الگوریتم جدید ادعا می کرد که جهانی است، علاوه بر این وظیفه استفاده از آن را نیز بر عهده داشت راه های مختلفانتقال داده (در حالت واقعیزمان و با پهنای باند باریک)، که به ویژه در برنامه های چند رسانه ای، به عنوان مثال، در پخش واقعی از طریق اینترنت بسیار مهم است.

    الزامات اساسی برای فرمت JPEG2000:

    1. دستیابی به درجه فشرده سازی بالاتر در مقایسه با JPEG.
    2. پشتیبانی از تصاویر تک رنگ، که امکان استفاده از آن را برای فشرده سازی تصاویر با متن فراهم می کند.
    3. امکان فشرده سازی بدون اتلاف
    4. خروجی تصاویر با بهبود تدریجی جزئیات (مانند GIF مترقی).
    5. استفاده از نواحی اولویت دار در تصویر که می توان کیفیت آن را بالاتر از بقیه قسمت های تصویر قرار داد.
    6. رمزگشایی در زمان واقعی (بدون تاخیر).

    اصل فشرده سازی

    به عنوان مکانیسم اصلی فشرده سازی در JPEG2000، بر خلاف JPEG، تبدیل موج (موجک) استفاده می شود - سیستمی از فیلترها که بر روی کل تصویر اعمال می شود. بدون پرداختن به جزئیات فشرده سازی، فقط نکات اصلی را یادداشت می کنیم.

    6
    ابتدا، درست مانند JPEG، تصویر به سیستم YCrCb تبدیل می‌شود و پس از آن، اطلاعات اضافی حذف می‌شوند (با ترکیبی از پیکسل‌های مجاور که قبلاً شناخته شده‌اند به بلوک‌های 2×2). سپس کل تصویر به قسمت هایی با همان اندازه (کاشی) تقسیم می شود، که بر روی هر یک، مستقل از بقیه، تغییرات بیشتری رخ می دهد (این امر نیاز به حافظه و منابع محاسباتی را کاهش می دهد). در ادامه هر کانال توسط فیلترهای پایین گذر و بالا گذر به صورت جداگانه در ردیف و ردیف فیلتر می شود که در نتیجه پس از اولین گذر، چهار تصویر کوچکتر (زیر باند) در هر قسمت تشکیل می شود. همه آنها حاوی اطلاعات مربوط به تصویر اصلی هستند، اما محتوای اطلاعاتی آنها بسیار متفاوت است (شکل 6).

    به عنوان مثال، تصویری که پس از فیلتر کردن پایین گذر توسط ردیف ها و ردیف ها (بالا سمت چپ) به دست می آید، بیشترین میزان را دارد. مقدار زیاداطلاعات، و دریافت پس از فرکانس بالا - حداقل. محتوای اطلاعات تصاویر به دست آمده پس از فیلتر پایین گذر ردیف ها و فیلتر با فرکانس بالا برای ستون ها (و بالعکس) متوسط ​​است. آموزنده ترین تصویر دوباره فیلتر می شود و اجزای حاصل، مانند فشرده سازی jpeg، کوانتیزه می شوند. این چندین بار اتفاق می افتد: برای فشرده سازی بدون تلفات، حلقه معمولاً 3 بار تکرار می شود، با تلفات - 10 تکرار یک مصالحه منطقی بین اندازه، کیفیت و سرعت رفع فشار در نظر گرفته می شود. نتیجه یک تصویر کوچک و مجموعه ای از تصاویر با جزئیات دقیق است که به طور متوالی و با دقت خاصی آن را به اندازه طبیعی. بدیهی است که بیشترین درجه فشرده سازی در تصاویر بزرگ به دست می آید، زیرا چرخه های بیشتری را می توان تنظیم کرد.

    پیاده سازی عملی

    از زمانی که پایه های فشرده سازی JPEG2000 گذاشته شد، تعدادی از شرکت ها الگوریتم های نسبتاً کارآمدی را برای پیاده سازی آن ایجاد کرده اند.

    در میان توسعه دهندگان اصلی نرم افزار، می توان به Corel اشاره کرد (به هر حال، این یکی از اولین کسانی بود که پشتیبانی از فرمت wi را بر اساس تبدیل امواج به بسته های خود معرفی کرد، که برای آن افتخار و ستایش است) - تمام تصاویر ارائه شده بر روی سی دی ها با بسته CorelDRAW تا نسخه نهم، به این صورت فشرده شدند.

    بعدها، Adobe نیز به آن توجه کرد. برخی از ایده های پشت JPEG2000 توسط توسعه دهندگان فتوشاپ 6 در قالب گزینه های پیشرفته هنگام ذخیره یک تصویر به صورت JPEG (معمولی، بر اساس تبدیل کسینوس) به کار گرفته شده است. از جمله آنها می توان به JPEG مترقی (پارامتر Progressive در Save) اشاره کرد برای وب). این الگوریتم اساساً برای سیستم های بلادرنگ در نظر گرفته شده است و دقیقاً مانند GIF پیشرونده عمل می کند. ابتدا یک کپی تقریبی از تصویر ظاهر می شود که فقط از چند بلوک تشکیل شده است. سایز بزرگو با گذشت زمان، زمانی که بقیه داده ها بارگذاری می شوند، ساختار با وضوح بیشتری مشاهده می شود تا در نهایت، تصویر نهایی به طور کامل بازیابی شود. برخلاف GIF، این الگوریتم ایجاد می کند بار سنگینروی بیننده، زیرا باید کل چرخه تبدیل را برای هر نسخه ارسال شده تکمیل کند.

    در میان سایر موارد اضافه شده، ما به گنجاندن چندین تصویر فشرده شده با JPEG با درجات مختلف فشرده سازی، وضوح و حتی مدل های رنگی در فایل اشاره می کنیم. بر این اساس، در فتوشاپ 6 امکان انتخاب مناطق جداگانه در تصویر و اعمال تنظیمات مختلف فشرده سازی برای آنها فراهم شد. منطقه مورد نظر، برای اولین بار چنین مکانیزمی در سال 1995 با استفاده از مقادیر پایین تر در جدول کوانتیزاسیون ارائه شد. برای انجام این کار، ناحیه مورد نیاز تنظیم می شود (مثلاً به شکل یک کانال جدید در تصویر) و نماد ماسک در کنار آیتم Quality فشار داده می شود. در پنجره ای که ظاهر می شود، می توانید با حرکت دادن لغزنده ها، تصویر را آزمایش کنید - نتیجه نهایی روی صفحه نمایش داده می شود و به شما امکان می دهد به سرعت مصالحه لازم بین کیفیت و اندازه را پیدا کنید.

    مبدل ها و بینندگان تخصصی

    از آنجایی که استاندارد پیاده‌سازی خاصی از روش‌های فشرده‌سازی/فشرده‌سازی را مشخص نمی‌کند، این فضا را برای توسعه‌دهندگان شخص ثالث الگوریتم‌های فشرده‌سازی باز می‌کند. در واقع، می توان از یک الگوریتم شکل موج ساده استفاده کرد و در نتیجه فرآیند فشرده سازی را سرعت بخشید، یا برعکس، یک الگوریتم پیچیده تر را اعمال کرد و بر این اساس، به حجم زیادی نیاز داشت. منابع سیستم.

    راه حل های تخصصی از شرکت های دیگر به عنوان توسعه تجاری در دسترس هستند. برخی به عنوان برنامه های جداگانه (JPEG 2000 توسعه یافته توسط Aware)، برخی دیگر به عنوان ماژول های الحاقی برای رایج ترین ویرایشگرهای شطرنجی (ImagePress JPEG2000 توسعه یافته توسط Pegasus Imaging و ماژول LEAD JPEG2000 از LEAD Technologies) اجرا می شوند. در مقابل پیشینه آنها، شرکت LuraTech متمایز است که مدت هاست با این موضوع سروکار داشته است. این فناوری LuraWave خود را در محصول مستقل LuraWave SmartCompress (نسخه سوم اکنون در دسترس است) ترویج می‌کند و ماژول‌هایی را برای Photoshop، Paintshop، Photopaint ارائه می‌دهد. ویژگی متمایز- بیشتر سرعت بالاکار (تبدیل تقریباً آنی) حتی با تصاویر چند مگابایتی. بر این اساس، قیمت این ماژول بالاترین - 79 دلار است.

    برای مشاهده تصاویر JPEG2000 در مرورگرها، باید یک ماژول نمایشگر ویژه نصب کنید (همه توسعه دهندگان آن را به صورت رایگان ارائه می دهند). درج یک تصویر در یک سند html، مانند هر افزونه، به استفاده از ساختار EMBED (با پارامترهای اضافی) منجر می شود. به عنوان مثال، به این معنی است که از روش انتقال تصویر پیشرونده استفاده خواهد شد. یعنی در مثال ما (فایل 139 کیلوبایتی) ابتدا فقط 250 بایت منتقل می شود که بر اساس آن یک تصویر خشن ساخته می شود سپس پس از بارگذاری 500 بایت تصویر به روز می شود (این کار تا زمانی که مقدار LIMIT ادامه یابد ادامه می یابد. رسیده).

    اگر می خواهید تصویر بهتری داشته باشید، باید مورد Improve را از منویی که در دکمه سمت راست ظاهر می شود انتخاب کنید (شکل 9). برای چهار رزومه، کل تصویر به طور کامل دانلود می شود.

    9

    نتیجه گیری

    بنابراین، JPEG2000 به طور عینی نشان می دهد بالاترین امتیازهااز JPEG فقط در نسبت فشرده سازی بالا. با فشرده سازی 10-20 بار، تفاوت زیادی وجود ندارد. آیا می تواند جایگزین قالب گسترده شود یا به سادگی با آن رقابت کند؟ در آینده نزدیک - به سختی، در بیشتر موارد، نسبت کیفیت / اندازه ارائه شده توسط JPEG کاملا قابل قبول است. و آن 10 تا 20 درصد فشرده‌سازی اضافی که JPEG2000 با کیفیت بصری یکسان ارائه می‌کند، بعید است که منجر به افزایش محبوبیت آن شود.

    از سوی دیگر، شرکت‌های دوربین‌های دیجیتال علاقه زیادی به فرمت جدید نشان می‌دهند، زیرا اندازه ماتریس‌های حساس به نور هر سال به طور پیوسته افزایش می‌یابد و قرار دادن تصاویر در حافظه سخت‌تر می‌شود. و سپس فرمت جدید گسترده تر خواهد شد، و چه کسی می داند، شاید پس از مدتی JPEG2000 به JPEG برسد. در هر صورت، آنالوگ Micro Devices اخیرا یک تراشه تخصصی منتشر کرده است که در آن فشرده سازی / رفع فشرده سازی انجام می شود تکنولوژی جدیددر سطح سخت افزاری پیاده سازی شده است و وزارت دفاع ایالات متحده در حال حاضر فعالانه از فرمت جدیدی برای ضبط عکس های دریافتی از ماهواره های جاسوسی استفاده می کند.

    حقایق و حدسیات

    1. JPEG هنگام باز کردن و ذخیره مجدد فایل کیفیت خود را از دست می دهد.

    درست نیست.کیفیت فقط زمانی از بین می رود که نسبت فشرده سازی کمتر از نسبت فشرده سازی انتخاب شده باشد که تصویر در آن ذخیره شده است.

    2. JPEG هنگام ویرایش فایل کیفیت خود را از دست می دهد.

    آیا حقیقت دارد.هنگامی که یک فایل اصلاح شده را ذخیره می کنید، همه تبدیل ها دوباره انجام می شود - بنابراین از ویرایش مکرر تصویر خودداری کنید. این فقط زمانی اعمال می‌شود که فایل بسته باشد، اگر فایل باز بماند، دلیلی برای نگرانی وجود ندارد.

    3. نتیجه فشرده سازی با پارامترهای یکسان در برنامه های مختلف یکسان خواهد بود.

    درست نیست.برنامه های مختلف مقادیر وارد شده توسط کاربر را به روش های مختلف تفسیر می کنند. به عنوان مثال، در یک برنامه، کیفیت تصویر ذخیره شده (به عنوان مثال، در فتوشاپ)، در برنامه دیگر، میزان فشرده سازی آن (مقابله) نشان داده شده است.

    4. وقتی روی حداکثر کیفیت تنظیم می شود، تصویر بدون افت کیفیت ذخیره می شود.

    درست نیست. JPEG همیشه با تلفات فشرده می شود. اما تنظیم، به عنوان مثال، کیفیت 90٪ به جای 100٪ باعث کاهش حجم فایل بیشتر از کاهش کیفیت می شود.

    5. هر فایل JPEG را می توان در هر ویرایشگری که فرمت JPEG را درک می کند باز کرد.

    درست نیست.پیشرو JPEG گونه ای از JPEG است که برخی از ویرایشگران آن را درک نمی کنند.

    6. JPEG از شفافیت پشتیبانی نمی کند.

    آیا حقیقت دارد.گاهی اوقات ممکن است به نظر برسد که بخشی از تصویر شفاف است، اما در واقع رنگ آن به سادگی طوری انتخاب می شود که با رنگ پس زمینه در صفحه html مطابقت داشته باشد.

    7. JPEG بهتر از GIF فشرده می شود.

    درست نیست.آنها حوزه های کاربردی مختلفی دارند. به طور کلی، یک تصویر "گیف" معمولی پس از تبدیل به JPEG حجم بیشتری خواهد داشت.

    JPEG2000 در مقابل JPEG

    7
    1. با فشرده سازی 20 تا 30 برابر، JPEG2000 و JPEG تقریباً کیفیت یکسانی را ارائه می دهند (به هر حال، فتوشاپ نمی تواند فشرده شود عکس معمولیبیش از این حد).

    2. با فشرده سازی بالاتر، کیفیت JPEG2000 به طور قابل توجهی بالاتر از JPEG است، که به شما امکان می دهد بدون تلفات زیاد تا 50 بار فشرده سازی کنید، و با مقداری تلفات (ما در مورد تصاویر برای اینترنت صحبت می کنیم) - تا 100 و حتی بیشتر تا 200

    3. با نسبت فشرده سازی بالا در مناطقی که تغییر رنگ صاف وجود دارد، تصویر ساختار بلوکی مشخصه یک JPEG ساده را به دست نمی آورد. JPEG2000 همچنین لبه های تیز را تا حدودی لکه دار و گرد می کند - عکس ها را ببینید (شکل 7 و 8).

    نتایج فشرده سازی یک فایل آزمایشی را با درجات مختلف فشرده سازی نشان می دهد (در سمت چپ - ذخیره شده در فتوشاپ در فرمت JPG، در سمت راست - با فرمت JPEG2000). برای تصویر در شکل 7 سطح فشرده سازی 20، 40، 70 و 145 انتخاب شد (در هنگام ذخیره در JPEG2000 می توان آنها را به صراحت مشخص کرد)، درجه فشرده سازی JPGبه گونه ای انتخاب شد که اندازه فایل مانند پس از فشرده سازی توسط JPEG2000 باشد. همانطور که می گویند، نتایج در. برای وضوح، آزمایش دوم بر روی تصویری با جزئیات واضح تر (با سطوح فشرده سازی 10، 20، 40 و 80) انجام شد. مزیت دوباره JPEG2000 است (شکل 8).

    8

    4. از آنجایی که در واقع، کپی هایی با وضوح های مختلف در یک فایل JPEG2000 ذخیره می شوند

    بنابراین، برای کسانی که گالری تصاویر در اینترنت می سازند، نیازی به ایجاد تصاویر کوچک برای آنها نیست.

    5. فشرده سازی بدون اعوجاج (حالت بدون از دست دادن) مورد توجه خاص است. بنابراین، فایل آزمایشی با فشرده سازی LZW از فتوشاپ 827 کیلوبایت گرفت و JPEG2000 - 473 کیلوبایت فشرده شد.

    6. در مقایسه با JPEG، همنام پیشرفته‌تر آن منابع سیستم را به میزان قابل توجهی مصرف می‌کند. اما قدرت کامپیوترها که طی دو سال گذشته به طور قابل توجهی افزایش یافته است، این امکان را فراهم می کند که با روشی جدید مشکلات فشرده سازی تصویر را با موفقیت حل کنیم.

    7. عدم پشتیبانی از JPEG2000 در مرورگرها. برای مشاهده چنین تصاویری باید یک عکس نسبتا بزرگ دانلود کنید ماژول اضافی(1.2 مگابایت).

    8. عدم وجود نرم افزار رایگان برای ذخیره تصاویر در فرمت جدید.

    مجلات در حوزه عمومی

    در مورد همین موضوع:


    "پیاده سازی الگوریتم ها

    JPEG و JPEG2000"

    تکمیل شد:

    گروه دانش آموزی 819

    اوگاروف دیمیتری

    نحوه کار الگوریتم های JPEG و JPEG2000

    1. الگوریتم JPEG

    JPEG (گروه مشترک متخصصان عکاسی انگلیسی - گروه مشترکی از متخصصان در زمینه عکاسی) - روشی پرکاربرد برای فشرده سازی تصاویر عکاسی است. فرمت فایل حاوی داده های فشرده معمولاً نام JPEG نیز نامیده می شود. متداول ترین پسوند برای چنین فایل هایی عبارتند از .jpeg، .jfif، .jpg، .JPG یا JPE. با این حال، از این میان، jpg. محبوب ترین پسوند در همه پلتفرم ها است.

    الگوریتم JPEG یک الگوریتم فشرده سازی است با افت کیفیت.

    منطقه برنامه

    این فرمت یک فرمت فشرده سازی با اتلاف است، بنابراین فرض اینکه JPEG داده ها را به صورت 8 بیت در هر کانال (24 بیت در پیکسل) ذخیره می کند، اشتباه است. از طرف دیگر، از آنجایی که داده های فشرده و غیرفشرده با JPEG معمولاً 8 بیت در هر کانال هستند، گاهی اوقات از این اصطلاح استفاده می شود. فشرده سازی تصاویر سیاه و سفید در مقیاس خاکستری نیز پشتیبانی می شود.

    هنگام ذخیره یک فایل JPEG، می توانید درجه کیفیت و از این رو درجه فشرده سازی را که معمولاً در برخی از واحدهای معمولی تنظیم می شود، به عنوان مثال از 1 تا 100 یا از 1 تا 10 تعیین کنید. تعداد بیشتربا بهترین کیفیت مطابقت دارد، اما اندازه فایل افزایش می یابد. معمولا تفاوت کیفیت بین 90 تا 100 عملا با چشم قابل درک نیست. باید به خاطر داشت که تصویر بیت به بیت بازیابی شده همیشه با تصویر اصلی متفاوت است. یک تصور غلط رایج این است که کیفیت JPEG برابر با مقدار اطلاعات ذخیره شده است.

    مراحل کدنویسی

    فرآیند فشرده سازی JPEG شامل چندین مرحله است:

    1. تبدیل تصویر به فضای رنگی مطلوب.

    هنگام استفاده از فضای رنگی luma/chrominance (YCbCr)، نسبت فشرده سازی بهتری به دست می آید. در این مرحله از کدگذاری با استفاده از روابط مربوطه مدل رنگ RGB به YCbCr تبدیل می شود:

    Y = 0.299*R + 0.587*G + 0.114*B

    Cb = - 0.1687*R – 0.3313*G + 0.5*B

    Cr = 0.5*R – 0.4187*G – 0.0813*B.
    در طول رمزگشایی می توان از تبدیل معکوس مناسب استفاده کرد:
    R = Y + 1.402*Cr

    G = Y – 0.34414*Cb – 0.71414*Cr

    B = Y + 1.772 * Cb.
    توجه به Y,Cb,Cr در سیستم بینایی انسان:

    چشم، به خصوص شبکیه، دارای دو نوع سلول به عنوان تحلیلگر بینایی است: سلول های دید در شب که فقط سایه های خاکستری (از سفید روشن تا سیاه تیره) را درک می کنند و سلول های بینایی در روز که رنگ را درک می کنند. اولین سلول ها رنگ RGB، سطح روشنایی مشابه با مقدار Y را تشخیص می دهد. سلول های دیگر مسئول درک رنگ رنگ - مقدار مربوط به تفاوت رنگ را تعیین می کنند.


    2. نمونه‌برداری فرعی از اجزای کرومینانس با میانگین‌گیری گروه‌های پیکسل.

    بسیاری از اطلاعات بصری که چشم انسان به آن حساس‌تر است، شامل اجزای درخشندگی با فرکانس بالا (Y) فضای رنگی YCbCr است. دو جزء رنگی دیگر (Cb و Cr) حاوی اطلاعات رنگی با فرکانس بالا هستند که چشم انسان نسبت به آنها حساسیت کمتری دارد. بنابراین، می توان قسمت خاصی از آن را دور انداخت و به این ترتیب، می توان تعداد پیکسل های در نظر گرفته شده برای کانال های رنگی را کاهش داد.

    1) نوع 4:2:0 (زمانی که تصویر به مربع های 2x2 پیکسل تقسیم می شود و در هر یک از آنها همه پیکسل ها دریافت می کنند. همان مقادیرکانال های Cb و Cr، و روشنایی Y y برای هر یک باقی می ماند)

    2) نوع 4:2:2 (اتحاد مولفه های رنگی فقط به صورت افقی در گروه های دو پیکسلی رخ می دهد).

    3) نوع 4:4:4 به این معنی است که هر پیکسل در هر ردیف مقدار منحصر به فرد خود را از اجزای Y، Cb و Cr دارد. (شکل 1 الف)

    4) نوع 4:2:2. با زیرنمونه برداری از سیگنال کرومینانس با ضریب 2 به صورت افقی، یک جریان YCbCr 4:2:2 از یک جریان YCbCr 4:4:4 دریافت می کنیم. ورودی "4: 2: 2" به این معنی است که در یک خط، 4 مقدار روشنایی به ازای هر 2 مقدار کرومینانس وجود دارد (شکل 1 ب را ببینید). سیگنال YCbCr 4:2:2 کیفیت تصویر بسیار کمی را نسبت به سیگنال YCbCr 4:4:4 از دست می دهد، اما پهنای باند مورد نیاز تا 33 درصد از سیگنال اصلی کاهش می یابد.

    3. اعمال تبدیل های کسینوس گسسته برای کاهش افزونگی داده های تصویر.

    مرحله اصلی الگوریتم تبدیل کسینوس گسسته (DCT یا DCT) است که نوعی تبدیل فوریه است. هنگام کار با تصاویر برای اهداف مختلف، نه تنها برای فشرده سازی، استفاده می شود. انتقال به نمایش فرکانس مقادیر پیکسل به ما امکان می دهد نگاه متفاوتی به تصویر بیندازیم، آن را پردازش کنیم و آنچه برای ما جالب است، آن را فشرده کنیم. علاوه بر این، با دانستن ضرایب تبدیل، ما همیشه می توانیم عمل مخالف را انجام دهیم - تصویر اصلی را برگردانیم.

    یک DCT که مستقیماً به یک بلوک (در مورد ما 8x8 پیکسل) از یک تصویر اعمال می شود، به شکل زیر است:

    که در آن x، y - مختصات مکانی یک پیکسل (0..7)،

    f(x,y) - مقادیر پیکسل ماکروبلاک اصلی (مثلاً روشنایی)

    u,v - مختصات پیکسل در نمایش فرکانس (0..7)

    w(u) =1/SQRT(2) برای u=0، در غیر این صورت w(u)=1 (SQRT ریشه دوم است)

    w(v) =1/SQRT(2) برای v=0، در غیر این صورت w(v)=1

    یا به صورت ماتریسی:

    4. کمی کردن هر بلوک از ضرایب DCT با استفاده از توابع وزن بهینه شده برای ادراک بصری انسان.

    تبدیل کسینوس گسسته اطلاعات را برای فشرده سازی و گرد کردن با اتلاف آماده می کند. برای هر عنصر از ماتریس در حال تبدیل، یک عنصر مربوط به ماتریس وجود دارد کوانتیزاسیونماتریس حاصل با تقسیم هر عنصر ماتریس تبدیل شده بر عنصر مربوطه ماتریس کوانتیزاسیون و سپس گرد کردن نتیجه به نزدیکترین عدد صحیح به دست می آید. هنگام کامپایل ماتریس کوانتیزاسیون، عناصر بزرگ آن در گوشه پایین سمت چپ قرار دارند، به طوری که هنگام تقسیم بر آنها، داده‌های موجود در این گوشه پس از تبدیل کسینوس گسسته (فقط آنهایی که گرد کردن آن‌ها دردناک‌تر خواهند بود) به طور تقریبی گرد می‌شوند. بر این اساس، اطلاعات از دست رفته برای ما نسبت به بقیه اهمیت کمتری دارد.


    5. مرحله فشرده سازی ثانویه

    مرحله نهایی رمزگذار JPEG، رمزگذاری ماتریس به دست آمده است.

    5.1 جایگشت زیگزاگ 64 ضرایب DCT

    بنابراین، پس از اینکه ما یک تبدیل DCT را روی یک بلوک 8x8 از مقادیر انجام دادیم، آن را انجام دادیم بلوک جدید 8*8. سپس، این بلوک 8x8 به صورت زیگزاگ مانند زیر اسکن می شود:

    (اعداد موجود در بلوک 8x8 نشان دهنده ترتیبی است که ما به ماتریس 2 بعدی 8x8 نگاه می کنیم)

    0, 1, 5, 6,14,15,27,28,

    2, 4, 7,13,16,26,29,42,

    3, 8,12,17,25,30,41,43,

    9,11,18,24,31,40,44,53,

    10,19,23,32,39,45,52,54,

    20,22,33,38,46,51,55,60,

    21,34,37,47,50,56,59,61,

    35,36,48,49,57,58,62,63

    همانطور که می بینید، ابتدا گوشه سمت چپ بالا (0.0)، سپس مقدار (0.1)، سپس (1.0)، سپس (2.0)، (1،1)، (0، 2)، (0.3)، (1.2)، (2.1)، (3.0)، و غیره.

    بعد از اینکه ماتریس 8x8 را زیگزاگ کردیم، اکنون برداری با 64 ضریب داریم (0..63) نکته این بردار زیگزاگ این است که به ضرایب DCT 8x8 به ترتیب صعودی فرکانس های فضایی نگاه می کنیم. بنابراین، ما یک بردار مرتب شده بر اساس معیارهای فرکانس مکانی دریافت می کنیم: اولین مقدار بردار (شاخص 0) مربوط به کمترین فرکانس در تصویر است - با عبارت DC نشان داده می شود. با افزایش شاخص در بردار، مقادیر مربوط به فرکانس های بالاتر را دریافت می کنیم (مقداری با شاخص 63 مربوط به دامنه است. فرکانس بالادر یک بلوک 8x8). بقیه ضرایب DCT را AC نشان می دهند.

    5.2 رمزگذاری طولی صفر (RLE)

    حالا ما یک بردار با یک دنباله طولانی از صفر داریم. ما می توانیم از این با رمزگذاری صفرهای متوالی استفاده کنیم. مهم: بعداً خواهید دید که چرا، اما در اینجا از رمزگذاری ضریب اول بردار (ضریب DC) که به شکل دیگری کدگذاری می شود، صرف نظر می کنیم. بردار 64 اصلی را به عنوان بردار 63 در نظر بگیرید (این بردار 64 بدون ضریب اول است)

    فرض کنید 57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,0,0 داریم فقط 0,... .0

    در اینجا - مانند RLC فشرده سازی jpegبرای این مثال انجام شد:

    (0.57); (0.45)؛ (4.23)؛ (1,-30); (0,-16); (2.1)؛ EOB

    همانطور که می بینید، برای هر مقدار غیر از 0، تعداد 0 های PRIOR متوالی را قبل از مقدار رمزگذاری می کنیم، سپس مقدار را اضافه می کنیم. نکته دیگر: EOB فرم کوتاه End of Block است و یک مقدار رمزگذاری شده خاص (نشانگر) است. اگر در یک بردار به موقعیتی رسیده باشیم که از آن فقط تا انتهای بردار صفر داریم، آن موقعیت را با EOB تخصیص می دهیم و فشرده سازی RLC بردار کوانتیزه را خاتمه می دهیم.

    [توجه داشته باشید که اگر بردار کوانتیزه شده غیر صفر باشد (آخرین عنصر غیر صفر داشته باشد)، نشانگر EOB نخواهیم داشت.]

    (0,57); (0,45); (4,23); (1,-30); (0,-16); (2,1); (0,0)

    یک چیز اساسی دیگر: بیایید در جایی از بردار کوانتیزه شده بگوییم:

    57، هجده صفر، 3، 0.0، 0.0 2، سی و سه صفر، 895، EOB

    کدگذاری JPG هافمن این محدودیت را ایجاد می کند که تعداد صفرهای ابتدایی باید به عنوان یک مقدار 4 بیتی کدگذاری شود - نمی تواند از 15 تجاوز کند.

    بنابراین، مثال قبلی باید به صورت زیر کدگذاری شود:

    (0,57); (15,0) (2,3); (4,2); (15,0) (15,0) (1,895), (0,0)

    (15,0) یک مقدار رمزگذاری شده ویژه است که نشان می دهد که 16 صفر متوالی به دنبال آن چیست.

    5.3 مرحله آخر - کدگذاری هافمن

    ابتدا یک نکته مهم: به جای ذخیره مقدار واقعی، استاندارد JPEG مشخص می کند که حداقل اندازه را در بیت هایی که می توانیم آن مقدار را در آن نگه داریم (به این دسته از آن مقدار می گویند) و سپس یک نمایش رمزگذاری شده بیتی از آن را ذخیره کنیم. ارزش اینگونه است:

    7,..,-4,4,..,7 3 000,001,010,011,100,101,110,111

    15,..,-8,8,..,15 4 0000,..,0111,1000,..,1111

    31,..,-16,16,..,31 5 00000,..,01111,10000,..,11111

    63,..,-32,32,..,63 6 .

    127,..,-64,64,..,127 7 .

    255,..,-128,128,..,255 8 .

    511,..,-256,256,..,511 9 .

    1023,..,-512,512,..,1023 10 .

    2047,..,-1024,1024,..,2047 11 .

    4095,..,-2048,2048,..,4095 12 .

    8191,..,-4096,4096,..,8191 13 .

    16383,..,-8192,8192,..,16383 14 .

    32767,..,-16384,16384,..,32767 15 .

    پس از آن، برای مثال قبلی:

    (0,57); (0,45); (4,23); (1,-30); (0,-8); (2,1); (0,0)

    بیایید فقط مقدار مناسب این جفت ها را رمزگذاری کنیم، به جز جفت هایی که نشانگرهای خاصی مانند (0,0) یا (اگر باید داشته باشیم) (15,0) هستند.

    45، به طور مشابه، به صورت (6.101101) کدگذاری می شود.

    30 -> (5,00001)

    و اکنون، دوباره رشته جفت ها را می نویسیم:

    (0,6), 111001; (0,6), 101101; (4,5), 10111; (1,5), 00001; (0,4), 0111; (2,1), 1; (0,0)

    جفت‌های 2 مقدار محصور در پرانتز را می‌توان در یک بایت نشان داد، زیرا در واقع هر یک از 2 مقدار را می‌توان در یک قطعه 4 بیتی نشان داد (شمار ​​صفر اول همیشه کمتر از 15 و درست مانند دسته است. [اعداد کدگذاری شده در فایل JPG- در منطقه -32767..32767]). در این بایت، بیت بالا تعداد صفرهای اول را نشان می‌دهد و بیت پایین نشان‌دهنده مقوله مقدار جدید غیر از 0 است.

    مرحله نهایی رمزگذاری این است که هافمن آن بایت را رمزگذاری می کند، و سپس در یک فایل JPG، به عنوان جریان بیت، کد هافمن آن بایت را می نویسد و سپس نمایش بیت آن عدد را نشان می دهد.

    به عنوان مثال، برای بایت 6 (معادل (0.6)) کد هافمن = 111000 داریم.

    21 = (1,5) - 11111110110

    4 = (0,4) - 1011

    33 = (2,1) - 11011

    0 = EOB = (0.0) - 1010

    بیت استریم نهایی نوشته شده در فایل JPG روی دیسک برای مثال قبلی 63 ضریب است (به یاد داشته باشید که ضریب اول را حذف کردیم) -

    111000 111001 111000 101101 1111111110011001 10111 11111110110 00001

    1011 0111 11011 1 1010
    مزایا و معایب

    معایب فرمت شامل این واقعیت است که با نسبت فشرده سازی قوی، ساختار داده بلوک خود را احساس می کند، تصویر "به مربع تقسیم می شود" (هر یک به اندازه 8x8 پیکسل). این اثر به ویژه در مناطقی با فرکانس مکانی پایین قابل توجه است ( انتقال های صافتصاویر، مانند آسمان صاف). در مناطقی با فرکانس فضایی بالا (به عنوان مثال، لبه های متضاد تصویر)، "مصنوعات" مشخصه ظاهر می شوند - ساختار نامنظم پیکسل های رنگ و / یا روشنایی مخدوش. علاوه بر این، جزئیات رنگی کوچک از تصویر ناپدید می شوند. همچنین نباید فراموش کرد که فرمت داده شدهاز شفافیت پشتیبانی نمی کند.

    با این حال، علیرغم کاستی های آن، JPEG به دلیل نسبت فشرده سازی بالا، نسبت به جایگزین های موجود در زمان معرفی، بسیار گسترده شد.

    2. الگوریتم JPEG2000

    الگوریتم JPEG-2000 توسط همان گروه از متخصصان عکاسی به عنوان JPEG توسعه داده شد. شکل گیری JPEG به عنوان یک استاندارد بین المللی در سال 1992 تکمیل شد. در سال 1997 مشخص شد که استاندارد جدید، انعطاف پذیرتر و قدرتمندتر مورد نیاز است که تا زمستان 2000 نهایی شد.

    تفاوت های اصلی بین الگوریتم در JPEG 2000 و الگوریتم در JPEG به شرح زیر است:

    1) کیفیت تصویر بهتر با نسبت فشرده سازی قوی. یا همان، نسبت تراکم بزرگ با همان کیفیت برای نسبت تراکم بالا. در واقع، این به معنای کاهش قابل توجه در اندازه گرافیک های "با کیفیت وب" است که توسط اکثر سایت ها استفاده می شود.

    2) پشتیبانی از کدگذاری منطقه فردی با بهترین کیفیت. مشخص است که بخش‌های خاصی از تصویر برای درک انسان حیاتی هستند (مثلاً چشم‌ها در یک عکس)، در حالی که می‌توان کیفیت بخش‌های دیگر را قربانی کرد (مثلاً پس‌زمینه). با بهینه سازی "دستی"، افزایش نسبت فشرده سازی تا زمانی که کیفیت در بخش مهمی از تصویر از بین برود، انجام می شود. اکنون می توان کیفیت را در مناطق بحرانی تنظیم کرد و بقیه مناطق را با شدت بیشتری فشرده کرد، یعنی. ما نسبت فشرده سازی نهایی بالاتری را با کیفیت تصویر ذهنی برابر دریافت می کنیم.

    3) الگوریتم فشرده سازی اصلی با موجک جایگزین شده است. علاوه بر افزایش نسبت تراکم فوق، بلوک شدن 8 پیکسل را که هنگام افزایش نسبت فشرده سازی رخ می دهد، از بین برد. علاوه بر این، توسعه صاف تصویر اکنون ذاتاً استاندارد است (JPEG پیشرو که به طور فعال در اینترنت استفاده می شود، بسیار دیرتر از JPEG ظاهر شد).

    4) برای افزایش نسبت فشرده سازی، الگوریتم از فشرده سازی حسابی استفاده می کند. استاندارد JPEG در ابتدا شامل فشرده سازی حسابی نیز می شد، اما بعداً با فشرده سازی کم کارآمد هافمن جایگزین شد زیرا فشرده سازی حسابی توسط حق ثبت اختراع محافظت می شد. اکنون حق ثبت اختراع اصلی منقضی شده است و فرصتی برای بهبود الگوریتم وجود دارد.

    5) از فشرده سازی بدون تلفات پشتیبانی کنید. علاوه بر فشرده سازی معمولی با اتلاف، JPEG جدید اکنون از فشرده سازی بدون تلفات نیز پشتیبانی می کند. بنابراین، می توان از JPEG برای فشرده سازی تصاویر پزشکی، در چاپ، در حالی که متن را برای تشخیص توسط سیستم های OCR و غیره ذخیره کرد، استفاده کرد.

    6) پشتیبانی از فشرده سازی تصاویر تک بیتی (2 رنگ). برای ذخیره تصاویر یک بیتی (نقاشی جوهر، متن اسکن شده، و غیره)، فرمت GIF قبلاً به طور گسترده توصیه می شد، زیرا فشرده سازی با استفاده از DCT برای تصاویر با تغییر رنگ واضح بسیار ناکارآمد است. در JPEG، هنگامی که فشرده می شود، یک تصویر 1 بیتی به یک تصویر 8 بیتی کاهش می یابد، یعنی. 8 برابر افزایش یافت، پس از آن تلاش برای فشرده سازی انجام شد، اغلب کمتر از 8 برابر. اکنون می توانیم JPEG 2000 را به عنوان یک الگوریتم جهانی توصیه کنیم.

    7) شفافیت در سطح قالب پشتیبانی می شود. اکنون می‌توانید هنگام ایجاد صفحات WWW نه تنها در GIF، بلکه در JPEG 2000، پس‌زمینه را هموار کنید. که به شما امکان می دهد یک انتقال صاف از یک تصویر مات به پس زمینه شفاف تنظیم کنید.

    علاوه بر این، سطح قالب از گنجاندن اطلاعات کپی رایت در تصویر پشتیبانی می کند، پشتیبانی از مقاومت در برابر خطای بیت در حین انتقال و پخش، می توانید ابزارهای خارجی (افزونه ها) را برای فشرده سازی یا پردازش درخواست کنید، می توانید توضیحات آن، اطلاعات جستجو، و غیره .d.

    مراحل کدنویسی

    فرآیند فشرده سازی طبق طرح JPEG2000 شامل تعدادی مرحله است:

    1. تبدیل تصویر به فضای رنگی بهینه.
    در این مرحله از رمزگذاری، با استفاده از نسبت های مناسب، مدل رنگی RGB به YUV تبدیل می شود:

    هنگام فشرده سازی، تبدیل معکوس مربوطه اعمال می شود:

    2. موجک گسستهدگرگونی.

    تبدیل موجک گسسته (DWT) همچنین می تواند دو نوع باشد - برای فشرده سازی با اتلاف و برای فشرده سازی بدون تلفات.

    این تبدیل در حالت یک بعدی حاصل ضرب اسکالر ضرایب مربوطه و رشته مقادیر است. اما از آنجایی که بسیاری از ضرایب صفر هستند، سپس تبدیل موجک مستقیم و معکوس را می توان با فرمول های زیر نوشت (برای تبدیل عناصر انتهایی خط، از امتداد آن 2 پیکسل در هر جهت استفاده می شود که مقادیر آن متقارن با مقادیر عناصر خط نسبت به پیکسل های شدید آن):
    y(2*n + 1) = x(2*n + 1) - (int)(x(2*n) + x(2*n + 2)) / 2

    y(2*n) = x(2*n) + (int)(y(2*n - 1) + y(2*n + 1) + 2) / 4

    و بالعکس

    x(2*n) = y(2*n) - (int)(y(2*n - 1) + y(2*n + 1) + 2) / 4

    x(2*n + 1) = y(2*n + 1) + (int)(x(2*n) + x(2*n + 2)) / 2.

    3. کمی سازی ضرایب.

    درست مانند الگوریتم JPEG، کوانتیزاسیون هنگام کدگذاری تصویر در فرمت JPEG2000 استفاده می شود. تبدیل موجک گسسته، مانند آنالوگ خود، ضرایب را بر اساس فرکانس مرتب می کند. اما برخلاف JPEG، در قالب جدید، ماتریس کوانتیزاسیون برای کل تصویر یکسان است.


    4. مرحله فشرده سازی ثانویه

    . همانند JPEG، در قالب جدید، آخرین مرحله در الگوریتم فشرده سازی، رمزگذاری بدون تلفات است. اما برخلاف فرمت قبلی، JPEG2000 از یک الگوریتم فشرده سازی حسابی استفاده می کند.

    پیاده سازی نرم افزار

    در این مقاله الگوریتم‌های JPEG و JPEG2000 پیاده‌سازی شده‌اند. هر دو الگوریتم کدگذاری مستقیم و معکوس را پیاده سازی می کنند ( آخرین مرحله فشرده سازی ثانویه وجود ندارد). محاسبه JPEG به دلیل محاسبه "مستقیم" DCT زمان زیادی (حدود 30 ثانیه) طول می کشد. اگر نیاز به افزایش سرعت کار دارید، ابتدا باید ماتریس DCT را محاسبه کنید (در کلاس DCT تغییراتی ایجاد کنید).

    بیایید نگاهی به برنامه بیندازیم:


    1. پس از راه اندازی، پنجره ای ظاهر می شود که در آن

    و با فشردن دکمه (2) و وارد کردن نام مورد نظر در کادر محاوره ای می توانید آن را ذخیره کنید.

  • با یک ضریب کیفیت به اندازه کافی بزرگ، تصویر به طور چشمگیری تغییر می کند. اگر این یک الگوریتم JPEG باشد، بلوک‌های ۸×۸ تلفظ می‌شوند. (در مورد الگوریتم JPEG2000، تقسیم بلوکی وجود نخواهد داشت)
  • قبل از:

    بعد از:



    JPEG یکی از الگوریتم های جدید و نسبتا قدرتمند است. این عملاً استاندارد واقعی برای تصاویر تمام رنگی است. این الگوریتم با مناطق 8×8 عمل می کند که در آن روشنایی و رنگ نسبتاً نرم تغییر می کند. در نتیجه، هنگام تجزیه یک ماتریس از چنین ناحیه‌ای به یک ردیف دوتایی در کسینوس (به فرمول‌های زیر مراجعه کنید)، تنها ضرایب اول مهم هستند. بنابراین، فشرده‌سازی در JPEG به دلیل صاف بودن تغییر رنگ‌ها در تصویر انجام می‌شود. .

    این الگوریتم توسط گروهی از متخصصان عکاسی به طور خاص برای فشرده سازی تصاویر 24 بیتی توسعه یافته است. JPEG - Joint Photographic Expert Group - بخش در ISO - سازمان بین المللی استاندارد. نام الگوریتم به صورت ["jei" peg] خوانده می شود. به طور کلی، این الگوریتم مبتنی بر تبدیل کسینوس گسسته (از این پس - DCT) است که به ماتریس تصویر اعمال می شود تا ماتریس جدیدی از ضرایب به دست آید. یک تبدیل معکوس برای به دست آوردن تصویر اصلی اعمال می شود.

    DCT تصویر را به دامنه های فرکانس های خاص تجزیه می کند. بنابراین، هنگام تبدیل، ماتریسی به دست می آوریم که در آن بسیاری از ضرایب یا نزدیک یا برابر با صفر هستند. علاوه بر این، به دلیل ناقص بودن دید انسان، می توان ضرایب را به طور تقریبی بدون کاهش قابل توجهی در کیفیت تصویر، تقریب زد.

    برای این منظور از کمی سازی ضرایب استفاده می شود. در ساده ترین حالت، این یک شیفت بیتی حسابی به سمت راست است. این تبدیل بخشی از اطلاعات را از دست می دهد، اما می توان به درجه بیشتری از فشرده سازی دست یافت.

    نحوه عملکرد الگوریتم

    بنابراین، بیایید الگوریتم را با جزئیات بیشتری در نظر بگیریم (شکل 2.1). فرض کنید یک تصویر 24 بیتی را فشرده می کنیم.


    مرحله 1.تصویر را از فضای رنگی RGB، با اجزای مسئول اجزای قرمز (قرمز)، سبز (سبز) و آبی (آبی) رنگ نقطه، به فضای رنگی YCrCb (گاهی اوقات YUV نامیده می‌شود) ترجمه می‌کنیم.

    در آن، Y جزء روشنایی و Cr، Co اجزای مسئول رنگ (قرمز رنگی و آبی رنگی) هستند. با توجه به این واقعیت که چشم انسان نسبت به روشنایی حساسیت کمتری به رنگ دارد، امکان آرشیو آرایه هایی برای اجزای Cr و Co با تلفات زیاد و بر این اساس نسبت تراکم بالا میسر می شود.چنین تبدیلی مدت هاست در تلویزیون مورد استفاده قرار گرفته است. باند فرکانسی باریک تری به سیگنال های مسئول رنگ اختصاص داده می شود. به صورت ساده، ترجمه از فضای رنگی RGB به فضای رنگی YCrCb را می توان با استفاده از ماتریس انتقال نشان داد:

    گام 2ما تصویر اصلی را به ماتریس های 8x8 تقسیم می کنیم. ماتریس های کاری DCT را از هر 3 تا 8 بیت به طور جداگانه برای هر جزء تشکیل می دهیم. در نسبت تراکم بالاتر، این مرحله می تواند کمی دشوارتر باشد. تصویر مانند مورد اول بر مولفه Y تقسیم می شود و برای مؤلفه های Cr و Cb، ماتریس ها از طریق خط و از طریق ستون تایپ می شوند. یعنی فقط یک ماتریس DCT کار از ماتریس اصلی 16x16 بدست می آید. در این صورت، همانطور که به راحتی قابل مشاهده است، ما 3/4 را از دست می دهیم اطلاعات مفیددر مورد اجزای رنگی تصویر و بلافاصله فشرده سازی 2 برابری دریافت می کنیم. ما می توانیم این کار را با کار در فضای YCrCb انجام دهیم. همانطور که تمرین نشان داده است، این تاثیر زیادی روی تصویر RGB ایجاد شده ندارد.

    مرحله 3به شکل ساده شده، DCT برای n=8 می تواند به صورت زیر نمایش داده شود:

    nu,v] = ^Hc(i,u)xC(j,v)y

    rY)

    Yq= IntegerRound

    در این مرحله نسبت تراکم کنترل می شود و بیشترین تلفات رخ می دهد. واضح است که با تنظیم MC با ضرایب بزرگ، به صفرهای بیشتر و در نتیجه نسبت تراکم بیشتر خواهیم رسید.

    اثرات خاص الگوریتم نیز با کوانتیزاسیون همراه است. در مقادیر بالای ضریب گاما، تلفات در فرکانس‌های پایین می‌تواند آنقدر زیاد باشد که تصویر به مربع‌های 8x8 تقسیم شود. تلفات در فرکانس های بالا می تواند خود را در به اصطلاح نشان دهد اثر گیبس،هنگامی که نوعی "نیمبوس" در اطراف خطوط با یک انتقال شدید رنگ تشکیل می شود.

    گام 5. ماتریس 8x8 را با استفاده از اسکن "زیگ زاگ" به یک بردار 64 عنصری تبدیل می کنیم، یعنی عناصر را با شاخص های (0.0)، (0.1)، (1.0)، (2.0) می گیریم...

    بنابراین، در ابتدای بردار، ضرایب ماتریس مربوط به فرکانس های پایین، و در انتها - به فرکانس های بالا را دریافت می کنیم.

    مرحله 6ما بردار را با استفاده از الگوریتم کدگذاری گروهی در هم می‌کشیم. در این صورت جفت هایی از نوع بدست می آوریم<пропустить, число>، که در آن "پرش" تعداد صفرهایی است که باید رد شوند و "عدد" مقداری است که باید در سلول بعدی قرار دهید. بنابراین، بردار 42 3000-2 00001 ... به جفت (0.42) (0.3) (3،-2) (4،1) تا می شود.

    گام 7. جفت های به دست آمده را با کد گذاری هافمن با جدول ثابت تا کنید.

    فرآیند بازسازی تصویر در این الگوریتم کاملاً متقارن است. این روش به شما امکان می دهد برخی از تصاویر را 10-15 بار بدون تلفات جدی فشرده کنید.

    جنبه های مثبت مهم الگوریتم عبارتند از:

    ■ درجه فشرده سازی تنظیم شده است.

    ■ تصویر رنگی خروجی می تواند 24 بیت در هر نقطه باشد.

    معایب الگوریتم این است که:

    ■ افزایش نسبت فشرده سازی تصویر را به مربع های جداگانه تقسیم می کند (8x8). این به دلیل این واقعیت است که تلفات زیادی در فرکانس‌های پایین در طول کوانتیزاسیون اتفاق می‌افتد و بازیابی داده‌های اصلی غیرممکن می‌شود.

    ■ اثر گیبس-هاله در امتداد مرزهای انتقال رنگ تیز ظاهر می شود.

    همانطور که قبلاً ذکر شد، JPEG نسبتاً اخیراً - در سال 1991 - استاندارد شد. اما حتی در آن زمان نیز الگوریتم‌هایی وجود داشتند که با افت کیفیت کمتری فشرده‌تر می‌شوند. واقعیت این است که اقدامات توسعه دهندگان استاندارد به دلیل قدرت فناوری که در آن زمان وجود داشت محدود شد. یعنی حتی در رایانه شخصی، الگوریتم باید کمتر از یک دقیقه روی یک تصویر متوسط ​​کار کند و اجرای سخت افزاری آن باید نسبتاً ساده و ارزان باشد. الگوریتم باید متقارن باشد (زمان باز کردن زیپ تقریباً برابر با زمان بایگانی است).

    برآورده شدن آخرین نیاز، ظاهر دستگاه هایی مانند دوربین های دیجیتال را ممکن کرد که عکس های 24 بیتی را روی یک فلش کارت 8 تا 256 مگابایتی می گیرند." سپس این کارت در اسلات لپ تاپ شما قرار می گیرد و برنامه مربوطه به شما اجازه می دهد تا تصاویر را بخوانید درست نیست نیا،اگر الگوریتم نامتقارن بود، منتظر ماندن طولانی مدت تا زمانی که دستگاه "شارژ" شود - تصویر را فشرده می کند، ناخوشایند است.

    ویژگی نه چندان خوب JPEG نیز این است که،که اغلب نوارهای افقی و عمودی روی نمایشگر کاملاً نامرئی هستند و تنها زمانی می توانند ظاهر شوند که به شکل الگوی موآر چاپ شوند. زمانی اتفاق می‌افتد که یک الگوی چاپ اریب روی نوارهای افقی و عمودی تصویر اعمال شود. به دلیل این شگفتی ها، JPEG نیست به طور فعال توصیه می شوداستفاده در صنعت چاپ، تنظیم ضرایب بالای ماتریس کوانتیزاسیون. با این حال، هنگام آرشیو تصاویر در نظر گرفته شده برای مشاهده انسان، در حال حاضر ضروری است.

    وسیعاستفاده از JPEG برای مدت طولانی متوقف شد، شاید تنها به دلیل این واقعیت که با تصاویر 24 بیتی کار می کند. بنابراین برای مشاهده تصویری با کیفیت قابل قبول بر روی مانیتور معمولی در پالت 256 رنگ، استفاده از الگوریتم های مناسب و در نتیجه زمان معینی مورد نیاز بود. در برنامه‌هایی که کاربر حساس را هدف قرار می‌دهند، مانند بازی‌ها، چنین تاخیرهایی غیرقابل قبول است. علاوه بر این، اگر تصاویری داشته باشید، مثلاً با فرمت GIF 8 بیتی، تبدیل به JPEG 24 بیتی شده و سپس برای مشاهده به GIF برگردید، با هر دو تبدیل، کیفیت دو بار کاهش می یابد. با این حال، افزایش اندازه آرشیو اغلب آنقدر زیاد است (3-20 برابر) و از دست دادن کیفیت آنقدر کم است که ذخیره تصاویر در JPEG بسیار کارآمد است.

    در مورد اصلاحات این الگوریتم باید چند کلمه گفت. اگرچه JPEG یک استاندارد ISO است، فرمت فایل آن ثابت نشده است. با استفاده از این، سازندگان فرمت های ناسازگار خود را ایجاد می کنند و بنابراین، می توانند الگوریتم را تغییر دهند. بنابراین، جداول داخلی الگوریتم توصیه شده توسط ISO با آنها جایگزین می شود. علاوه بر این، هنگام تنظیم درجه تلفات، سردرگمی جزئی وجود دارد. به عنوان مثال، هنگام آزمایش، معلوم می شود که کیفیت "عالی"، "100٪" و "10 امتیاز" تصاویر به طور قابل توجهی متفاوت است. در عین حال، به هر حال، کیفیت "100٪" به معنای فشرده سازی بدون تلفات نیست. همچنین انواع JPEG برای برنامه های خاص وجود دارد.

    چگونه استاندارد ISO JPEG شروع به استفاده بیشتر و گسترده تر در تبادل تصاویر در شبکه های کامپیوتری می کند. الگوریتم JPEG در فرمت‌های Quick Time، PostScript Level 2، Tiff 6.0 پشتیبانی می‌شود و در حال حاضر جایگاه برجسته‌ای را در سیستم‌های چند رسانه‌ای اشغال می‌کند.

    ویژگی های الگوریتم JPEG: o ! ش ، نسبت تراکم: 2-200 (تنظیم شده توسط کاربر). ,ج, :_,. . کلاس تصویر:تصاویر تمام رنگی 2jj.bit یا iso | تخمیر در مقیاس خاکستری بدون تغییر رنگ واضح ^ o &, (عکس).

    تقارن: 1.

    مشخصات:در برخی موارد الگوریتم ایجاد می کند! هاله اطراف لبه های افقی و عمودی تیز در یک تصویر (اثر گیبس). علاوه بر این، با درجه فشرده سازی بالا iso-! تصویر به بلوک های 8x8 پیکسل تقسیم می شود.