4.11. Debayering¶
Den råa Bayer-bildrutan bär bara en färgkanal per pixel. Att omvandla den till en vanlig trekanalig RGB-bild innebär att de två saknade kanalerna fylls i för varje pixel genom interpolation från närliggande pixlar med rätt färg. Den interpolationen är debayering (även kallad demosaicing). En handfull algoritmfamiljer dominerar.
4.11.1. Superpixel¶
Det billigaste tillvägagångssättet kollapsar varje 2x2-Bayer-bricka – en röd cell, en blå cell och två gröna celler – till en enda utdatapixel:
den röda kanalen är den röda cellens värde;
den blå kanalen är den blå cellens värde;
den gröna kanalen är medelvärdet av de två gröna cellerna.
Varje 2x2-indatabricka blir en utdatapixel, så den färdiga bilden är halva bredden och halva höjden av sensorn, med en fjärdedel av antalet pixlar. Superpixel är snabb och fri från interpolationsartefakter, men kostnaden i upplösning gör den till en sista utväg – den används sällan.
4.11.2. Bilinjär¶
Bilinjär interpolation tar medelvärdet av de närmaste pixlarna med rätt färg i stället för att kopiera eller sammanfatta. Det exakta medelvärdet beror på vilken färg centrumpixeln registrerar, eftersom de fyra fallen fördelar de saknade kanalerna olika runt 3x3-grannskapet.
Grön pixel i en rödgrön rad. Det saknade röda värdet tar medelvärdet av de två röda grannarna till vänster och höger; det saknade blåa tar medelvärdet av de två blåa grannarna ovanför och nedanför.
Det saknade röda kommer från de horisontella röda grannarna; det saknade blåa från de vertikala blåa grannarna.¶
Grön pixel i en grönblå rad. Samma form med rött och blått ombytta. Det saknade röda värdet tar medelvärdet av de två röda grannarna ovanför och nedanför; det saknade blåa tar medelvärdet av de två blåa grannarna till vänster och höger.
Det saknade röda kommer från de vertikala röda grannarna; det saknade blåa från de horisontella blåa grannarna.¶
Röd pixel. Det saknade gröna värdet tar medelvärdet av de fyra kardinala gröna grannarna (ovanför, nedanför, vänster, höger). Det saknade blåa tar medelvärdet av de fyra diagonala blåa grannarna.
Det saknade gröna kommer från de fyra kardinala gröna grannarna; det saknade blåa från de fyra diagonala blåa grannarna.¶
Blå pixel. Spegelbild av det röda fallet. Det saknade gröna tar medelvärdet av de fyra kardinala gröna grannarna, och det saknade röda tar medelvärdet av de fyra diagonala röda grannarna.
Det saknade gröna kommer från de fyra kardinala gröna grannarna; det saknade röda från de fyra diagonala röda grannarna.¶
Bilinjär behåller sensorns fulla upplösning och är tillräckligt mjuk för de flesta användningar, men den visar fortfarande artefakter vid kanter. En skarp övergång mellan två färger korsar pixelrutnätet i en viss orientering, och medelvärdesbildning tvärs över kanten mjukar upp den något. Där färg- och luminanskanterna inte ligger exakt i linje uppträder svaga färgade fransar i utdata.
4.11.3. Bortom bilinjär¶
En rad bättre debayer-algoritmer finns. Vissa använder större grannskap än bilinjärs lilla kors av grannar med samma färg och viktar samplingarna med mer noggrant valda koefficienter; andra detekterar riktningen på lokala kanter och förskjuter interpolationen längs den riktningen så att en kant som löper tvärs över pixelrutnätet förblir skarp i stället för att mjukas upp. Bägge tillvägagångssätten minskar de färgfransar och den kantuppmjukning som bilinjär lämnar efter sig, till priset av mer aritmetik per pixel och mer kisel (eller mer beräkning på MCU-sidan).
Den debayer-kvalitet som finns tillgänglig på en viss OpenMV Cam är plattformsspecifik – den beror på vad sensorn och MCU:n på den kameran erbjuder.
4.11.4. Var debayering körs¶
Image signal processor (ISP) – antingen på själva sensorchippet eller på MCU-sidan – debayerar i de flesta fall varje bildruta innan den lämnar bildbehandlingskedjan. Användarkoden tar emot en färdig trekanalig RGB-bild utan att någonsin röra den råa mosaiken.
ISP:n kan också instrueras att skicka den råa Bayer-bildrutan vidare oförändrad. Rå Bayer tar mindre minne än den debayerade bilden – en byte per pixel i stället för tre – vilket gör den användbar när bildlagring är flaskhalsen, vid infångning för offline-bearbetning, eller när projektet vill tillämpa en egen debayer-algoritm i mjukvara.