Jump to content

Birds Eye View - Birds Eye View and Libpanorama

From RidgeRun Developer Wiki

Follow us on: YouTube Twitter LinkedIn Email Share this page

Share This Page

⇦ How BEV Works/Background Home User Guide/Building and Installation ⇨


Libpanorama is the image transformation engine behind RidgeRun's Birds Eye View (BEV) software. It makes BEV practical on embedded systems by combining multiple geometric transformations into a single efficient mapping step and processing only the pixels required for the final output. This page explains how Libpanorama supports BEV generation and highlights other real-time projection use cases such as fisheye undistortion, panorama generation, surround 360 video, and custom image projections.

You may have noticed how, from the original capture to the final BEV, the image undergoes several transformations. It would be great if these transformations could be combined together instead of performing each of them one by one. Moreover, you may also have noticed that the resulting BEV image consists only of a small, internal portion of the original capture. It would be ideal if we could only process the pixels that are actually needed by the BEV, ignoring the rest and saving precious processing time. That is precisely what Libpanorama was designed for.

Libpanorama is written in C++ and heavily relies on template meta-programming and static polymorphism to delegate as much processing to the compiler as possible, as opposed to runtime.

Birds Eye View is just one of the multiple use cases for Libpanorama. In practice, almost any geometric transform can be performed in real-time on the video feed using the library. While the technical details on how to do so are out of the scope of this document, here is a list of some other use cases Libpanorama was built for.

Fisheye Undistort

Fisheye lenses allow cameras to capture more field of view than typical rectilinear ones. While "normal" lenses are capable of capturing 110 degrees (at most), fisheye ones can go up to 210 degrees or more! They are capable of doing so by introducing radial distortion in the image, resulting in the famous barrel effect.

The process of taking a fisheye image and removing its distortion to convert it back to a rectilinear projection (with information loss) is what we define as "undistort". This process is also typically applied to "normal" lenses as well, which, due to manufacturing defects, can introduce radial defects to the image.

Libpanorama can perform the fisheye undistort in real-time.


Fisheye Undistort
A fisheye image and two different undistort algorithms.


Panoramas

A panoramic image is another projection that allows you to convey a greater field-of-view than a normal lens would. Like fisheye lenses, they do so by introducing unnatural distortions to the resulting image, but unlike fisheye, these are way less evident and unpleasant to the viewer. Panoramic images are typically generated by combining multiple individual images together, which results in the ability to capture a full 360 view of the scene in an image.

Libpanorama is capable of taking an array of individual images and blending them into a single panorama.


360 degrees panoramic image
Example of 360 degree generated panorama from three individual cameras.

Surround 360 Video

One of the benefits of panoramic images (or more correctly, equirectangular images) is that they can map the full 360 environment into a plane (the image). It is possible, then, to take a region of this equirectangular image and project it back to the rectilinear space. Even better, we can move the taken region and give the impression that the panning and tilting around, producing an immersive experience.

Libpanorama provides the tool to produce these immersive experiences in real time.

Equirectangular to rectilinear
Left: Equirectangular image (taken from Paul Bourke's site). Right: Rectilinear view taken from a certain perspective.

Little World

Just for the fun of it (and because we can 😉), we configure Libpanorama to generate the little world projection. This is the stereographic projection taken to the extreme. Regardless of the potential use cases, it does look pretty cool.

Libpanorama is capable of producing little world video streams in real time.


Little world projection
Left: Equirectangular image. Right: Little world projection from an aerial perspective.

Custom Projections

Interested in developing a custom projection? Don't hesitate to contact us, and we'll be happy to assist in the development.

FAQ

What is Libpanorama?
Libpanorama is RidgeRun's image transformation library for real-time geometric image processing on embedded systems. In the Bird's Eye View solution, it is the engine that combines multiple mapping steps into an efficient transformation pipeline, helping generate the final BEV image while processing only the pixels that matter.
What are the capabilities of Libpanorama?
Libpanorama supports real-time image transformation use cases such as Bird's Eye View generation, fisheye undistortion, panorama stitching, surround 360 video views, little world projections, and custom image projections. Its main value is that it can compose complex geometric transformations efficiently, which makes it useful for embedded vision applications that need high performance and low processing overhead.
How does Libpanorama improve BEV efficiency?
Libpanorama improves efficiency by combining mapping stages into a single transformation flow and avoiding unnecessary work on image regions that do not contribute to the final birds eye output. This is especially valuable on embedded platforms where compute and memory bandwidth are limited.



⇦ How BEV Works/Background Home User Guide/Building and Installation ⇨



Cookies help us deliver our services. By using our services, you agree to our use of cookies.