Skip to main content

pano

全景图像拼接

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

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

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

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

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

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

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

2023-05-24 进展

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

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

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

封装思路

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

暂时封装成一个类。

2023-05-25 进展

基础功能完成,在比较合适的图片上表现还是挺好的,但是在一些特殊情况,比如校准时的距离与实际视频距离有较大变化的情况下,拼接效果就不好了。

所以可能需要手动或者自动进行不断的校准。

Metadata

Release files for u0-stitcher 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for u0-stitcher 0.1.6
File Size Uploaded
u0_stitcher-0.1.6.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for u0-stitcher 0.1.6
File Interpreter ABI Platform
u0_stitcher-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 23.3 kB

Release files / u0_stitcher-0.1.6.tar.gz

Download URL u0_stitcher-0.1.6.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5b88c555a9f4632439c68254dea8c288954154131568684dd231a8e2f6b14a1d
BLAKE2b-256 checksum
How to use checksums
6cf33094b7b4bb12528d0cca370f07460a02f3c4ebc345a76d3301836f710fa4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / u0_stitcher-0.1.6-py3-none-any.whl

Download URL u0_stitcher-0.1.6-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f40e592a625ea1178e43f7530845986706326d5a98fd8038a44a7d48f919077b
BLAKE2b-256 checksum
How to use checksums
4ec8e1e4557e717246cfa1ffffe0838d5a8ba3073817d54295b3ea629865b0dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page