Skip to content

canyueduxuan/fisheye2panorama

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[English] | 简体中文

fisheye2panorama

This project converts fisheye camera images into 360° cylindrical panoramas using camera calibration and geometric projection. It can unwrap heavily distorted fisheye frames into more readable panoramic views in real time, suitable for robotics, surveillance, and computer vision tasks.


Features

  • Real-time processing: works with live streams (about 1 ms in the author's test environment).
  • ROS + OpenCV integration: easy to deploy in robotic systems.
  • Configurable parameters: customizable panorama resolution and mapping parameters.
  • Lightweight and efficient: suitable for embedded or resource-limited platforms.

Example

Input fisheye image:
Source Image

Output 360° cylindrical panorama:
Panorama Image

Video demo:
Video Demo


Typical Applications

  • Autonomous navigation: provides omnidirectional environmental perception for robots, drones, and autonomous vehicles.
  • Surveillance: one fisheye camera can cover a wide area and reduce blind spots.
  • Obstacle detection and mapping: can be integrated with vision algorithms for real-time perception.
  • Omnidirectional vision: supports SLAM, visual odometry, and multi-camera fusion.
  • VR / immersive video: converts fisheye footage into usable panoramic content.

Installation and Run

Clone this repository into the src folder of your ROS workspace:

cd ~/catkin_ws/src
git clone https://github.com/canyueduxuan/fisheye2panorama.git
cd ..
catkin_make
rosrun fisheye2panorama fisheye2panorama_node

Testing

cd ~/catkin_ws/src/fisheye2panorama/dataset
rosbag play data.bag

Real-World Deployment

Use kalibr to calibrate your fisheye camera with eucm-none parameters, then write them into config/config.yaml. Also ensure your ROS topic names and message types match your actual device setup.

Since earlier experiment records were lost, here is a simple demo of four virtual pinhole cameras after undistortion (similar to vins-fisheye):

4 pinhole cams

You can see that with eucm-none (suitable for >180°), boundary ghosting artifacts are removed. In practice, omni-radtan (<180°) may still produce edge ghosting.

If calibration conditions are limited or camera quality is poor, increasing cylinder_cy in config.yaml to shift the cylindrical camera optical axis upward can improve results without reducing vertical FOV.

Acknowledgement

Inspired by vins-fisheye.

3D Object Detection from a Single Fisheye Image Without a Single Fisheye Training Image shows that cylindrical images have radial translation invariance (fisheye images do not), making them more suitable for CNN-based 3D object detection.

License

MIT LICENSE

About

Convert fisheye images into 360° cylinder panoramas using camera calibration and geometric projection.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages