
- •Глава 1. Стиснення зображень
- •Глава 1
- •1.1. Основи
- •1.1.1. Кодова надмірність
- •1.1.2. Міжелементна надмірність
- •1.1.3. Візуальна надмірність
- •1.1.4. Критерії вірності відтворення
- •1.2. Моделі стиснення зображень
- •1.2.1. Кодер і декодер джерела
- •1.2.2. Кодер і декодер каналу
- •1.3. Елементи теорії інформації
- •1.3.1. Вимірювання інформації
- •1.3.2. Канал передачі інформації
- •1.3.3. Основні теореми кодування
- •1.3.4. Застосування теорії інформації
- •1.4. Стиснення без втрат
- •1.4.1. Нерівномірне кодування
- •1.4.2. Lzw кодування
- •1.4.3. Кодування бітових площин
- •1.4.4. Кодування без втрат з передбаченням
- •1.5. Стиснення з втратами
- •1.5.1. Кодовання з передбаченням
- •1.5.2. Трансформаційне кодування
- •1.5.3. Вейвлет-кодування
- •1.6. Стандарти стиснення зображень
- •1.6.1. Стандарти стиснення двійкових зображень
- •8.6.2. Стандарти стиснення півтонових нерухомих зображень
- •1.6.3. Телевізійні стандарти стиснення
1.6. Стандарти стиснення зображень
Багато з методів стиснення (як з втратами, так і без втрат), описані до справжнього моменту, грають найважливішу роль в найбільш розповсюджених стандартах стиснення зображень. У даному розділі розглядаються деякі з цих стандартів, і на їх основі демонструются представлені раніше методи. Більшість з стандартів були схвалені Міжнародною організацією зі стандартизації (International Standardization Organization - IOS) і Міжнародним Консультативним Комітетом з телефонії і телеграфії - МККТТ. Вони стосуються застосування методів стиснення як двійкових, так і напівтонових (монохромних або кольорових) зображень, а також і нерухомих, і рухомих зображень (тобто відеопослідовностей).
1.6.1. Стандарти стиснення двійкових зображень
Двома з найбільш широко використовуваних стандартів стиснення двійкових (двохградаційнних) зображень є стандарти МККТТ Групи 3 та Групи 4. В даний час вони застосовуються в багатьох комп'ютерних додатках, хоча спочатку вони розроблялися як методи факсимільного (FАХ) кодування для передачі документів по телефонним мережам. Стандарт Групи 3 використовує неадаптивний метод одновимірного кодування довжин серій, згідно якого в кожній групі з K рядків (К = 2 або 4) всі рядки крім першої можуть кодуватися двовимірним чином. Стандарт Групи 4 є модернізованим і дещо спрощеним варіантом стандару Групи 3, допускає лише двовимірне кодування. Обидва стандарти використовують один і той же неадаптівний підхід до двовимірному кодуванню. Цей підхід дуже близький до методу кодування відносних адрес (КВА), описаного в Розділі 1.4.3.
При розробці стандартів МККТТ були відібрані вісім представлених тестових документів, що містять надруковані і рукописні тексти на декількох мовах, а також графічні малюнки. Зображення цих документів використовувалися як основа для оцінювання різних варіантів двійкового стиснення. Існуючі стандарти Групи 3 та Групи 4 дозволяють стискати їх з коефіцієнтом близько 15:1. Оскільки стандарти Групи 3 та Групи 4 є неадаптівними методами, то іноді вони приводять до збільшення обсягу даних (наприклад, у випадку напівтонових зображень). Щоб подолати цю та пов'язані з нею інші проблеми. Об'єднана група по двійковим зображенням, що є об'єднаним комітетом при МККТТ і ISO, адаптувала і запропонувала кілька інших стандартів стиснення двійкових зображень. Вони включають JBIG1 - метод адаптивного арифметичного кодування, що забезпечує найкращі результати стиснення, як в середньому, так і в найгіршому випадках, а також JBIG2 (на даний момент остаточний варіант, представлений комітетом), який дозволяє досягти стиснення в 2-4 раз кращого, ніж JBIG1. Ці стандарти можуть бути використані для стиснення як двійкових, так і напівтонових зображень з роздільною здатністю по яскравості до 6 бітів на піксель (методом кодування бітових площин).
Одновимірний стиск
У одновимірному методі стиснення МККТТ Групи 3 кожен рядок зображення кодується послідовністю нерівномірних кодів, які відображають довжини переміжних серій білих і чорних елементів при порядковому скануванні зліва направо. При цьому бувають два типи кодових слів. Якщо довжина серії менше 63 елементів, то використовується код закінчення з Таблиці 1.14, що містить модифікований код Хаффмана. Якщо ж довжина серії перевищує 63 елемента, то спочатку ставиться максимально можливий код продовження (не перевищує довжини серії) з Таблиці 1.15, за яким йде код закінчення, відповідної різниці між дійсною довжиною серії і значенням коду продовження.
Таблиця 1.14. Коди закінчення МККТТ.
Стандарт вимагає, щоб кожен рядок починалася з серії білих точок, яка може виявитися нульової довжини - в цьому випадку вона буде представена кодовим словом 00110101. Нарешті, для закінчення кожного рядка, а також для початку нового зображення (сторінки), використовується унікальне кодове слово кінця рядка (КР) із значенням 000000000001. Кінець послідовності зображень (документа) позначається шістьма послідовними кодами КР.
Таблиця 1.15. Коди продовження МККТТ.
Двовимірний стиск
Спосіб двовимірного стиснення, прийнятий стандартами МККТТ Групи 3 і Групи 4, заснований на построчном скануванні, згідно якому позиція кожного елемента зміни (тобто елемента переходу з чорного на біле або з білого в чорне) поточного кодованого рядка кодується, або щодо позиції відповідного елемента зміни опорного рядка (тобто рядки, розташованої безпосередньо над кодованого рядком), або щодо позиції попереднього елемента зміни в кодованого рядку. Опорним рядком для першого рядка кожного зображення є уявний білий рядок.
На Рис. 1.44 показано алгоритм кодування окремого рядка. Початок процедури полягає в знаходженні декількох елементів змін: , , , , і . Елемент зміни визначається, як елемент, значення якого відрізняється від значення попереднього елета в тому ж рядку. Найбільш важливим елементом зміни є елемент - опорний елемент. Його позиція визначається, або прогнозованим режимом кодування (див. нижче), або його значення встановлюється на уявному білому елементі зміни, розміщеному перед першим дійсним елементом нового кодованого рядка. Коли елемент знайдений, елемент визначається, як наступний елемент зміни праворуч від на тому ж рядку, а елемент - як наступний елемент зміни праворуч від . Елемент визначається як наступний елемент зміни в опорному рядку, розміщений праворуч від , і має протилежний колір по відношенню до , а елемент - як наступний елемент зміни в опорній рядку праворуч від . Якщо будь-який з цих елементів не знайдений, то він встановлюється на позиції уявного елемента, розміщеного праворуч від останнього елемента рядка сканування. На Рис. 1.45 представлені дві ілюстрації основних взаємозв'язків між різними елементами зміни.
Після визначення позиції поточного опорного елемента і пов'язаних з ним елементів зміни, виконуються дві прості перевірки, на підставі яких вибирається один з трьох можливих режимів кодування: перехідний режим, вертикальний режим або горизонтальний режим. Перша перевірка, відповідна першій точці розгалуження в схемі на Рис. 1.44, порівнює позиції і . Інша перевірка, відповідна другої точки розгалуження в схемі на Рис. 1.44, визначає відстань між позиціями і і порівнює його зі значенням 3. Залежно від результатів цих перевірок здійснюється перехід на один із трьох обведених блоків на Рис. 1.44, після чого виконується відповідна процедура кодування. Потім для підготовки до наступного кроку ітерації визначається нова позиція опорного елемента згідно відповідному методу на блок-схемі.
Рис.
1.44. Блок-схема МККТТ процедури двовимірного
кодування Запис
означає абсолютну величину відстані
між елементами зміни
і
.
Рис. 1.45. Параметри МККТТ процедури двовимірного кодування: (а) перехідний режим, (б) горизонтальний і вертикальний режими.
У
Таблиці 1.16
наведені особливі коди, що використовуються
для кожного
із трьох можливих режимів кодування. У
перехідному режимі, в якому, зокрема,
виключений випадок розташування
безпосередньо
під
,
потрібно тільки кодове слово перехідного
режиму 0001. Як показано на Рис. 1.45
(а), даний режим відповідає випадку,
коли білі або чорні серії опорної рядки
не перекривають поточну білу або чорну
серію на кодованого рядку. У горизонтальному
режимі кодування відстані від
до
і від
до
повинні кодуватися відповідно до кодів
закінчення і кодами продовження з
Таблиць 1.14
і 1.15,
які слідують за кодовим
словом горизонтального режиму 001. Цей
випадок позначений в Таблиці 1.16
як
де
і
позначають відстані, відповідно, від
до
і від
до
.
Нарешті, у вертикальному режимі кодування
одне з семи кодових слів позначає
відстань між
і
.
Параметри, пов'язані з горизонтальним
і вертикальними
режимами кодування, представлені на
Рис. 1.45
(6). Кодове слово моди
розширення,
наведене в нижньому рядку Таблиці 1.16,
використовується для вказівки додаткового
режиму факсимільного кодування. Так,
наприклад, код 0000001111 використовується
для початку
режиму передачі без стискування.
Таблиця 8.16. Таблиця двовимірного коду МККТТ.
Приклад 1.27. Приклад вертикального режиму кодування МККТТ.
Хоча на Рис. 1.45 (6) приведені параметри і для вертикальної, і для горизонтальної мод кодування, однак малюнок по суті відповідає вертикальній моді кодування. Тобто, оскільки розміщений праворуч від , то перша перевірка (на перехідній режим) на Рис. 1.44 дає негативний результат. Друга перевірка, здійснює вибір між вертикальним і горизонтальним режимом, вказує на те, що повинен бути задіяний вертикальний режим, оскільки відстань між і менше 3. Згідно Таблиці 1.16, повинно бути вибрано кодове слово 000010, яке вказує, що знаходиться на дві позиції лівіше . В якості підготовки до наступної ітерації, переміщається в позицію .