JPEG

**JPEG** (вымаўляецца «*джейпег*», , па назве арганізацыі-распрацоўніка) — адзін з папулярных растравых графічных фарматаў, які ўжываецца для захоўвання фотавыяў і падобных ім відарысаў. Файлы, якія змяшчаюць даныя JPEG, звычайна маюць пашырэння (суфіксы) **.jpg**, **.jfif**, **.jpe** або **.jpeg**. Аднак з іх **.jpg** з’яўляецца самым папулярным на ўсіх платформах. MIME-тыпам з’яўляецца image/jpeg.

Алгарытм JPEG дазваляе сціскаць відарыс як са стратамі, так і без страт (рэжым lossless сціску JPEG). Падтрымліваюцца відарысы з лінейным памерам не больш за 65535 × 65535 пікселяў.

У 2010 годзе, з мэтай захавання для нашчадкаў інфармацыі аб папулярных у пачатку XXI стагоддзя лічбавых фарматах, навукоўцы з праекту PLANETS заклалі інструкцыі па чытанні фармату JPEG у спецыяльную капсулу, якую змясцілі ў спецыяльнае сховішча ў швейцарскіх Альпах.

## Вобласць прымянення 
Алгарытм JPEG ў найбольшай ступені прыдатны для сціску фатаграфій і відарысаў, якія змяшчаюць рэалістычныя сцэны з плаўнымі пераходамі яркасці і колеру. Найбольшае распаўсюджванне JPEG атрымаў у лічбавай фатаграфіі і для захоўвання і перадачы відарысаў з выкарыстаннем сеткі Інтэрнэт.

Фармат JPEG ў рэжыме сціску са стратамі малапрыдатны для сціску чарцяжоў, тэкставай і знакавай графікі, дзе рэзкі кантраст паміж суседнімі пікселямі прыводзіць да з’яўленню прыкметных артэфактаў. Такія выявы мэтазгодна захоўваць у фарматах без страт, такіх як JPEG-LS, TIFF, GIF, PNG або выкарыстоўваць рэжым Lossless сціску JPEG.

JPEG (як і іншыя фарматы сціску са стратамі) не падыходзіць для сціску відарысаў пры шматэтапнай апрацоўцы, так як скажэнні ў відарысе будуць уносіцца кожны раз пры захаванні прамежкавых вынікаў апрацоўкі.

JPEG не павінен выкарыстоўвацца і ў тых выпадках, калі недапушчальны нават мінімальныя страты, напрыклад, пры сціску астранамічных або медыцынскіх выяў. У такіх выпадках можа быць рэкамендаваны прадугледжаны стандартам JPEG рэжым Lossless сціску JPEG (які, аднак, не падтрымліваецца большасцю папулярных кодэкаў) або стандарт сціску JPEG-LS.

## Сціск 
Пры сціску відарыс пераўтворыцца з каляровай прасторы RGB у YCbCr. Варта адзначыць, што стандарт JPEG (ISO/IEC 10918-1) ніяк не рэгламентуе выбар менавіта YCbCr, дапускаючы і іншыя віды пераўтварэння (напрыклад, з лікам кампанентаў, выдатным ад трох), і сціск без пераўтварэння (непасрэдна ў RGB), аднак спецыфікацыя JFIF (JPEG File Interchange Format, прапанаваная ў 1991 годзе спецыялістамі кампаніі C-Cube Microsystems, і якая стала ў цяперашні час стандартам дэ-факта) прадугледжвае выкарыстанне пераўтварэнні RGB->YCbCr.

Пасля пераўтварэнні RGB->YCbCr для каналаў відарыса Cb і Cr, якія адказваюць за колер, можа выконвацца «прарэджванне» (subsampling), якое заключаецца ў тым, што кожнаму блоку з 4 кропак (2х2) яркаснага канала Y ставяцца ў адпаведнасць усярэдненыя значэнні Cb і Cr (схема прарэджвання «4:2:0»). Пры гэтым для кожнага блока 2х2 замест 12 значэнняў (4 Y, 4 Cb і Cr 4) выкарыстоўваецца ўсяго 6 (4 Y і па адным з сярэднім Cb і Cr). Калі да якасці адноўленага пасля сціску відарыса прад’яўляюцца павышаныя патрабаванні, прарэджванне можа выконвацца толькі ў нейкім адным кірунку — па вертыкалі (схема «4:4:0») або па гарызанталі («4:2:2»), ці не выконвацца зусім («4:4:4»).

Стандарт дапускае таксама прарэджванне з усярэдненасцю Cb і Cr не для блока 2х2, а для чатырох размешчаных паслядоўна (па вертыкалі або па гарызанталі) кропак, то ёсць для блокаў 1х4, 4х1 (схема «4:1:1»), а таксама 2х4 і 4х2 (схема «4:1:0»). Дапускаецца таксама выкарыстанне розных тыпаў прарэджвання для Cb і Cr, але на практыцы такія схемы прымяняюцца выключна рэдка.

Далей яркасны кампанент Y і кампаненты Cb і Cr, якія адказваюць за колер, разбіваюцца на блокі 8х8 кропак. Кожны такі блок падвяргаецца дыскрэтнаму касінуснаму пераўтварэнню (ДКП). Атрыманыя каэфіцыенты ДКП квантуюцца (для Y, Cb і Cr у агульным выпадку выкарыстоўваюцца розныя матрыцы квантавання) і пакуются з выкарыстаннем кадзіравання серый і кодаў Хафмана. Стандарт JPEG дапускае таксама выкарыстанне значна больш эфектыўнага арыфметычнага кадзіравання, аднак з-за патэнтавых абмежаванняў (патэнт на апісаны ў стандарце JPEG арыфметычны QM-кодэр належыць IBM) на практыцы яно выкарыстоўваецца рэдка. У папулярную бібліятэку libjpeg апошніх версій уключана падтрымка арыфметычнага кадзіравання, але з праглядам сціснутых з выкарыстаннем гэтага метаду відарысаў могуць узнікнуць праблемы, паколькі многія праграмы прагляду не падтрымліваюць іх дэкадзіраванне.

Матрыцы, якія выкарыстоўваюцца для квантавання каэфіцыентаў ДКП, захоўваюцца ў загаловачнай частцы JPEG-файлаў. Звычайна яны будуюцца так, што высокачастотныя каэфіцыенты падвяргаюцца больш моцнаму квантаванню, чым нізкачастотныя. Гэта прыводзіць да агрубленння дробных дэталяў на відарысе. Чым вышэй ступень сціску, тым больш моцнаму квантаванню падвяргаюцца ўсе каэфіцыенты.

Пры захаванні відарыса ў фармаце JPEG-файла ўказваецца параметр якасці, які задаюць у некаторых умоўных адзінках, напрыклад, ад 1 да 100 альбо ад 1 да 10. Большая колькасць звычайна адпавядае лепшай якасці (і большаму памеру сціснутага файла). Аднак нават пры выкарыстанні найвышэйшай якасці (адпаведна матрыцы квантавання, якая складаецца з адных толькі адзінак) адноўлены відарыс не будзе ў дакладнасці супадаць з зыходным, што звязана як з канчатковай дакладнасцю выканання ДКП, так і з неабходнасцю акруглення значэнняў Y, Cb, Cr і каэфіцыентаў ДКП да бліжэйшага цэлага. Рэжым Lossless сціску JPEG, які не выкарыстоўвае ДКП, забяспечвае дакладнае супадзенне адноўленага і зыходнага відарысаў, аднак яго малая эфектыўнасць (каэфіцыент сціску рэдка перавышае 2) і адсутнасць падтрымкі з боку распрацоўшчыкаў праграмнага забеспячэння не спрыялі папулярнасці Lossless JPEG.

## Разнавіднасці схем сціску JPEG 
Стандарт JPEG прадугледжвае два асноўных спосабу прадстаўлення кадаваных даных.

Найбольш распаўсюджаным, падтрыманага большасцю даступных кадэкаў, з’яўляецца паслядоўнае (sequential JPEG) прадстаўленне даных, якое прадугледжвае паслядоўны абыход кадуемай выявы разраднасцю 8 біт на кампаненту (або 8 біт на піксель для чорна-белых паўтонавых малюнкаў) паблочно злева направа, зверху ўніз. Над кожным кадуемым блокам выявы ажыццяўляюцца апісаныя вышэй аперацыі, а вынікі кадавання змяшчаюцца ў выходны струмень у выглядзе адзінага «скана», то-бок масіва кадавання даных, адпаведнага паслядоўна пройдзеным («прасканаванай») выяве. Асноўны або «базавы» (baseline) рэжым кадавання дапускае толькі такое ўяўленне (і хаффмановское кадаваньне квантованных каэфіцыентаў ДКП). Пашыраны (extended) рэжым разам з паслядоўным дапускае таксама прагрэсіўнае (progressive JPEG) прадстаўленне даных, кадаванне выяў разраднасцю 12 біт на кампаненту/піксель (сціск такіх выяў спецыфікацыяй JFIF не падтрымліваецца) і арыфметычнае кадаванне квантованных каэфіцыентаў ДКП.

У выпадку progressive JPEG сціснутыя даныя запісваюцца ў выходны струмень у выглядзе набору сканаў, кожны з якіх апісвае выяву цалкам з усё большай ступенню дэталізацыі. Гэта дасягаецца альбо шляхам запісу ў кожны скан не поўнага набору каэфіцыентаў ДКП, а толькі нейкай іх часткі: спачатку — нізкачастотных, у наступных сканах — высокастотных (метад «spectral selection» тое ёсць спектральных выбарак), альбо шляхам паслядоўнага, ад скана да скану, удакладнення каэфіцыентаў ДКП (метад «successive approximation», то ёсць паслядоўных набліжэнняў). Такое прагрэсіўнае ўяўленне даных аказваецца асабліва карысным пры перадачы сціснутых малюнкаў з выкарыстаннем нізкахуткасных каналаў сувязі, паколькі дазваляе атрымаць уяўленне пра ўсю выяву ўжо пасля перадачы нязначнай часткі JPEG-файлаў.

Абедзве апісаныя схемы (і sequential, і progressive JPEG) грунтуюцца на ДКП і прынцыпова не дазваляюць атрымаць адноўленую выяву абсалютна ідэнтычнай зыходнай. Аднак стандарт дапускае таксама сціск, не якое выкарыстоўвае ДКП, а пабудаванае на аснове лінейнага прадказальніка (lossless, гэта значыць «без страт», JPEG), якое гарантуе поўнае, біт-у-біт, супадзенне зыходнага і адноўленага малюнкаў. Пры гэтым каэфіцыент сціску для фатаграфічных выяў рэдка дасягае 2, але гарантаванае адсутнасць скажэнняў у некаторых выпадках аказваецца запатрабаваным. Прыкметна вялікія ступені сціску могуць быць атрыманы пры выкарыстанні не мае, нягледзячы на падабенства ў назвах, непасрэднага дачынення да стандарце JPEG ISO/IEC 10918-1 (ITU T. 81 Recommendation) метаду сціску JPEG-LS, апісванага стандартам ISO/IEC 14495-1 (ITU T. 87 Recommendation).

## Сінтаксіс і структура 
Файл JPEG змяшчае паслядоўнасць *маркераў*, кожны з якіх пачынаецца з байтаў 0xFF, які сведчыць аб пачатку маркера, і байта-ідэнтыфікатара. Некаторыя маркеры складаюцца толькі з гэтай пары байтаў, іншыя ж ўтрымліваюць дадатковыя даныя, якія складаюцца з двухбайтового поля з даўжынёй інфармацыйнай частцы маркера (уключаючы даўжыню гэтага поля, але за вылікам двух байтаў пачатку маркера, то ёсць 0xFF і ідэнтыфікатара) і ўласна даных. Такая структура файла дазваляе хутка адшукаць маркер з неабходнымі данымі (напрыклад, з даўжынёй радка, лікам радкоў і лікам каляровых кампанентаў сціснутай выявы).

## Вартасці і недахопы 
Да недахопаў сціску па стандарце JPEG варта аднесці з’яўленне на адноўленых выявах пры высокіх ступенях сціску характэрных артэфактаў: малюнак рассыпаецца на блокі памерам 8x8 пікселяў (гэты эфект асабліва прыкметны на ўчасках выявы з плыўнымі зменамі яркасці), у ўчастках з высокай прасторавай частатой (напрыклад, на кантрасных контурах і межах малюнка) узнікаюць артэфакты ў выглядзе шумавых арэолаў. Варта адзначыць, што стандарт JPEG (ISO/IEC 10918-1, Annex K, п. K. 8) прадугледжвае выкарыстанне спецыяльных фільтраў для падаўлення блокавых артэфактаў, але на практыцы падобныя фільтры, нягледзячы на іх высокую эфектыўнасць, практычна не выкарыстоўваюцца.
Аднак, нягледзячы на недахопы, JPEG атрымаў вельмі шырокае распаўсюджванне з-за дастаткова высокай (адносна існавалі ў час яго з’яўлення альтэрнатыў) ступені сціску, падтрымцы сціску поўнакаляровых выяў і адносна невысокай вылічальнай складанасці.

## Прадукцыйнасць сціску па стандарце JPEG 
Для паскарэння працэсу сціску па стандарце JPEG традыцыйна выкарыстоўваецца распаралельванне вылічэнняў, у прыватнасці — пры вылічэнні ДКП. Гістарычна адна з першых спроб паскорыць працэс сціску з выкарыстаннем такога падыходу апісана ў апублікаванай у 1993 годзе артыкуле Каспяровіча і Бабкіна, у якой прапаноўвалася арыгінальная апраксімацыя ДКП, якая робіць магчымым эфектыўнае распаралельванне вылічэнняў з выкарыстаннем 32-разрадных рэгістраў агульнага прызначэння працэсараў Intel 80386. Якія з’явіліся пазней больш прадукцыйныя вылічальныя схемы выкарыстоўвалі SIMD-пашырэння набору інструкцый працэсараў архітэктуры x86. Значна лепшых вынікаў дазваляюць дамагчыся схемы, якія выкарыстоўваюць вылічальныя магчымасці графічных паскаральнікаў (тэхналогіі NVIDIA CUDA і AMD FireStream) для арганізацыі паралельных вылічэнняў не толькі ДКП, але і іншых этапаў сціску JPEG (пераўтварэнне каляровых прастор, run-level, статыстычнае кадаваньне і да т. п.), прычым для кожнага блока 8х8 кадуемай або дэкадуемай выявы. У артыкуле была прадстаўлена рэалізацыя распаралельвання ўсіх стадый алгарытму JPEG па тэхналогіі CUDA, што значна паскорыла прадукцыйнасць сціску і дэкадаванні па стандарце JPEG.

## Гл. таксама 
* JPEG-LS
* JPEG2000
* libjpeg
* MJPEG
* MPEG
* WebP

## Спасылкі 
* The JPEG committee homepage
* Спецыфікацыя JFIF 1.02 (тэкставы файл)
* Аптымізацыя JPEG. Частка 1 , Частка 2 , Частка 3 .

Катэгорыя:Графічныя фарматы
Катэгорыя:Графіка ў Web