拼接航空影像

问题描述

| 我正在尝试将2个航拍图像缝合在一起,几乎没有重叠,重叠可能<500 px。这些图像的分辨率为3600x2100。我正在使用OpenCV库完成此任务。 这是我的方法:
1. Find feature points and match points between the two images.
2. Find homography between two images
3. Warp one of the images using the homgraphy
4. Stitch the two images
现在,我正在尝试使其与两个图像一起使用。我在执行第3步甚至第2步时遇到了麻烦。我使用了OpenCV库中的
findHomography()
来获取两张图片之间的单应性。然后我用单应性在一张图像上叫called2ѭ。 该方法的问题在于,变换后的图像全部失真。同样,它似乎只变换图像的特定部分。我不知道为什么它不能改变整个形象。 有人可以给我一些有关如何解决此问题的建议吗?谢谢     

解决方法

在您发布的结果中,我可以看到您至少有一个关键点不匹配。如果您使用
findHomography(src,dst,0)
,它将弄乱您的单应性。您应该改用
findHomography(src,CV_RANSAC)
。 您也可以尝试使用
warpAffine
代替
warpPerspective
。 编辑:在您对问题的评论中发布的结果中,我给人的印象是匹配工作相当稳定。这意味着您也可以通过示例获得良好的结果。由于您似乎大部分都需要处理翻译,因此您可以尝试使用以下草绘算法过滤掉异常值: 计算平均(或中位数)运动矢量
x_avg
计算归一化的点积
<x_avg,x_match>
如果点积小于阈值,则丢弃
x_match
    ,为了使其适用于重叠较小的图像,您必须查看检测器,描述符和匹配项。您没有指定要使用的描述符,但我建议使用SIFT或SURF描述符以及相应的检测器。您还应该设置检测器参数以进行密集采样(即,尝试检测更多特征)。 您可以参考与这个问题有些相关的答案:OpenCV-图像拼接     ,要使用Homography拼接图像,最重要的是要在两个图像中找到对应点。对应点中的异常值越少,生成的单应性越好。 如果象素的百分比大于离群值的百分比,则使用RANSAC等强大技术以及OpenCV的FindHomography()函数(使用CV_RANSAC作为选项)仍将生成合理的单应性。还要确保传递给FindHomography函数的对应点中至少有4个内点。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...