Argazkietako matematika: JPEG

Javier Duoandikoetxea

Zure 20 megapixeleko kamera berriarekin argazki bat egin duzu. Botoia sakatu duzunean, 60 megabyteko informazioa jaso du kamerak (60 MB = 60 milioi byte). Byte bat 0-z eta 1-ez osaturiko zortzikote bat da (01100101, adibidez). Hortaz, 0 eta 1 zifrak erabiliz osaturiko 480 000 000 zifrako zerrenda erraldoi bat gorde behar du kamerak memorian argazki bakar baterako. Baina ez, ez dizu hori egin. Fitxategia ordenagailuan ikuskatzen duzunean, han ez dituzu 60 MB horiek aurkitu, 6 edo 7 MB baino ez daude. Zer gertatu da? Galdetu matematikari, hark du erantzuna…
Pixelak eta koloreak

Argazki digitala pixelatuta dago beti. Pixela (picture element) da irudiak duen unitaterik txikiena, kolore bakarra duen koadrotxo bat. Argazkiak 20 megapixel baditu, 20 milioi koadrotxoz osatuta dago. Hain dira txikiak, non gure begiek ez dituzten banaka ikusten, baina ordenagailuko pantailan irudia handituz, ikusgai egin daitezke.

Pixel bakoitzari zer kolore dagokion zehazteko CCD (charge coupled device = karga akoplatuko gailu) bat erabiltzen da. Gailu hori duela 50 urte asmatu zuten W. S. Boyle eta G. E. Smith fisikariek, baina ez zehazki argazkietan erabiltzeko asmoz. Aurkikuntza horri esker, 2009ko Fisikako Nobel saria jaso zuten.

1. irudia: Sony kamera baten CCDa. (Argazkia: Wikimedia Commons / Andrzej w k 2 – CC BY-SA 4.0 lizentziapean)

CCD horrek pixel bakoitzera heltzen den kolorea definitzeko RGB (red-green-blue = gorri-berde-urdin) eredua erabiltzen du, oinarrizko kolore horietako bakoitzetik zenbat hartu behar den zehaztuz. Zenbatekoa 0tik 255erainoko eskala batean hartzen da. Esate baterako, (48,213,200) hirukoteak 48 gorri, 213 berde eta 200 urdin nahastuta, turkesa kolore bat ematen du. Zergatik 0tik 255era? Hain zuzen, zortzi zifra (byte bat) erabiliz sistema bitarrean idazten diren zenbakiak horiexek direlako. Sistema bitarrean, (48,213,200) kolorea (00110000, 11010101, 11001000) idazten da. Hiru byte horiek definitzen dute, beraz, aipaturiko turkesa kolorea. Horrelako 20 milioi hirukote beharko ditugu 20 megapixeleko argazkirako.

Zenbat kolore desberdin ematen dizkigu RGB ereduak? 256 x 256 x 256 = 16 777 216 kolore denetara. Gehiegi dira gure begien bidez bereizteko. Kolore baten hirukotean aldaketa txikiak eginda, begirik zorrotzenak ere ez du alderik nabarituko.

2. irudia: Ordenagailuko aplikazio batzuetan kolorea RGB eskalan aukera daiteke.

Oharra: Zuri-beltzezko argazkietan kolore-eskala bakarra erabiltzen da, grisen eskala, 0tik 255era. Hor byte bakar batek ematen du pixelaren “kolorea”.

Tarte bat matematikarako

Duela 200 urte egin zuen Joseph Fourier zientzialari eta politikari frantsesak bere lana. Beroaren hedapena deskribatzeko ekuazio bat eta haren soluzioa idazteko era bat aurkitu zituen. Bertan, funtzio bat serie trigonometriko modura idatzi zuen (Fourieren seriea). Fourier konturatu zen funtzio trigonometrikoak “osagai unibertsal” modura erabil zitezkeela, beste edozein funtzio haien bitartez adierazteko. Errezeta bat idaztearen antzekoa da: oinarrizko “osagai” horietako bakoitzetik zenbat hartu behar den (hau da, funtzio trigonometriko bakoitzaren koefizientea seriean zein den) esaten digu. Eta horrek badu beste alderdi interesgarri bat: funtzioaren “errezetatik” gutxien behar diren osagaiak kenduta (hau da, haien koefizienteak 0 eginda), hurbilketa bat lortzen da eta errorea kontrola daiteke.

3. irudia: Joseph Fourier (1768-1830). (Argazkiaren iturria: CNRS News)

Mundu errealean erabiltzeko, egokitzapen bat behar du Fourieren teoriak. Matematikan ez dago arazorik infinitu koefizienterekin lan egiteko, baina datu errealak finituak dira. Egoera horretan aritzeko modu praktikoa ere asmatu zuten beranduago, Fourieren transformazio diskretua (DFT) definituz. Haren aldaera bat, kosinuaren transformazio diskretua (DCT), izango da gure laguntza argazki-fitxategiak txikiagotzeko.

JPEG: Joint Photographic Experts Group

JPEG izena du argazki digitalak konprimatzeko erabiltzen den ohiko bideak. Akronimoa Joint Photographic Experts Group argazkilari taldearen izenetik hartuta dago, haiek sortu baitzuten. 1992an plazaratu zen lehen aldiz. Ordenagailuetan, fitxategietarako hiru letrako luzapena erabiliz, .jpg eran agertzen da.

Konprimatzea bolumena txikitzea da. Erabilera informatikoan, fitxategien tamaina da txikitzen dena. Argazkien kasuan, JPEGren bidez txikitzean informazioa galdu egiten da, baina galdutako hori ia ez nabaritzeko modukoa izan dadin aukeratu behar da. Hau da, pixelaren kolorea aldatuko bada ere, hasierakotik hurbil gera dadin lortu behar da.

Hasteko, ez da zuzenean RGB hirukotearekin lan egiten. Beste hiru parametro definitzen dira: luminantzia, krominantzia urdina eta krominantzia gorria. Aurreko hirukotetik parametro berrien hirukotea lortzen da transformazio matematiko baten bidez. Pixel bakoitzak 3 byteko informazioa mantentzen du.

Ondoren, blokeak egiten dira, bakoitzean 8 x 8 pixel hartuz. Har ditzagun bloke bateko luminantziaren 64 balioak. Bi dimentsioko kosinuaren transformazio diskretua erabiliz, balio horiek kosinuen konbinazio modura idazten dira. Koefizienteek 8 x 8 matrize bat osatzen dute. Bloke askotan luminantziak ez du aldaketa handirik pixel batetik bestera eta, horregatik, frekuentzia altuko gaien koefizienteak txikiak dira. Nahi dugun konpresio-maila aukeratuz eta matrize berezi batekin biderkatuz, koefizienteak aldatu eta zenbaki oso bihurtzen dira. Askotarako 0 balioa lortzen da. Koefizienteak ordenatzeko orduan, 0 asko elkarren alboan gelditzen dira eta horiek ez ditugu gordeko banan-banan, haien kopurua bakarrik hartuko dugu kontuan. Horrela, zeroen zerrenda luze horiek ezabatuz, gorde beharreko informazioa asko laburtzen da.

4. irudia: Koefizienteen kalkulua 2-d kosinuaren transformazio diskretuaren bidez.

Irudia eraikitzeko, atzekoz aurrera egin behar da prozesu hori. Lortzen diren RGB eskalako balioak ez dira hasierako berberak. Hala ere, ez daude jatorrizko balioetatik urrun, adibidez 1:10 inguruko konpresioa egiten bada. Balio berri horiek definitzen dute pantailan ikusten dugun irudia.

Konpresio handia aukeratuz gero, fitxategia txikiagoa da eta emango diogun erabileraren araberakoa izango da baliagarria edo ez eskuratzen dugun irudia. Ez baita gauza bera argazkia pantaila txiki batean ikustea, 10 x 15 kopia bat egitea edo poster batera eramatea.

Laburbilduz

Duela 200 urte sorturiko teoria matematiko batetik abiatuta, hainbat kalkulu egin ditu gure tresnak kameraren botoia sakatu dugunetik argazkia memorian sartu arte pasatu den denbora laburrean. Fitxategi erraldoia izan behar zuenaren tamaina hamarrenera ekarri du, eta hori guztia informazio garrantzitsua galdu barik. Behin bidea zabalduta, aldaerak eta hobekuntzak etorri ziren, baina funtsean gure argazki-kamera digitalek jatorrizko prozesua egiten dute oraindik ere.

Gehiago jakiteko:

——————————————-
Egileaz: Javier Duoandikoetxea Analisi Matematikoko Katedraduna da UPV/EHUn.

——————————————-

2 iruzkin

Eman iritzia

Asteon zientzia begi-bistan #249 - Zientzia Kaiera

[…] Argazkietako matematika azaldu digute honetan. Lehenik eta behin, badakizue zer den pixela? Bada, irudiak duen initaterik txikiena da, kolore bakarra duen koadrotxo bat. Pixel bakoitzari zer kolore dagokion zehazteko CCD bat erabiltzen da eta CCD horrek pixel bakoitzera heltzen den kolorea definitzeko RGB eredua erabiltzen du. Eta aurrekoarekin lotuta, zein da egunero ikusten dugun JPEG sistemaren historia eta funtzionamendua? […]

Hatz-markak, FBI eta Fourier modernizatua - Zientzia Kaiera

[…] 25 urteko tresnen biltegiratze-gaitasuna gaurkoena baino askoz txikiagoa zen. Zer egin? Aurreko artikulu batean argazkietarako esan genuen moduan, hemen ere konpresioan zegoen gakoa. Gogoan izan konprimatzea […]

Eman iritzia

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>