Skip to main content

stitcher for two fisheye camera

Project description

pano

全景图像拼接

原本是想解决网络遥控车的视角太小,不能有效观察周围情况问题,找到了广角镜头。 后来发现竟然可以用两个超过180°的摄像头拼接全景图片。

但是在网上没有找到效果好的实时全景传输项目,所以自己做一个。

我理解的全景图片生成应该主要是3个步骤 1、把图片摊平,这个步骤的学名未知。可能是将鱼眼原图(等角图片)展开成等距图片。 2、将两个鱼眼镜头的等距图分成3份,并进行水平拼接 3、拼接图按照给定的角度在还原成等角图

为了可以做到即时(30FPS),需要尽可能的提高效率。 目前最大的效率瓶颈是在拼接上。

调研拼接3张水平图片效率

技术上打算采用opencv 的 stitcher,先试试看。

opencv 用 4.X 吧,尽量用新一点的东西。

2023-05-24 进展

目前的拼接还是完全自己写的,原因是所有第三方提供的方案均不能有效的对我的图片进行拼接。 可能是我的参数有问题,但是我的需求相对简单并且我对拼接效率有要求,所以就自己写了。

写的过程还是挺顺利的,由于我的摄像头是背靠背绑在一起的,所以他们的水平同步和角度偏差是不大的,所以我放弃了拼接时进行旋转和扭曲。 拼接中对图片只有平移,这对图片首尾相连还是很有帮助的。

目前拼接的图片效果还是不错的,拼接效率上没有测试,从代码上看起来,应该是足够高效的。

封装思路

为了更加模块化,封装思路如下: 1、贯彻单视频流方案,虽然涉及拼装切分,单比起双倍的编码和解码,还是要好很多的。所以输入的视频流是两个摄像头的拼接视频流。 横向拼接,分辨率一致,帧率一致,编码一致,码率一致。 这里可以简化成输入两张(一张)图片,视频流的处理还是放到视频流的相关模块中。 2、校准主副镜头,由于目前的两个摄像头都是usb摄像头,usb的可插拔等特性导致,每次启动时,主副镜头的顺序都可能不一致,所以需要校准。 3、校准主副镜头的图像,即圆心+半径。这里由于是超级广角,所以图像是一个圆,但是随着镜头的物理位置不稳定,需要进行校准。这里会强制要求两个图片的半径一致,即获得的等距投影图分辨率一致。 4、拼接矫正,尝试用等距投影进行拼接。 以上校准全部保存校准结果至本地文件,当本地文件不存在,强制要求校准,否则不需要校准。如果有必要可以随时进行校准。 5、拼接输入图片,这是一个全流程,输入一张图片(横向拼接原图输入),输出一张图片(等距投影拼接)。

暂时封装成一个类。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

your-library-name-0.1.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

your_library_name-0.1.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file your-library-name-0.1.0.tar.gz.

File metadata

  • Download URL: your-library-name-0.1.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.5

File hashes

Hashes for your-library-name-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7b1e9f110f176f949788f6973c3194889d241758d7571846ac11c94f880e590e
MD5 c60e2a5c0f90389f4fb0ca2e6292cc2c
BLAKE2b-256 341fb1a482093888eb019833cc2a530ddb501017a6c0e8478a065e914e51a513

See more details on using hashes here.

File details

Details for the file your_library_name-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for your_library_name-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f64c7518802a5e0b57abe0cbd480a760608e88308f72bfee37e3ab4a1676c93f
MD5 3f96dcaf5f52cf24950a76fcb2fc959f
BLAKE2b-256 a11037eada2aa9ea45956e400755f40643e4ea7df2bc5d1701b3b4541351033f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page