JPEG

Од Википедија — слободната енциклопедија
Прејди на: содржини, барај
JPEG
Phalaenopsis JPEG.png
Слика на цвет која што го губи својот квалитет од лево кон десно во форматот JPEG
Наставка .jpg, .jpeg, .jpe
.jif, .jfif, .jfi
MIME-тип image/jpeg
Типски код JPEG
UTI public.jpeg
Волшебен број ff d8
Творец Joint Photographic Experts Group
Стандард(и) ISO/IEC 10918, ITU-T T.81, ITU-T T.83, ITU-T T.84, ITU-T T.86

JPEG (од англиски: Join Photographic Experts Group) е копримиран формат за слики со загуби кои произлегуваат од растерски слики (битови пресликувања). Ова е најчесто користениот формат при работа со слики поради скромните мемориски потреби и прикладноста за архивирање, како и размена преку сајтови или маилови. Практично сите програми и фото-оперми овозможуваат подршка за овој формат, како и претворање на истиот во JPG. Во ретки случаеви (во главно, векторски ориентираните програми) овозможуваат претворање во BMP, а потоа во JPG. Значајно повеќекратно смалување на мемориските барање се базира меѓу другото и на исклучување на оние нијански кои ги нема во BMP. Со тоа практичнои не се губи на квалитетот на сликата, ако над неа не се прави понатамошна манипулација. Но, при промена на светлина или контраст се намалува богатството на нијанси, поради фактот дека можеби токму тие нијански кои се оптимални, се исклучени од опсегот. Корисникот, при претворање и зачувување во некои апликации може да избере степен на копресија, барајќи компромис помеѓу квалитетот и мемориската потреба.
Недостаток на форматот се во доста истакнати неправилности, особено на рабовите. Исто така не поддржува транспарентност. Иако JPEG датотека може да се кодира на различни начини, најчесто тоа се прави со JFIF кодирање. Процесот на кодирање се состои од неколку чекори: 1. Застапеноста на боите на сликата се претвора од RGB во Y'CBCR, состоејќи се од една Лума компонента (Y "), што претставува светлина, и две Chroma компоненти,(Cb и Cr), што претставува боја. Овој чекор е понекогаш прескокнат. 2. Резолуцијата на Chroma податоците е намалена, обично од фактор на 2. Ова се одразува на фактот дека окото е помалку чувствително на фини детали на бојата, отколку на фините детали на светлината. 3. Сликата е поделена на блокови од 8 × 8 пиксели, и за секој блок, секој од Y, CB, и CR податоците се подложува на дискретна косинус трансформација (DCT). DCT е сличен на Фуриеова трансформација во смисла дека тоа произведува еден вид на просторен фреквенциски спектар. 4. Амплитудите на компоненти на фреквенцијата се квантизирани. Човековото сетило за вид е многу почувствителни на мали варијации на бојата или осветленоста на големи области спрема јачината на високофрекфентните варијации на осветленоста. Според тоа, магнитудите на високофрекфентните компоненти се чуваат со помала прецизност од нискофрекфентните компоненти. Поставувањето на квалитетор на енкодер (на пример 50 или 95 на скала од 0-100 во Независната библиотека на JPEG Групата) влијае на тоа до кој степен на резолуцијата на секоја компонента на фреквенција ќе биде намалена. Ако се користи поставување на претерано низок квалитет, високофрекфентните компоненти се отстрануваат целосно. 5. Резултирачките податоци за сите 8 × 8 блокови понатаму се компресирани со алгоритам со кој не се губат податоците, една варијанта на Хафмановото кодирање.

Кодирање

Многу од опциите во JPEG стандардот не се користени, и како што е споменато погоре, повеќето софтвери за слика го користи поедноставниот JFIF формат при создавање на JPEG датотека, која меѓу другите работи го одредува методот на кодирање. Еве краток опис на еден од повеќето заеднички методи на кодирање кога се применува на влезот што има 24 бита на пиксел (осум од црвена, зелена и сина). Ова посебна опција е метод на компресија на податоци при кој се губат истите.

Трансформација на боен простор Прво, сликата треба да се претвори од RGB во различен боен простор наречен Y'CBCR (или неформално, YCbCr). Таа има три компоненти Y ', Cb и Cr: Y’ компонентата ја претставува осветленоста на пикселот, а Cb и Cr компонентите ја претставуваат хроминанцијата (поделбата во сини и црвени компоненти). Ова е во основа ист боен простор што се користи од страна на дигиталната телевизија во боја, како и дигиталните видеа вклучувајќи видео ДВД-а, и е слично на начинот на кој бојата е претставена во аналогни PAL видео и MAC (но не и од аналогни NTSC, кој го користи боен простор YIQ). Претворањето со Y'CBCR на бојниот простор овозможува поголема компресија без значителен ефект на видливиот квалитет на сликата (или поголем видлив квалитет на сликата за истата компресија). Компресијата е поефикасна, бидејќи информациите за осветленоста , што е поважна за евентуалнот видлив квалитет на сликата, е ограничена на еден канал. Ова поблиску одговара на перцепцијата на бојата во човечкиот визуелен систем. Трансформацијата на бојата исто така ја подобрува компресијата од статистичката декорелација. Одредено претворање во Y'CBCR е одредена во JFIF стандард, и треба да биде извршена за резултирачката JPEG датотека да има максимална компатибилност. Сепак, некои JPEG имплементации во модот за "највисок квалитет" не го применуваат овој чекор и наместо тоа ја задржуваат информацијата за бојата во RGB модел за боја, каде што сликата се чува во посебни канали за црвена, зелена и сина компоненти за осветленост. Ова резултира во помалку ефикасна компресија, а најверојатно нема да се користи кога големината на датотеката е особено важна. Downsampling Поради густината на сензитивните рецептори за боја и светлина во човечкото око, луѓето можат да видат значително повеќе ситни детали во осветленоста на сликата (компонента на Y’) отколку во тонот и заситеноста на бојата на сликата (на Cb и Cr компонентите). Користејќи го ова знаење, енкодерите може да биде дизајнирани поефикасно да компресираат слики . Трансформацијата во Y'CBCR модел на боја го овозможува следниот вообичаен чекор, кој треба да ја намали просторната резолуција на Cb и Cr компонентите (наречен "downsampling" или "Chroma subsampling"). Размерите при кои downsampling е вообичаено направен за JPEG слики се 4:4:4 (без downsampling), 4:2:2 (намалување за фактор 2 во хоризонтална насока), или (најчесто) 4:2:0 (намалување за фактор 2 и во хоризонтална и вертикална насока). За останатиот дел од процесот на компресија, Y', Cb и Cr се обработуваат одделно и во многу сличен начин. Разделување на блокови По subsampling-от, секој канал мора да се подели на 8 × 8 блокови. Во зависност од chroma subsampling-ot, тоа дава (Минимална кодиранa единица) MCU блокови со големина od 8 × 8 (4:4:4 – без subsampling), 16 × 8 (4:2:2), или најчесто 16 × 16 (4:2:0). Во видео компресија минималните кодирани единици се нарекуваат макроблокови. Ако податоците за канал не претставуваат цел број на блокови тогаш енкодерот мора да ја пополни останатата област на нецелосни блокови со некоја форма на фиктивни податоци. Пополнувањето на рабовите со фиксна боја (на пример, црна) може да создаде одѕвонувачки артефакти по видливиот дел на границата; повторувањето на пиксели на работ е заедничка техника со која се намалуваат (но не мора целосно да ги елиминира), таквите артефакти и може да се применат пософистицирани техники за пополнување на границата. Дискретно косинус трансформирање

8х8 под-слика прикажани на 8-битна сива нијанса Следно, секој 8 × 8 блок на секоја компонента (Y, Cb, Cr) е претворена во фреквенција домен модел на домен на фрекфенција, користејќи на нормализиран, две-димензионален тип II дискретен косинус трансформирање (DCT).

Како пример, една таква 8×8 8-битни подслика може да биде:


Пред да се обработи DCT-то на 8×8 блок, неговите вредности се префрли од позитивен опсег во опсег центриран околу нула. За 8-битна слика, секој влез во оригиналниот блок паѓа во опсегот [0255]. Средната точка на опсегот (во овој случај, вредноста 128) се одзема од секој запис за да се создаде на опсег на податоци што е центриран околу нула, така што изменетиот опсег е [- 128, 127]. Овој чекор ги намалува барањата на динамичен опсег во DCT фазата на обработка што следува. (Покрај разликата во динамичниот опсег во DCT фазата, овој чекор е математички еквивалент на одземање 1024 од DC коефициент по извршувањето на трансформација - која може да биде подобар начин за извршување на операцијата на некои конструкции штом тоа вклучува извршување на само едно одземање отколку 64 од нив.) Овој чекор резултира во следниве вредности:


Следниот чекор е да се земе дво-димензионалниот DCT, што е даден преку:

DCT трансформира 8×8 блок на влезни вредности во линеарна комбинација од овие 64 модели. Моделите се нарекуваат како две-димензионални DCT основни функции, а излез вредности се нарекуваат коефициенти на транфсормирање. Хоризонталниот индексот е u и вертикалниот индексот е v.

каде што:  u е хоризонталната просторна фрекфенција, за целите броеви .  v е вертикалната просторна фрекфенција, за целите броеви .  е нормализирачки скала фактор за да се направи трансформацијата ортонормална.  е вредноста на пикселот за координатите  е DCT коефициентот за координатите Ако ја извршиме оваа трансформација на нашата матрица погоре, ние ќе ги добиеме следниве (заокружено на најблиските две цифри позади од децимална точка):


Обрнете внимание на влезот горниот лев агол со прилично голема магнитуда (величина). Ова е DC коефициент. Останатите 63 коефициенти се нарекуваат AC коефициенти. Предностa на DCT е неговата тенденција да собира повеќе од сигналот во еден агол на резултатот, како што може да се види погоре. Чекорот на квантизацијата што следи го нагласува овој ефект, додека истовремено го намалува вкупниот обем на DCT коефициенти, што резултира во сигнал дека што е лесно да се ефикасно компресира во фазата на ентропија. DCT привремено ја зголемува битовата длабочина на податоците, бидејќи DCTкоефициентите на 8-битната/компонентната слика земаат до 11 или повеќе битови (во зависност од веродостојноста на DCT пресметката) за да се зачуваат. Ова може да го присили кодекот привремено да користи 16-битни кутии за да ги држат овие коефициенти, удвојувајќи ја големината на застапеноста на сликата во овој момент; тие обично се намалува кон 8-битни вредности преку чекорот на квантизација. Привременото зголемување на големината во оваа фаза не е грижа за перформансот за повеќето JPEG имплементации, бидејќи обично само многу мал дел од сликата е зачувана во целосна DCT форма во било кое дадено време во текот на процесот на кодирање или декодирање на сликата. Квантизација Човечкото око е добро во гледање мали разлики во осветленоста во низ релативно голем простор, но не толку добро во разликувањето на точната сила на варијацијата на високофреквентната осветленост . Ова му овозможува на човек значително да ја намали количината на информацијата во високофрекфентните компоненти .Ова е направено со едноставно поделување на секој компонент во доменот на фреквенција со константа за тој компонент, а потоа и заокружување на најблискиот цел број. Ова заокружување операција е само внесува загуби работата во целиот процес акопресметка DCT се врши со доволно висока прецизност. Како резултат на ова, тоа еобично случај дека многу од повисока фреквенција компоненти се заокружени на нула, и многу од останатите стане мали позитивни или негативни броеви, кои се многупомалку бити да се претставува. This is done by simply dividing each component in the frequency domain by a constant for that component, and then rounding to the nearest integer. This rounding operation is the only lossy operation in the whole process if the DCT computation is performed with sufficiently high precision. As a result of this, it is typically the case that many of the higher frequency components are rounded to zero, and many of the rest become small positive or negative numbers, which take many fewer bits to represent.