4.11. Debayering

Сирий кадр Баєра містить лише один колірний канал на піксель. Перетворення його на звичайне тришканальне RGB-зображення означає заповнення двох відсутніх каналів у кожному пікселі шляхом інтерполяції з сусідніх пікселів відповідного кольору. Ця інтерполяція називається debayering (також демозаїкою). Домінують декілька алгоритмічних родин.

4.11.1. Супер-піксель

Найдешевший підхід згортає кожен тайл 2x2 Баєра – одну червону клітинку, одну синю клітинку та дві зелені клітинки – в один вихідний піксель:

  • червоний канал – це значення червоної клітинки;

  • синій канал – це значення синьої клітинки;

  • зелений канал – це середнє значення двох зелених клітинок.

Кожен вхідний тайл 2x2 стає одним вихідним пікселем, тому готове зображення має половину ширини й половини висоти датчика та чверть кількості пікселів. Метод супер-пікселя є швидким і не має артефактів інтерполяції, але витрати роздільної здатності роблять його крайнім засобом – він використовується рідко.

4.11.2. Білінійна

Білінійна інтерполяція усереднює найближчі пікселі відповідного кольору, а не копіює чи узагальнює їх. Точне усереднення залежить від того, який колір записує центральний піксель, оскільки чотири випадки по-різному розподіляють відсутні канали навколо сусідства 3x3.

Зелений піксель у рядку червоний-зелений. Відсутнє червоне значення усереднює двох червоних сусідів зліва і справа; відсутнє синє усереднює двох синіх сусідів зверху і знизу.

A 3 column by 3 row Bayer-pattern neighbourhood centred on a green pixel in a red-green row. The cells to the left and right of the centre are red; the cells above and below are blue; the corner cells are green. White arrows point inward from the two red cells and the two blue cells into the centre.

Відсутній червоний береться від горизонтальних червоних сусідів; відсутній синій – від вертикальних синіх сусідів.

Зелений піксель у рядку зелений-синій. Та сама форма з переставленими червоним і синім. Відсутнє червоне значення усереднює двох червоних сусідів зверху і знизу; відсутнє синє усереднює двох синіх сусідів зліва і справа.

A 3 column by 3 row Bayer-pattern neighbourhood centred on a green pixel in a green-blue row. The cells above and below the centre are red; the cells to the left and right are blue; the corner cells are green. White arrows point inward from the two red cells and the two blue cells into the centre.

Відсутній червоний береться від вертикальних червоних сусідів; відсутній синій – від горизонтальних синіх сусідів.

Червоний піксель. Відсутнє зелене значення усереднює чотирьох кардинальних зелених сусідів (зверху, знизу, зліва, справа). Відсутнє синє усереднює чотирьох діагональних синіх сусідів.

A 3 column by 3 row Bayer-pattern neighbourhood centred on a red pixel. The four cardinal neighbours (above, below, left, right) are green; the four diagonal corner cells are blue. White arrows point inward from all eight neighbours into the centre.

Відсутній зелений береться від чотирьох кардинальних зелених сусідів; відсутній синій – від чотирьох діагональних синіх сусідів.

Синій піксель. Дзеркало червоного випадку. Відсутній зелений усереднює чотирьох кардинальних зелених сусідів, а відсутній червоний усереднює чотирьох діагональних червоних сусідів.

A 3 column by 3 row Bayer-pattern neighbourhood centred on a blue pixel. The four cardinal neighbours are green; the four diagonal corner cells are red. White arrows point inward from all eight neighbours into the centre.

Відсутній зелений береться від чотирьох кардинальних зелених сусідів; відсутній червоний – від чотирьох діагональних червоних сусідів.

Білінійна зберігає повну роздільну здатність датчика і достатньо плавна для більшості застосувань, але все ще показує артефакти на межах. Різкий перехід між двома кольорами перетинає пікселну сітку у певній орієнтації, і усереднення через межу дещо розмиває її. Там, де колірна та яскравісна межі не збігаються точно, у виводі з’являються слабкі кольорові облямівки.

4.11.3. Поза білінійною

Існує ціла низка кращих алгоритмів debayering. Одні використовують більші сусідства, ніж маленький хрест із однаколірних сусідів білінійної, і зважують вибірки з ретельніше підібраними коефіцієнтами; інші виявляють напрям місцевих меж і зміщують інтерполяцію вздовж цього напряму, щоб межа, що проходить через пікселну сітку, залишалась різкою замість розмивання. Обидва підходи зменшують кольорові облямівки та розмиття меж, які залишає білінійна, ціною більшої кількості арифметичних операцій на піксель і більшого кремнію (або більших обчислень на стороні MCU).

Якість debayering, доступна на будь-якій конкретній OpenMV Cam, залежить від платформи – вона визначається тим, що надають датчик і MCU на тій камері.

4.11.4. Де виконується debayering

Процесор сигналів зображення (ISP) – на мікросхемі датчика або на стороні MCU – виконує debayering кожного кадру до того, як він залишає конвеєр обробки зображень, у більшості випадків. Користувацький код отримує готове тришканальне RGB-зображення, ніколи не торкаючись сирої мозаїки.

ISP також можна наказати передавати сирий кадр Баєра без змін. Сирий Баєр займає менше пам’яті, ніж перетворене зображення – один байт на піксель проти трьох – що робить його корисним, коли зберігання кадрів є вузьким місцем, при захопленні для офлайн-обробки або коли проект хоче застосувати власний алгоритм debayering у програмному забезпеченні.