Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мультимедіа-конспект лекцій.doc
Скачиваний:
54
Добавлен:
10.11.2019
Размер:
3.14 Mб
Скачать

Алгоритми декодування в jpeg.

(Процеси демодування зображень в JPEG, стиснутих у послідовному режимі).

Тут також нема різниці між кадром та зображенням(тут не підтримується ієрархічний режим)

  1. Читання маркерів SOI та JFIF APP0 для перевірки працездатності файла та його належності до JPEG.

  2. Читання маркерів DRI, DQT i DHT та використання їх для визначення інтервалу перезапуску , таблиць квантування та таблиць Хафмана.

  3. Читання маркера SOF та використання його для визначення розмірів зображення.

  4. Читання всіх маркерів SOS та обробки даних сканів, що слідують за ним.

  5. Читання маркера EOI.

Створення послідовних файлів jpeg.

Параметри стиснення.

При стисненні зображення в послідовному режимі JPEG існує декілька альтернативних варіантів, що визначаються параметрами стиснення:

  1. Структура і число таблиць квантування, а також призначення таблиць компонентам.

  2. Число таблиць Хафмана, їх призначення компонентам, метод створення цих таблиць.

  3. Число сканів та компонентів в кожному скані.

  4. Частота маркерів перезапуску.

  5. Частота дискретизації компонентів.

  6. Створення кольорового та напівтонового зображення.

  7. Використання базових чи розширених кадрів.

Кодер може вибрати ці варіанти чи окремо для кожного зображення, чи глобально.

Кодери JpegEncoder.

Дві його функції: показник стиснення та якість зображення. Баланс між показником стиснення і якістю задається за допомогою функції SetQuality. Значення якості – в діапазонах 1-100 і визначає величину масштабування еталонних значень із табл. квантування. Функція SetSamplingfrequency задає частоту (1-4) дискретизації компонентів за горизонталлю та вертикаллю.

При замовчуванні кодер розміщує всі компоненти в один скан. Для розміщення компонентів у різні скани може застосовуватись функція-член SetScanAttributes. Останні два параметри цієї функції використовуються тільки для прогресивного режиму JPEG. В даному випадку вони завжди повинні дорівнювати нулю.

Функції InterleaNedPass та NoninterleavedPass складають основну частоту кодера. Вони управляють кодером , в якому кодуються одиниці даних, і здійснюють запис маркерів перезапуску.

Розвиток стандарту JPEG

Стандарт JPEG2000 – нова відкрита версія стандарту JPEG [9]. Ця версія дозволяє ущільнювати зображення у 200 разів. Використовує алгоритм хвильового перетворення, а не DCT. Зображення описують математично як неперервний потік.

Прогресивні зображення JPEG

Однією із рухомих сил, що сприяє розповсюдженню прогресивних зображень JPEG, є всесвітня павутина (World Wide Web) – ідеальне середовище для розповсюдження прогресивних зображень JPEG. Їх використання дозволяє користувачам Web – сайтів спочатку ознайомитися завантаженням зображень.

Друга сила – розширення доступних програмних засобів та бібліотек (особливо відзначимо бібліотеку IJG), які підтримують роботу з цими зображеннями.

Розбиття компонентів в прогресивному jpeg

В прогрессивному JPEG кодовані компоненти займають декілька сканів. Кожен компонент утримується, як мінімум, в двох сканах, і може утримуватись MAX в 896 сканах (на практиці число сканів ніколи не наближається до верхньої межі).

PNG (Portable Network Graphicsпереносна мережева графіка).

Це відносно ний графічний формат, що завойовує Internet. PNG використовує процес стиснення без втрат і підтримує наступні можливості:

  1. до 48 бітів на піксель для кольорових зображень;

  2. 1-, 2-, 4-, 8-, і 16 – бітова дискретизації (sample precision).

  3. Альфа-канал для управління прозорістю.

  4. Досконала кольорова відповідність.

Із-за юридичних проблем, які блокують використання GIF, саме формат PNG сьогодні необхідно використовувати замість GIF у тих додатках, де формат JPEG – непідходяща альтернатива: в ситуаціях, коли потрібно забезпечити стиснення без втрат зображень із 24 – бітовою глибиною кольору, при багаторазовому повторному редагуванні зображень (як проміжний формат).

Історія. Після декількох днів по заяві компанії Unisys, що вони будуть вимагати ліцензії на використання формату GIF, Томас Боутел (Thomas Boutell) організував команду, яка зараз зветься Групою Розробки PNG (PNG development Group). І 1.10 – 1996р. (через 1.5р. від початку роботи) вийшла фінальна версія стандарту PNG.

Порядок розміщення байтів – із старшим байтом на першому місці (обернений порядок байтів). Бітові рядки – від молодших бітів до старших.

Код Хафмана всередині стиснутих даних записуються за оберненим порядком.

Формат файла. Має послідовність блоків, що в стандарті PNG називаються порціями (chunk).

Існує 3и джерела визначення типів порцій

Поле

Розмір

Опис

Length (Довжина)

4 байти

Кількість байтів в полі Data (Дані)

0÷2  147 483 647 (231 – 1)

Type (Тип)

4 байти

Ім’я порції

Data (Дані)

Довжина байтів

Дані порції. Формат залежність від типу порівняння.

CRC (контроль цикл.

надлишковим кодом)

4 байти

Контрольні значення CRC – 32, що

вираховуються за даними порції

Таблиця 3.10. Формат порції PNG.

Формат PNG дозволяє декодеру пропускати порції, які не вміє обробляти та порції, які за думкою розробників несуттєві для даної реалізації PNG – формату. Здатність ігнорувати невідомі чи несуттєві порції є дуже важливою властивістю (можуть зустрітись приватні партії, що створені іншими програмами, нові порції відкритого типу).

Назви порції – складаються із 4х символів ASCII 1,2 та 4 символи або великі, або малі, а 3ій символ – тільки велика літера.

В залежності від позиції та значення літери, в тому числі і від використання верхнього чи нижнього реєстру, з імені можна визначити критичні (обов’язкові для обробки) порції, відкриті та приватні порції, безпечні (остання буква в імені мала) чи небезпечні (остання буква велика) порції для копіювання і т.п.