Jeg lavede et lille diagram som jeg håber viser hvordan
en forkert rækkefølge af trin i billed behandlings
processen vil give uønskede eller i hvert fald anderledes
resultater end den mest optimale metode.
http://www.kobotica.com/misc/fotoprocess2/fotosteps2.gif
http://www.kobotica.com/misc/fotoprocess2/fotosteps2.pdf
(Vælg en fil - PDF'en kan udskrives or er kun 28k.)
Diagrammet viser 3 forskellige måder at behandle et billede
på, hvor målet er at ændre tone og formindske billedet.
Diskussionen gik på, om det gav nogen forskel at gøre
det ene før det andet, eller ej, og der ret bred enighed
om at det er bedst at ændre på tone før man formindsker
billedet. Så gik spørgsmålet på om 'hvorfor'. Og her
er så min bedste forklaring.
De 3 viste metoder benytter samme datasæt, men kommer
til forskellige resultater. Datasættet er vist foroven,
2 rækker med hver 12 kolonner af pixels. De viste værdier
har decimaler, i et forsøg på at illustrere hvordan
16-bit data forholder sig i nøjagtighed til 8-bit data.
Målet er at resize, downsample billedet til 25%, en
halvering på begge akser - altså 2x2 pixels bliver til
én, og de 12x2 pixels bliver til 6x1. Det er en lille
nok sample til at vi kan diskutere princippet uden at
vade rundt i mere data end vi har brug for. Og vi
regner også kun på én farvekanal, hvor disse beregninger
ved farvebilleder ville blive udført på hvér kanal.
1.
Den først viste metode er desværre ofte brugt, men
jeg mener ikke at den er hensigtsmæssig. Vi starter
med et 12x2 pixel 8-bit datasæt, og resizer med det
samme til 6x1 pixels 8-bit.
Værdierne er 0, 1, 1, 2, 2, 3, og det er disse tal
som udgør det formindskede billede. Billed tone
processen udføres dernæst, som i dette eksempel ganger
værdien med 5/3, men kunne have været en gamma eller
kontrast funktion, etc. De nye tal rundes til nærmeste
8-bit værdi, og resultatet bliver:
0,2,2,3,3,5 ... bemærk at værdierne 1 og 4 ikke kan
eksistere på grund af den måde processen beregnes på.
Der er altså opstået grove trin i toneskalaen, og
det formindskede datasæt er kun en grov tilnærmelse
af værdierne fra det oprindelige billede.
2.
Den anden metode bør foretrækkes så vidt muligt.
Her begynder vi med samme værdier som i foregående
eksempel, men istedet for med det samme at reducere
billedet, beregner vi billed tone processes for hver
enkel pixel i fuld opløsning. De nye afrundede værdier
bliver så resizet i grupper af 2x2 pixels hvor det
afrundede gennemsnit for hver gruppe udgør de nye pixels,
og det er så det færdige resultat. Her bliver tallene så:
1,2,2,3,4,5 .. det er en meget jævn kurve, absolut brugbar
i praktisk øjemed. Der er en udmærket formindsket
repræsentation af det originale datasæt.
3.
Den tredje viste metode gør brug af Photoshop's 16-bit
mode, som gør det muligt at anvende skæve værdier for
hver farvekanal, som jeg har prøvet at vise med
decimaler. Istedet for som i 8-bit mode at have signalstyrker
mellem nul og 1 repræsenteret som hele tal fra 0 til 255 (2^8-1)
divideret med 255, kan vi nu bruge tal fra 0 til 65535 (2^16-1)
divideret med 65535, for mange flere værdier. Imellem hver af de
normale 256 niveauer kan vi i 16-bit mode finde yderligere 255
forskellige mellemniveauer. Photoshop kan således behandle
13(100/255) / 255 istedet for 13 eller 14, hvis det skæve tal bedre
repræsenterer billedkildens signalstyrke.
Mange nye scannere kan sende 12-bit eller 16-bit farvekanaler til
photoshop, og i fremtiden vil digital kameraer sikkert også kunne
levere tilsvarende data. For alle praktiske formål kan vi bare
tænke på de ekstra bits som et par ekstra decimaler efter værdierne.
Husk dog på at 16-bit mode billeder bruger dobbelt så meget
hukommelse som 8-bit billeder. I photoshop vil et 16-bit farvebillede
således bruge 6 hele bytes per pixel. Dvs. et 1024x768 billede fylder
hele 4.5 megabytes. Normalt bruger jeg derfor kun 16-bit mode
i fra indscannings tidspun