Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows Phone
  • Marrja e mostrave dhe kuantizimi i imazheve. Problemi i optikës Furier dhe metodat e përpunimit dixhital të imazhit

Marrja e mostrave dhe kuantizimi i imazheve. Problemi i optikës Furier dhe metodat e përpunimit dixhital të imazhit


Në përpunimin dixhital të imazhit, diapazoni i vazhdueshëm dinamik i vlerave të shkëlqimit ndahet në një numër nivelesh diskrete. Kjo procedurë quhet kuantizimi. Një kuantizues transformon një ndryshore të vazhdueshme në një ndryshore diskrete që merr një grup vlerash të fundme
. Këto vlera quhen nivele kuantizimi. NË rast i përgjithshëm transformimi shprehet me një funksion hap (Fig. 8). Nëse shkëlqimi i mostrës së imazhit i përket intervalit
(dmth kur
), atëherë mostra origjinale zëvendësohet me nivelin e kuantizimit, ku
- pragjet e kuantizimit. Supozohet se diapazoni dinamik i vlerave të shkëlqimit është i kufizuar dhe i barabartë me
.

Fig. 8. Funksioni që përshkruan kuantizimin
Detyra e ndërtimit të një kuantizuesi është të përcaktojë vlerat e pragjeve dhe niveleve. Mënyra më e thjeshtë zgjidhja e këtij problemi konsiston në ndarjen diapazoni dinamik në intervale të barabarta. Megjithatë, kjo zgjidhje nuk është më e mira. Nëse vlerat e shkëlqimit të shumicës së mostrave të imazhit grupohen, për shembull, në rajonin "e errët" dhe numri i niveleve është i kufizuar, atëherë këshillohet që të kuantizohen në mënyrë të pabarabartë. Në rajonin "e errët" ju duhet të kuantizoni më shpesh, dhe në rajonin "dritë" më rrallë. Kjo do të zvogëlojë gabimin e kuantizimit.

sistemet reale Në thelb përdoren dy lloje kuantizimi - gama lineare e korrigjuar. NË rastin e fundit sinjali analog pëson transformim jolinear përpara kuantizimit x'=x 1 /  . Ky funksion zbatohet pothuajse në të gjitha kamerat CCD të prodhuara komercialisht. Vlera standarde për  është 1.4.

Nevoja për korrigjim gama (edhe për thjesht sistemet analoge) lind nga kontrasti i kufizuar i pajisjeve të imazhit si ekranet e kompjuterit. Kurba e ndjeshmërisë së shkëlqimit të syrit të njeriut është afërsisht logaritmike, kështu që ngjeshja e diapazonit dinamik në rajonin e toneve të ndritshme justifikohet nga pikëpamja fiziologjike.

Zgjedhja optimale e numrit të niveleve të marrjes së mostrave varet kryesisht nga karakteristikat e pajisjes marrëse (kamera CCD, për shembull). kamera CCD Qëllimi i përgjithshëm rrallë kanë një raport sinjal-zhurmë më të madh se 46dB. Raport sinjal-zhurmë përkufizohet me shprehjen e mëposhtme:
, Ku
- amplituda maksimale e sinjalit të dobishëm,
- Amplituda e zhurmës rms. Prandaj, me një raport sinjal-zhurmë prej 46 dB, numri i dobishëm i niveleve të kuantizimit është 200, gjë që tregon këshillueshmërinë e përdorimit të një kuantizuesi tetë-bitësh.

Meqenëse ideja e DPCM është mjaft e thjeshtë, atëherë, siç vijon nga diagramet në Fig. 4.8, karakteristikat e sistemit të reduktimit të tepricës së imazhit DPCM përcaktohen nga [rendi i parashikuesit P, vlerat e koeficientëve të parashikimit A i , numrin e niveleve të kuantizimit dhe vendndodhjen e tyre.

Rendi i parashikuesit varet nga karakteristikat statistikore të imazhit. Në mënyrë tipike, nëse një sekuencë e mostrave mund të modelohet nga një proces Markov autoregresiv n-të rendit, pastaj diferencat e marra duke përdorur parashikuesin optimal n-të rendit, do të formojë një sekuencë numrash të pakorreluar. Padyshim që imazhet nuk janë procese Markov n-të rendit, por përvoja në kompresimin e imazhit e tregon këtë vetitë e korrelacionit imazhet mund të përshkruhen nga një proces Markov i rendit të tretë, i cili çon në parashikues të rendit të tretë (n=3). Në mënyrë të ngjashme, në modelimin e imazhit, u zbulua se DPCM me parashikues të rendit më të lartë nuk siguron përfitime më të mëdha në cilësinë e imazhit (si subjektiv ashtu edhe objektiv).

Koeficientët e parashikimit A i mund të përcaktohet duke përdorur analizën e gabimit mesatar katror. Le g ( k ) - mostrat në linjën e skanimit, a

( k ) - vlerat e parashikuara të këtyre mostrave. Është e nevojshme që gabimi mesatar katror të jetë minimal, d.m.th. Duhet gjetur

min e = E (g(k) - } (4.21)

kudo k, dhe i

Kjo është një detyrë e njohur, dhe nëse procesi g ( k ) është i palëvizshëm, atëherë zgjidhja e tij ka formën

, (4.22)

r (j - i) = E [g (k - j) g (k -i) ] (4.23)

zakonisht quhet funksioni i autokorrelacionit të procesit g. Shanset a i fitohen duke zgjidhur sistemin e ekuacioneve (4.22).

Vlerat optimale të koeficientëve të parashikimit varen nga marrëdhëniet midis pikave të imazhit të përshkruara nga funksioni i autokorrelacionit. Nga përkufizimi (4.20) është e qartë se në rastin e të dhënave stacionare funksioni i autokorrelacionit ndryshon nga funksioni i mësipërm me një vlerë konstante. Për të dhëna jo stacionare, funksioni r(në ekuacionin (4.23) varet nga variablat hapësinorë dhe koeficientët e parashikimit optimal duhet të ndryshojnë në varësi të koordinatave hapësinore. Kjo është tipike për imazhet. Për fat të mirë, karakteristikat statistikore jo-stacionare të imazheve zakonisht mund të përafrohen mjaft mirë funksionet e palëvizshme, pra jo i rikonfigurueshëm pajisje lineare jep parashikime të plota rezultate të mira. Kur kompresoni informacionin e videos duke përdorur metodën DPCM, gabimet zakonisht shfaqen në kufijtë e objekteve të imazhit, ku supozimi i stacionaritetit është i kënaqur në masën më të vogël, dhe në imazhin e rindërtuar ato perceptohen vizualisht si pika anormalisht të lehta ose të errëta.

Zgjedhja e numrit të niveleve të kuantizimit dhe vendndodhjes së pragjeve të kuantizimit është pjesërisht sasiore dhe pjesërisht cilësore. Vendndodhja e pragjeve të kuantizimit mund të gjendet me llogaritjet sasiore. Puna e Maksit ishte e para që mori në konsideratë kuantizimin jo të njëtrajtshëm, i cili varet nga funksioni i shpërndarjes së sinjalit të kuantizuar dhe minimizon gabimin mesatar të katrorit të shkaktuar nga numri i kufizuar i niveleve të kuantizimit. Algoritmi i Max ju lejon të gjeni vendndodhjen optimale të pikave të tranzicionit për një numër të caktuar nivelesh kuantizimi. Megjithatë, numri i niveleve të kuantizimit zgjidhet bazuar në konsiderata subjektive cilësore.

Numri minimal i niveleve të kuantizimit është dy (numra njëshifrorë) dhe korrespondon me një kuantizimin e tillë të imazheve në të cilat diferenca e shkëlqimit merr një vlerë fikse (pozitive ose negative). Kjo metodë zakonisht quhet modulimi delta, qarku DPCM (Fig. 4.8) mund të thjeshtohet duke zëvendësuar kuantizuesin me një kufizues dhe parashikuesin n th porosi për integrues. Kur zvogëlohet teprica e imazhit duke përdorur metodën e modulimit delta, vërehen të njëjtat disavantazhe si me modulimin delta të sinjaleve të tjera, siç është fjalimi, domethënë zgjatja e skajeve dhe shtrembërimet e fragmentimit. Megjithatë, nëse frekuenca e kampionimit të imazhit zgjidhet shumë më e lartë se frekuenca Nyquist, atëherë kompresimi i modulimit delta çon në gabime të vogla (subjektive të dukshme). Nëse frekuenca e marrjes së mostrave i afrohet frekuencës Nyquist, atëherë imazhi do të tregojë më shumë zvarritje të skajeve (në skajet e imazheve) dhe shtrembërim shtypës (në zona me shkëlqim konstant). Ashtu si me kompresimin e të folurit, modulimi adaptiv delta mund të zvogëlojë këto gabime. Sidoqoftë, në përgjithësi, kur transmetoni imazhe, modulimi delta doli të ishte më pak efektiv sesa kur transmetoni fjalimin.

Kuantizimi me një numër nivelesh më të mëdha se dy bën të mundur marrjen e imazheve të më shumë Cilesi e larte. Sistemi i kompresimit DPCM me kuantizim me 8 nivele (3-bit) në vendosje optimale pragjet prodhojnë imazhe cilësia e të cilave është e njëjtë si në një sistem PCM me një thellësi prej 6 deri në 8. Përjashtim bëjnë gabimet pranë linjave të ndryshimeve të mprehta në shkëlqim.

Sinjali nga dalja e pajisjes së kuantizimit, natyrisht, duhet të jetë i koduar, pasi shpërndarja e probabilitetit të diferencave të kuantizuara nuk është uniforme. Në zgjedhje e mire kodi (për shembull, kodi Shannon-Fano ose Huffman) mund të zvogëlojë më tej shpejtësinë e përgjithshme të krijimit të informacionit. Pratt thekson se kur përdoret kodi Huffman, është e mundur të zvogëlohet shpejtësia e krijimit të informacionit në 2.5 bit/pikë. Ky reduktim shtesë i shpejtësisë duhet të peshohet kundrejt rritjes së kostos dhe kompleksitetit të memories, sinkronizuesve dhe regjistrave të memories ndihmëse të nevojshme për ekzekutimin e kodeve Huffman.

Çështjet e ngjeshjes së imazhit duke përdorur DPCM gjatë zgjedhjes së elementeve sipas rreshtit u diskutuan më lart (d.m.th., pikat që shtrihen në linjë aktuale skanime). Për shkak të natyrës dy-dimensionale të imazheve, është e mundur (dhe e këshillueshme) të zgjerohet metoda DPCM në mënyrë që parashikimi të marrë parasysh ndriçimin në pikat që shtrihen jo vetëm në rrymën, por edhe në linjat e mëparshme të skanimit. Skemat e kompresimit DPCM me parashikime të tilla dydimensionale bazohen në të njëjtat parime si ato për parashikimin njëdimensional. Meqenëse imazhet karakterizohen nga prania e marrëdhënieve statistikore dy-dimensionale, mund të shpresohet se parashikimi dydimensional do të japë rezultate më të mira në kompresimin e imazhit, pasi dekorrelacioni i imazhit duke përdorur operacionet e parashikimit dhe zbritjes do të kryhet përgjatë dy koordinatave. Në të vërtetë, pajisjet me parashikim hapësinor ofrojnë më shumë imazhe me cilësi të lartë. Habibi tregoi se duke përdorur një pajisje dydimensionale parashikuese të rendit të tretë me kuantizim me 8 nivele (3-bit), u morën imazhe që nuk mund të dalloheshin vizualisht nga foto origjinale, i përpunuar nga PCM me numra 11-bitësh.

Për imazhet që përbëhen nga korniza sekuenciale, të tilla si televizioni, idetë e parashikimit dhe zbritjes që lidhen me DPCM mund të shtrihen në domenin e kohës. NË imazhe të ngjashme Shkëlqimi i shumë pikave nuk ndryshon nga korniza në kornizë ose ndryshon ngadalë. Prandaj, është e mundur të ndërtohet një sistem kompresimi DPCM në të cilin shkëlqimi i pikës tjetër parashikohet bazuar në shkëlqimin e një grupi dydimensional pikash të kornizës aktuale dhe pikave përkatëse të kornizave të mëparshme. Në praktikë, rendi i parashikimit të përkohshëm nuk mund të jetë i lartë, pasi për çdo afat kohor është e nevojshme të keni një pajisje ruajtëse ku do të ruhej i gjithë korniza. Simulimet me një parashikues të rendit të tretë, në të cilat pikat e vendosura në rrymën (dhe kornizat e mëparshme në të majtë dhe mbi pikën në fjalë) janë përdorur për parashikim, treguan se shumë imazhe të bukura me një thellësi mesatare bit prej 1 bit/pikë.

4.3.3. Skemat për reduktimin e tepricës së imazhit me përpunim në domenin e transformimit

Për të shpjeguar operacionet kryesore të kryera nga sistemi i kompresimit të videove me përpunimin në domenin e transformimit, le t'i drejtohemi matricës së kovariancës të përcaktuar nga relacioni (4.20). Matrica [ Cg] përshkruan korrelacionin e mostrave të imazhit në aeroplan ( x, y), që është rrafshi koordinativ i figurës. Një metodë e rëndësishme shumëdimensionale Analiza statistikore shërben për të studiuar një grup të dhënash jo vetëm në koordinatat e tyre natyrore, por edhe në sistemet e koordinatave me veti më të përshtatshme. Në veçanti, sistemet e koordinatave të bazuara në vlerat vetjake dhe eigenvektorët e matricës së kovariancës janë provuar të jenë shumë të dobishme.

[C g] = [F] [

] [ Ф ] T = , (4.24)

ku [ F] - matricë e përbërë nga kolona eigenvektoriale ortogonale F i Një [ ] - matrica diagonale e vlerave vetjake.

Transformimi i koordinatave i përcaktuar nga matrica eigenvektorit [ F], ka vetinë që transformon grup i dhënë numrat në një tjetër me elementë të pakorreluar, dhe komponentët që rezultojnë kanë varianca në rënie. Le eigenvlerat matricat renditen në rend zbritës dhe numërohen ashtu që

Tërheq vëmendjen

Për shembull, i vjetër i mirë Formati GIF përdor një gamë deri në 256 ngjyra. Nëse doni të ruani një seri të selfieve tuaja si një animacion GIF (kujt do t'i interesonte), atëherë gjëja e parë që duhet të bëni është më saktë programi, të cilën do ta përdorni për këtë, do t'ju duhet të bëni - të krijoni një paletë. Ju mund të përdorni një gamë statike, për shembull ngjyra të sigurta në ueb, algoritmi i kuantizimit do të dalë shumë i thjeshtë dhe i shpejtë, por rezultati nuk do të jetë shumë i mirë. Ju mund të krijoni një gamë optimale bazuar në ngjyrat në imazh, e cila do të japë një rezultat që është vizualisht më i ngjashëm me origjinalin.

Ekzistojnë disa algoritme për krijimin e një palete optimale, secila me të mirat dhe të këqijat e veta. Unë nuk do ta shqetësoj lexuesin me teori dhe formula të lodhshme, së pari, unë jam dembel, dhe së dyti, shumica e njerëzve nuk janë të interesuar për këtë - ata thjesht do të lëvizin nëpër artikull, duke parë fotot.

Më pas do të gjeni një histori të mërzitshme dhe të pakuptueshme në lidhje me metodën e seksionit mesatar, algoritmin e shpërndarjes së gabimit Floyd-Steinberg (zhurma e kuantizimit) (dhe jo vetëm), veçoritë e perceptimit të ngjyrave të syrit të njeriut, si dhe pak mut kodi .

Sfondi

Shumë kohë më parë, kur Nokia ishte ngrohtë dhe tubi dominonte tregun e smartfonëve dhe pronarët e smartfonëve e quanin veten me krenari "njerëz të telefonave inteligjentë", në ato kohëra të lashta unë shkrova programe të thjeshta në python për seritë60. Njërën prej tyre e hasa një ditë më parë ndërsa po gërmoja nëpër arkiva. GifTool është një program për krijimin e animacionit GIF nga një grup fotografish. Në të kam zbatuar kuantizimin duke përdorur metodën e seksionit median, algoritmin Kompresimi LZW, e gjithë struktura e skedarit u krijua në mënyrë të pavarur; transparenca u përdor për pikselët që nuk ndryshuan në rrëshqitjen tjetër për të zvogëluar madhësinë përfundimtare të skedarit. Doja të rifreskoja kujtesën time dhe të shihja se si funksiononte. Hapa kodin dhe... Ajo ndjesi kur nuk mund ta kuptosh kodin tënd të ndyrë të dhjetë viteve më parë. Atëherë nuk dija për PEP8, kështu që lexueshmëria e kodit ishte pak më pak se joekzistente (në atë kohë më pëlqente minimalizmi, si shumë programues fillestar). Derdha disa lot, pështyva, e rifaktorova në PyCharm, kuptova se si të zbatoja metodën e seksionit mesatar dhe krijova shpejt një skenar "të ndyrë". Punon! Paleta është krijuar, imazhi i daljes është i tolerueshëm. Dhe pastaj pyesja veten nëse mund të arrija rezultate më të mira në mënyrë që fotografia të ishte vizualisht sa më afër origjinalit.


Pra - metoda e seksionit mesatar. Është e thjeshtë si dreqin. Hapi i parë është të krijoni një kub RGB nga të gjitha ngjyrat unike të imazhit. Më pas, prerë atë përgjatë anës më të gjatë. Për shembull, diapazoni ynë i kuq është nga 7 në 231 (gjatësia 231-7=224), jeshile nga 32 në 170 (gjatësia 170-32=138), blu nga 12 në 250 (gjatësia 250-12=238), që do të thotë ne do të "prejmë" kubin përgjatë anës blu. Ne gjithashtu presim segmentet që rezultojnë përgjatë anës së gjatë, etj. derisa të marrim 256 segmente. Për secilin segment, llogaritni ngjyrën mesatare - kështu e marrim paletën.

Disa foto janë pothuajse në temë, për qartësi



Çfarë mund të përmirësohet këtu? Gjëja e parë që ju vjen në mendje është të llogarisni ngjyrën mesatare, jo duke mbledhur marrëzi të gjitha ngjyrat dhe duke pjesëtuar me numrin e tyre [shuma(ngjyra) / numërimi(ngjyra) ], por duke marrë parasysh sa herë shfaqet secila ngjyrë në imazh. Kjo do të thotë, ne e shumëzojmë secilën ngjyrë me numrin e shfaqjeve të saj në imazh, shtojmë vlerat që rezultojnë dhe e ndajmë rezultatin me numrin e dukurive në imazhin e të gjitha ngjyrave të një segmenti të caktuar [ shuma (ngjyra * gjithsej) / shuma (total) ]. Si rezultat, ngjyrat që hasen më shpesh kanë përparësi në llogaritje, por ngjyrat e rralla bëjnë gjithashtu rregullimet e tyre, kështu që paleta del më e mirë dhe devijimi vizual i ngjyrave është më i vogël. Për rezultate më të mira, këshillohet të merret parasysh edhe gama, por këtë e lashë për më vonë. E dyta nuk është aq e dukshme - seksioni mesatar nuk merr parasysh veçoritë e perceptimit të ngjyrave nga syri i njeriut. Ne i perceptojmë nuancat e jeshiles shumë më mirë se nuancat e blusë. Vendosa ta korrigjoj këtë keqkuptim dhe "rrafshova" kubin - shumëzova gjatësitë e anëve me koeficientët nga ky artikull. Si rezultat, kishte më shumë seksione në anët jeshile dhe të kuqe, dhe më pak në anën blu. Një zgjidhje të tillë nuk e kam hasur askund tjetër (ndoshta nuk e kam kërkuar mirë), por rezultati është i dukshëm.

Tani kemi një gamë optimale, sigurisht jo ideale (e di që mund të përmirësohet më tej), por mjaft e mirë. Hapi tjeter– indeksimi i ngjyrave të imazhit. Opsioni më i thjeshtë është se në cilin segment është ngjyra, kështu është edhe indeksi. Shpejt dhe lehtë. Por ka një por, dhe jo edhe një, kështu që të këtë hap do të kthehemi.

Ekziston një mënyrë tjetër për të përmirësuar cilësinë e imazhit që rezulton - shpërndarja e gabimit. Këtu, gjithashtu, gjithçka është mjaft e thjeshtë - ne zbresim ngjyrën përkatëse të paletës nga ngjyra e indeksuar, marrim një gabim, e shpërndajmë atë mbi pikselët fqinjë në përputhje me një formulë të caktuar (shabllon), formula më e famshme Floyd-Steinberg, e cila është ajo që kam përdorur. Kur gabimet shpërndahen, tranzicionet e mprehta midis ngjyrave janë të paqarta dhe vizualisht imazhi duket se përmban më shumë nuanca (ngjyra). Nëse jeni të interesuar, mund të lexoni për shpërndarjen e gabimeve në detaje dhe në mënyrë interesante. Vendosa gjithashtu të përfundoj këtë algoritëm, duke shumëzuar gabimin me të njëjtët koeficientë, siç doli, ishte shumë ide e mirë- meqenëse kishte më pak seksione në diapazonin blu, në të u mor një gabim domethënës dhe pa korrigjuar gabimin me koeficientë, shpërndarja solli shumë "zhurmë".

Tani mund të ktheheni sërish te indeksimi. Duke shpërndarë gabime, ne ndryshojmë ngjyrat e pikselëve dhe marrim ato që nuk janë në kubin tonë RGB (më lejoni t'ju kujtoj, ai përbëhet ekskluzivisht nga ngjyrat e imazhit). Tani nuk mund të shikoni vetëm se në cilin segment është një ngjyrë për të caktuar një indeks. Zgjidhja u gjet menjëherë - duke kërkuar ngjyrën më të afërt në paleta. NË këtë formulë Zëvendësova të njëjtat koeficientë. Duke krahasuar rezultatet e zgjedhjes së një ngjyre palete bazuar në indeksin e segmentit që përfshin ngjyrën origjinale dhe rezultatet e kërkimit për ngjyrën më të afërt, pashë qartë se ngjyra më e afërt shpesh përfundon në segmentin ngjitur. Nëse ngjyra e burimit është më afër qendrës së segmentit, atëherë indeksi i segmentit korrespondon me indeksin e ngjyrave në paleta, por sa më afër të jetë ngjyra burimore me skajet e segmentit, më shumë gjasa, se ngjyra më e afërt do të jetë në segmentin ngjitur. Në përgjithësi, mënyra e vetme e saktë për të indeksuar është të kërkoni për ngjyrën më të afërt në paleta. Por kërkimi ka një disavantazh - është i ngadalshëm, shumë i ngadalshëm. Shkrimi i një thërrmuesi numrash në Python është një ide e keqe.

Epo, doja ta shpjegoja me pak fjalë, por doli të ishte një grumbull i tërë shkrimesh të pakuptueshme. Shpresoj të shkruaj kod më të mirë se sa shpjegoj, kështu që këtu është një lidhje për github. Kodi u rishkrua disa herë, së pari algoritmi u përmirësua derisa nuk isha i kënaqur me rezultatin, më pas doli që po hante shumë RAM gjatë përpunimit të fotografive (së pari e testova në foto të vogla), më duhej të transferoja kubi RGB, seksioni mesatar dhe harta e pikselit në bazën e të dhënave (sqlite). Skripti funksionon shumë ngadalë, por rezultati është më i mirë se kuantizimi duke përdorur PIL/Pillow dhe GIMP (në të ky operacion quhet indeksim).

Demonstrimi vizual:

Origjinale

Rezultati i kuantizimit në GIMP, paleta optimale prej 256 ngjyrash + turbullim ngjyrash Floyd-Stenberg (normale)

Rezultati i kuantizimit PIL/jastëk image.convert(mode="P", dither=PIL.Image.FLOYDSTEINBERG, palette=PIL.Image.ADAPTIVE, ngjyra=256)

Rezultati i kuantizimit me kodin tim

Çfarë duhet t'i kushtoni vëmendje: Dispersioni i gabimeve të GIMP është shumë i zhurmshëm, PIL/Pillow krijon një gamë jo shumë optimale dhe praktikisht nuk i zhduk gabimet (kalimet e mprehta midis ngjyrave).
Nëse nuk e shihni ndryshimin, shikoni shembuj të tjerë në github.


P.S.: ekziston një program i mrekullueshëm Color Quantizer, i cili e përballon këtë detyrë më mirë dhe më shpejt, kështu që skenari im nuk ka asnjë kuptim praktik, ai është bërë vetëm për interes "sportive".
UPD: përditësoi projektin në github. U shtua algoritmi i kuantizimit Octree, formula popullore e shpërndarjes së gabimeve, kërkoni për ngjyrën më të afërt sipas vlerës mesatare të kuqe.

Shënim: Prezantimi. Algoritmi për ndarje uniforme të hapësirës së ngjyrave. Algoritmi për ndarjen sipas frekuencës së shfaqjes: ideja e algoritmit, metoda e ndarjes së një kubi me ngjyra - kërkimi i renditur lokalisht. Algoritmi i prerjes mesatare. Metodat e grupimit për kuantizimin e imazhit: metoda K-means, metoda e lidhjes së grafikut, metoda hierarkike, metoda e përgjithësuar e K-means ose metoda e kondensimit dinamik. konkluzioni.

12.1. Prezantimi

Procesi i konvertimit sinjal analog V formë dixhitale përbëhet nga tre faza: kampionimi ("Sampling. Antialiasing. Transformimet gjeometrike të imazheve raster"), kuantizimi dhe kodimi. Ky leksion diskuton fazën e dytë. Kuantizimi- ky është zëvendësimi i një vlere referimi me vlerën më të afërt nga një grup vlerash fikse. Kur aplikohet në imazhe, kjo nënkupton zvogëlimin e numrit të vlerave të atributeve për çdo piksel, ose, më thjesht, zvogëlimin e numrit të ngjyrave në imazh. Kjo kërkon që cilësia e imazhit të përkeqësohet sa më pak të jetë e mundur. Operacioni i kuantizimit përdoret gjithashtu në material tashmë të dixhitalizuar.

Kuantizimi është i nevojshëm për:

  • ruajtja e kujtesës;
  • përmirësimi i vetive të sekuencave për kompresim;
  • përgatitje për përpunim të mëvonshëm;
  • duke shtuar efekte.

Le t'i komentojmë këto pika më në detaje në lidhje me imazhet.

Kursimet e kujtesës arrihen, natyrisht, duke ulur koston e ruajtjes së vlerave të atributeve. Shumë formate të ruajtjes së imazheve, të tilla si PNG, GIF, në vend që të ruajnë vlerat e atributeve, ruajnë numrat e referencës në rreshtat e paletës. Një paletë është një tabelë, rreshtat e së cilës përmbajnë një vlerë fikse të atributit. Më parë, mekanizmi i paletës përdorej për të formuar dhe shfaqur imazhe për shkak të faktit se sasia e kujtesës video para vitit 1995 ishte zakonisht kompjuter desktop nuk e kalonte një megabajt.

Përmirësimi i vetive të sekuencave për komprimim arrihet duke reduktuar numrin vlerat e mundshme, që do të thotë rritje e përsëritjeve.


Oriz. 12.1.

Përgatitja për përpunimin e mëvonshëm është e nevojshme për disa algoritme, kompleksiteti i të cilave varet ndjeshëm nga numri i vlerave të mundshme të atributeve. Në këtë rast, rezultati i funksionimit të algoritmit shpesh nuk ndryshon ose ndryshon vetëm pak.

Kuantizimi i imazhit mund të përdoret për të shtuar efekte artistike dhe duke theksuar kufijtë.

Ky leksion supozon se vlerat e atributeve të pikselëve të një imazhi qëndrojnë në hapësirën e ngjyrave RGB ("Konceptet themelore: Përfaqësimi i ngjyrës në grafikën kompjuterike"). Për lehtësinë e paraqitjes, pseudo-kodet e algoritmeve janë dhënë për një imazh gjysmëton 8-bit (256 hije) (shih Fig. 12.1), konvertimi kryhet në një imazh 4-bit (16 hije).


Oriz. 12.2.

12.2. Algoritmi për ndarje uniforme të hapësirës së ngjyrave

Le të shqyrtojmë algoritmin më të thjeshtë të kuantizimit - algoritmi për ndarje uniforme të hapësirës së ngjyrave, i quajtur gjithashtu kuantizimi linear. Le ta zbërthejmë hapësirë ​​ngjyrash në pjesë të barabarta në secilin nga drejtimet kryesore (për RGB ekzistojnë tre drejtime të tilla - sipas numrit të komponentëve). Për shembull, në drejtim të boshtit blu ose jeshil (shih Fig. 1.5) ne do ta ndajmë kubin në 8 pjesë, dhe në drejtim të boshtit të kuq - në 4. Ne futim grupin e vlerave që formohen në kryqëzimin e ndarjeve në tabelë. Në shembullin tonë, marrim 256 vlera, të shpërndara në mënyrë të barabartë në kubin RGB. Më pas, konvertimi i imazhit zbret në kërkimin e numrit përkatës në tabelë, në mënyrë që distanca midis ngjyrës reale dhe zëvendësimit të saj të jetë minimale. Kjo mund të bëhet shpejt duke përdorur rrumbullakimin.

// nga 256 nuancat e grisë ne bëjmë 16 // I(pixel) - atribut pixel // Inew(pixel) atribut i ri - numri i referencës në paleta // Paleta - paleta // numri i hijeve në imazhin origjinal NOldColors = 256; // numri i elementeve në paleta NNNgjyra = 16; // 1. Plotësoni paletën për (i = 0; i< NNewColors; i++) { Palette[i] = i * (NOldColors / NNewColors); } // 2. Вычиcляем новые значения атрибутов foreach(pixel in I) // для каждого пикселя { // округляем, отбрасывая pjesë thyesore Inew(pixel) = I(piksel) / (NOoldColors / NNewColors); ) Listimi 12.1. Algoritmi për ndarje uniforme të hapësirës së ngjyrave

Si rezultat i punës të këtij algoritmi (shih fig. 12.2) kufijtë shumë të qartë shfaqen shpesh në imazh, dhe detajet, përkundrazi, fshihen. Megjithatë, avantazhet kryesore të këtij algoritmi janë thjeshtësia dhe shpejtësia e lartë.

Në përpunimin dixhital të imazhit, diapazoni i vazhdueshëm dinamik i vlerave të shkëlqimit ndahet në një numër nivelesh diskrete. Kjo procedurë quhet kuantizimi. Një kuantizues transformon një ndryshore të vazhdueshme në një ndryshore diskrete që merr një grup vlerash të fundme. Këto vlera quhen nivele kuantizimi. Në rastin e përgjithshëm, transformimi shprehet me një funksion hap (Fig. 1.5). Nëse ndriçimi i mostrës së imazhit i përket intervalit (d.m.th., kur ), atëherë kampioni origjinal zëvendësohet nga niveli i kuantizimit, ku janë pragjet e kuantizimit. Supozohet se diapazoni dinamik i vlerave të shkëlqimit është i kufizuar dhe i barabartë me .

Fig. 1.5 Funksioni që përshkruan kuantizimin

Detyra e ndërtimit të një kuantizuesi është të përcaktojë vlerat e pragjeve dhe niveleve. Mënyra më e thjeshtë për të zgjidhur këtë problem është ndarja e diapazonit dinamik në intervale të barabarta. Megjithatë, kjo zgjidhje nuk është më e mira. Nëse vlerat e shkëlqimit të shumicës së mostrave të imazhit grupohen, për shembull, në rajonin "e errët" dhe numri i niveleve është i kufizuar, atëherë këshillohet që të kuantizohen në mënyrë të pabarabartë. Në rajonin "e errët" ju duhet të kuantizoni më shpesh, dhe në rajonin "dritë" më rrallë. Kjo do të zvogëlojë gabimin e kuantizimit.

Kështu, problemi i ndërtimit të një kuantizuesi mund të formulohet si problemi i gjetjes së vlerave optimale të dhe që plotësojnë disa kritere optimizimi. Në mënyrë tipike, për një numër fiks nivelesh, kuantizuesi optimizohet sipas kriterit të gabimit mesatar katror minimal.

(1.12)

duke supozuar se shkëlqimi është vlerë e rastësishme me një densitet probabiliteti të njohur.

Gabimi i kuantizimit mesatar katror të rrënjës (1.12) është i barabartë me

. (1.13)

Duke diferencuar (1.13) në lidhje me variablat , dhe duke barazuar derivatet me zero, marrim ekuacionet jolineare

.

Duhet të theksohet se pragjet ekstreme përcaktohen nga diapazoni dinamik i shkëlqimit. Ekuacionet (1.14) lehtë mund të reduktohen në formë

.

Nga (1.15) rrjedh se pragjet duhet të vendosen në mes midis dy niveleve ngjitur dhe . Zgjidhja e këtyre ekuacioneve mund të gjendet në mënyrë të përsëritur. Kuantizuesi optimal që plotëson kriterin (1.12) quhet kuantizues Lloyd-Max, dhe gabimi mesatar katror për një kuantizues të tillë është

(1.16)

Me një shpërndarje uniforme të shkëlqimit, ekuacionet jolineare (1.15) mund të paraqiten në formë

,

dhe rrënja e gabimit mesatar katror është .

Në sisteme përpunimi dixhital imazhet priren të zvogëlojnë numrin e niveleve dhe pragjet e kuantizimit, sepse gjatësia e fjalës së kodit binar me të cilën paraqiten mostrat e kuantizuara në kompjuter varet nga numri i tyre. Megjithatë, me një numër relativisht të vogël nivelesh, konturet e rreme shfaqen në imazhin e kuantizuar. Ato lindin si rezultat i një ndryshimi të menjëhershëm të shkëlqimit të figurës së kuantizuar (Fig. 1.6) dhe janë veçanërisht të dukshme në zonat e sheshta të ndryshimit të tij.

Konturet e rreme degradojnë ndjeshëm cilësinë vizuale të imazhit, sepse Vizioni i njeriut është veçanërisht i ndjeshëm ndaj kontureve. Kur kuantizohen në mënyrë uniforme imazhet tipike, kërkohen të paktën 64 nivele. Figura 1.7.a dhe 1.7.b tregojnë rezultatet e kuantizimit uniform të imazhit "Portreti" në 256 dhe 14 nivele kuantizimi, respektivisht.

Fig.1.6. Mbi mekanizmin e shfaqjes së kontureve false

Fig.1.7. Rezultatet uniforme të kuantizimit

Fig.1.8. Rezultati i kuantizimit jo uniform

Fig.1.9. Histogrami i imazhit të portretit

Në pjesët e errëta të figurës në Fig. 1.7.b vërehen konturet e rreme. Përdorimi i një kuantizuesi Lloyd-Max bën të mundur uljen e ndjeshme të nivelit të tyre (shih Fig. 1.8, ku numri i niveleve të kuantizimit është gjithashtu 14). Në Fig. Figura 1.9 tregon një histogram të shkëlqimit të imazhit "Portreti" në 256 nivele kuantizimi dhe shënon pragjet në . Nga figura rezulton se ato zona të diapazonit dinamik në të cilat grupohen vlerat e shkëlqimit të mostrave janë më shpesh të kuantizuara.

Për të shmangur kuantizimin e pabarabartë, i cili nuk mund të kryhet duke përdorur një ADC standard, përdoren transformime jolineare (Fig. 1.10). Mostra e imazhit origjinal i nënshtrohet një transformimi jolinear në mënyrë që dendësia e shpërndarjes së probabilitetit të mostrave të transformuara të jetë uniforme, d.m.th. kryhet një procedurë barazimi, e cila përshkruhet në detaje në kapitullin 2. Më pas, mostrat kuantizohen me një hap uniform dhe i nënshtrohen transformimit jolinear të anasjelltë.

Fig.1.10. Kuantizimi me transformim paraprak jolinear

Për të shkatërruar konturet e rreme, Roberts propozoi shtimin e zhurmës me një densitet uniform të shpërndarjes së probabilitetit në mostrat e shkëlqimit përpara kuantizimit uniform. Zhurma e shtuar shtyn disa mostra imazhi në një nivel më të lartë dhe të tjerët në një nivel më të ulët. Kështu, konturet e rreme shkatërrohen. Varianca e zhurmës së shtuar duhet të jetë e vogël në mënyrë që të mos çojë në shtrembërime të perceptuara si "borë" në imazh dhe në të njëjtën kohë të mjaftueshme për të shkatërruar konturet e rreme. Në mënyrë tipike, zhurma e shpërndarë në mënyrë uniforme përdoret gjatë intervalit. Rezultatet e kuantizimit uniform në 14 dhe 8 nivele të imazhit "Portreti" me shtim paraprak të zhurmës janë paraqitur në Fig. 1.11.a dhe 1.11.b. Në 8 nivele kuantizimi, zhurma e shtuar bëhet shumë e dukshme, por konturet e rreme janë shkatërruar pothuajse plotësisht.

Fig.1.11. Rezultatet e kuantizimit uniform me shtimin paraprak të zhurmës

Një tjetër metodë kuantizimi përdoret në shtypje. Kjo është një metodë e gjenerimit të imazheve binare raster (2 nivele) nga ato gjysmëtonike. Kur printoni (për shembull, gazeta ose revista), imazhi formohet nga pika të bardha dhe të zeza. Për ta bërë këtë, i gjithë imazhi origjinal ndahet sipas koordinatave hapësinore në blloqe identike katrore. Zakonisht një bllok përmban elemente. Çdo mostër blloku i shtohet një numër me koordinatat përkatëse nga matrica e sinjalit shqetësues, dimensionet e të cilit janë të barabarta me dimensionet e bllokut. Për shembull, numrat përdoren si një matricë e sinjalit shqetësues:

.

Ky operacion përsëritet për të gjitha blloqet. Imazhi që rezulton është i kuantizuar në dy nivele. Në Fig. Figura 1.12.a tregon një imazh gjysmëtonik "Portret" me një sinjal shqetësues të shtuar. Në Fig. 1.12.b,c tregojnë rezultatet e kuantizimit binar të imazhit "Portreti" me një sinjal shqetësues të shtuar (Fig. 1.12.b) dhe pa të (Fig. 1.12.c).

1.12 Rasterizimi i imazheve

Një imazh raster binar ofron një përvojë vizuale dukshëm më të mirë sesa një imazh i rregullt binar. Transferimi i shkallës së shkëlqimit gjatë rasterizimit arrihet duke ndryshuar përmasat gjeometrike të pikës së bardhë të vëzhguar në një sfond të zi. Nëse leximet "të lehta" grupohen në një bllok, atëherë dimensionet gjeometrike të pikës së bardhë janë maksimale dhe të barabarta me madhësinë e bllokut. Ndërsa ndriçimi zvogëlohet, dimensionet e tij gjeometrike gjithashtu zvogëlohen. Syri i njeriut kryen mesataren lokale, duke krijuar iluzionin e shikimit të një imazhi gjysmëton. Procedura e shqyrtimit është veçanërisht efektive kur printoni imazhe me rezolucion të lartë, kur një njollë e vetme është mezi e dukshme për syrin.

Artikujt më të mirë mbi këtë temë