Monochrome Global Shutter Cameras on RPi: OV7251 and OV9281 Camera Drivers Merged to Raspberry Pi Kernel

Published by Lee Jackson on

You are now only one step away from using OV7251 and OV9281 global shutter cameras on the Raspberry Pi – Enabling the overlay from the recently updated device tree.

Many people perform computer and machine vision tasks on RPi, in which they have to deal with fast-moving objects. A global shutter camera is an ideal solution to avoid the rolling artifacts for better image processing, but it’s not easy on RPi. ​​​​​​​​​

​​​​​​​​​Arducam is one of the first companies that offers a way to interface global shutter cameras to the Raspberry Pi. And now, Raspberry Pi developers have managed to port the drivers and then officially merged them to the Raspberry Pi kernel tree. That means you will be able to use our OV7251/OV9281 cameras with the official V4L2 driver.

Why global shutter cameras

Credit: Sony

For fields like computer vision, artifacts produced by rolling shutter cameras can cause distortion (pixel offset) which can mess up the algorithm to do the image processing based on pixels.

If the camera or an object is moving fast enough, the frame can look distorted since the target seen from the camera was offset between lines due to the line by line exposure scheme of the rolling shutter camera.

Non-native cameras on Raspberry Pi

What camera modules is the Raspberry Pi supporting now

The natively supported cameras by Raspberry pi are the 5MP V1.3 OV5647 cameras, 8MP V2.1 IMX219 camera, and 12MP HQ camera IMX477. All of them are rolling shutter cameras. read more

What does it take to use a new camera on the Raspberry Pi

In order to use a new camera on Raspberry pi, you have to check the following steps:

1.Determine the camera interface

Raspberry pi native camera interface is a 2-lane CSI-2 MIPI interface. Make sure your camera has the same MIPI interface and pinout as the official pi camera.

2.Get the driver support

For those MIPI camera modules that aren’t supported by Raspberry pi, you have to write the camera driver from scratch based on the unicam document. Or you can try Arducam’s MIPI camera modules as is with ready to go driver.

USB camera modules used on the Raspberry Pi

There are a bunch of USB web cameras that also can be used on Raspberry pi with the default UVC camera driver as long as the resolution and frame rate meets the requirement. But almost all of the UVC cameras are not global shutter type.

2 1
Most UVC cameras are rolling shutter type

Arducam’s response to support more cameras

Arducam’s goal and role in the Raspberry Pi Camera community

Arducam camera modules for the Raspberry Pi works as complementary to the official products. We aim to support the features that the official cameras do not include, as well as cameras that the Raspberry Pi foundation does not support.

Arducam MIPI camera module project (both hardware and software)

Currently, Arducam developed a userland camera driver for our MIPI camera modules. And soon it will switch to a new project aka Pivariety which is a kernel driver with V4L2 support. The goal of the Pivariety is one driver for all Arducam cameras. Users don’t need to switch to different camera drivers when swapping the camera modules. Easy for system maintenance and upgrade.

The usage and performance of global shutter cameras with Arducam userland drivers

Now Arducam MIPI driver supports OV7251, OV9281, OV2311 three global shutter cameras. The performance lists below:

120fps
result of testing OV9281 frame rate

External trigger feature also supported.

Camera Drivers Merged to the RPi Kernel Tree

Why merge the driver/ what are the benefits of merging the driver

After Arducam offered the driver for the global shutter cameras on the Raspberry Pi, we are now seeing the camera drivers of them merged to the Raspberry Pi firmware.​

The benefits of merging the driver for OV7251/OV9281 are users can use the V4L2 camera driver framework and have better application software compatibility like Gstreamer, VLC player, OpenCV, etc.

How to use global shutter cameras in an official way

To use OV7251 and OV9281 cameras on the Raspberry Pi is nothing like the native cameras. The raspstill and raspvivid commands won’t work, as they are V4L2 drivers instead of mmal. You can refer to the quick start guide on our documentation for how to use the OV7251 and OV9281 with the official V4L2 camera driver.

What is the performance of the driver

The merged camera drivers based on unicam now only support RAW data streaming. You can not take advantage of the ISP processing from the Raspberry pi’s GPU. It only provides limited support and is supposed for users to maintain these drivers.


0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *