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