aspose.info
BG

JPEG - формат на файл с изображение

Обновено

Какво е JPEG файл?

JPEG е вид формат на изображение, който се записва с помощта на метода на компресия със загуби. Изходното изображение, като резултат от компресията, е компромис между размера на паметта и качеството на изображението. Потребителите могат да регулират нивото на компресия, за да постигнат желаното ниво на качество, като в същото време намалят размера на паметта. Качеството на изображението се повлиява незначително, ако към изображението се приложи компресия 10:1. Колкото по-висока е стойността на компресия, толкова по-голямо е влошаването на качеството на изображението.

Спецификации на файловия формат

JPEG файловият формат на изображението е стандартизиран от Joint Photographic Experts Group и оттам идва името JPEG. Форматът е изборът за съхранение и предаване на фотографски изображения в мрежата. Почти всички операционни системи вече имат визуализатори, които поддържат визуализация на JPEG изображения, които често се съхраняват и с JPG разширение. Дори уеб браузърите поддържат визуализация на JPEG изображения. Преди да преминем към спецификациите на JPEG файловия формат, трябва да се спомене цялостният процес от стъпки, включени в създаването на JPEG.

Стъпки за компресиране на JPEG

Трансформация: Цветните изображения се трансформират от RGB в изображение на яркост/цветност (Окото е чувствително към яркост, а не към цветност, така че частта от цветността може да загуби много данни и по този начин може да бъде силно компресирана.

Намаляване на пробите: Намаляването на пробите се извършва за цветен компонент, а не за компонент на осветеност. Намаляването на пробите се извършва в съотношение 2:1 хоризонтално и 1:1 вертикално (2h 1 V). По този начин изображението намалява по размер, тъй като компонентът „y“ не се докосва, няма забележима загуба на качество на изображението.

Организиране в групи: Пикселите на всеки цветен компонент са организирани в групи от 8×2 пиксела, наречени „единици за данни“, ако броят на редовете или колоните не е кратен на 8, долният ред и най-десните колони се дублират.

Дискретна косинусова трансформация: След това към всяка единица данни се прилага дискретна косинусова трансформация (DCT), за да се създаде карта 8×8 на трансформирани компоненти. DCT включва известна загуба на информация поради ограничената точност на компютърната аритметика. Това означава, че дори и без картата ще има известна загуба на качество на изображението, но тя обикновено е малка.

Квантуване: Всеки от 64-те трансформирани компонента в единицата данни се разделя на отделно число, наречено негов „Коефициент на квантуване (QC)“ и след това се закръгля до цяло число. Това е мястото, където информацията се губи безвъзвратно, големият QC причинява повече загуби. Като цяло повечето JPEG приложения позволяват използването на QC таблици, препоръчани от стандарта JPEG.

Кодиране: 64-те квантувани трансформирани коефициента (които сега са цели числа) на всяка единица данни са кодирани с помощта на комбинация от RLE и кодиране на Huffman.

Добавяне на заглавка: Последната стъпка добавя заглавка и всички използвани JPEG параметри и извежда резултата.

JPEG декодерът използва стъпките в обратен ред, за да генерира оригиналното изображение от компресираното.

Файлова структура

JPEG изображение се представя като поредица от сегменти, където всеки сегмент започва с маркер. Всеки маркер започва с 0xFF байт, последван от флаг на маркера, за да представи типа на маркера. Полезният товар, последван от маркер, е различен според типа маркер. Често срещаните типове JPEG маркери са изброени по-долу:

Кратко имеБайтовеПолезен товарИмеКоментари
SOI0xFF, 0xD8нямаНачало на изображението
S0F00xFF, 0xC0променлив размерНачало на рамка
S0F20xFF, 0xC2променлив размерНачало за рамка
DHT0xFF, 0xC4размер на променливаДефиниране на таблици на Huffman
DQT0xFF, 0xDBразмер на променливаДефиниране на таблица(и) за квантуване
DRI0xFF, 0xDD4 байтаОпределяне на интервал за рестартиране
SOS0xFF, 0xDAпроменлив размерНачало на сканиране
RSTn0xFF, 0xD//n//(/bg//n//#0..7)нямаРестартиране
APPn0xFF, 0xE//n//променлив размерСпецифично приложение
COM0xFF, 0xFEразмер на променливаКоментар
EOI0xFF, 0xD9нямаКрай на изображението

В рамките на ентропийно кодираните данни, след всеки байт 0xFF, байт 0x00 се вмъква от енкодера преди следващия байт, така че да не изглежда да има маркер там, където не е предназначен, предотвратявайки грешки при рамкиране. Декодерите трябва да пропускат този 0x00 байт. Тази техника, наречена byte stuffing (вижте JPEG спецификация, раздел F.1.2.3), се прилага само към ентропийно кодираните данни, а не към маркерни данни за полезен товар . Имайте предвид обаче, че ентропийно кодираните данни имат няколко собствени маркера; по-специално маркерите за нулиране (0xD0 до 0xD7), които се използват за изолиране на независими части от ентропийно кодирани данни, за да се позволи паралелно декодиране, и енкодерите са свободни да вмъкват тези маркери за нулиране на редовни интервали (въпреки че не всички енкодери правят това).

Вижте също