Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Bayer Patterns u Digicam CCDs



Nedavno je bilo nekih diskusija o kolor tehnologiji CCD (charge-coupled device) senzora koji se koriste u većini digitalnih fotoaparata. Posebno je pitanje istinske rezolucije CCD u odnosu na rezoluciju nastale slike. Da bismo razumeli zašto su ovi podaci različiti, trebalo bi da znate nešto o tome kako CCD u kameri radi.

CCD je mreža svetlo-osetljivih ćelija koje predstavljaju piksele, 1600 x 1200 njih u kamerama od 2.1M piksela koje su trenutno u modi. Svaka ćelija je oko 5 kvadratnih mikrona. Obično mislimo na piksel kao predstavljanje bilo koje od mogućih boja na slici. Na primer, kad god prikazujete sliku na Windows TrueColor ekranu, imate 24 bita informacije vezane za boju po pikselu (osam za svaku crvenu, zelenu i plavu komponentu), dajući vam 16M (gde je M 1024 x 1024) boja. Međutim, to nije način na koji radi CCD. Piksel senzor u CCD-u je u osnovi monohromatski. To znači da primarno reaguju na intenzitet svetlosti koja pada na njih, bez obzira na frekvenciju (boju) svetlosti. Da bi ih učinili osetljivim na različite boje, filter se stavlja preko svakog piksela u toku proizvodnje. Senzor je jedan od primarnih boja: crvene, zelene ili plave1. Od date lokacije piksel može imati samo jedan filter, možete videti da u datom CCD-u, otprilike trećina piksela se koristi za svaku boju. Govoreći na drugi način jeste da je puna boja rezolucije uređaja oko trećine od broja piksela navedenog u specifikacijama.

Dakle, kako su ovi filteri postavljeni? Prva stvar koju treba znati jeste da je ljudsko oko osetljivije na zeleno svetlo nego na crveno ili plavo. Zato ima smisla da se više piksela posveti na zelenu boju nego na druge dve boje. Budući da su pikseli diskretni elementi, moramo da mislimo u smislu celobrojnih umnožaka a najprikladniji odnos je da postoje dva puta više zelenih piksela od crvenih ili plavih (ili, drugim rečima, ukupan broj zelenih je isto toliko koliko crvenih i plavih zajedno). Sada treba samo napraviti lepu geometrijsku šaru da na odgovarajući način distribuiramo filtrirane piksele. Izabrani šablon je tzv. Bayer šablon, a izgleda ovako:


Svaki drugi piksel je zeleni. Na jednakim numerisanim redovima i kolonama (brojanje od nule), alternativni pikseli su crvene boje, a na neparnim brojevima redova i kolona, alternativni pikseli su plavi.

Kada slikate sa aparatom koji koristi CCD konfiguraciju kao što je prikazano gore, skup vrednosti intenziteta se čita iz uređaja. Prva vrednost, koja odgovara gornjem levom pikselu na slici, jeste crven intenzitet tog piksela. Sledeća vrednost je zeleni intenzitet za piksel desno od njega, i tako dalje dok sve vrednosti budu pročitane. Obično se vrednosti čitaju kao 8-bitni ili 10-bitni brojevi, tako da imamo niz od 0 (bez svetlosti) do 255 ili 1023 (maksimalna osvetljenost).

Jedini problem je što imamo samo trećinu potrebne informacije da prikažemo smisao slike. Na primer, u gornjem levom pikselu imamo crvenu, ali ne zelenu ili plavu. Za sledeći piksel imamo zelenu, ali ne crvenu ili plavu. Ove 'nedostajuće' vrednosti su obnovljene tehnikom koja se zove interpolacija, što je fensi izraz za "pogađanje". Recimo da želimo da pronađemo zelenu vrednost za crveni piksel u sredini kvadrata iznad (onaj sa belim okvirom). Možemo videti da je okružen gore, dole, levo i desno zelenim pikselima, tako da uzmimo prosek od ta četiri zelena i dodeljujemo to zelenom nivou našeg crvenog piksela. Naravno, to nije nužno ispravna vrednost, jer nemamo načina da saznamo šta je zeleni nivo zaista bio u tom trenutku. Kao što ćemo videti, to može dovesti do problema u oblasti oštre promene boje.

Možete koristiti sličnu tehniku aproksimacije da dobijete nedostajuće crvene i plave boje takođe. Što se tiče C-like programskog jezika, algoritam za piksel (x, y) je:
switch (x % 2 + (y % 2)*2)  {
    case 0: //red
        red = red[x][y];
        green = (green[x][y-1] + green[x-1][y] + green[x+1][y] + green[x][y+1]) / 4;
        blue = (blue[x-1][y-1] + blue[x+1][y-1] + blue[x-1][y+1] + blue[x+1][y+1]) / 4;
    break;
    case 1: //green on RG row
        red = (red[x-1][y] + red[x+1][y])  / 2;
        green = green[x][y];
        blue = (blue[x][y-1] + blue[x][y+1]) / 2;
    break;
    case 2: // green on GB row
        red = (red[x][y-1] + red[x][y+1]) / 2;
        green = geen[x][y];
        blue = (blue[x-1][y] + blue[x+1][y]) / 2;
    case 3: //blue
        red = (red[x-1][y-1] + red[x+1][y-1] + red[x-1][y+1] + red[x+1][y+1]) / 4;
        green = (green[x][y-1] + green[x-1][y] + green[x+1][y] + green[x][y+1]) / 4;
        blue = blue[x][y];
    break;
}

Nažalost, nema mnogo digitalnih kamera koje vam omogućavaju da vidite sirov izlaz iz CCD. Većina njih ga obradi u RGB formatu (obično TIFF ili JPEG) pre nego što se uskladišti u fleš memoriju fotoaparata. U cilju eksperimenta sa Bayer obrascima, napisao sam nekoliko filtera za Photoshop. Ovo radite sa bilo kakvom RGB slikom. Prvi filter Bayerize, konvertuje sliku na onu koja koristi Bayer šablon. To radi vrlo jednostavno podešavanjem kolor komponenti na nulu u pikselima gde ih Bayer obrazac ne koristi. Drugi filter Debayerize 1, uzima sliku u Bayer formatu i interpolira boje koje nedostaju kao što je gore opisano. Ovo vam dosta objašnjava kako jednostavan kolor oporavak algoritam radi.

Filtere možete preuzeti ovde. Raspakujte fajlove u vašem Photoshop \ Plug-Ins \ Filters direktorijum i ponovo pokrenite Photoshop. Oni će se pojaviti u Filter | Bayer Pattern.meniju.

Filteri u akciji


Ispod sam dao neke primere onoga što možete videti koristeći filtere. To treba da bude interesantno onima koji nemaju Photoshop, a takođe ilustruje upravo ono što se dešava tokom procesa de-Bayerizing.

Prvi primer je slika skenirana iz fotoaparata moje divne supruge Xiaoli (izgovara se “Jennifer”) Zapravo je skenirana iz negativa korišćenjem HP Photosmart skenera (originalni model). Deo fotografije koji sam izabrao ima dosta detalja, a samim tim i neka brza kolor pretapanja. Evo originala, zajedno sa uvećanim detaljima:


Dalje vidimo šta se dešava kada se primenjuje Bayerizer-ov filter :


Bayer-ov obrazac je veoma jasan u detaljima slike, i slika normalne veličine pokazuje jasnu zelenu ekipu, zbog relativno velikog broja zelenih piksela. Konačno, evo je de-Bayerized verzija:


Ukupna slika ne izgleda loše, i pored postojanja primetnog gubitka rezolucije (nije iznenađujuće s obzirom da smo bacili 66% informacija!), ali proširenje pokazuje različite boje artefakta u poređenju sa originalom.



Published (Last edited): 13-08-2012 , source: http://www.peter-cockerell.net/Bayer/bayer.html