Edukira joan

JPEG

Wikipedia, Entziklopedia askea
JPG» orritik birbideratua)
Lore bat JPEG formatuan, eskuinerantz konpresio handiagoa duena.

JPEG (Joint Photographic Experts Group)[1] galeradun konpresio-algoritmo bat da; irudi digitalak konprimatzeko ohiko metodoa. JPEG teknologiak irudiak konprimatzeko balio du, 24 biteko kolore-sakonerarekin edo gris-eskalan.

Historia eta garapena

[aldatu | aldatu iturburu kodea]

JPEG estandarra 1992an sortu zuen Joint Photographic Experts Groupek, eta ordutik aurrera estandarra munduko irudi konpresiorako gehien erabiltzen dena da. Bere jatorritik aurrera, JPEG formatuak irudi digitalen hedapena bultzatu du, bereziki Interneten eta sare sozialetan.

Fitxategi luzapena eta estandarrak

[aldatu | aldatu iturburu kodea]

JPEG fitxategiek normalean .jpg edo .jpeg luzapena izaten dute. Erabiltzaile batzuek .jpg erabiltzen dute, sistema eragile batzuek luzapenak 3 karakterera mugatzen dituztelako. Hala ere, luzapen hau ez da beti zuzena, JPEG/Exif formatuak erabiltzen dira gehienbat kamera digitaletan, eta JPEG/JFIF formatuak dira Internet bidezko argazkiak gordetzeko eta transmititzeko formatu arruntena.

Konpresioa eta kalitatea

[aldatu | aldatu iturburu kodea]

JPEG konpresio-maila erregulagarria da. Honek aukera ematen du konpresio-mailaren eta irudi kalitatearen arteko trukea definitzen. Ohiko JPEG konpresioak 10:1eko konpresio-ratioa lortzen du kalitate-galera txikiarekin. Kalitate handiagoa mantendu nahi bada, konpresio txikiagoa aukera daiteke; bestela, konpresio altuagoarekin kalitate-galera handitu egiten da eta fitxategiaren tamaina txikiagoa izango da.

Konpresioak eragindako zarata

[aldatu | aldatu iturburu kodea]
Konpresioa egin ondoren pixel edo horrelako blokeak geratzen dira, kasu honetan handitutako irudi baten zati txiki batean.

Konpresioaren ondorengo emaitza alda daiteke kuantizazio matrizeko zatitzaileen arabera. Zenbatzaile horien balioa zenbat eta handiagoa izan, orduan eta koefiziente gehiago zero bihurtzen dira eta irudia gehiago konprimatzen da. Baina, konpresio hadiagoek zarata sortzen dute irudian, kalitatea jaitsiz. Irudi bat konpresio handi batekin (% 1-15) fitxategiaren tamaina oso txikia izan dezake, baina akats asko izanda. Bestalde, irudi bat konpresio txiki batekin (% 98-100) kalitate ona izango du baina tamaina ere handiagoa izango da. Orduan, hobe izango litzateke galera ez daukan formatu batean jartzea, PNG bezala.

Galera hauek dira konpresio on bat lortzeko emaitza eta Interneteko erabiltzaile gehienak ohituta daude galera hauekin. Errore hauek saihesteko, konpresio-maila murriztu beharko da edo galerarik gabeko konpresioren bat erabili, fitxategi handiagoak sortuz (tamainan).

JPEG estandarren aukera gehienak gutxi erabiltzen dira. Hau, irudiak konprimatzeko normalean erabiltzen den metodoren deskribapen txiki bat da, 24 bit daukan irudi bat aplikatzean (zortzi gorri, urdin eta berde bakoitzerako edo, beste era batean, 8 bit kanal bakoitzerako). Aukera hau, galeradun konpresioren metodo bat da.

Kolore-espazio eraldatzea

[aldatu | aldatu iturburu kodea]
RGB ereduaren eskema.

Hasten da irudi bat RGB kolore-eredutik YUV edo YCbCr eredu bihurtzen. Kolore-espazio hau, PAL eta NTSC sistemek telebistarako erabiltzen duten sistemen bezalakoak dira, baina MAC telebista sistemarekin antzekotasun handiagoa dauka.

YUV kolore-espazioak hiru osagai ditu:

  • Y osagaia edo luminantzia (distiraren informazioa), hau da, gris-eskalako irudia.
  • U edo Cb eta V edo Cr osagaiak, hurrenez hurren, urdinaren (urdinaren eta gorriaren arteko irudia erlatibizatzen du) eta gorriaren (berdearen eta gorriaren arteko irudia erlatibizatzen du) arteko diferentzia da, krominantzia bezala ezagutzen zaie bi seinaleei (koloreari buruzko informazioa).


RGB-tik YUV-ra oinarrizko aldaketa egiten duten ekuazioak honako hauek dira:

YUV ereduaren eskema.

Aurreko ekuazioak bakantzen baditugu, alderantzizko aldaketaren ekuazioak lor daitezke:

OHARRA: Ekuazio hauek ikerketan dabiltzate, beraz, liburuetan edo sareetan ageri daitezke koefiziente ezberdinekin.

Lehenengo hirukote aztertzen badugu, hiru osagaiek 16 balio minimoa lortzen dutela ikusiko dugu. Luminantzia kanalak (Y kanala) 235 balio maximoa dauka, krominantzia kanalak, berriz, 240. Balore guztiak byte batean sartzen dira, hurbil dagoen zenbaki osora biribilduz. Fase honen bitartean ez dago informazio galerik, baina biribilketak errore txiki bat eragiten dio giza begiari.

Azpilaginketa

[aldatu | aldatu iturburu kodea]
Azpilaginketaren azalpen txikia. Goiko ezkerreko irudia jatorrizkoa da; besteek kolore azpilaginketa gogorrak jasaten dute, teknika honen ondorioak adierazten. Handitu hobeto ikusteko.

Irudia gordetzean aplika daitekeen aukera bat kolorearen informazioa distirarenaren aldean murriztea da (lehen aipatu dugun giza begiko ikusmen-fenomenoaren ondorioz). Metodo batzuk daude: pauso hau ez bada egiten, irudiak bere YUV kolore-espazioan jarraitzen du (azpilanginketa hau 4:4:4 bezala ulertzen da), irudiak ez du izango galerarik. Informazio kromatikoa erdira murriz daiteke 4:2:2 (horizontal norabidean 2ko faktorea txikitzen), beraz, koloreak bereizmenaren erdia du (horizontalean) eta distirak lehen bezala jarraituko du. Asko erabiltzen den metodo bat kolorea laurdenera murriztea da, 4:2:0, non kolorea 2ko faktore batean murrizten den, bi norabideetan, horizontalean eta bertikalean. Hasierako irudia gris-eskala (zuri eta beltza) bazegoen, kolore informazio guztia ezaba daiteke, 4:0:0 geratzen.

JPEG irudiak gordetzeko aukera ematen duten programa batzuk (GIMPek erabiltzen duen bezala), YUVeko 4:4:4 (kolore galdu gabe) 1x1, 1x1, 1x1 adierazten dute metodo hauek; YUVeko 4:2:2, 2×1,1×2,1×1, eta YUV 4:2:0 azken metodorako, 2×2,1×1,1×1.

Pauso honetarako algoritmiko teknikak erabiltzen direnak (zehazki berreraikitzeko) interpolazio bilineala, auzo hurbilena, konboluzio kubikoa, Bezier, b-spline eta Catmun Roll.rh dira.

Kosinuaren transformatu diskretua

[aldatu | aldatu iturburu kodea]
JPEG algoritmoak irudia 8×8ko laukitan transformatzen du eta gero, bakoitza konbinazio lineal bat bezala edo irudia osatzen duten 64 laukitxoen batura gisan gordetzen du; horrek xehetasunak modu selektiboan ezabatzea ahalbidetzen du. Adibidez, lauki batek 0tik oso hurbil dagoen balio bat badu, ez du kalitatean eragiten, eta beraz, ezaba daiteke.

Irudian agertzen den osagai bakoitza 8x8 pixeleko bloke txikitan banatzen dira, non ia independienteki prozesatzen diren, honek kalkulatze-denbora nabarmen murrizten du. Horren ondorioz, ohiko sareta-formazioa sortzen da, konpresio handiarekin gordetako irudietan ikusgarri bihurtzen dena. Irudiak kolore azpilaginketa bat jasan badu, koloreak azken irudian 8×16 eta 16×16 pixeleko blokeetan geratuko dira, formatuaren arabera, 4:2:2 edo 4:2:0.

Ondoren, bloke txiki bakoitza maiztasunaren eremuan bihurtzen da, kosinuaren transformatu diskretua erabiliz.

Hona hemen 8×8 bloke txiki baten adibide bat:

Hurrengo pausoan elementu bakoitzari 128 kentzen zaio:

Matrizea kosinu transformatu diskretuaren bidez transformatzen da, eta elementu bakoitza hurbilago dagoen zenbaki osora biribiltzen da.

Kodetze entropikoa

[aldatu | aldatu iturburu kodea]

Kodetze entropikoa da informazio galera gabeko konpresio modu berezia. Horretarako, matrizeko elementuak sigi-saga forman hartzen dira, antzeko maiztasuna duten taldeak elkarrekin jarri, kodetze-zeroak txertatu, eta geratzen denerako Huffman kodetzea erabili. Aritmetika-kodetzea ere erabil daiteke, Huffmanekoa baino hobeagoa dena, baina gutxitan erabilitakoa.

Kuantifikazio digitala

[aldatu | aldatu iturburu kodea]
Kuantifikazio digitala "baino lehen", 8×8 bloke txiki batean (×16 handituta).
Kuantifikazio digitala "ondoren", 8×8 bloke txikian, lehen irudiarekin konparatuz erroreak nabaritzen dira, esaterako, beheko ezkerreko izkinan, argiago baitago.

Giza begiak oso ondo detektatzen ditu distiraren aldaketa txikiak eremu nahiko handietan, baina eremu txikietan gertatutako distiraren aldaketa azkarrak ez. Baldintza honen ondorioz, maiztasun altuak ezaba daitezke kalitate bisualean galera nabarmenik izan gabe. Hau egiten da maiztasunaren eremuan dagoen osagai bakoitza osagai horrentzako konstante batekin zatituz eta emaitza zenbaki oso hurbilenera biribilduz. Algoritmo honek irudia prozesatzen duenean informazio eta kalitate gehiena galtzen den prozesua da hau.

Kuantifikazio-matrize tipiko bat da Losheller-en matrizea, eta aukeraz erabiltzen da JPEG estandarrean:

Transformatu den irudiko matrizearen koefiziente bakoitza kuantifikazio-matrizearen koefiziente bakoitzarekin zatituz, kuantifikatutako matrizea lortzen da:


Adibidez, lehen elementua kuantifikatuz, hau da, DC-koefizientea, honela izango litzateke:

Deskodetze prozesua da orain arte egingakoaren antzekoa, alderantzizkoa izanik. Gainera, kasu honetan, informazioa galduz gero, amaierako balioak ez dira hasierako balio berak izango.

Matrizetik informazioa hartu, deskodifikatu, eta balio bakoitza bere tokian jartzen da. Gero balio bakoitza lehen erabilitako kuantifikazio matrizeko balio bakoitzarekin biderkatzen da, elementu gehienak zero direnez, bakarrik goi ezkerreko izkinan dauden balioak berreskuratzen dira.

Gero kosinuaren transformazio diskretua desegiten da:


Azkenik elementu bakoitzari 128 gehitzen zaio:


Jatorrizko eta konprimatutako blokeen arteko desberdintasunak konparatzeko, bi matrizeen arteko diferentzia kalkulatzen da. Haien balio absolutuen bataz bestekoak galdu den kalitatearen ideia orokor bat ematen du:

Erreferentziak

[aldatu | aldatu iturburu kodea]

Ikus, gainera

[aldatu | aldatu iturburu kodea]

Kanpo estekak

[aldatu | aldatu iturburu kodea]