JPEG. Алгарытм сціску

І зноў добры дзень! Я знайшоў гэты артыкул, напісаны яшчэ траўні 2019-га года. Гэта - працяг серыі артыкулаў аб WAVE і JPEG, Вось першая. Гэтая публікацыя ўключыць у сабе інфармацыю аб алгарытме кадавання малюнкаў і аб самім фармаце ў цэлым.

Дробку гісторыі

Сталовую лыжку артыкула з Вікіпедыі:

JPEG (Joint Photographic Experts Group) - адзін з папулярных растравых графічных фарматаў, які ўжываецца для захоўвання фотавыяў і падобных ім малюнкаў.

Распрацаваны гэты стандарт быў Аб'яднанай групай экспертаў па фатаграфіі яшчэ ў 1991 годзе для эфектыўнага сціску выявы.

Які шлях праходзяць выявы ад сырога віду да JPEG

Некаторыя лічаць, што JPEG-карцінкі - сціснутыя метадам Хаффмана волкія дадзеныя, але гэта не так. Перад кантрольным сціскам дадзеныя праходзяць доўгі шлях.

Спачатку каляровую мадэль мяняюць з RGB на YCbCr. Для гэтага нават ёсць спецыяльны алгарытм. тут. Y не чапаюць, бо ён адказвае за яркасць, і яго змена будзе прыкметна.

Першае, што робяць з выявай - гэта «прарэджванне» (subsampling). Зразумець гэта проста: бярэцца 2х2 масіў пікселяў, далей бяруцца Cb і Cr – сярэднія значэнні кожнага з кампанентаў YCbCr гэтых 4 пікселяў. І так, мы выйгралі 6 байт, замест 4 Y, 4 Cb, 4 Cr мы атрымалі 4 Y і аднолькавыя для кожнага з іх Cb і Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). У маштабах нават 2×2 сціск са стратай з каэфіцыентам сціску 2:1 гучыць самавіта. Гэта ўжываецца да ўсёй выявы. І так - скінулі палову памеру. А такі прыём мы можам выкарыстоўваць дзякуючы нашаму каляроваму ўспрыманню. Чалавек з лёгкасцю заўважыць розніцу ў яркасці, але не ў колеры, калі ён асераднёны ў маленькім блоку піскляў. Таксама прарэджванне можа выконвацца ў лінію, 4 пікселі па гарызанталі і вертыкалі. Першы варыянт выкарыстоўваецца часцей. Калі важна якасць малюнка, тое прарэджванне не выконваецца наогул.
Наглядная ілюстрацыя прарэджвання (Хабр не даў уставіць гифку) https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Асноўная частка падрыхтоўкі

ДКП

Цяпер самая складаная і неабходная частка. Уся карцінка разбіваецца на блокі 8×8 (выкарыстоўваюць запаўненне ў выпадку, калі дазвол не кратна баку блока).

Цяпер да кожнага блока ўжываюць ДКП (Дыскрэтна-касінуснае пераўтварэнне). У гэтай частцы з карцінкі вымаюць усё лішняе. Выкарыстоўваючы ДКП трэба зразумець, апісвае ці дадзены блок (8×8) якую-небудзь манатонную частку выявы: неба, сцены; ці ён змяшчае складаную структуру (валасы, сімвалы і г.д.). Нядзіўна, што 64 падобных па колеры пікселяў можна апісаць усяго адным, т.к. памер блока ўжо вядомы. Вось вам і сціск: 1 да 64.

ДКП ператварае блок у спектр, і тамака, дзе паказанні рэзка змяняюцца, каэфіцыент становіцца дадатным, і чым разчэй пераход, тым вышэй будзе выйсце. Там, дзе каэфіцыент вышэй, на малюнку намаляваны выразныя пераходы ў колеры і яркасці, дзе ён ніжэй - слабыя (плыўныя) змены велічынь кампанентаў YCbCr у блоку.

Квантаванне

Тут ужо прымяняюцца налады сціску. Кожны з каэфіцыентаў у кожнай з матрыц 8×8 дзеліцца на пэўны лік. Калі якасць выявы пасля ўсіх яго мадыфікацый вы больш памяншаць не будзеце, то дзельнік павінен быць адзінкай. Калі вам важней памяць, займаная гэтым фатаграфіяй, то дзельнік будзе больш за 1, і прыватнае акругляецца. Так выходзіць, што пасля акруглення нярэдка атрымліваецца шмат нулёў.

Квантаванне робяць для стварэння магчымасці яшчэ большага сціску. Вось як гэта выглядае на прыкладзе квантавання графіка y = sin(x):

JPEG. Алгарытм сціску

сціск

Спачатку праходзім па матрыцы зіг-загам:

JPEG. Алгарытм сціску

Атрымліваем аднамерны масіў з лікамі. Мы бачым, што ў ім шмат нулёў, іх можна прыбраць. Для гэтага замест паслядоўнасці са мноства нулёў мы ўпісваем 1 нуль і пасля яго лік, якое пазначае іх колькасць у паслядоўнасці. Такім чынам можна скінуць да 1/3 памеру за ўсё масіва. А далей проста сціскае гэты масіў метадам Хаффмана і ўпісваем ужо ў сам файл.

дзе выкарыстоўваецца

Усюды. Як і PNG, JPEG выкарыстоўваецца ў фотакамерах, OS'ях (у якасці лагатыпаў кампаніі, абразкоў прыкладанняў, thumbnail'ов) і ва ўсіх магчымых сферах, дзе трэба эфектыўна захоўваць выявы.

Выснова

Цяпер веды аб JPEG цяпер каштоўныя толькі ў адукацыйных мэтах, бо ён ужо ўсюды ўбудаваны і аптымізаваны вялікімі групамі людзей, але граніт навукі ўсё-ткі смачны.

крыніцы

Артыкул пра YCbCr на Вікіпедыі
Артыкул аб JPEG на Вікіпедыі
Трохі пра ДКП з пасады Пікабу
Артыкул аб ДКП на Вікіпедыі

Крыніца: habr.com

Дадаць каментар