К содержимому
  1. Главная
  2. Блог
  3. Монохромные камеры с глобальным затвором на Raspberry Pi: драйверы OV7251 и OV9281 вошли в ядро Raspberry Pi

Монохромные камеры с глобальным затвором на Raspberry Pi: драйверы OV7251 и OV9281 вошли в ядро Raspberry Pi

17 сентября 2020 · По материалам Arducam

Чтобы работать с камерами OV7251 и OV9281 с глобальным затвором на Raspberry Pi, теперь достаточно одного шага — включить оверлей из недавно обновлённого device tree.

Многие решают на Raspberry Pi задачи компьютерного и машинного зрения, где приходится иметь дело с быстро движущимися объектами. Камера с глобальным затвором избавляет от искажений скользящего затвора и упрощает обработку изображений, но на Raspberry Pi подключить её непросто.

По данным Arducam, компания одной из первых предложила способ подключить камеры с глобальным затвором к Raspberry Pi. Теперь разработчики Raspberry Pi портировали драйверы и официально включили их в дерево исходников ядра Raspberry Pi. Значит, камеры Arducam OV7251 и OV9281 можно использовать с официальным драйвером V4L2.

Зачем нужны камеры с глобальным затвором

В компьютерном зрении артефакты камер со скользящим затвором дают искажения (смещение пикселей), которые сбивают алгоритмы попиксельной обработки изображения.

Если камера или объект движутся достаточно быстро, кадр получается искажённым: скользящий затвор экспонирует кадр построчно, и между строками объект успевает сместиться.

Нештатные камеры на Raspberry Pi

Какие модули камер Raspberry Pi поддерживает сейчас

Штатно Raspberry Pi поддерживает камеры V1.3 на OV5647 (5 Мп), V2.1 на IMX219 (8 Мп) и камеру HQ на IMX477 (12 Мп). У всех у них скользящий затвор. Подробнее — в обзоре штатных камер Raspberry Pi.

Что нужно, чтобы подключить новую камеру к Raspberry Pi

Чтобы использовать новую камеру на Raspberry Pi, проверьте следующее.

1. Интерфейс камеры

Штатный интерфейс камеры Raspberry Pi — MIPI CSI-2, 2 линии. Убедитесь, что у камеры такой же интерфейс MIPI и такая же распиновка, как у официальной камеры Pi.

2. Поддержка драйвером

Для модулей камер MIPI, которые Raspberry Pi не поддерживает, драйвер придётся писать с нуля по документации на unicam. Другой вариант — взять модули камер MIPI от Arducam, для которых драйвер уже готов.

USB-камеры на Raspberry Pi

К Raspberry Pi можно подключить и множество USB-веб-камер со стандартным драйвером UVC, если их разрешение и частота кадров отвечают задаче. Но почти у всех камер UVC затвор не глобальный.

USB-камера UVC со скользящим затвором
У большинства камер UVC скользящий затвор

Как Arducam расширяет поддержку камер

Цель и роль Arducam в сообществе камер Raspberry Pi

Модули камер Arducam для Raspberry Pi дополняют официальные продукты. Arducam стремится поддержать функции, которых нет у официальных камер, и камеры, которые Raspberry Pi Foundation не поддерживает.

Проект модулей камер MIPI от Arducam (аппаратная и программная часть)

Сейчас у Arducam есть драйвер пространства пользователя (userland) для её модулей камер MIPI. Вскоре ему на смену придёт новый проект Pivariety — драйвер ядра с поддержкой V4L2. Цель Pivariety — один драйвер для всех камер Arducam: при замене модуля камеры не нужно переключаться на другой драйвер, систему проще обслуживать и обновлять.

Работа камер с глобальным затвором с драйвером пространства пользователя Arducam

Сейчас драйвер Arducam MIPI поддерживает три камеры с глобальным затвором: OV7251, OV9281 и OV2311. Их режимы:

  • OV7251: 640 × 480 при 120 к/с;
  • OV9281: 1280 × 800 при 120 к/с;
  • OV2311: 1600 × 1300 при 60 к/с.
Тест частоты кадров OV9281: 120 к/с
Результат теста частоты кадров OV9281

Поддерживается и внешний запуск (trigger).

Драйверы камер вошли в дерево исходников ядра Raspberry Pi

Что даёт включение драйвера в ядро

Вслед за драйвером Arducam для камер с глобальным затвором на Raspberry Pi драйверы этих камер вошли и в прошивку Raspberry Pi.

Включение драйвера OV7251/OV9281 в ядро позволяет работать с камерами через фреймворк драйверов V4L2 и даёт лучшую совместимость с прикладными программами — GStreamer, VLC, OpenCV и др.

Как работать с камерами с глобальным затвором официальным способом

Камеры OV7251 и OV9281 на Raspberry Pi работают совсем не так, как штатные. Команды raspistill и raspivid с ними не работают: это драйверы V4L2, а не MMAL. Как работать с OV7251 и OV9281 через официальный драйвер V4L2, описано в быстром старте в документации Arducam.

См. также статью «Камера OV7251 0,3 Мп с глобальным затвором для Raspberry Pi».

Возможности драйвера

Драйверы камер в ядре построены на unicam и пока поддерживают только поток данных RAW. Обработку ISP на графическом процессоре Raspberry Pi использовать нельзя. Поддержка ограниченная: предполагается, что эти драйверы будут сопровождать сами пользователи.

Ещё по теме

Запросить цену

Укажите количество — пришлём коммерческое предложение.