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:
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.
What if you let it grow taller and attach a bike to it?
Stitching with OpenCV is all nice, but what if you wanted to do it all in hardware on GPU with vanilla OpenGL?
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.
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.
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. …
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?
Stitching is the process of merging multiple overlapping images in a seamless way, so that it looks like one single image. …