Udskriv

8 eller 16 bit?

Skal et billede have en farvedybde på 8 eller 16 bit?

 

For at kunne tage stilling, er det nødvendigt at vide, hvad en bit er, og hvilken betydning det har for billedkvaliteten!

 

Bit kommer af det engelske udtryk binary unit eller binary digit. Vi skal forestille os en enhed (et kredsløb) som kan udføre en enkelt funktion. Enten løber der en strøm eller også er strømmen afbrudt. Når strømmen flyder siger vi at den repræsenterer et 1 tal. Når der er afbrudt for strømmen svarer det til et 0.

 

Her er nogle eksempler på enheder, som kan skifte tilstandsform. I tidernes morgen da de første computere blev skabt benyttede man en jernkerne som enten var magnetisk eller ikke magnetisk. I de berømte hulkort var et hul lig med 1 og hvis der ikke var et hul så var det lig med 0. Radiorør har også været anvendt til formålet. Effektforbruget og størrelsen på de nødvendige kredsløb havde sin begrænsende indflydelse på kapaciteten og udviklingen. 

 

Først med fremkomsten af halvledermateriale blev det muligt at skabe  kredsløb i en fornuftig størrelse og med et lavt effektforbrug. En såkaldt flip- flop konstruktion bestående af nogle få transistorer og nogle diskrete komponenter er et eksempel på en konstruktion, som fortsat finder anvendelse. Udviklingen på området er enorm. For 25- 30 år siden fyldte en integreret kreds med nogle få flip-flop det samme som en lille flødekaramel. I dag kan man på ingen plads anbringe tusindvis af små transistorer og dioder.   

 

En flip-flop kan antage og fastholdes i en stabil tilstand svarende til enten 0 eller 1. Så længe der er strøm på systemet “husker” flip-floppen, hvilken tilstand den har antaget. Alt efter tilstand repræsenterer en enkelt flip-flop med andre ord et 0 eller et 1 tal.

 

Så længe vi ikke slukker for strømmen udgør en flip-flop en enkelt hukommelsekreds, som kan gemme på en binær information. Når vi har udbygget systemet til at bestå af flere flip-flopper har vi et hukommelseskredsløb (Ram). I dag har vi mange forskellige former for hukommelseskredsløb, hvor f. eks. flashhukommelsen er meget anvendt inden for foto. En flashhukommelse kræver nemlig ikke permanent spændingsforsyning for at bevare hukommelsen.  

 

1 bit kan vise 0 eller 1, men for vise tallet 2 eller tallet 3 skal vi bruge 2 bit ( 2 stk flip-flop). 

 

Når vi arbejder med et 8 bit JPEG billede har vi brug for at kunne behandle tallene fra 0 - 255, Vi skal derfor bruge 8 flip-flopper for at kunne registrere op til 256 tal værdier eller tilstandsformer. I et billede er det lysets værdier der gemmes.  I en skrivemaskine repræsenterer hver talværdi et tegn, et bogstav eller et  tal. 

 

En elektrisk skrivemaskine kræver 7 bit for at kunne vise alle bogstaver og tegn. 7 bit giver 128 tegn eller fra 0 - 127. En bit ekstra betyder en fordobling af talværdierne. Det er vigtigt at huske, at det er tallet 2 vi ganger op med, hver gang vi øger med 1 bit

 

I et JPG billede kan hver pixel antage en værdi mellem 0 - 255 i hver af de 3 farvekanaler. Det giver næsten 17 millioner farvekombinationer. Det er perfekt til print og skærm, men 8 bit er ikke tilstrækkelig, hvis billedet skal redigeres uden tab af kvalitet.

 

I et kamera behandles  billedsignalet derfor altid i enten 12 eller 14 bit. De 2 bit ekstra i sidst nævnte tilfælde, betyder til orientering, at der er fire gange så mange talværdier til rådighed. Farvedybden øges nemlig fra 4096 til 16384. 16 bit kan arbejde med 65536 talværdier i hver af de 3 farvekanaler. 

 

Det hører med til historien, at jo højere opløsning der ønskes, jo mere datakraft kræver det. De fleste redigeringsprogrammer er låst til 8 bit (ligesom Windows) af den simple grund at 16 bit kræver rigtig meget af programmørerne. Et er nemlig, hvad man ser på skærmen ( det er altid et 8 bit billede), noget andet er, hvad der sker i baggrunden, hvor den egentlige signalbehandling foregår.  Det er ikke tilfældig at gratis programmer altid er 8 bit. Gratisprogrammet Gimp har annonceret, at de snart kommer med 16 bit billedbehandling, men det har så også taget mange år. Hvis man har programmeret lidt, ved man med garanti, hvor meget det sløver programafviklingen, hvis man går fra små heltal (integer) til større decimaltal. Det er et af hovedproblemerne for gratisprogrammerne. De mangler altid lige det sidste.

 

En processor (CPU) kan ikke direkte arbejde med 10 talssystemet. I princippet arbejder den sekventielt med 1 bit ad gangen. Lad os se hvordan 4 bit i det binære talsystem ( som computeren forstår) kan arbejde med almindelige tal. 

 

Hver bit kan vi i det her eksempel sige repræsenterer en flip-flop.  De 4 bit har vi til venstre for lighedstegnet i eksemplerne længere nede. Til højre for lighedstegnet er de 4 bit oversat til en ganske normal talværdi.

 

Den første bit til venstre for lighedstegnet er enere. Den næste i rækken toere. 3 position firere og den fjerde position ottere. Hver gang vi går et trin mod venstre har vi en fordobling i værdi. I modsætning til 10 tal systemet, hvor vi øger med en faktor 10. 

 

Kig på nedenstående eksempler. Hvis en bit er 0 så skal den ikke tælles med. Hvis det er et 1 tal, så skal den værdi ettallet repræsenterer, i henhold til sin placering, tælles med. Se på neden stående eksempler og kontroller selv om facit stemmer.

 

0 0 0 0  =  0

0 0 0 1  =  1

0 0 1 0  =  2

0 0 1 1  =  3

0 1 0 0  =  4

0 1 0 1  =  5 

0 1 1 0  =  6

0 1 1 1  =  7

1 0 0 0  =  8

1 0 0 1  =  9

1 0 1 0  =  10

1 0 1 1  =  11

1 1 0 0  =  12

1 1 0 1  =  13

1 1 1 0  =  14

1 1 1 1  =  15

 

Det her skal ikke være en artikel om det binære talsystem, men det er da fantastisk, at der findes regneregler for det binære talsystem, som gør det muligt at udføre matematiske beregninger i en computer udelukkende ved hjælp af 1 og 0 ( også benævnt high og low). Simple beregninger som addition og subtraktion af binære tal kan sagtens udføres ved hjælp af papir og blyant. Der er naturligvis grænser for hvor mange bit et menneske kan overskue og bearbejde med papir og blyant. 

 

Vi kan også beregne hvor meget et vis antal bit svarer til ved hjælp af potensregning, hvor 2 er grundtallet og antal bit eksponenten. 2^8 er det samme som 2 multipliceret med sig selv 8 gange. Der er lige præcis 256! Hver gang vi øger med en bit dobler vi op. 2 bit skrives 2^2 og er lig med 2 x 2 = 4 o.s.v.

 

En computer kan kun arbejde med binære tal eller rettere maskinkode. Om et binært mønster repræsenterer det ene eller andet er et spørgsmål om programmering. Tingene defineres i et højniveau sprog, som er mere forståelig for den menneskelige hjerne, men programmeringssproget skal, for at en CPU kan arbejde med det, oversættes ( kompileres) til maskinkode. 

 

Det resultat som kommer ud af en CPU skal omvendt oversættes til et sprog, som vi kan forstå og få vist på en skærm eller på print. Der er brug for en slags interpretor ( betyder tolk eller fortolker ) til det formål. Det lyder enkelt men er en kompliceret proces. 

 

Når vi arbejder med billeder har antallet af lys værdier i de 3 farvekanaler interesse, for det fortæller, hvilken farveopløsning (farvedybde) billedet har. 8 bit pr. kanal er tilstrækkelig til  de fleste formål og når man har færdig redigeret et billede, kan man roligt gemme resultatet som JPG, men i forbindelse med billedredigering er 16 bit pr. kanal at foretrække, fordi visse billedjusteringer reducerer den reelle farvedybde temmelig meget. 

 

Lightroom og Camera Raw arbejder altid i 16 bit (48 bit når vi lægger de 3 farvekanaler sammen) og lineært. Kameraets sensor arbejder i øvrigt altid lineært, men det gør det menneskelige øje derimod ikke. Derfor får billedet tilført en gamma kurve til sidst for at korrigere for den nævnte forskel.

 

Hvis vi forestiller os,  at kameraets sensor kun var i stand til til at arbejde i 8 bit, og der ved fuld blændeåbning maks var 256 niveauer til rådighed. Så sker der følgende, hver gang vi blænder 1 trin ned: Vi halverer antallet af niveauer der er til rådighed.  5 blændetrin nede har vi kun 8 lysniveauer til rådighed. I den mørkeste del af billedet har vi med andre ord kun 8 lysniveauer. I mellemtone området har vi kun 32 lysniveauer til rådighed. 

 

Der skal ikke justeres ret meget på billedet før antallet af niveauer bliver reduceret til måske det halve. Farverne “klumper” populært sagt i visse områder af billedet, og skiftet mellem farveovergangene bliver mere markant. Det kan ses på et stort print og det dur simpelthen ikke. Det forklarer vel egentlig også, hvorfor et JPG billede kun tåler at blive redigeret meget lidt, hvis vi skal undgå posterization og en tydelig forringelse i farveopløsning. 

 

Derfor arbejder en sensor selv i et kompakt kamera i 12 bit mode. Udgangspunktet er dermed 4096 niveauer i stedet for 256. Det betyder at vi i stedet for 8 niveauer i det mørkeste område nu har 128. I mellemtone området er der 512 niveauer til rådighed i stedet for de 32. Der er lidt forenklet sagt mere at tabe af. 

 

Der er en anden vigtig ting i den har forbindelse. Hvis vi underbelyser et billede, så flytter vi billedet ned i det mørke område og reducerer dermed det samlede antal lys niveauer, der er til rådighed. Det forringer justeringsmulighederne. Underbelyste billeder indeholder derfor mere støj, fordi eksponeringen nødvendigvis skal ændres i opadgående retning for at opnå et normalt belyst billede.

 

Det vi kan lære af det her er at eksponere billedet, så vi lige akkurat undgår overbelysning. Så får vi maksimal dynamik i billedet og mange lys niveauer til rådighed og dermed meget mindre støj i det endelige billede. Det er også det optimale, hvis billedet skal efterjusteres.

 

En vigtig lære kan drages af det her. Rediger altid med størst mulig farvedybde og underbelys ikke dine billeder. Vi har også lært at bare 1 bit ekstra giver dobbelt så mange niveauer at arbejde med. Konklusionen må være at 16 bit som regel er bedre end 8 bit!

 

 

 

16 bit billede. Ingen justeringer foretaget! Bemærk at de 2 histogrammer henholdsvis viser luminansværdierne før justering og color fordelingen efter evt. justering.

 

 

16 bit billede. Color histogrammet efter justering af gamma ( fra 1 til 1,20) ser stadigvæk fin ud!

 
 

Samme justering som ovenfor, men nu foretaget  i 8 bit mode. Det er tydeligt at color histogrammet efter justering ikke længere er så jævn og pæn. Der er kommet "huller" i rækken i den mørke del af billedet og i den modsatte ende "klumper " det tilsvarende sammen. Den reelle farvedybde er blever dårligere ved denne her justering.

 

Hvis man i 8 bit justerer kontrast og lys, så får man også et histogram som ser lidt hullet ud. 

16 bit farvedybde i hver kanal giver alt andet lige et bedre resultat.