Adam7 algoritm

Adam7 algoritm (PNG interlacing) on digitaalse pilditöötluse algoritm, mida kasutatakse PNG piltide astmeliseks dekodeerimiseks.
Algoritm tükeldab pildi 7 alampildiks vastavalt all toodud 8x8 pikslist korduvale mustrile.
 

Adam7 algoritm suurendab küll faili mahtu, aga tänu astmelisele dekodeerimisele muutub pilt kiiremini arusaadavaks kui tavalise jadamisi lahti pakkimise puhul.
Andmete lahtipakkimise käigus muutub pilt hägusest järjest detailsemaks.

Tänapäeva andmeedastuse kiiruste puhul ei ole pikslite jadamisi laadimine enam nii aeganõudev. Varasemate kiiruste puhul võimaldas Adam7 pilte mõistlikuma kiirusega kuvada ja pildi vaatajale jäi võimalus valida kui detailset pilti ta soovis alla laadida.

Kasutus
Adam7 algoritmi kasutatakse enamasti veebibrauseris rastergraafika kuvamiseks.
Algoritm võimaldab andmete kadudeta pakkimist koos kiire piltide kuvamisega. 
Adam7 laseb pilte kuvada ilma neid tervenisti alla laadimata.
See tähendab kiirelt madala kvaliteediga pildi kuvamist, seni kui osasid piksleid veel alla laaditakse.
Mida rohkem piksleid on alla laaditud, seda teravamaks pilt muutub.

Algoritm töötab kahemõõtmeliselt, pakkides pilti nii vertikaalselt kui ka horisontaalselt.
See tagab pildi mõõtmete säilimise, kuna pilti venitatakse maksimaalselt kahekordse faktoriga.
Ühemõõtmelised algoritmid moonutavad pilti palju rohkem, nt GIF-i algoritm venitab esimesel pakkimisel pilti 8-kordselt edastades iga 8. horisontaalse rea.

Algoritmi tööpõhimõte

Pildil olevad pikslid jaotatakse 8x8-pikslise mustri järgi alampiltideks 1-7.
Jaotamist alustades vasakust ülemisest nurgast ning mustrit korratakse pildi äärteni.

Saadud alampildid tükeldatakse ridade kaupa.

Pilt saadetakse alampiltide kaupa saajale, kus seda järjest lahti pakitakse.

Pildi lahtipakkimisel pikslid interpoleeritakse ehk ennustatakse pikslite vahel puudu olevaid piksleid.

Kõik puuduvad pikslid arvutatakse (n-ö ennustatakse) ja pilt muutub sedamööda järjest selgemaks, mida rohkem piksleid on korrigeeritud (laaditud).

Vaata ka
Algoritm
Digitaalne pilditöötlus
Interpoleerimine
Kadudeta pakkimine
PNG
Rastergraafika

Viited

Pilditöötlus