Стиснення зображень jpeg і jpeg2018
Старий добрий JPEG, незважаючи на масу незаперечних переваг, все ж має і суттєві обмеження. Зняти їх був покликаний новий метод стиснення зображень, розробки якого велися вже давно.
Напевно багатьох працюючих з графікою на комп'ютері цікавить питання: а як вдається зображення, що займає досить вражаючий обсяг в пам'яті ПК, втиснути в набагато менший розмір на диску? Пам'ятається, на зорі своєї видавничої діяльності слово «компресія» для мене було таким загадковим і дивним ... Справді, яким чином відбувається стиснення зображень - адже без нього зараз неможливо уявити ні Мережа, ні цифрову фотографію, ні кольорову поліграфію?
Отже, стиснення. Воно може як призводити до втрати якості, так і не приводити. Останній випадок - це такі методи, як RLE (Run Length Encoding, кодування довжин серій, в результаті якого утворюються пари типу (skip. Value. Де skip - це число поспіль нулів, а value - наступне за ними значення) і LZW (компресія методом Lempel-Ziff-Welch), реалізовані в форматах PSD, GIF і TIFF. Широко використовуються вони і архиваторами типу RAR і ZIP. Середній ступінь компресії стиснення без втрат - 2-3 рази.
Якщо потрібно стиснути зображення сильніше, без втрати якості не обійтися. Які принципи? По-перше, будь-яке зображення містить певну надмірність, видалення якої не призведе до помітної зміни якості картинки. По-друге, людське око більш сприйнятливий до змін яскравості, ніж кольори. Тому для різних каналів зображення застосовуються різні ступені стиснення - інформація втрачається, але візуально це не помітно. Крім того, чутливість очі до дрібних елементів зображення невелика, що дозволяє без шкоди для якості їх видалити. Так можна стискати зображення (навіть якщо погіршення якості стає вже помітним) аж до прийнятного порога. Ступінь деградації якості визначається для кожного конкретного випадку. Для поліграфії припустимі лише мінімальні спотворення, а для розміщення в Інтернеті (в залежності від призначення) - набагато більші.
При компресії методом JPEG якість втрачається завжди. При цьому завжди є вибір: віддати перевагу якості на шкоду обсягом (розмір файлу стиснеться приблизно в три рази) або ж навпаки, домогтися мінімального розміру зображення, при якому воно ще залишиться впізнаваним (ступінь компресії може досягати 100). Стиснення, при якому відмінність в якості між получающимся зображенням і оригіналом ще залишається непомітним, дає 10-20-кратне скорочення розміру файлу.
Галузь застосування
JPEG найкраще компресують повнокольорові і монохромні зображення фотографічної якості. Якщо ж потрібно зберегти картинку з індексного палітрою, то спочатку вона конвертується в повнокольоровий. При компресії методом JPEG потрібно мати на увазі, що все залежить від характеру зображень: набагато менший обсяг займатимуть ті, де зміни кольору незначні і немає різких колірних переходів. JPEG застосовується скрізь, де потрібно зберігати фотозображення: в цифрових фотоапаратах, поліграфії (EPS DCS 2.0), немислимий без нього і Інтернет.
Існує кілька різновидів JPEG-компресії, ми ж розглянемо тільки дві з них, що використовуються в стандартному пакеті для роботи з растровими зображеннями Adobe Photoshop, - baseline і progressive. Два інші способи - ariphmetic і loseless - екзотика, в силу ряду причин не отримавши широкого поширення.
Як відбувається стиснення
1. Перший етап полягає в конвертації колірної моделі зображення (зазвичай RGB) в модель, де яркостная і колірна складові рознесені (наприклад, YCbCr або YUV), що дозволяє оптимально підійти до вибору ступенів компресії для кожного каналу (з урахуванням особливостей сприйняття оком). Перетворення відбувається наступним чином:
2. На наступному етапі відбувається т. Н. Префільтрація. при якій сусідні пікселі окремо в кожному з каналів Cb і Cr групуються попарно в горизонтальному і вертикальному напрямках, а яскравості канал Y залишається без змін. Після цього вся група з чотирьох пікселів отримує усереднене значення відповідних компонент Cb і Cr. Для стислості таку схему можна позначити як 4: 1: 1 (така ж форма подання прийнята в DRAW - вікно експорту в jpeg). З урахуванням того, що кожен піксель кодується 3 байтами (по 256 рівнів для кожного з трьох каналів), в результаті обсяг даних автоматично скорочується в 2 рази (замість 12 байт для передачі 4 пікселів достатньо передати всього 4 + 1 + 1 = 6 байт) . З точки зору математики таке перетворення призводить до істотної втрати інформації, але людське око втрати не сприймає, оскільки в звичайних фотографічних зображеннях присутня суттєва надмірність.
3. Отримана інформація, що пройшла стадію первинної «очищення», окремо в кожному каналі знову групується в блоки, але вже розміром 8x8, після чого для них застосовується основне стиснення - т. Зв. дискретне косинусное перетворення. для стислості - DCT (discrete cosine transform). В результаті інформація про розподіл яскравості пікселів перетворюється в інший вид, де вона описується розподілом, заснованому на частоті появи тієї чи іншої яскравості пікселів. DCT має ряд переваг перед іншими перетвореннями (наприклад, перед перетворенням Фур'є), забезпечуючи краще відновлення інформації.
Замість масиву з 64 значень (8x8 пікселів) для кожного блоку, з яких складається зображення, ми отримуємо масив з 64 частот. Розглянемо роботу DCT на прикладі. Припустимо, яскравість пікселів в одному блоці нашого зображення має вигляд, представлений на рис. 1 зліва, тоді результат перетворення буде таким, як показано праворуч.
Незважаючи на значну точність, деяка втрата інформації на даному етапі все ж відбувається - саме тому JPEG завжди призводить до втрати якості. Основна мета перетворення - з'ясувати загальну картину розподілу великих (на малюнку - зверху зліва) і дрібних (внизу праворуч) об'єктів, що стане в нагоді потім, при усуненні малозначимой інформації.
4. Наступний етап - видалення малопомітною оці інформації з блоку, або квантування (quantization). Всі складові діляться на різні коефіцієнти, що визначають значимість кожної з них для якісного відновлення вихідного зображення, і результат округляється до цілого значення. Саме ця процедура вносить найбільші втрати якості, знижуючи кінцевий об'єм зображення. Високочастотні складові квантуються грубо, а низькочастотні - точніше, оскільки найбільш помітні. Щоб дещо згладити зниження якості, в каналі яскравості використовуються менші коефіцієнти розподілу, ніж в каналах кольоровості. Але частіше (це робиться для прискорення розрахунків) замість спеціально підібраних значень береться лише одне - те, яке вводить користувач при виборі ступеня компресії.
Ось, наприклад, як виглядає вікно Photoshop при збереженні зображення c допомогою операції Save for web, де параметр Quality (вірніше, похідна від нього) - той самий коефіцієнт округлення (рис. 2).
Незважаючи на таке огрубіння, для більшості зображень результат виходить цілком прийнятним. І лише в особливих випадках, коли мова йде про оптимізацію зображення з великою кількістю дрібних деталей або ж де великі площі зайняті одним кольором, це працює погано.
На рис. 4 показаний результат відновлення чорно-білого квадрата відповідно одній, чотирма і п'ятнадцятьма складовими.
5. Після виконання основної роботи зі стиснення зображення подальші перетворення зводяться до другорядних завдань: що залишилися складові збираються в послідовність таким чином, щоб спочатку розташовувалися відповідають за великі деталі, а потім - за все дрібніші. Якщо подивитися на малюнок, то рух кодувальника схоже на звивисту лінію. Етап так і називається - ZigZag (рис. 5).
Потім вийшла послідовність стискається: спочатку звичайним RLE, потім методом Хаффмана.
Ось, загалом, і все перетворення. А тепер давайте підрахуємо, яка компресія була досягнута в нашому прикладі. Ми отримали 7 значень, за якими відновиться початкове зображення розміром 8x8. Отже, компресія від застосування DCT-перетворення в обох каналах кольоровості склала 8x8 / 7 ap; 9 разів. Відведемо на канал яскравості не сім, а 11 коефіцієнтів, що дасть 8x8 / 11 ap; 6. Для всіх трьох каналів вийде (9 + 9 + 6) / 3 = 8 разів. Зниження якості при «проріджування» зображення, що стався на другій стадії, дає додатково подвійний приріст (схема 4-1-1, що враховує особливості кодування складової яскравості), що дасть підсумковий результат - 16 разів. Це грубий підрахунок, що не враховує деяких аспектів, але відображає реальну картину. Щоб отримати тридцятикратному скорочення розміру файлу, потрібно залишити лише 3-4 складові.
Процес відновлення зображення протікає в зворотному порядку: спочатку складові множаться на значення з таблиці квантування, і виходять приблизні коефіцієнти для зворотного косинусного перетворення. Чим краща якість вибрано при компресії, тим ступінь наближення до оригінальних коефіцієнтам вище, а значить, зображення відновиться більш точно. Залишається додати лише одну дію: перед самим завершенням внести деякі коригування (шум) в граничні пікселі з сусідніх блоків, щоб прибрати різкі перепади між ними.
недоліки JPEG
- Неможливість досягти високих ступенів стиснення за рахунок обмеження на розмір блоку (тільки 8x8).
- Блочность структури на високих ступенях компресії.
- Закруглення гострих кутів і розмивання тонких елементів в зображенні.
- Підтримуються тільки RGB-зображення (використовувати JPEG для CMYK-зображень можна тільки в форматі EPS через DCS).
- Зображення можна відобразити до тих пір, поки воно не завантажиться повністю.
З тих пір, як JPEG був затверджений як стандарт, пройшло вже десять років. За цей час групи дослідників запропонували ряд суттєвих доповнень в початковий варіант, які вилилися в кінці минулого року в появу нового стандарту.
Оскільки новий алгоритм претендував на універсальний, йому додатково ставилося завдання використання різних способів передачі даних (в реальному режимі часу і при вузькій смузі пропускання), що особливо критично в мультимедійних додатках, наприклад, в реал-трансляціях через Інтернет.
- Досягнення підвищеної в порівнянні з JPEG ступеня компресії.
- Підтримка монохромних зображень, що дозволить застосовувати його для компресії зображень з текстом.
- Можливість стиснення взагалі без втрат.
- Висновок зображень з поступовим поліпшенням деталізації (як в progressive GIF).
- Використання в зображенні пріоритетних областей, для яких якість може встановлюватися вище, ніж в решті частини зображення.
- Декодування в реальному режимі часу (без затримок).
принцип стиснення

Спочатку точно так же, як і для JPEG, відбувається конвертація зображення в систему YCrCb, після чого - первинне видалення надлишкової інформації (шляхом вже відомого об'єднання сусідніх пікселів в блоки 2x2). Потім все зображення ділиться на частини однакового розміру (tile), над кожною з яких незалежно від інших і будуть відбуватися подальші перетворення (це знижує вимоги до обсягу пам'яті і обчислювальних ресурсів). Далі кожен канал проходить фільтрацію низькочастотних і високочастотних фільтрами окремо по рядках і по рядах, в результаті чого після першого проходу в кожній частині формуються чотири дрібніших зображення (subband). Всі вони несуть інформацію про оригінальному документі, але їх інформативність сильно відрізняється (рис. 6).
Наприклад, зображення, отримане після низькочастотної фільтрації по рядках і рядам (угорі ліворуч), несе найбільшу кількість інформації, а отримане після високочастотної - мінімальне. Інформативність у зображень, отриманих після НЧ-фільтрації рядків і ВЧ для стовпців (і навпаки), середня. Найбільш інформативне зображення знову піддається фільтрації, а отримані складові, як і при jpeg-компресії, квантуються. Так відбувається кілька разів: для стиснення без втрат цикл зазвичай повторюється 3 рази, з втратами - розумним компромісом між розміром, якістю та швидкістю декомпресії вважається 10 ітерацій. В результаті виходить одне маленьке зображення і набір картинок з дрібними деталями, послідовно і з певною точністю відновлюють його до нормального розміру. Очевидно, що найбільша ступінь компресії виходить на великих зображеннях, оскільки можна встановити більшу кількість циклів.
практична реалізація
Серед великих розробників ПЗ можна відзначити Corel (до речі, вона одна з перших запровадила в свої пакети підтримку формату wi, заснованого на хвильових перетвореннях, за що їй честь і хвала) - все зображення, що поставляються на компакт-дисках з пакетом CorelDRAW аж до дев'ятої версії , стискалися саме таким способом.
Оскільки стандартом не обумовлюються конкретні реалізації методів компресії / декомпресії, це дає простір стороннім розробникам алгоритмів стиснення. Справді, можна використовувати або спрощений алгоритм хвильового перетворення і тим самим прискорити процес компресії або ж, навпаки, застосувати більш складний і, відповідно, вимагає великих системних ресурсів.
Якщо ви захочете отримати більш якісне зображення, потрібно вибрати пункт Improve з меню, спливаючого по правій кнопці (рис. 9). За чотири докачки все зображення буде завантажено повністю.

Факти і домисли
1. JPEG втрачає якість при відкритті і повторному збереженні файлу.
Неправда. Якість втрачається тільки тоді, коли вибирається ступінь компресії, менша, ніж та, з якою зображення було збережено.
2. JPEG втрачає якість при редагуванні файлу.
Правда. При збереженні зміненого файлу все перетворення виконуються знову - тому уникайте частого редагування зображень. Це відноситься тільки до випадку, коли файл закривається: якщо ж файл залишається відкритим, причин для занепокоєння немає.
3. Результат компресії з однаковими параметрами в різних програмах буде однаковий.
Неправда. Різні програми по-різному трактують вводяться користувачем значення. Наприклад, в одній програмі вказується якість зберігається зображення (як, наприклад, в Photoshop), в інший - ступінь його компресії (зворотна величина).
4. При установці максимальної якості зображення зберігається без будь-яких втрат якості.
Неправда. JPEG стискає з втратами завжди. Але установка, наприклад, 90% якості замість 100% дає скорочення розміру файлу більше, ніж сприймається оком погіршення якості.
6. JPEG не підтримує прозорість.
Правда. Іноді може здаватися, що якась частина зображення прозора, але насправді її колір просто підібраний так, щоб він збігався з кольором фону в html-сторінці.
7. JPEG стискає краще, ніж GIF.
Неправда. У них різна область застосування. У загальному випадку, типова «гіфовская» картинка після конвертації в JPEG матиме більший обсяг.
Що можуть сучасні мобільні додатки для графічних дизайнерів і верстальників, а також розробників інтерфейсів?

Досвід друку високохудожніх видань в московському ІПК Академії акварелі і витончених мистецтв Сергія Адріякі.
Незнайомі з нашої предметною областю перекладачі з англійської нерідко роблять помилку в перекладі сталого виразу Graphic Arts, що означає поліграфію. Так на світ з'являються «графічні мистецтва» або «художній друк». Але як навіть зламані годинник показує правильний час два рази на добу, так і у випадку з Видавничо-поліграфічним комплексом Академії акварелі і витончених мистецтв Сергія Адріякі можна легко погодитися з помилковими в 99,9% випадках варіантами перекладів - тут є і графічні мистецтва, і художній друк.
Розповідаючи про широкоформатному принтері, Д. Гурбанскій зізнався, що іноді теж бере в руки пензель - процес накладення текстур гелів на широкоформатні репродукції дуже заспокоює
Сучасні системи для автоматизації технологічних процесів підвищують ефективність роботи - це аксіома. У ПК «Екстра М» весь останній рік активно впроваджували функціонал для дистанційної завантаження і схвалення завдань на друк на базі рішень Agfa Graphics.