Расчет экспозиции для Global Shutter: как победить «смаз» на скорости
Почему 120 FPS и микросекундная выдержка OG02B10 — это стандарт индустрии.
Главная проблема при съемке быстродвижущихся объектов — Motion Blur (размытие в движении). Даже если ваша камера выдает 120 кадров в секунду, без правильно настроенной экспозиции (выдержки) картинка превратится в кашу. В этой статье мы разберем, как камера OG02B10-3271V1 решает эту задачу.
Rolling Shutter (Обычные камеры)
Считывает кадр построчно. Итог: «эффект желе», наклонные линии и искажения формы объекта.
Global Shutter (Ваша OG02B10)
Экспонирует весь кадр одновременно. Итог: мгновенная «заморозка» кадра без геометрических искажений.
Формула «заморозки» движения
Чтобы получить четкий снимок, объект не должен смещаться более чем на 1 пиксель за время открытия затвора. Расчет прост:
Для камеры OG02B10 при съемке объекта, движущегося со скоростью 5 м/с, на расстоянии 2 метров, оптимальная выдержка составит около 500 микросекунд (0.0005 сек). Благодаря высокой чувствительности сенсора OmniPixel3-GS™, вы получите яркий кадр даже на такой короткой экспозиции.
Рекомендуемые настройки экспозиции
| Сценарий | Скорость объекта | Режим выдержки |
|---|---|---|
| Лицо человека / Медленный робот | до 1 м/с | 1/500 — 1/1000 сек |
| Конвейерная лента (склад) | 2-5 м/с | 1/2000 — 1/5000 сек |
| Спортивный инвентарь / Дроны | 10+ м/с | 1/10000 сек и короче |
Используйте возможности Global Shutter на 100%
Заказать камеру OG02B10 для скоростной съемкиDeep Tech: Архитектура захвата и аппаратные прерывания
О чем обычно не пишут в даташитах «для всех»:
В отличие от USB-камер, где задержка (latency) может плавать от 20 до 100 мс из-за стека ОС, MIPI-интерфейс OG02B10 работает через подсистему V4L2 (Video4Linux2) напрямую с DMA. Использование аппаратного триггера на 29 пине обеспечивает детерминированную задержку старта экспозиции в пределах единиц микросекунд. Это критично для баллистических вычислений и высокоскоростной робототехники.
Сенсор OG02B10 поддерживает полноценный Slave Mode. Это значит, что вы можете подать внешний мастер-клок (XCLK) для синхронизации нескольких камер на уровне пиксельной частоты. Это позволяет избежать "дрейфа фазы" при создании 360° панорам или VR-систем, где малейшее рассогласование во времени экспозиции левого и правого глаза вызывает дискомфорт (motion sickness).
Большинство IT-шников привыкли работать с JPEG/H.264. Но для Machine Learning (ML) важны RAW10 данные. Модель 3271V1 передает чистые 10-битные значения с каждого пикселя без "улучшайзеров" и компрессии. Это дает нейросети в 4 раза больше информации в тенях по сравнению с 8-битными USB-камерами, что критично для распознавания объектов при плохом освещении.
Программная реализация захвата (V4L2 + OpenCV Interface)
// Пример инициализации буферов DMA для захвата RAW10 данных с OG02B10
#include#include // Установка формата кадра напрямую в регистры драйвера void setup_camera(int fd) { struct v4l2_format fmt = {0}; fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt.fmt.pix.width = 1600; fmt.fmt.pix.height = 1300; // Используем 10-битный формат RAW (Bayer) fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SGBRG10; fmt.fmt.pix.field = V4L2_FIELD_NONE; if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0) { perror("Ошибка установки формата V4L2"); } } // Основной цикл захвата без конвертации (Zero-copy) int main() { cv::Mat raw_frame(1300, 1600, CV_16UC1); // Буфер для 10-бит данных // Программный триггер (Software Trigger) через I2C возможен здесь // ... захват кадра через VIDIOC_DQBUF ... // Конвертация Bayer -> BGR только для визуализации cv::Mat bgr_frame; cv::cvtColor(raw_frame, bgr_frame, cv::COLOR_BayerGB2BGR); cv::imshow("OG02B10 High-Speed Stream", bgr_frame); cv::waitKey(1); return 0; }
Использование V4L2_PIX_FMT_SGBRG10 позволяет передавать данные по 4 линиям MIPI со скоростью до 6.4 Гбит/с. Это исключает задержки, возникающие при использовании USB-протоколов, и дает возможность алгоритмам (например, на базе TensorRT) обрабатывать каждый кадр за <5 мс.
Сборка проекта (Makefile для Raspberry Pi / Jetson)
# Создайте файл с именем Makefile в папке с проектом и выполните команду 'make'
CXX = g++ CXXFLAGS = -O3 -Wall `pkg-config --cflags opencv4` LIBS = `pkg-config --libs opencv4` -lpthread all: capture_raw capture_raw: main.cpp $(CXX) $(CXXFLAGS) main.cpp -o capture_raw $(LIBS) clean: rm -f capture_raw
- Установите зависимости:
sudo apt install build-essential libopencv-dev - Сохраните код C++ в файл
main.cpp - Выполните команду
makeв терминале - Запустите бинарный файл:
./capture_raw
Global Shutter vs Rolling Shutter
Посмотрите, как сенсор OG02B10 устраняет искажения при съемке быстро вращающихся объектов (замороженный кадр).
❌ Rolling Shutter (Искажения)
✅ OG02B10 (Идеальный кадр)

Калькулятор искажений затвора
Рассчитайте допустимую скорость объекта и время экспозиции для Global Shutter. Сравните разницу в «смазе» с обычным Rolling Shutter онлайн.