OpenCV,Warp图像通过Homography矩阵

时间:2015-01-20 03:40:08

标签: android image opencv homography opencv4android

我跟随Panorama – Image Stitching in OpenCV在Android上执行相同的任务,使用openCV4Android。我的问题在于通过已建立的单应矩阵来扭曲图像。我测试了这些图像:

image1的:

enter image description here

IMAGE2:

enter image description here

通过已建立的单应性翘曲图像1的结果是:

enter image description here

你可以看到结果好扭曲但第一部分(左侧)被切断了!所以拼接结果是:

enter image description here

以上图片在参考链接页面中的结果是:

enter image description here

为什么通过单应性翘曲会削减它?或者我可能做错了什么?

2 个答案:

答案 0 :(得分:1)

图片1没有关于场景其余部分的任何信息。由于您只在图像1上应用单应性,因此它会相对于图像2变形,但不会真正添加任何其他场景信息。

要获得所需的合成图像,请在变形后检查图像1的最远x和y偏移,并将此缺失区域与拼接图像2一起添加。这不像添加那么简单,因为生成的图像是更大,但也不是太复杂。

答案 1 :(得分:0)

OK!最后,我可以解决问题。我看到了this answer并了解导致这个问题的原因以及我如何解决这个问题:

  

出现问题是因为单应性将图像的一部分映射到   负x,y值在图像区域之外,所以不能   绘制。我们希望做的是通过一些来抵消扭曲的输出   将整个扭曲图像“分流”为正的像素数   坐标(因此在图像区域内)......所以只是预乘   通过类似于上面的矩阵和你的输出你的单应性   图像将被抵消。