ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Joint Photographic Experts Group - Wikipedia

Joint Photographic Experts Group

Uit Wikipedia, de vrije encyclopedie

Joint Photographic Experts Group
Image:Phalaenopsis JPEG.png
Een foto van een bloem met van links naar rechts steeds meer verlieslijdende compressieverhoudingen.
Bestandsextensie: jpeg, jpg, jpe, jfif, jfi, jif
MIME-type: image/jpg

Met de afkorting JPEG wordt een bestandsindeling aangeduid voor het opslaan van afbeeldingen in digitale vorm. Het is een vorm van datacompressie en van broncodering. De naam staat voor Joint Photographic Experts Group.

De JPEG-bestandsindeling kent diverse compressiemogelijkheden. Hoe hoger de compressie des te kleiner het bestand, en des te geringer de beeldkwaliteit. Het kwaliteitsverlies van JPEG valt niet veel op bij foto’s, maar wel bij bijvoorbeeld grafieken, lijnen of letters. Voor dit soort afbeeldingen is de GIF- of PNG-compressie beter geschikt, of de nieuwe RAW-methode waar de opslag plaatsvindt zonder compressie en het beeld later via geschikte software bewerkt kan worden. Zodoende wordt JPEG veelal gebruikt voor foto’s, bijvoorbeeld gemaakt met digitale camera’s.

Een overblijfsel uit de tijd dat het besturingssysteem MS-DOS populair was, is dat de JPEG-bestanden vaak de extensie ‘JPG’ krijgen.

Inhoud

[bewerk] Werking

De JPEG-indeling is complex. In tegenstelling tot indelingen als PNG of GIF, wordt niet van een enkel mechanisme gebruikgemaakt, maar wordt een groot aantal stappen na elkaar toegepast om tot het uiteindelijke JPEG-bestand te komen.

Stel, we hebben een plaatje van 16 bij 16 pixels, zoals dit (uitvergrote) voorbeeld:

Afbeelding:jpeg-voorbeeld-rood.png Afbeelding:jpeg-voorbeeld-groen.png Afbeelding:jpeg-voorbeeld-blauw.png
Rood Groen Blauw

Dit plaatje bestaat uit 3 kleurkanalen: rood, groen en blauw. Dat zijn deze:
Het menselijk oog is gevoeliger voor helderheid dan voor kleur. Om op een onzichtbare manier informatie te verwijderen is het de bedoeling dat we minder informatie aan kleur opslaan dan aan helderheid. Dat lukt niet in de RGB-kleurenruimte. Daarom worden de drie kanalen omgerekend naar de YUV-kleurenruimte.

Het Y-kanaal bevat vervolgens de intensiteit, de U- en V-kanalen de kleurinformatie. JPEG biedt de mogelijkheid de U- en V- kanalen ongemoeid te laten, of met een factor 2 of 4 in resolutie omlaag te brengen.

Afbeelding:jpeg-voorbeeld-y.png Afbeelding:jpeg-voorbeeld-u.png Afbeelding:jpeg-voorbeeld-v.png
Y U V

In ons voorbeeldplaatje kiezen we voor een factor 4 en dan zien de kleurkanalen er als volgt uit:
Vervolgens wordt ieder kanaal afzonderlijk behandeld. Een kanaal wordt in blokjes van 8 bij 8 pixels opgedeeld. Op zo’n blokje wordt vervolgens een discrete cosinustransformatie toegepast. Het resultaat daarvan is weer een blokje van 8 bij 8 pixels. In dat blokje is de pixel links-boven de gemiddelde kleur van het plaatje. Als je nu naar rechts of naar onder beweegt, dan bepalen die pixels details van steeds kleinere gebieden.

De discrete cosinustransformatie is wiskundig gezien exact omkeerbaar; in de praktijk gaat er echter wegens de beperkte rekenkundige precisie in de computer wat informatie verloren.

De pixels rechtsonder in het getransformeerde blokje bepalen dus zeer fijne details. Als we die weggooien, vallen alleen wat fijne details weg. Dat is ook wat men bij JPEG doet. In de JPEG-standaard is een aantal kwantisatie-matrices opgenomen. Afhankelijk van de kwaliteit die de gebruiker kiest wordt een andere matrix gekozen.

In deze 8 bij 8-matrix staat voor iedere pixel een getal. Voor alle pixels in het getransformeerde blokje wordt de pixelwaarde gedeeld door het getal in de kwantisatiematrix. Bij hoge kwaliteit zullen veel pixels door 1 gedeeld worden, naarmate de kwaliteit teruggeschroefd wordt, zullen de pixels rechtsonder door grotere getallen gedeeld worden.

Eén van de kwantisatiematrices ziet er zo uit:

1 1 2 4 8 16 32 64
1 1 2 4 8 16 32 64
2 2 2 4 8 16 32 64
4 4 4 4 8 16 32 64
8 8 8 8 8 16 32 64
16 16 16 16 16 16 32 64
32 32 32 32 32 32 32 64
64 64 64 64 64 64 64 64

Omdat hier met gehele getallen gerekend wordt, wordt informatie weggegooid. Het idee achter dit delen is dat je veel lage pixelwaardes krijgt. Als je de kwaliteit van JPEG laag zet, worden veel pixels in het getransformeerde blokje door 128 gedeeld. Na de deling houd je dan dus altijd een 0 of een 1 over.

Vervolgens worden de pixels gelineariseerd tot één lange sliert van 64 pixels. Dat gebeurt in een heel speciale volgorde: de volgende tabel laat zien welke pixel op welke plaats in de sliert komt.

0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63

De bedoeling hiervan is zo veel mogelijk nullen gegroepeerd bij elkaar te krijgen zodat je effectief run-length encoding kunt toepassen. Dat is dan ook de volgende stap.

In de laatste stap wordt het getransformeerde blokje van 8 bij 8 pixels met een Huffmancodering bewerkt. Het resultaat daarvan wordt in het JPEG-bestand opgeslagen.

[bewerk] Compressie versus kwaliteit

Bij de meeste programma’s kan de kwaliteit waarin een foto wordt opgeslagen ingesteld worden. Bij een hogere kwaliteit wordt het bestand groter, en bij een lagere kwaliteit wordt het bestand kleiner. Elk programma heeft zijn eigen methode om een zo goed mogelijke kwaliteit op te slaan in een zo klein mogelijk bestand. Ook de instelling van compressiefactor of kwaliteitsfactor wordt door het programma bepaald, en is niet te vergelijken met die van andere programma’s.

De voorbeelden hieronder laten zien wat het effect is van de gekozen kwaliteit op een schaal van 0 tot 100 (dit is voor ieder programma anders, deze voorbeelden zijn gemaakt met de Gimp, met een integer DCT-methode, en 2x2,1x1,1x1 subsampling).

origineel
origineel
kwaliteit 0
kwaliteit 0
kwaliteit 10
kwaliteit 10
kwaliteit 20
kwaliteit 20
kwaliteit 30
kwaliteit 30
kwaliteit 40
kwaliteit 40
kwaliteit 50
kwaliteit 50
kwaliteit 60
kwaliteit 60
kwaliteit 70
kwaliteit 70
kwaliteit 80
kwaliteit 80
kwaliteit 90
kwaliteit 90
kwaliteit 100
kwaliteit 100


Op het zicht lijkt een kwaliteit van 80 al goed, als echter een detail wordt uitvergroot, dan zijn er bij een kwaliteit van 90 nog artefacten zichtbaar en zelfs een kwaliteit van 100 heeft nog kleurverschil met het origineel.

detail origineel
detail origineel
detail kwaliteit 70
detail kwaliteit 70
detail kwaliteit 80
detail kwaliteit 80
detail kwaliteit 90
detail kwaliteit 90
detail kwaliteit 100
detail kwaliteit 100


[bewerk] Gegevens in het jpg-bestand

Een jpg-bestand kan verschillende gegevens bevatten. Dit worden APP markers genoemd:

  • Comment: vrij in te vullen commentaar.
  • EXIF: gegevens van de digitale camera of scanner.
  • IPTC: gestandaardiseerde indeling voor gegevens van de afbeelding.
  • Andere niet-standaard gegevens.

[bewerk] Verliesvrij bewerken

Doordat de JPEG-compressie hetzelfde werkt in horizontale en verticale richting, is het mogelijk om een afbeelding, die al is opgeslagen als een jpeg-bestand, verliesvrij 90 graden te roteren (en ook 180° en 270°). Ook verliesvrij spiegelen (horizontaal en verticaal) is mogelijk.

[bewerk] Mogelijk softwarepatent

In april 2004 klaagde Forgent Networks 31 ondernemingen (o.a. Adobe, Apple, IBM) aan in verband met softwarepatentschending. Het Texaanse bedrijf bezit een op 27 oktober 1986 toegewezen patent dat zou worden gebruikt in de JPEG-indeling; het patent beschrijft een methode om bewegende beelden te comprimeren en bevat betreffende kwantisatieovereenkomsten met de JPEG-indeling. Verder beschrijft het patent een cosinustransformatie die op het eerste gezicht niet overeenkomt met wat er binnen JPEG gebeurt. Dertig andere bedrijven hebben in totaal al 90 miljoen dollar betaald. Ondertussen is dit patent verlopen en werd de ongeldigheid van dit patent aangetoond.

Het patent is online na te lezen: (link naar patent op website patentburo V.S.)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -