pano
全景图像拼接
原本是想解决网络遥控车的视角太小,不能有效观察周围情况问题,找到了广角镜头。 后来发现竟然可以用两个超过180°的摄像头拼接全景图片。
但是在网上没有找到效果好的实时全景传输项目,所以自己做一个。
我理解的全景图片生成应该主要是3个步骤 1、把图片摊平,这个步骤的学名未知。可能是将鱼眼原图(等角图片)展开成等距图片。 2、将两个鱼眼镜头的等距图分成3份,并进行水平拼接 3、拼接图按照给定的角度在还原成等角图
为了可以做到即时(30FPS),需要尽可能的提高效率。 目前最大的效率瓶颈是在拼接上。
调研拼接3张水平图片效率
技术上打算采用opencv 的 stitcher,先试试看。
opencv 用 4.X 吧,尽量用新一点的东西。
2023-05-24 进展
目前的拼接还是完全自己写的,原因是所有第三方提供的方案均不能有效的对我的图片进行拼接。 可能是我的参数有问题,但是我的需求相对简单并且我对拼接效率有要求,所以就自己写了。
写的过程还是挺顺利的,由于我的摄像头是背靠背绑在一起的,所以他们的水平同步和角度偏差是不大的,所以我放弃了拼接时进行旋转和扭曲。 拼接中对图片只有平移,这对图片首尾相连还是很有帮助的。
目前拼接的图片效果还是不错的,拼接效率上没有测试,从代码上看起来,应该是足够高效的。
封装思路
为了更加模块化,封装思路如下: 1、贯彻单视频流方案,虽然涉及拼装切分,单比起双倍的编码和解码,还是要好很多的。所以输入的视频流是两个摄像头的拼接视频流。 横向拼接,分辨率一致,帧率一致,编码一致,码率一致。 这里可以简化成输入两张(一张)图片,视频流的处理还是放到视频流的相关模块中。 2、校准主副镜头,由于目前的两个摄像头都是usb摄像头,usb的可插拔等特性导致,每次启动时,主副镜头的顺序都可能不一致,所以需要校准。 3、校准主副镜头的图像,即圆心+半径。这里由于是超级广角,所以图像是一个圆,但是随着镜头的物理位置不稳定,需要进行校准。这里会强制要求两个图片的半径一致,即获得的等距投影图分辨率一致。 4、拼接矫正,尝试用等距投影进行拼接。 以上校准全部保存校准结果至本地文件,当本地文件不存在,强制要求校准,否则不需要校准。如果有必要可以随时进行校准。 5、拼接输入图片,这是一个全流程,输入一张图片(横向拼接原图输入),输出一张图片(等距投影拼接)。
暂时封装成一个类。
Metadata
Release files for your-library-name 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| your-library-name-0.1.0.tar.gz | 11.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| your_library_name-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.3 kB
Release files / your-library-name-0.1.0.tar.gz
| Download URL | your-library-name-0.1.0.tar.gz |
|---|---|
| Size | 11.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b1e9f110f176f949788f6973c3194889d241758d7571846ac11c94f880e590e
|
|
BLAKE2b-256 checksum How to use checksums |
341fb1a482093888eb019833cc2a530ddb501017a6c0e8478a065e914e51a513
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.5
|
Release files / your_library_name-0.1.0-py3-none-any.whl
| Download URL | your_library_name-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f64c7518802a5e0b57abe0cbd480a760608e88308f72bfee37e3ab4a1676c93f
|
|
BLAKE2b-256 checksum How to use checksums |
a11037eada2aa9ea45956e400755f40643e4ea7df2bc5d1701b3b4541351033f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.5
|