ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

OpenCV,Python:缝合图像时避免最终变窄

2019-11-11 05:09:36  阅读:250  来源: 互联网

标签:opencv image-processing image-stitching python


在很大程度上要感谢stackoverflow(hereherehere)上的一些出色答案,在对齐图像方面我取得了相当不错的成功.但是,有一个问题,如下所示.当我将许多图像缝合在一起时,它们变得越来越小.

我对这种情况为什么会发生的理论是,摄像头不完全垂直于地面,因此当我添加越来越多的图像时,由于摄像头不垂直于地面,自然的视角导致远处的图像变小.不过,这很可能是完全不正确的.

但是,即使当我变换第一张图像以使其“好像”垂直于地面拍摄时(我认为),仍然会发生失真.

出色的stackoverflow社区是否对如何解决这种情况有任何想法?

这是我用来缝合图像的过程:

>利用图像的转角纬度/经度知识,使第一幅图像垂直于地面.我使用的单应性是“基本”单应性
>使用goodFeaturesToTrack()和calcOpticalFlowPyrLK()查找每个图像与最后一个图像之间的共同特征
>使用findHomography()查找两个图像之间的单应性.然后,将该单应性与所有以前的单应性组合起来以获得“净”单应性
>应用转换并将图像叠加到我到目前为止所做的最终结果中.

有一个主要限制

随着相机的移动,镶嵌图必须一次构造一张图像.我试图在无人机飞行时创建一个实时地图,使每个图像与最后一个图像一一对应.

enter image description here

解决方法:

My theory on why this is going on is that the camera wasn’t exactly perpendicular to the ground.

这是一个很好的直觉.如果相机倾斜,则当它朝一个对象移动时,该对象在框中会变大.因此,如果要将其缝合到前一帧,则需要缩小当前帧以适合前一帧中的对象.

完整的3×3单应性包括x和y方向的变形,但2×3仿射变换不包括.为了坚持当前的管道,您可以尝试查找仿射或欧几里得(刚性)变换.它们之间的区别是仿射扭曲,可以分别在x和y方向上进行剪切和拉伸,欧几里得变换仅执行平移,旋转和均匀缩放.两者都保留平行线,而完整的单应性则不然,因此最终可能会导致方形图像变得更梯形,重复此操作会缩小图像.仿射扭曲仍可以仅在一个方向上缩小,将正方形变成矩形,因此仍可能缩小.欧几里得变换只能缩放整个正方形,因此它可能会缩小.

当然,它们也不会像findHomography那样完美匹配,但是它们应该能够使您接近匹配而不会扭曲大小.使用OpenCV查找欧几里得变换或仿射变换有两种选择:

> estimateRigidTransform()而不是warpPerspective()来获得参数fullAffine = False的刚性扭曲或fullAffine = True的仿射扭曲.
> findTransformECC(),带有可选参数motionType = cv2.MOTION_EUCLIDEAN或motionType = cv2.MOTION_AFFINE(但仿射是默认设置,因此无需指定).

您可以在它们的文档页面上查看算法之间的差异,或者尝试两种方法都可以找到最适合您的算法.

如果仍然无法解决问题,则可以尝试估算使框架完全垂直于地面的单应性.如果这样做,可以先尝试将其应用于所有帧,然后再匹配图像.否则,您可能希望使用更高级的方法,而不是仅在每个帧之间找到一个单应性.

标签:opencv,image-processing,image-stitching,python
来源: https://codeday.me/bug/20191111/2017628.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有