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

    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 در هر جایی که نیاز است تصاویر عکس ذخیره شوند استفاده می شود: در دوربین های دیجیتال، چاپ (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 برسد. در هر صورت، آنالوگ میکرو دیوایس اخیراً یک تراشه تخصصی منتشر کرده است که در آن فشرده‌سازی/فشرده‌سازی با استفاده از یک فناوری جدید در سطح سخت‌افزار اجرا می‌شود و وزارت دفاع ایالات متحده در حال حاضر فعالانه از فرمت جدیدی برای ضبط عکس‌های دریافتی از ماهواره‌های جاسوسی استفاده می‌کند.

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

    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 برای فشرده سازی عکس ها و نقاشی های حاوی صحنه های واقع گرایانه با انتقال صاف در روشنایی و رنگ مناسب ترین است. JPEG بیشترین کاربرد را در عکاسی دیجیتال و برای ذخیره و انتقال تصاویر با استفاده از اینترنت دارد.

    از سوی دیگر، JPEG برای فشرده‌سازی نقاشی‌ها، متن و گرافیک نشانه‌ها کاربرد چندانی ندارد، جایی که کنتراست شدید بین پیکسل‌های همسایه منجر به مصنوعات قابل‌توجهی می‌شود. چنین تصاویری باید در فرمت های بدون اتلاف مانند TIFF، GIF یا PNG ذخیره شوند.

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

    JPEG نباید در مواردی استفاده شود که حتی حداقل تلفات غیرقابل قبول است، مانند فشرده سازی تصاویر نجومی یا پزشکی. در چنین مواردی، حالت فشرده سازی JPEG Lossless ارائه شده توسط استاندارد JPEG (که البته توسط اکثر کدک های معروف پشتیبانی نمی شود) یا استاندارد فشرده سازی JPEG-LS ممکن است توصیه شود.

    فشرده سازی

    هنگامی که فشرده می شود، تصویر از فضای رنگی RGB به YCbCr (YUV) تبدیل می شود. لازم به ذکر است که استاندارد JPEG (ISO / IEC 10918-1) انتخاب YCbCr را به هیچ وجه تنظیم نمی کند و به انواع دیگر تبدیل (به عنوان مثال، با تعدادی مولفه متفاوت از سه) و فشرده سازی بدون تبدیل اجازه می دهد. (مستقیماً به RGB)، با این حال، مشخصات JFIF (فرمت تبادل فایل JPEG، پیشنهاد شده در سال 1991 توسط C-Cube Microsystems، و در حال حاضر استاندارد واقعی) شامل استفاده از تبدیل RGB-> YCbCr است.

    پس از تبدیل RGB-> YCbCr، برای کانال های تصویر Cb و Cr که مسئول رنگ هستند، می توان "decimation" (نمونه برداری فرعی) را انجام داد، که شامل این واقعیت است که هر بلوک 4 پیکسل (2x2) از کانال روشنایی Y اختصاص داده می شود. مقادیر متوسط ​​Cb و Cr (طرح کاهش "4:2:0"). در همان زمان، برای هر بلوک 2x2، به جای 12 مقدار (4 Y، 4 Cb و 4 Cr)، تنها 6 مورد استفاده می شود (4 Y و هر یک Cb و Cr متوسط). اگر شرایط بالاتری برای کیفیت تصویر بازیابی شده پس از فشرده سازی وجود داشته باشد، نازک شدن را می توان فقط در یک جهت انجام داد - به صورت عمودی (طرح "4:4:0") یا افقی ("4:2:2")، یا انجام نشده است. اصلاً ("4:4:4").

    این استاندارد همچنین اجازه می دهد تا با میانگین Cb و Cr نه برای یک بلوک 2x2، بلکه برای چهار پیکسل متوالی (عمودی یا افقی)، یعنی برای بلوک های 1x4، 4x1 (طرح 4:1:1) و همچنین 2x4 و 4x2 (طرح "4:1:0"). استفاده از آن نیز مجاز است انواع مختلفجداسازی برای Cb و Cr، اما در عمل از چنین طرح هایی بسیار نادر استفاده می شود.

    علاوه بر این، مولفه روشنایی Y و اجزای مسئول رنگ Cb و Cr به بلوک های 8x8 پیکسل تقسیم می شوند. هر بلوک از این قبیل در معرض تبدیل کسینوس گسسته (DCT) قرار می گیرد. ضرایب DCT حاصل کوانتیزه می شوند (ماتریس های کوانتیزاسیون مختلف معمولاً برای Y، Cb و Cr استفاده می شوند) و با استفاده از کدهای اجرا و هافمن بسته بندی می شوند. استاندارد JPEG همچنین امکان استفاده از کدگذاری حسابی بسیار کارآمدتر را فراهم می کند، اما به دلیل محدودیت های ثبت اختراع (پتنت رمزگذار QM حسابی که در استاندارد JPEG توضیح داده شده متعلق به IBM است)، به ندرت در عمل استفاده می شود. به کتابخانه محبوب libjpeg آخرین نسخه هاپشتیبانی از رمزگذاری حسابی گنجانده شده است، اما مشاهده تصاویر فشرده شده با استفاده از این روش می تواند مشکل ساز باشد زیرا بسیاری از بینندگان از رمزگشایی آنها پشتیبانی نمی کنند.

    ماتریس های مورد استفاده برای کوانتیزه کردن ضرایب DCT در هدر فایل JPEG ذخیره می شوند. معمولاً آنها به گونه ای ساخته می شوند که ضرایب فرکانس بالا نسبت به ضرایب فرکانس پایین در معرض کوانتیزاسیون قوی تری قرار می گیرند. این منجر به درشت شدن جزئیات ظریف در تصویر می شود. هر چه نسبت تراکم بالاتر باشد، کوانتیزه شدن همه ضرایب قوی تر است.

    هنگامی که یک تصویر را به عنوان یک فایل JPEG ذخیره می کنید، یک تنظیم کیفیت را در برخی واحدهای دلخواه تعیین می کنید، مانند 1 تا 100 یا 1 تا 10. عدد بالاتر معمولاً به معنای کیفیت بهتر است (و اندازه بزرگتر فایل فشرده). با این حال، حتی در هنگام استفاده کیفیت بالا(مرتبط با یک ماتریس کوانتیزاسیون متشکل از تنها یکی)، تصویر بازسازی شده دقیقاً با تصویر اصلی مطابقت ندارد، که هم با دقت محدود اجرای DCT و هم با نیاز به گرد کردن مقادیر Y، Cb، Cr مرتبط است. و ضرایب DCT به نزدیکترین عدد صحیح. حالت فشرده‌سازی Lossless JPEG که از DCT استفاده نمی‌کند، تطابق دقیقی بین تصاویر بازسازی‌شده و اصلی ارائه می‌دهد، اما راندمان پایین آن (نسبت فشرده‌سازی به ندرت از ۲ بیشتر می‌شود) و عدم پشتیبانی توسعه‌دهندگان نرم‌افزار به محبوبیت Lossless کمکی نکرده است. JPEG.

    انواع طرح های فشرده سازی JPEG

    استاندارد JPEG دو راه اصلی برای نمایش داده های کدگذاری شده ارائه می دهد.

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

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

    هر دو طرح توصیف شده (هم ترتیبی و هم پیش رونده JPEG) بر اساس DCT هستند و اساساً اجازه به دست آوردن یک تصویر بازسازی شده کاملاً یکسان با تصویر اصلی را نمی دهند. با این حال، این استاندارد همچنین فشرده‌سازی را مجاز می‌کند که از DCT استفاده نمی‌کند، بلکه بر اساس یک پیش‌بینی‌کننده خطی ساخته شده است (بدون تلفات، یعنی «بدون ضرر»، JPEG)، که تطابق کامل، بیت به بیت را بین تصاویر اصلی و بازسازی شده در عین حال، نسبت فشرده سازی برای تصاویر عکاسی به ندرت به 2 می رسد، اما عدم تضمین اعوجاج در برخی موارد مورد تقاضا است. قابل ملاحظه ای درجات عالیفشرده سازی را می توان با استفاده از روش فشرده سازی JPEG-LS بدست آورد، که با وجود شباهت در نام ها، ارتباط مستقیمی با JPEG ISO/IEC 10918-1 (توصیه ITU T.81) 0.87 ندارد.

    نحو و ساختار

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

    نشانگرهای اصلی JPEG
    نشانگر بایت ها طول هدف نظرات
    SOI 0xFFD8 خیر شروع تصویر
    SOF0 0xFFC0 اندازه متغیر شروع فریم (پایه، DCT) نشان می دهد که تصویر در حالت پایه با استفاده از کد DCT و هافمن کدگذاری شده است. نشانگر شامل تعداد خطوط و طول خط تصویر (فیلدهای دو بایتی با افست 5 و 7 به ترتیب نسبت به ابتدای نشانگر)، تعداد اجزا (فیلد بایت با افست 8) است. نسبت به ابتدای نشانگر)، تعداد بیت ها در هر جزء (فیلد بایت با افست 4 نسبت به ابتدای نشانگر)، و همچنین نسبت مؤلفه ها (به عنوان مثال، 4:2:0).
    SOF1 0xFFC1 اندازه متغیر شروع فریم (گسترده، DCT، کد هافمن) نشان می دهد که تصویر در حالت توسعه یافته با استفاده از کد DCT و هافمن کدگذاری شده است. نشانگر شامل تعداد خطوط و طول خط تصویر، تعداد اجزاء، تعداد بیت ها در هر جزء و نسبت اجزاء است (به عنوان مثال 4:2:0).
    SOF2 0xFFC2 اندازه متغیر شروع فریم (پیشرو، DCT، کد هافمن) نشان می دهد که تصویر در حالت پیشرونده با استفاده از کد DCT و هافمن کدگذاری شده است. نشانگر شامل تعداد خطوط و طول خط تصویر، تعداد اجزاء، تعداد بیت ها در هر جزء و نسبت اجزاء است (به عنوان مثال 4:2:0).
    DHT 0xFFC4 اندازه متغیر شامل جداول هافمن یک یا چند جدول هافمن را مشخص می کند.
    DQT 0xFFDB اندازه متغیر شامل جداول کوانتیزاسیون یک یا چند جدول کوانتیزاسیون را مشخص می کند.
    DRI 0xFFDD 4 بایت فاصله تکرار را مشخص می کند فاصله بین نشانگرهای RST را مشخص می کند nدر ماکروبلاک ها
    SOS 0xFFDA اندازه متغیر اسکن را شروع کنید شروع اولین یا بعدی اسکن تصویر با جهت بای پس از چپ به راست از بالا به پایین. اگر از حالت رمزگذاری اولیه استفاده می شد، از یک اسکن استفاده می شود. هنگام استفاده از حالت های پیشرونده، از اسکن های متعدد استفاده می شود. نشانگر SOS بین بخش های آموزنده (هدر) و کدگذاری شده (در واقع داده های فشرده شده) تصویر جدا می شود.
    RST n 0xFFD n خیر راه اندازی مجدد در هر کدام درج شده است rماکروبلاک، جایی که r- فاصله شروع مجدد نشانگر DRI. در غیاب نشانگر DRI استفاده نمی شود. n، نشانگر کد 3 بیتی کم، چرخه های 0 تا 7.
    برنامه n 0xFFE n اندازه متغیر توسط برنامه تنظیم شده است به عنوان مثال، EXIF ​​یک فایل JPEG از نشانگر APP1 برای ذخیره متادیتا در یک ساختار مبتنی بر TIFF استفاده می کند.
    COM 0xFFFE اندازه متغیر یک نظر حاوی متن نظر است.
    EOI 0xFFD9 خیر انتهای بخش کدگذاری شده تصویر.

    مزایا و معایب

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

    عملکرد فشرده سازی JPEG

    برای سرعت بخشیدن به فرآیند فشرده سازی مطابق با استاندارد JPEG، موازی سازی محاسبات به طور سنتی استفاده می شود، به ویژه در هنگام محاسبه DCT. از نظر تاریخی، یکی از اولین تلاش‌ها برای سرعت بخشیدن به فرآیند فشرده‌سازی با استفاده از این رویکرد در مقاله‌ای در سال 1993 توسط کسپرویچ و بابکین توضیح داده شده است که یک تقریب DCT اصلی را پیشنهاد کردند که موازی‌سازی کارآمد محاسبات را با استفاده از ثبات‌های 32 بیتی ممکن می‌سازد. همه منظورهپردازنده‌های اینتل 80386. طرح‌های محاسباتی کارآمدتر که بعداً ظاهر شدند، از پسوندهای SIMD مجموعه دستورالعمل‌های پردازنده‌های x86 استفاده کردند. خیلی بهترین نتایجدستیابی به طرح هایی که از قابلیت های محاسباتی شتاب دهنده های گرافیکی (تکنولوژی های NVIDIA CUDA و AMD FireStream) برای سازماندهی استفاده می کنند، ممکن می سازد. محاسبات موازینه تنها DCT، بلکه سایر مراحل فشرده سازی JPEG (تبدیل فضای رنگ، سطح اجرا، کدگذاری آماری، و غیره)، علاوه بر این، برای هر بلوک 8x8 از تصویر رمزگذاری شده یا رمزگشایی شده است. مقاله برای اولین بار بود [ منبع؟] اجرای موازی سازی تمام مراحل الگوریتم JPEG با استفاده از فناوری CUDA ارائه شده است که عملکرد فشرده سازی و رمزگشایی را طبق استاندارد JPEG به میزان قابل توجهی تسریع می کند.

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

    همچنین ببینید

    یادداشت

    پیوندها

    • مشخصات JFIF 1.02 (فایل متنی)
    • بهینه سازی JPEG قسمت 1 قسمت 2 قسمت 3 .

    (تلفظ "japeg" توسط Joint Photographic Experts Group، پس از نام سازمان توسعه دهنده) یکی از فرمت های گرافیکی محبوبی است که برای ذخیره تصاویر عکاسی و تصاویر مشابه استفاده می شود. فایل‌های حاوی داده‌های JPEG معمولا دارای پسوندهای .jpeg، .jfif، .jpg، .JPG یا JPE. هستند. با این حال، از این میان، jpg. محبوب ترین پسوند در همه پلتفرم ها است.

    1. گروه مشترک کارشناسان عکاسی.

    2. یک روش فشرده سازی تصویر که توسط این گروه توسعه یافته و یک قالب گرافیکی مربوطه که معمولاً در WWW استفاده می شود. با فشرده بودن فایل ها و بر این اساس، انتقال سریع و همچنین "از دست دادن" کیفیت تصویر مشخص می شود. این عمدتا برای عکس ها استفاده می شود، زیرا از دست دادن کیفیت برای آنها کمتر مهم است. تنظیمات رنگ را در مدل رنگ RGB ذخیره می کند.

    JPEG(تلفظ شده " jpeg"، انگلیسی. گروه مشترک کارشناسان عکاسی، با نام سازمان توسعه دهنده) یکی از فرمت های گرافیکی محبوبی است که برای ذخیره تصاویر عکاسی و تصاویر مشابه استفاده می شود. فایل های حاوی داده های JPEG معمولا دارای پسوند هستند jpeg, .jfif, .jpg, .JPG، یا .jpe. با این حال، از این .jpgمحبوب ترین افزونه در تمام پلتفرم ها. نوع MIME تصویر/jpeg است.

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

    منطقه برنامه

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

    از سوی دیگر، JPEG برای فشرده‌سازی نقاشی‌ها، متن و گرافیک نشانه‌ها کاربرد چندانی ندارد، جایی که کنتراست شدید بین پیکسل‌های مجاور منجر به مصنوعات قابل‌توجهی می‌شود. توصیه می شود چنین تصاویری را در فرمت های بدون اتلاف مانند TIFF، GIF، PNG یا RAW ذخیره کنید.

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

    JPEG نباید در مواردی استفاده شود که حتی حداقل تلفات غیرقابل قبول است، مانند فشرده سازی تصاویر نجومی یا پزشکی. در چنین مواردی، حالت فشرده سازی JPEG Lossless ارائه شده توسط استاندارد JPEG (که متأسفانه توسط اکثر کدک های محبوب پشتیبانی نمی شود) یا استاندارد فشرده سازی JPEG-LS را می توان توصیه کرد.

    فشرده سازی

    هنگامی که فشرده می شود، تصویر از فضای رنگی RGB به YCbCr (YUV) تبدیل می شود. لازم به ذکر است که استاندارد JPEG (ISO / IEC 10918-1) انتخاب YCbCr را به هیچ وجه تنظیم نمی کند و به انواع دیگر تبدیل (به عنوان مثال، با تعدادی مؤلفه غیر از سه) و فشرده سازی بدون تبدیل اجازه می دهد. (مستقیماً به RGB)، با این حال، مشخصات JFIF (فرمت تبادل فایل JPEG، پیشنهاد شده در سال 1991 توسط C-Cube Microsystems، و در حال حاضر استاندارد واقعی) شامل استفاده از تبدیل RGB-> YCbCr است.

    پس از تبدیل RGB->YCbCr، برای کانال های تصویر Cb و Cr که مسئول رنگ هستند، می توان "decimation" (subsampling) را انجام داد، که شامل این واقعیت است که هر بلوک 4 پیکسل (2x2) از کانال روشنایی Y اختصاص داده می شود. مقادیر متوسط ​​Cb و Cr (طرح کاهش "4:2:0"). در همان زمان، برای هر بلوک 2x2، به جای 12 مقدار (4 Y، 4 Cb و 4 Cr)، تنها 6 مورد استفاده می شود (4 Y و هر یک Cb و Cr متوسط). اگر شرایط بالاتری برای کیفیت تصویر بازیابی شده پس از فشرده سازی وجود داشته باشد، نازک شدن را می توان فقط در یک جهت انجام داد - به صورت عمودی (طرح "4:4:0") یا افقی ("4:2:2")، یا انجام نشده است. اصلاً ("4:4:4").

    این استاندارد همچنین اجازه می دهد تا با میانگین Cb و Cr نه برای یک بلوک 2x2، بلکه برای چهار پیکسل متوالی (عمودی یا افقی)، یعنی برای بلوک های 1x4، 4x1 (طرح 4:1:1) و همچنین 2x4 و 4x2. همچنین می توان از انواع مختلفی از decimation برای Cb و Cr استفاده کرد، اما در عمل از چنین طرح هایی بسیار نادر استفاده می شود.

    علاوه بر این، مولفه روشنایی Y و اجزای مسئول رنگ Cb و Cr به بلوک های 8x8 پیکسل تقسیم می شوند. هر بلوک از این قبیل در معرض تبدیل کسینوس گسسته (DCT) قرار می گیرد. ضرایب DCT حاصل کوانتیزه می شوند (ماتریس های کوانتیزاسیون مختلف معمولاً برای Y، Cb و Cr استفاده می شوند) و با استفاده از کدهای هافمن بسته بندی می شوند. استاندارد JPEG همچنین امکان استفاده از کدگذاری حسابی بسیار کارآمدتر را می دهد، اما به دلیل محدودیت های ثبت اختراع (پتنت رمزگذار QM حسابی که در استاندارد JPEG توضیح داده شده متعلق به IBM است)، در عمل از آن استفاده نمی شود.

    ماتریس های مورد استفاده برای کوانتیزه کردن ضرایب DCT در هدر فایل JPEG ذخیره می شوند. معمولاً آنها به گونه ای ساخته می شوند که ضرایب فرکانس بالا نسبت به ضرایب فرکانس پایین در معرض کوانتیزاسیون قوی تری قرار می گیرند. این منجر به درشت شدن جزئیات ظریف در تصویر می شود. هر چه نسبت تراکم بالاتر باشد، کوانتیزه شدن همه ضرایب قوی تر است.

    هنگامی که یک تصویر را به عنوان یک فایل JPEG ذخیره می کنید، یک تنظیم کیفیت را در برخی واحدهای دلخواه تعیین می کنید، مانند 1 تا 100 یا 1 تا 10. عدد بزرگتر معمولاً به معنای کیفیت بهتر (و یک فایل فشرده بزرگتر) است. با این حال، حتی در صورت استفاده از بالاترین کیفیت (مرتبط با یک ماتریس کوانتیزاسیون متشکل از واحدها)، تصویر بازسازی شده دقیقاً مطابق با تصویر اصلی نخواهد بود، که هم با دقت محدود اجرای DCT و هم با نیاز به گرد کردن مقادیر مرتبط است. از Y، Cb، Cr و ضرایب DCT به نزدیکترین عدد صحیح. حالت فشرده‌سازی JPEG بدون اتلاف، که از DCT استفاده نمی‌کند، تطابق دقیقی بین تصاویر بازسازی‌شده و اصلی ارائه می‌کند، با این حال، راندمان پایین آن (نسبت فشرده‌سازی به ندرت از ۲ بیشتر می‌شود) و عدم پشتیبانی توسعه‌دهندگان نرم‌افزار به محبوبیت آن کمکی نکرده است. JPEG بدون اتلاف

    انواع طرح های فشرده سازی JPEG

    استاندارد JPEG دو راه اصلی برای نمایش داده های کدگذاری شده ارائه می دهد.

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

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

    هر دو طرح توصیف شده (هم ترتیبی و هم پیش رونده JPEG) بر اساس DCT هستند و اساساً اجازه به دست آوردن یک تصویر بازسازی شده کاملاً یکسان با تصویر اصلی را نمی دهند. با این حال، این استاندارد همچنین فشرده‌سازی را مجاز می‌کند که از DCT استفاده نمی‌کند، بلکه بر اساس یک پیش‌بینی‌کننده خطی ساخته شده است (بدون تلفات، به‌عنوان «بی ضرر»، JPEG)، که تطابق کامل و بیت به بیت را بین نسخه اصلی و بیت تضمین می‌کند. تصاویر بازیابی شده در عین حال، نسبت فشرده سازی برای تصاویر عکاسی به ندرت به 2 می رسد، اما عدم تضمین اعوجاج در برخی موارد مورد تقاضا است. نسبت‌های فشرده‌سازی بسیار بالاتری را می‌توان با استفاده از روش فشرده‌سازی JPEG-LS که توسط ISO/IEC 14495-1 توصیف شده است، بدست آورد، که با وجود شباهت در نام‌ها، ارتباط مستقیمی با JPEG ISO/IEC 10918-1 ندارد (توصیه ITU T.81 ) استاندارد (توصیه ITU T.87).

    نحو و ساختار فرمت JPEG

    فایل JPEG شامل دنباله است نشانگرهاکه هر کدام با یک بایت 0xFF شروع می شود که نشانگر شروع نشانگر و یک بایت شناسه است. برخی از نشانگرها فقط از این جفت بایت تشکیل شده اند، در حالی که برخی دیگر حاوی داده های اضافی متشکل از یک فیلد دو بایتی با طول بخش اطلاعات نشانگر (شامل طول این فیلد، منهای دو بایت ابتدای نشانگر هستند. ، یعنی 0xFF و شناسه) و خود داده ها.

    نشانگرهای اصلی JPEG
    نشانگر بایت ها طول هدف

    فشرده سازی jpeg تصویر دیجیتال

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

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

    الف) محاسبه تبدیل کسینوس گسسته (DCT) برای ماتریس های 8*8 بلوک به دست آمده پس از پارتیشن استاندارد ماتریس CI.

    ب) کمی سازی ضرایب DCT.

    ج) کدگذاری با کد غیر یکنواخت.

    ابتدا، CI به بلوک های جداگانه از عناصر 8 * 8 تقسیم می شود که به ترتیب از چپ به راست و از بالا به پایین پردازش می شوند. پردازش هر بلوک با تغییر در روشنایی مقادیر تمام 64 عنصر آن شروع می شود، که با تفریق مقدار به دست می آید، جایی که حداکثر تعداد سطوح روشنایی است. سپس DCT دو بعدی عناصر بلوک محاسبه می شود. مقادیر بدست آمده از ضرایب طبق فرمول کوانتیزه می شوند:

    ,

    که در آن نتیجه کوانتیزاسیون مقدار ضریب DCT است و عنصر متناظر ماتریس ضرایب کوانتیزاسیون است:

    .

    (لازم به ذکر است که قبل از اینکه ضرایب DCT کوانتیزه شده برای بازسازی بلوک تصویر تحت DCT معکوس قرار گیرند، باید در زیر ضرب شوند:

    . (2.5)

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

    مقادیر کوانتیزه ضرایب با تبدیل زیگزاگ مطابق با زیر مرتب می شوند:

    که در آن ترتیب انتخاب ضرایب نشان داده شده است. نتیجه یک دنباله یک بعدی از ضرایب کوانتیزه است.

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

    مثال. رمزگذاری و رمزگشایی متوالی JPEG. فشرده سازی و از حالت فشرده سازی بلوک زیر از عناصر 8*8 مطابق با استاندارد کدگذاری متوالی JPEG را در نظر بگیرید:

    پیکسل های اصلی می توانند 256 یا 28 سطح روشنایی داشته باشند، بنابراین فرآیند رمزگذاری با تغییر در محدوده مقادیر شروع می شود - 27 یا 128 از مقادیر پیکسل کم می شود. نتیجه یک آرایه است:

    که بعد از DCT مستقیم به صورت زیر خواهد بود:

    اگر از ماتریس کوانتیزاسیون فوق برای کمی سازی داده های دریافتی استفاده شود، پس از کمی سازی ضرایب به شکل زیر در می آیند:

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

    (-26 -31 -3 -2 -6 2 -4 1 -4 1 1 5 0 2 0 0 -1 2 0 0 0 0 0 -1 -1 KB)

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

    هنگام بازیابی یک بلوک فشرده JPEG، رمزگشا باید ابتدا ضرایب DCT کوانتیزه شده را از یک جریان بیت پیوسته بازسازی کند. از آنجا که توالی کد هافمن باینری به طور منحصر به فردی قابل رمزگشایی است، این مرحله به راحتی با استفاده از جستجوی جدول پیاده سازی می شود. پس از ضرب در ضرایب کوانتیزاسیون، مطابق (2.5)، آرایه ای به دست می آید:

    یک بلوک کاملاً بازیابی شده پس از انجام DCT معکوس آرایه حاصل به دست می آید:

    و تغییر معکوس دامنه مقادیر با +2 7 = +128. در نتیجه، دریافت می کنیم:

    همه تفاوت‌ها در مقادیر عناصر بلوک اصلی و بازسازی شده به دلیل ماهیت فشرده‌سازی با اتلاف است که جوهر فرآیندهای فشرده‌سازی و بازیابی JPEG است. در این مثال، خطاهای بازیابی از 14- تا 11 متغیر است و به صورت زیر توزیع می شود:

    ویژگی های مشخصه اعداد منفرد بلوک های ماتریس تصویر دیجیتال در فشرده سازی JPEG . اجازه دهید DI اصلی در مقیاس خاکستری، ذخیره شده در برخی از فرمت های بدون اتلاف، به عنوان مثال، در قالب TIF، که ماتریس آن دارای ابعاد است، به صورت استاندارد به بلوک ها تقسیم شود. اگر برای هر بلوک CI مجموعه تمام VLF ها (طیف منفرد) تعیین شود، معلوم می شود که به طور متوسط، تنها 2.40٪ از تعداد کل بلوک ها (OCHB) دارای VLF صفر هستند.

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

    کمی سازی ضرایب DCT، که در فرآیند ذخیره DI در فرمت JPEG (با تلفات) اتفاق می افتد، یک روش غیرقابل برگشت است و منجر به برخی از ویژگی های اختلالات بلوک VLF می شود.

    اجازه دهید CI اصلی تحت فشرده سازی JPEG قرار گیرد. بیایید یک عملیات بازیابی جزئی (PR) برای آن انجام دهیم که شامل: 1) رمزگشایی آنتروپی. 2) ضرب ضرایب به دست آمده در عناصر مربوطه آرایه نرمال سازی (ماتریس کوانتیزاسیون)؛ 3) استفاده از DCT معکوس، اما بدون گرد کردن بعدی.

    در ماتریس حاصل، تقریباً همه بلوک ها حاوی صفر SLF هستند و مقادیر بسیار زیادی از این قبیل در بلوک ها وجود خواهد داشت (جدول 2.1). این وضعیت طبیعی است. پس از کوانتیزاسیون و گرد کردن ضرایب بلوک‌های DCT، بسیاری از آنها، مربوط به فرکانس‌های بالا و متوسط، روی صفر تنظیم می‌شوند و پس از FB صفر باقی می‌مانند، که با توجه به مطابقت بین ضرایب تبدیل فوریه گسسته و سه‌گانه‌های منفرد ماتریس تصویر، جایی که به ترتیب SLF و SNF چپ و راست مربوطه قرار دارند، منجر به صفر شدن کوچک‌ترین (و احتمالاً متوسط) ماتریس‌های بلوک ELF می‌شوند.

    جدول 2.1. نتایج تجزیه ارزش منفرد بلوک های تصاویر نیمه بازسازی شده

    OCHB تعداد بلوک ها، برای گربه های با VLF صفر بیش از 2، نسبت به TCHB (در درصد)
    m=8 m=7 m=6 m=5 m=4 m=3 m=2 m=1 m=0
    POUT
    فیلمبردار
    لاستیک
    ماه 99.8
    سلول

    توجه داشته باشید که هر چه تعداد ELF کمتر در بلوک مورد نظر باشد، خطوط کانتور بیشتری در آن وجود دارد. در واقع، وجود خطوط در بلوک نشان دهنده یک جزء با فرکانس بالا قابل توجه در سیگنال مربوط به این بلوک است. سپس ضرایب DCT مربوط به فرکانس‌های بالا و متوسط ​​نسبتاً بزرگ خواهند بود و ممکن است پس از کوانتیزاسیون و پاسخ فرکانسی غیرصفر باقی بمانند، به این معنی که آنها نه تنها به حداکثر VLF کمک می‌کنند.

    برای نمایش بصری اعتبار موارد فوق، تصویر CELL.TIF را در نظر بگیرید (شکل 2.5(a)). شکل 2.5(b) ماتریسی از بلوک های VLF صفر (MNSCHB) از ابعاد یک تصویر FM را نشان می دهد که هر عنصر آن برابر با تعداد بلوک های VLF صفر در بلوک مربوطه است. در شکل، عناصر با کمترین مقادیر برجسته شده اند، که به شما امکان می دهد به صورت بصری مطابقت بین خطوط مرجع دیجیتال اصلی و بلوک های حاوی کمترین تعداد VLF های صفر را مشاهده کنید.

    اجازه دهید تصویر اصلی فشرده شده با JPEG به طور کامل بازیابی شود. این بدان معنی است که پس از FW تمام مقادیر روشنایی پیکسل به اعداد صحیح گرد شده و وارد محدوده می شوند. این عمل ماتریس تصویر به دست آمده پس از FW را مختل می کند، تعداد VLF های صفر در بلوک ها به روش خاصی تغییر می کند (جدول 2.2). در جایی که بعد از CV هیچ عنصری کمتر از 0 یا بیشتر از 255 وجود نداشته باشد، اغتشاش ماتریس کوچک خواهد بود. مطابق با نسبت

    , (2.6)

    برای یک ماتریس دلخواه اتفاق می افتد، جایی که SLF ماتریس اصلی و آشفته، به ترتیب، ماتریس اغتشاش بلوک است، هنجار ماتریس طیفی است، SLF به تأثیرات اغتشاشگر حساس نیستند. اگر برخی از بلوک‌های صفر ELF ماتریس تصویر FM پس از بازیابی کامل (RT) غیرصفر شوند، مقادیر آنها با خطای گرد کردن قابل مقایسه خواهد بود، که برای بلوک‌های DI اصلی معمول نیست.

    شکل 2.5. تصویر اصلی CELL.TIF (a); MNSCHB بعد از CV (b)؛ MNSCHB پس از بهبودی کامل (ج)

    قابل توجه ترین تفاوت بین تصویر اصلی تجمیع شده و تصویر فشرده شده با JPEG کاملا بازسازی شده در مقایسه MLNB آنها خواهد بود. یک تصویر معمولی در شکل 2.5 (c) نشان داده شده است، در حالی که MNSIF برای CELL.TIF فقط مقادیر صفر داشت.

    جدول 2.2. نتایج تجزیه ارزش منفرد بلوک های تصاویر کاملا بازسازی شده

    تصویر با فرمت بدون اتلاف (TIF) OCHB تعداد بلوک هایی که VLF صفر دارند تعداد بلوک‌های با بیش از دو MF صفر در رابطه با TBA (%)
    m=8 m=7 m=6 m=5 m=4 m=3 m=2 m=1 m=0
    POUT
    فیلمبردار
    لاستیک
    ماه
    سلول

    سوالات

    1. فشرده سازی داده ها به چه معناست؟ افزونگی داده چیست؟
    2. انواع اصلی افزونگی داده ها
    3. فشرده سازی چگونه توسط کوانتیزاسیون اجرا می شود؟
    4. تقریب تصویر رتبه پایین چیست؟ فشرده سازی چگونه از طریق استفاده از تقریب های تصویر با رتبه پایین اجرا می شود؟
    5. تجزیه مقدار مفرد یک ماتریس چیست؟
    6. تجزیه طیفی یک ماتریس چیست؟
    7. مطابقت بین پارامترهای تصویر دیجیتال در حوزه فضایی و فرکانسی.
    8. مراحل اولیه فشرده سازی JPEG یک تصویر دیجیتال. ماتریس های کوانتیزاسیون
    9. ویژگی های مشخصه اعداد واحد بلوک های ماتریس تصویر دیجیتال در فشرده سازی JPEG.
    10. جزئی و بهبودی کاملتصویر دیجیتال پس از فشرده سازی

    ادبیات

    1. Kobozeva A.A. تجزیه و تحلیل امنیت اطلاعات / A.A. Kobozeva، V.A. Khoroshko. - ک.: اد. GUIKT، 2009. - 251 ص.
    2. Demmel J. Computational Linear Gebra / J. Demmel; ترجمه از انگلیسی اچ دی اکراموا. - م.: میر، 1380. - 430 ص.
    3. باخوالوف N.S. روش های عددی / N.S. Bakhvalov، N.P. Zhidkov، G.M. Kobelkov. - M.: BINOM. آزمایشگاه دانش، 1385. - 636 ص.
    4. گونزالس آر. پردازش دیجیتالتصاویر / R. Gonzalez, R. Woods; مطابق. از انگلیسی. ویرایش P.A. Chochia. - م.: تکنوسفرا، 2005. - 1072 ص.
    5. Kahaner D. روشهای عددی و نرم افزار/ D. Kahaner، K. Mowler، S. Nash; مطابق. از انگلیسی. اچ دی اکراموا. - م.: میر، 1380. - 575 ص.
    6. Gantmakher F.R. نظریه ماتریس / F.R. Gantmakher. - م.: ناوکا، 1988. - 552 ص.
    7. Voevodin V.V. مبانی محاسباتی جبر خطی/ V.V. Voevodin. - م.: علم. سردبیر ارشد ادبیات فیزیکی و ریاضی، 1977. - 304 ص.

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

    • الگوریتم های فشرده سازی بدون تلفات؛
    • الگوریتم های فشرده سازی با اتلاف
    وقتی در مورد فشرده سازی بدون تلفات صحبت می کنیم، منظورمان این است که یک الگوریتم معکوس به الگوریتم فشرده سازی وجود دارد که به شما امکان می دهد تصویر اصلی را با دقت بازیابی کنید. برای الگوریتم های فشرده سازی با اتلاف الگوریتم معکوسوجود ندارد. الگوریتمی وجود دارد که تصویری را بازیابی می‌کند که لزوماً دقیقاً با تصویر اصلی مطابقت ندارد. الگوریتم های فشرده سازی و بازیابی برای دستیابی به درجه بالایی از فشرده سازی و در عین حال حفظ کیفیت بصری تصویر انتخاب می شوند.

    الگوریتم های فشرده سازی بدون تلفات

    الگوریتم RLE
    تمام الگوریتم های سری RLE بر اساس یک ایده بسیار ساده است: گروه های تکرار شونده از عناصر با یک جفت (تعداد تکرار، عنصر تکرار شونده) جایگزین می شوند. بیایید این الگوریتم را به عنوان مثال دنباله ای از بیت ها در نظر بگیریم. در این دنباله، گروه های صفر و یک به طور متناوب خواهند بود. علاوه بر این، در گروه ها اغلب بیش از یک عنصر وجود دارد. سپس دنباله 11111 000000 11111111 00 با مجموعه اعداد 5 6 8 2 زیر مطابقت دارد. این اعداد نشان دهنده تعداد تکرارها هستند (شمارش از یک ها شروع می شود)، اما این اعداد نیز باید رمزگذاری شوند. فرض می کنیم که تعداد تکرارها در محدوده 0 تا 7 قرار دارد (یعنی 3 بیت برای رمزگذاری تعداد تکرارها کافی است). سپس توالی در نظر گرفته شده در بالا با دنباله اعداد 5 6 7 0 1 2 زیر کدگذاری می شود. محاسبه این که برای رمزگذاری دنباله اصلی به 21 بیت نیاز است آسان است و به شکل فشرده شده با روش RLE این دنباله 18 بیت طول می کشد. .
    اگرچه این الگوریتم بسیار ساده است، اما کارایی آن نسبتا پایین است. علاوه بر این، در برخی موارد، استفاده از این الگوریتم نه به کاهش، بلکه به افزایش طول دنباله منجر می شود. به عنوان مثال، دنباله زیر را 111 0000 11111111 00 در نظر بگیرید. دنباله RL مربوطه به این صورت است: 3 4 7 0 1 2. طول دنباله اصلی 17 بیت است، طول دنباله فشرده شده 18 بیت است.
    این الگوریتم برای تصاویر سیاه و سفید بیشترین کارایی را دارد. همچنین اغلب به عنوان یکی از مراحل میانی فشرده سازی الگوریتم های پیچیده تر استفاده می شود.

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

    ایده زیربنای الگوریتم های فرهنگ لغت این است که رمزگذاری زنجیره ای از عناصر دنباله اصلی وجود دارد. این رمزگذاری از یک فرهنگ لغت ویژه استفاده می کند که بر اساس دنباله اصلی به دست آمده است.
    یک خانواده کامل از الگوریتم های فرهنگ لغت وجود دارد، اما ما رایج ترین الگوریتم LZW را که به نام توسعه دهندگان آن Lepel، Ziv و Welch نامگذاری شده است، در نظر خواهیم گرفت.
    فرهنگ لغت در این الگوریتم جدولی است که با اجرای الگوریتم با زنجیره های کدگذاری پر می شود. هنگام رمزگشایی کد فشرده، دیکشنری به طور خودکار بازیابی می شود، بنابراین نیازی به انتقال فرهنگ لغت به همراه کد فشرده نیست.
    فرهنگ لغت با تمام رشته های تک تن مقداردهی اولیه می شود، یعنی. اولین خطوط فرهنگ لغت نشان دهنده الفبای است که در آن رمزگذاری می کنیم. جستجوی فشرده برای طولانی ترین زنجیره ای که قبلاً در فرهنگ لغت ثبت شده است. هر بار که با رشته‌ای مواجه می‌شوید که هنوز در فرهنگ لغت نوشته نشده است، در آنجا اضافه می‌شود و کد فشرده‌شده مربوط به رشته‌ای که قبلاً در فرهنگ لغت نوشته شده است نمایش داده می‌شود. در تئوری، هیچ محدودیتی برای اندازه فرهنگ لغت اعمال نمی شود، اما در عمل محدود کردن این اندازه منطقی است، زیرا با گذشت زمان، زنجیره هایی شروع به ایجاد می کنند که دیگر در متن یافت نمی شوند. علاوه بر این، زمانی که اندازه جدول دو برابر شد، باید یک بیت اضافی برای ذخیره کدهای فشرده اختصاص دهیم. به منظور جلوگیری از چنین شرایطی، یک کد ویژه معرفی شده است که نمادی از مقداردهی اولیه جدول با تمام زنجیره های تک عنصری است.
    نمونه ای از فشرده سازی توسط یک الگوریتم را در نظر بگیرید. ما رشته cuckoocuckooboughthood را فشرده می کنیم. فرض کنید دیکشنری دارای 32 موقعیت باشد، یعنی هر کد آن 5 بیت خواهد گرفت. در ابتدا، فرهنگ لغت با موارد زیر پر می شود:

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

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


    رشته اضافه شده به فرهنگ لغت در مرحله i ام را می توان به طور کامل فقط در i+1 تعیین کرد. بدیهی است که خط i باید به اولین کاراکتر خط i+1 ختم شود. که ما تازه فهمیدیم که چگونه یک دیکشنری را بازیابی کنیم. زمانی که دنباله‌ای از شکل cScSc کدگذاری می‌شود، جایی که c یک کاراکتر واحد و S یک رشته است، و کلمه cS قبلاً در فرهنگ لغت وجود دارد، جالب توجه است. در نگاه اول ممکن است به نظر برسد که رمزگشا قادر به حل این وضعیت نخواهد بود، اما در واقع همه رشته‌ها از این نوع همیشه باید با همان کاراکتری که با آن شروع می‌شوند به پایان برسند.

    الگوریتم های کدگذاری آنتروپی
    الگوریتم های این سری کوتاه ترین کد فشرده شده را به متداول ترین عناصر دنباله ها اختصاص می دهند. آن ها دنباله هایی با طول یکسان با کدهای فشرده با طول های مختلف کدگذاری می شوند. علاوه بر این، هر چه دنباله متداول تر باشد، کد فشرده مربوطه کوتاه تر است.
    الگوریتم هافمن
    الگوریتم هافمن به شما امکان می دهد کدهای پیشوندی بسازید. می‌توانیم کدهای پیشوند را به‌عنوان مسیرهایی روی یک درخت دودویی در نظر بگیریم: عبور از یک گره به فرزند چپ آن با 0 در کد و به فرزند سمت راست آن با 1 مطابقت دارد. ما یک نمایش درخت باینری از کد پیشوند دریافت می کنیم.
    اجازه دهید الگوریتمی را برای ساختن درخت هافمن و به دست آوردن کدهای هافمن شرح دهیم.
    1. کاراکترهای الفبای ورودی فهرستی از گره های آزاد را تشکیل می دهند. هر برگ وزنی برابر با دفعات وقوع نماد دارد
    2. دو گره درخت آزاد با کوچکترین وزن انتخاب شده است
    3. والد آنها با وزنی برابر با وزن کل آنها ایجاد می شود
    4. والد به لیست گره های رایگان اضافه می شود و دو فرزند آن از این لیست حذف می شوند.
    5. یک قوس خروجی از والد به بیت 1 و دیگری به بیت 0 اختصاص داده شده است.
    6. مراحل شروع از مرحله دوم تکرار می شود تا زمانی که فقط یک گره آزاد در لیست گره های آزاد باقی بماند. ریشه درخت در نظر گرفته خواهد شد.
    با استفاده از این الگوریتم، می توانیم کدهای هافمن را برای یک الفبای معین، با در نظر گرفتن فراوانی وقوع کاراکترها، بدست آوریم.
    کدگذاری حسابی
    الگوریتم های رمزگذاری حسابی رشته هایی از عناصر را به کسری رمزگذاری می کنند. این امر توزیع فرکانس عناصر را در نظر می گیرد. بر این لحظهالگوریتم های کدگذاری حسابی توسط پتنت ها محافظت می شوند، بنابراین ما فقط ایده اصلی را پوشش می دهیم.
    بگذارید الفبای ما از N کاراکتر a1،…،aN و فراوانی وقوع آنها p1،…،pN تشکیل شده باشد. بیایید فاصله را تقسیم کنیم)