Beeldverwerking Prof. dr. ir. W. Philips Didactisch materiaal bij de cursus Academiejaar Tel: 09/ Fax: 09/
© W. Philips, Universiteit Gent, versie: 8/12/ b. 2 Copyright notice This powerpoint presentation was developed as an educational aid to the renewed course “Image processing” (Beeldverwerking), taught at the University of Gent, Belgium as of This presentation may be used, modified and copied free of charge for non-commercial purposes by individuals and non-for-profit organisations and distributed free of charge by individuals and non-for-profit organisations to individuals and non-for-profit organisations, either in electronic form on a physical storage medium such as a CD-rom, provided that the following conditions are observed: 1.If you use this presentation as a whole or in part either in original or modified form, you should include the copyright notice “© W. Philips, Universiteit Gent, ” in a font size of at least 10 point on each slide; 2.You should include this slide (with the copyright conditions) once in each document (by which is meant either a computer file or a reproduction derived from such a file); 3. If you modify the presentation, you should clearly state so in the presentation; 4.You may not charge a fee for presenting or distributing the presentation, except to cover your costs pertaining to distribution. In other words, you or your organisation should not intend to make or make a profit from the activity for which you use or distribute the presentation; 5. You may not distribute the presentations electronically through a network (e.g., an HTTP or FTP server) without express permission by the author. In case the presentation is modified these requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the presentation, and can be reasonably considered independent and separate works in themselves, then these requirements do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the presentation, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. In particular note that condition 4 also applies to the modified work (i.e., you may not charge for it). “Using and distributing the presentation” means using it for any purpose, including but not limited to viewing it, presenting it to an audience in a lecture, distributing it to students or employees for self-teaching purposes,... Use, modification, copying and distribution for commercial purposes or by commercial organisations is not covered by this licence and is not permitted without the author’s consent. A fee may be charged for such use. Disclaimer: Note that no warrantee is offered, neither for the correctness of the contents of this presentation, nor to the safety of its use. Electronic documents such as this one are inherently unsafe because they may become infected by macro viruses. The programs used to view and modify this software are also inherently unsafe and may contain bugs that might corrupt the data or the operating system on your computer. If you use this presentation, I would appreciate being notified of this by . I would also like to be informed of any errors or omissions that you discover. Finally, if you have developed similar presentations I would be grateful if you allow me to use these in my course lectures. Prof. dr. ir. W. Philips Department of Telecommunications and Information ProcessingFax: University of GentTel: St.-Pietersnieuwstraat 41, B9000 Gent, Belgium
Compressietechnieken voor beelden
© W. Philips, Universiteit Gent, versie: 8/12/ b. 4 Medische beelden radiografie 2048x1680x10 (4 Mbyte) Grote hoeveelheden data door hoge spatiale resolutie (b.v. radiografie) en/of 3D-acquisie: volumedata (e.g., MRI) of video (e.g., angiografie) Angiografie: 20 s 120 MB
© W. Philips, Universiteit Gent, versie: 8/12/ b. 5 Noodzaak compressie: “Pre-press” beelden CMYK (4 bytes per pixel) i.p.v. RGB 15 MB 4 MB Combinatie van fotografische beelden, tekst en lijnwerk Zeer hoge kwaliteit noodzakelijk
© W. Philips, Universiteit Gent, versie: 8/12/ b. 6 Andere toepassingen Andere toepassingen zijn minder kritisch: men kan heel wat fouten tolereren
© W. Philips, Universiteit Gent, versie: 8/12/ b. 7 Beeldcompressie Verliesloze compressie het beeld na decompressie is exact gelijk aan het origineel beeld compressiefactor klein (2 à 5) Compressie met verlies het beeld na decompressie is ongeveer gelijk aan het origineel beeld compressiefactor willekeurig hoog naarmate de kwaliteitseisen zakken
© W. Philips, Universiteit Gent, versie: 8/12/ b. 8 Opmerkingen We beperken ons tot grijswaardenbeelden Codering met verlies van kleurenbeelden meestal wordt het beeld eerst getransformeerd naar de YUV- kleurenruimte de U- en V-beelden worden dan spatiaal onderbemonsterd: men verwijdert 3/4 van de pixels (pixels op oneven rijen en kolommen worden weggelaten) daarna worden de Y-, U-, en V-beelden elk afzonderlijk gecodeerd Verliesloze codering van kleurenbeelden meestal door de R-, G- en B-beelden afzonderlijk te coderen gezamenlijke codering doet het echter beter (cfr: kleurenkwantisatie)
© W. Philips, Universiteit Gent, versie: 8/12/ b. 9 Algemeen compressieschema Orthogonale transformatie: omzetten van een aantal pixelwaarden in evenveel coëfficiënten Predictie van pixelwaarden uit voorgaande pixels statistische codering: veel voorkomende getallen worden vervangen door korte codewoorden en weinig voorkomende getallen door lange codewoorden netto bespaart men bits gecomprimeerde bitstroom verwijderen van statistische redundantie Afronden tot lage precisie van getallen Weglaten van sommige getallen verwijderen van visueel- irrelevante data omzetten naar vorm waarin redundantie gemakkelijker exploiteerbaar is enkel bij verlieshebbende compressie
Compressietechnieken voor beelden Principes van datacompressie
© W. Philips, Universiteit Gent, versie: 8/12/ b. 11 Variabele-woordlengte codering Principe: codeer veel voorkomende symbolen ( p i groot) met een korte bitstring ( l i klein) en (noodgedwongen) minder voorkomende symbolen met een lange string vaste lengte A000 B001 C010 D011 E100 F101 G110 H A D F D G D D D D C D E variabele lengte variabele lengte Men moet ervoor zorgen dat de code decodeerbaar blijft ieder codewoord moet uniek zijn men moet het einde van ieder codewoord éénduidig kunnen herkennen in de gecodeerde bitstroom bits/symbool: vaste lengte
© W. Philips, Universiteit Gent, versie: 8/12/ b. 12 Prefix-code Prefix code: geen enkel codewoord is het begin van een ander codewoord De decoder kan steeds het eind van een codewoord onderscheiden Zo een code kan men afbeelden op de bladeren van een decodeerboom output bits A11110 B1101 C101 D0 E100 F1100 G1110 H11111 D G A H F B E C ADF
© W. Philips, Universiteit Gent, versie: 8/12/ b. 13 Entropie H is de kleinst mogelijke gemiddelde woordlengte voor om het even welke techniek die symbool per symbool codeert Eerste-orde bronentropie:bits stationaire bron symbolen met mogelijke waarden i, i= 1 …N, en probabiliteit P ( i ) =p i opmerking: 0log 2 0=0 en zelfs voor om het even welke codeertechniek indien opeenvolgende symbolen statistisch onafhankelijk zijn (en dezelfde distributie hebben) H ligt tussen 0 bit en log 2 N bit, met N het aantal symbolen in het alfabet H log 2 M met M het aantal symbolen met p k 0: logisch: symbolen die nooit voorkomen ( p k = 0) kunnen uit het alfabet worden verwijderd H is maximaal als alle symbolen even waarschijnlijk zijn:
© W. Philips, Universiteit Gent, versie: 8/12/ b. 14 Entropie
© W. Philips, Universiteit Gent, versie: 8/12/ b. 15 Huffmancodes stationaire bron symbolen met mogelijke waarden i, i= 1 …N, en probabiliteit P ( i ) =p i De Huffmancode is een specifieke prefixcode de codewoordlengtes voldoen aan l k - log 2 p k benaderend optimaal onder de codes die ieder symbool apart coderen en ook benaderend optimaal onder alle codes als bron statistisch onafhankelijke symbolen genereert gemiddelde codewoordlengte ligt tussen H en H+1 verre van optimaal als H klein is (b.v. H 1), in het bijzonder niet geschikt voor binaire beelden
© W. Philips, Universiteit Gent, versie: 8/12/ b. 16 Huffmancode van teksten De Huffmancode exploiteert het feit dat sommige letters meer voorkomen dan andere (eerste-orde statistische redundantie) maar niet het feit dat sommige combinaties van letters meer voorkomen dan andere (tweede of hogere orde statistische redundantie) Voorbeeld: een Huffmancode voor de Engelse taal exploiteert dat de letter E meer voorkomt dan de letter Q maar niet dat de combinatie TH meer voorkomt dan HT Exploitatie van hogere-orde redundantie kan door groepen van twee of meer opeenvolgende letters als één metaletter te behandelen (blokcode) Voorbeeld: engelse teksten Huffmancode per letter 4.03 bit/letter Blok-Huffmancode per twee letters 3.32 bit/letter alle redundantie exploiteren bit/letter
© W. Philips, Universiteit Gent, versie: 8/12/ b. 17 Entropiecodering van de beeldpixels “Lenna”, entropie=7.2 bit/pixel“CT”, entropie=5.7 bit/pixel
© W. Philips, Universiteit Gent, versie: 8/12/ b. 18 Opmerkingen Huffmancodering is geen efficiënte techniek om beeldpixels te coderen omdat de eerste-orde entropie van de beeldpixels veel te groot is Codeboek moet ook door decoder gekend zijn vast codeboek, eens en voor altijd gekozen codeboek opslaan in gecomprimeerd bestand vertrekken met een standaard codeboek dat continu wordt aangepast op basis van de reeds gecodeerde data “adaptieve” werking is wel nuttig in combinatie met predictie en transformatiecodering Huffmancoder kan 1-bit symbolen (A=0, B=1) helemaal niet comprimeren De blok-Huffmancoder biedt hiervoor een oplossing (zie appendix) Een betere oplossing is de aritmetische coder: die codeert een willekeurig lange rij symbolen (meestal bits) als één enkel codewoord dat wordt berekend uit de ingangsrij
© W. Philips, Universiteit Gent, versie: 8/12/ b. 19 Aritmetische coders... Het codewoord voor x 1 … x n is de binaire vlottende-komma voorstelling van a ( x 1 … x n ), echter afgerond tot het minimaal aantal bits nodig om a ( x 1 … x n ) te kunnen onderscheiden van de andere ondergrenzen a ( x’ 1 … x’ n ) ??....01?? ? De aritmetische coder associeert aan elke mogelijke bitstring x 1 … x n een deelinterval [ a ( x 1 … x n ), b ( x 1 … x n )] van [0,1] met lengte P ( x 1 … x n ).0?? bits x1…xnx1…xn bepaal a(x 1 …x n ) a afronden tot minimale precisie codewoord 111 bin: .1 1 bit.5 ~P (0) ~P (1) a (111)= a (110)=0.4375
© W. Philips, Universiteit Gent, versie: 8/12/ b. 20 Oefening Bereken alle codewoorden voor ingangs-strings met lengte 3 als P (0)=0.25 x 1 x 2 x 3 a ( x 1 x 2 x 3 )codewoordlengte decimaal binair Wat is de gemiddelde codewoordlengte in dit geval? (3.1) Wat is de gemiddelde entropie in dit geval? (2.43) de aritmetische coder wordt pas efficiënt als de lengte n van de te coderen bitstroom groot wordt
© W. Philips, Universiteit Gent, versie: 8/12/ b Aritmetische coders De aritmetische coder is trager dan de Huffmancoder en gepatenteerd maar codeert efficiënter De aritmetische coder beschouwt een volledig bestand als één bitstring Men kan aantonen dat (voor voldoend grote ingangslengte n ) de codewoordlengtes voldoen aan l ( x 1,…,x n ) - log 2 ( P ( x 1 ) P ( x 2 ) …P ( x n )) met x k de waarde (0 of 1) van de k -de bit en P (0) en P (1) de kans dat een bit uit de string de waarde 0 of 1 aanneemt Een praktische aritmetische coder begint al codebits te produceren voor alle ingangsbits gekend zijn gebruikt geen vlottende-komma maar gehele berekeningen voor lange bitstrings de gemiddelde codewoordlengte nadert tot nH gemiddeld aantal codebits per ingangsbit: H kan gemakkelijker “adaptief” gemaakt worden kan gemakkelijk worden aangepast voor niet-binaire data, maar wordt wel meest gebruikt bij binaire data
© W. Philips, Universiteit Gent, versie: 8/12/ b. 22 Adaptieve aritmetische coders P ( x 1 = 0) = 0.25 P ( x 2 = 0) = 0.75 P ( x 3 = 0) = 0.5 Zonder bewijs: de aritmetische (de)coder blijft werken als de intervalverdeling van bit tot bit wordt aangepast “adaptieve” werking is mogelijk: als P ( x n = 0) verandert in functie van n (niet-stationaire bron) dan kan de coder zich hieraan “aanpassen” betere compressie aritm. coder bnbn schat P ( x n = 0) intervalverdeling b n-m …b n-1 met De decoder moet de gebruikte intervalverdeling zelf ook kunnen berekenen; dit kan als ze enkel afhangt van de “vorige” bits praktische methode:
© W. Philips, Universiteit Gent, versie: 8/12/ b. 23 al gecodeerd huidige pixel a bc x Binair beeld: alle beeldpixels nemen de waarde 0 of 1 aan Contextmodellering: voorbeeld binair beeld… Men codeert hier een binair beeld met een aritmetische coder De intervalverdeling van de aritmetische coder wordt nu echter afhankelijk gemaakt van de “context”, d.w.z. de waarden van de naburige pixels: men schat b.v. P ( x= 0 |a,b,c ) en baseert de intervalverdeling van de coder hierop i.p.v. op P ( x= 0) men kan spatiale correlatie uitbuiten 1 10 x a b cP(x= 0 |a,b,c) … In de praktijk schat men P ( x= 0 |a,b,c ) voor elke context adaptief aritm. coder intervalverdeling
© W. Philips, Universiteit Gent, versie: 8/12/ b. 24 al gecodeerd huidige pixel a bc x Contextmodellering: waar zit de winst? Typische beelden bestaan uit grote gebieden met gelijkaardige intensiteiten gescheiden door intensiteitsranden A. Als a=b=c= 1 is er veel kans dat x zich in een vlak “wit” gebied bevindt: P ( x= 1 |a= 1,b= 1,c= 1) is zeer hoog en P ( x= 0 |a= 1,b= 1,c= 1) is zeer laag B. In de omgeving van een beeldrand is b.v. a=c=1 en b=0; hier is het niet a priori duidelijk of x aan witte of de zwarte kant van de rand ligt P ( x= 1 |a= 1,b= 0,c= 1) en P ( x= 0 |a= 1,b= 0,c= 1) zullen hier dichter bij 0.5 liggen: b.v. P ( x= 1 |a= 1,b= 0,c= 1) = 0. 3 en P ( x= 0 |a= 1,b= 0,c= 1) = 0. 7 Het is duidelijk dat de optimale intervalverdeling voor geval A. en geval B. niet dezelfde zal zijn men verandert de intervalverdeling naargelang de context zodat voor elke pixel de optimale verdeling wordt gekozen
© W. Philips, Universiteit Gent, versie: 8/12/ b. 25 Contextmodellering: voorbeeld Zonder contextmodellering is in dit voorbeeld geen compressie mogelijk (tenzij misschien met adaptieve werking); met contextmodellering wel gemiddelde codewoordlengte als intervalverdeling is aangepast aan context 011 gemiddelde van de gemiddelde lengtes, rekening houdend met hoe dikwijls elke context optreedt gemiddelde codewoordlengte indien geen contextmodellering wordt gebruikt