Bestilt dithering - Ordered dithering
Bestilt dithering er et billede dithering algoritme. Det bruges almindeligvis til at vise et kontinuerligt billede på et display med mindre farvedybde . For eksempel bruger Microsoft Windows det i 16-farve grafiktilstande. Algoritmen er kendetegnet ved mærkbare crosshatch -mønstre i resultatet.
Tærskelkort
Algoritmen reducerer antallet af farver ved at anvende et tærskelkort M til de viste pixels, hvilket får nogle pixels til at ændre farve, afhængigt af afstanden mellem den originale farve og de tilgængelige farveposter i den reducerede palet.
Tærskelkort findes i forskellige størrelser, hvilket typisk er en effekt på to:
|
Kortet kan drejes eller spejles uden at påvirke algoritmens effektivitet. Dette tærskelkort (for sider med længde som effekt på to ) er også kendt som en indeksmatrix eller Bayer -matrix .
Vilkårlige størrelsestærskelkort kan udformes med en enkel regel: Fyld først hver plads med et successive heltal. Omarranger dem derefter, så den gennemsnitlige afstand mellem to på hinanden følgende tal på kortet er så stor som muligt, hvilket sikrer, at bordet "vikler" rundt i kanterne. For tærskelkort, hvis dimensioner er en effekt på to, kan kortet genereres rekursivt via:
Det rekursive udtryk kan beregnes eksplicit ved hjælp af kun bitrekning:
M(i, j) = bit_reverse(bit_interleave(bitwise_xor(i, j), i)) / n ^ 2
Forudberegnede tærskelkort
I stedet for at lagre tærskelkortet som en matrix med × heltal fra 0 til , afhængigt af den nøjagtige hardware, der bruges til at udføre dithering, kan det være fordelagtigt at forudberegne tærsklerne for kortet til et flydende punktformat, snarere end det traditionelle heltalmatrixformat vist ovenfor.
Til dette kan følgende formel bruges:
Mpre(i,j) = (Mint(i,j)+1) / n^2
Dette genererer en standard tærskelmatrix.
til 2 × 2 kortet:
|
dette opretter det forudberegnede kort:
|
Derudover kan normalisering af værdierne til gennemsnitsværdi af deres sum til 0 (som udført i dithering-algoritmen vist nedenfor) også foretages under forbehandling ved at trække 1 ⁄ 2 fra hver værdi:
Mpre(i,j) = (Mint(i,j)+1) / n^2 - 0.5
oprettelse af det forudberegnede kort:
|
Algoritme
Den ordnede dithering -algoritme gengiver billedet normalt, men for hver pixel udligner det sin farveværdi med en tilsvarende værdi fra tærskelkortet i henhold til dets placering, hvilket får pixelens værdi til at blive kvantiseret til en anden farve, hvis den overskrider tærsklen.
For de fleste dithering formål, er det tilstrækkeligt at blot tilføje tærskelværdien til hver pixel (uden at udføre normalisering ved at trække 1 / 2 ), eller ækvivalent, til at sammenligne pixel værdi til tærsklen: hvis værdien af lysstyrken for en pixel er mindre end tallet i den tilsvarende celle i matrixen, tegne den pixel sort, ellers plotte den hvid. Denne mangel på normalisering øger billedets gennemsnitlige lysstyrke en smule, og får næsten hvide pixels til ikke at dithere. Dette er ikke et problem, når du bruger en gråtonepalet (eller en palet, hvor de relative farveafstande er (næsten) konstante), og det er ofte endda ønsket, da det menneskelige øje opfatter forskelle i mørkere farver mere præcist end lysere, dog , det giver forkerte resultater, især når du bruger en lille eller vilkårlig palet, så korrekt normalisering bør foretrækkes.
Med andre ord udfører algoritmen følgende transformation på hver farve c i hver pixel:
Fordi algoritmen fungerer på enkelte pixels og ikke har betingede udsagn, er den meget hurtig og velegnet til real-time transformationer. Fordi placeringen af dithering-mønstrene altid forbliver den samme i forhold til displayrammen, er den mindre tilbøjelig til at rystes end fejlspredningsmetoder, hvilket gør den velegnet til animationer. Fordi mønstrene er mere gentagne end fejlspredningsmetoden, komprimeres et billede med ordnet dithering bedre. Ordnet dithering er mere velegnet til line-art grafik, da det vil resultere i rettere linjer og færre anomalier.
De værdier, der læses fra tærskelkortet, skal helst skaleres i samme område som den minimale forskel mellem forskellige farver i målpaletten. Tilsvarende skal størrelsen på det valgte kort være lig med eller større end forholdet mellem kildefarver og målfarver. For eksempel, når man kvantificerer et 24 bpp billede til 15 bpp (256 farver pr. Kanal til 32 farver pr. Kanal), ville det mindste kort, man ville vælge, være 4 × 2 i forholdet 8 (256: 32). Dette gør det muligt at udtrykke hver distinkt tone i input med forskellige dithering -mønstre.
En variabel palet: mønster dithering
Non-Bayer nærmer sig
Ovenstående tærskelværdi -matrixmetode beskriver Bayer -familien af ordnede dithering -algoritmer. En række andre algoritmer kendes også; de involverer generelt ændringer i tærskelmatricen, svarende til "støj" i generelle beskrivelser af dithering.
Halvtone
Halvtone dithering udfører en form for clustered dithering, hvilket skaber et look, der ligner halvtonemønstre , ved hjælp af en specielt udformet matrix.
Ugyldig og klynge
Ugyldigheds- og klynge-algoritmen bruger en på forhånd genereret blå støj som matrix for dithering-processen. Den blå støjmatrix bevarer Bayers gode højfrekvensindhold, men med en mere ensartet dækning af alle involverede frekvenser viser en meget lavere mængde mønster.
Metoden "hulrum og klynge" får sit navn fra matrixgenereringsproceduren, hvor et sort billede med tilfældigt initialiserede hvide pixels er gaussisk-sløret for at finde de lyseste og mørkeste dele, der svarer til hulrum og klynger. Efter at et par swaps har fordelt de lyse og mørke dele jævnt, er pixelerne nummereret efter betydning. Det tager betydelige beregningsressourcer at generere den blå støjmatrix: på en moderne computer kræver en 64 × 64 matrix et par sekunder ved hjælp af den originale algoritme.
Referencer
- ^ Bayer, Bryce (11. -13. Juni 1973). "En optimal metode til gengivelse i to niveauer af billeder med kontinuerlig tone" (PDF) . IEEE International Conference on Communications . 1 : 11–15. Arkiveret fra originalen (PDF) den 2013-05-12 . Hentet 2012-07-19 .
- ^ Joel Yliluoma. " Vilkårlig-palet positionel dithering algoritme "
- ^ Ulichney, Robert A (1993). "Metoden tomrum og klynge til generering af dither-array" (PDF) . Hentet 2014-02-11 .
- ^ Wronski, Bart (31. oktober 2016). "Dithering del tre - virkelige 2D -kvantisering dithering" .
- ^ Peters, Christoph. "Gratis blå støj teksturer" . momentsingraphics.de .
- Ordered Dithering (grafikprojekt, Visgraf lab, Brasilien)
- Dithering -algoritmer (Lee Daniel Crocker, Paul Boulay og Mike Morra)
Yderligere læsning
- Ancin, Hakan; Bhattacharjya, Anoop K .; Shu, Joseph S. (2. januar 1998). "Forbedring af tomrum og klynge for bedre ensartet halvtone". Photonics West '98 elektronisk billeddannelse : 321–329. CiteSeerX 10.1.1.40.5331 . doi : 10.1117/12.298295 .
eksterne links
- Matlab implementering af forskellige dithering metoder
- anim8gdx , Java -implementering af forskellige (for det meste bestilte) dithering -metoder