4.20. Підсумок¶
Ви ознайомилися з частинами стека зображень камери, які задіяні щоразу, коли скрипт захоплює кадр:
Оптика перед датчиком — діафрагма як найпростіший елемент формування зображення, потім об’єктиви, які збирають значно більше світла, зберігаючи фокусування; фокусна відстань, апертура, глибина різкості та поле зору — це параметри, з яких вибирає застосунок. Реальні об’єктиви мають дисторсію, віньєтування та ефекти кута головного променя, які датчик і ISP пізніше компенсують.
Сітка датчика — двовимірний масив фотодіодів, що перетворює фотони на заряд; час витримки та аналогове підсилення обмінюють яскравість на розмиття руху і шум. Ролінговий та глобальний затвори визначають, як рядки масиву зчитуються; невеликий набір внутрішньочипових калібрувань — FPN стовпців, чорний рівень, дефектний піксель, корекція тіней об’єктива — очищує дані перед виходом з чипа. Два шини з’єднують чип з MCU: повільна шина I2C для регістрів і швидка паралельна або MIPI шина для пікселів.
Колір та ISP — кольоровий фільтр Баєра дає кожному пікселю один з кольорів: червоний, зелений або синій; дебаєризація інтерполює два відсутніх канали. Процесор сигналів зображення зшиває решту конвеєра — збирання статистики, автоматичний баланс білого, дебаєризація, корекція кольорової матриці, гамма, масштабування, обрізання та фінальне пакування у запитаний формат пікселів.
Формати пікселів — сирий Bayer, RGB888, RGB565, YUV422, відтінки сірого, BINARY та стиснені виходи JPEG / PNG забезпечують компроміс між розміром у пам’яті, точністю кольору та сумісністю з подальшими алгоритмами. RGB565 є стандартним для готового кольору, оскільки він відповідає ширині слова MCU та вдвічі зменшує витрати пам’яті порівняно з RGB888.
API CSI — п’ять рядків налаштування плюс цикл знімків — це форма, з якої починається кожен скрипт. Пули кадрового буфера (одинарний, подвійний, потрійний, відео FIFO або тригерний) визначають, як застосунок і камера поділяють кадри; окремий канал попереднього перегляду передає дані підключеній програмі налагодження, не конкуруючи з буферами застосунку; параметри датчика охоплюють орієнтацію, витримку, підсилення, баланс білого, обмеження частоти кадрів і тестовий патерн із кольоровими смугами.
Кілька датчиків та пули пам’яті — плати з двома датчиками створюють по одному
CSIна кожен чип і запускають кожен зі своєю частотою. Під капотом пул кадрового буфера, регіон попереднього перегляду, купа MicroPython і менші виділення швидкої пам’яті розміщуються в окремих регіонах оперативної пам’яті: частини, яким потрібна швидкість, отримують її, а частини, яким потрібен лише обсяг, отримують його.
Цього достатньо, щоб отримати кадр з датчика у правильному форматі, розмірі кадру та витримці для сцени; вибрати режим кадрового буфера, що відповідає часу обробки застосунку; забезпечити живий попередній перегляд для підключеного пристрою; і зчитати Image назад у Python, готовим до обробки.
4.20.1. Використання цього довідника надалі¶
Ставтеся до розділів про зображення як до довідкового матеріалу, а не до одноразового читання. Повертатися, щоб освіжити знання про режими кадрового буфера, формати пікселів або значення конкретного параметра датчика — це саме той спосіб використання, на який розраховано ці розділи. Довідкова сторінка csi.CSI перелічує всі методи в одному місці, коли питання зводиться до «як точно називається цей виклик».
4.20.2. Куди рухатися далі¶
Обробка зображень — природна наступна тема. Маючи буфер під рукою та розуміючи API csi, залишається лише визначити, що робити з пікселями: пороги, виявлення країв, пошук плям, виявлення ліній та форм, QR-коди, AprilTags, інференс машинного навчання. Набір інструментів переходить до модуля image та його каталогу методів об’єкта Image. Все з цього розділу залишається в силі: форма циклу, режим кадрового буфера, формат пікселів — усе це те, на чому оперують методи обробки зображень.