4.11. Debayering¶
Сирий кадр Баєра містить лише один колірний канал на піксель. Перетворення його на звичайне тришканальне RGB-зображення означає заповнення двох відсутніх каналів у кожному пікселі шляхом інтерполяції з сусідніх пікселів відповідного кольору. Ця інтерполяція називається debayering (також демозаїкою). Домінують декілька алгоритмічних родин.
4.11.1. Супер-піксель¶
Найдешевший підхід згортає кожен тайл 2x2 Баєра – одну червону клітинку, одну синю клітинку та дві зелені клітинки – в один вихідний піксель:
червоний канал – це значення червоної клітинки;
синій канал – це значення синьої клітинки;
зелений канал – це середнє значення двох зелених клітинок.
Кожен вхідний тайл 2x2 стає одним вихідним пікселем, тому готове зображення має половину ширини й половини висоти датчика та чверть кількості пікселів. Метод супер-пікселя є швидким і не має артефактів інтерполяції, але витрати роздільної здатності роблять його крайнім засобом – він використовується рідко.
4.11.2. Білінійна¶
Білінійна інтерполяція усереднює найближчі пікселі відповідного кольору, а не копіює чи узагальнює їх. Точне усереднення залежить від того, який колір записує центральний піксель, оскільки чотири випадки по-різному розподіляють відсутні канали навколо сусідства 3x3.
Зелений піксель у рядку червоний-зелений. Відсутнє червоне значення усереднює двох червоних сусідів зліва і справа; відсутнє синє усереднює двох синіх сусідів зверху і знизу.
Відсутній червоний береться від горизонтальних червоних сусідів; відсутній синій – від вертикальних синіх сусідів.¶
Зелений піксель у рядку зелений-синій. Та сама форма з переставленими червоним і синім. Відсутнє червоне значення усереднює двох червоних сусідів зверху і знизу; відсутнє синє усереднює двох синіх сусідів зліва і справа.
Відсутній червоний береться від вертикальних червоних сусідів; відсутній синій – від горизонтальних синіх сусідів.¶
Червоний піксель. Відсутнє зелене значення усереднює чотирьох кардинальних зелених сусідів (зверху, знизу, зліва, справа). Відсутнє синє усереднює чотирьох діагональних синіх сусідів.
Відсутній зелений береться від чотирьох кардинальних зелених сусідів; відсутній синій – від чотирьох діагональних синіх сусідів.¶
Синій піксель. Дзеркало червоного випадку. Відсутній зелений усереднює чотирьох кардинальних зелених сусідів, а відсутній червоний усереднює чотирьох діагональних червоних сусідів.
Відсутній зелений береться від чотирьох кардинальних зелених сусідів; відсутній червоний – від чотирьох діагональних червоних сусідів.¶
Білінійна зберігає повну роздільну здатність датчика і достатньо плавна для більшості застосувань, але все ще показує артефакти на межах. Різкий перехід між двома кольорами перетинає пікселну сітку у певній орієнтації, і усереднення через межу дещо розмиває її. Там, де колірна та яскравісна межі не збігаються точно, у виводі з’являються слабкі кольорові облямівки.
4.11.3. Поза білінійною¶
Існує ціла низка кращих алгоритмів debayering. Одні використовують більші сусідства, ніж маленький хрест із однаколірних сусідів білінійної, і зважують вибірки з ретельніше підібраними коефіцієнтами; інші виявляють напрям місцевих меж і зміщують інтерполяцію вздовж цього напряму, щоб межа, що проходить через пікселну сітку, залишалась різкою замість розмивання. Обидва підходи зменшують кольорові облямівки та розмиття меж, які залишає білінійна, ціною більшої кількості арифметичних операцій на піксель і більшого кремнію (або більших обчислень на стороні MCU).
Якість debayering, доступна на будь-якій конкретній OpenMV Cam, залежить від платформи – вона визначається тим, що надають датчик і MCU на тій камері.
4.11.4. Де виконується debayering¶
Процесор сигналів зображення (ISP) – на мікросхемі датчика або на стороні MCU – виконує debayering кожного кадру до того, як він залишає конвеєр обробки зображень, у більшості випадків. Користувацький код отримує готове тришканальне RGB-зображення, ніколи не торкаючись сирої мозаїки.
ISP також можна наказати передавати сирий кадр Баєра без змін. Сирий Баєр займає менше пам’яті, ніж перетворене зображення – один байт на піксель проти трьох – що робить його корисним, коли зберігання кадрів є вузьким місцем, при захопленні для офлайн-обробки або коли проект хоче застосувати власний алгоритм debayering у програмному забезпеченні.