Image for post
Image for post
Synchronized 3-camera array recording itself in the dark

As low as 100µs delay can be reached with stock Raspberry Pi and no custom hardware.

Examples use-cases for synchronized video streams are:

  • image stitching for panoramic photo/video, or image blending for example: HDR or low light imagery
  • stereovision for 3D reconstruction and depth sensing applications
  • multi-camera tracking for example: eye tracking with one camera dedicated to each eye

Why is synchronization so important?

Let’s see an early stitching test with free running cameras.
Each camera is capturing at 90fps, hence there is about 11ms between each consecutive frame in the stream.


Scanning the streets might not need an expensive setup.

Do you remember the 8-camera video stitcher project?

Eight Raspberry Pi and corresponding camera are connected on a local network and synchronized to capture 360° panoramic images.

Image for post
Image for post

What if you let it grow taller and attach a bike to it?


Image for post
Image for post

Stitching with OpenCV is all nice, but what if you wanted to do it all in hardware on GPU with vanilla OpenGL?

Introduction

OpenCV comes with an advanced sample implementation which produces great results on still images, however, using this program on every single frame of video streams is unsurprisingly extremely slow. This is the solution which was used for 360° video using Raspberry Pi(s).

This article follows the one mentioned above, where video frames were transformed on the CPU with OpenCV, and introduce a full GPU pipeline.

It should be noted that OpenCV has GPU support for many operations, but enabling it still results in many inefficient copying of data back and forth between CPU and GPU. …


PTP on Raspberry Pi, it’s apt install linuxptp and done, right?
Maybe not. Here are some tips to run it better than the default settings.

This article is part of a series about inastitch.
In this project, clock synchronization is critical for frame capture alignment.

Image for post
Image for post
Two Raspberry’s hearts beating together

It all started with this git repo of patches to make PTP work on Raspberry Pi 3: https://github.com/twteamware/raspberrypi-ptp. Those patches are now integrated in the official release of RPi OS.

The page performance.md is the most interesting. …


You have cool project idea and you want to make a prototype more compatible with the automotive world? Here are some design choices for you…

Of course, some old-school hard real-time C code running bare metal on a microcontroller would always rekindle the heart of automotive engineers, but for quick prototyping it is definitely not the most convenient target. On the other hand, using a Linux-based target is unfortunately not real-time, but enables to leverage many open-source libraries.

This article uses inastitch as sample project to explain how each library was used in a practical example.

Image for post
Image for post
inastitch 3-camera hardware prototype in its 3D-printed case

Inastitch is a prototype for a digital rear-view mirror, by stitching 3 live video streams together into a single wider stream. Each camera is independent and connected to a network. …


Image for post
Image for post
OpenCV stitching calibration image

What would it take to make your own video footage at 360 degrees?
The answer: a bunch of cameras and some open source software.
Let’s try…

First we need to talk about image stitching. With no surprise, OpenCV has a great sample implementation for this and often gives impressive seamless results. The thing is we want to produce video, not static images, so we need to talk next about camera synchronization on the Raspberry Pi in order to capture frames at the same time. And finally, how do we make a 360 degrees video with all of this?

Image stitching

Stitching is the process of merging multiple overlapping images in a seamless way, so that it looks like one single image. …

About

Vincent Jordan

From Inatech (inatech.eu)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store