用单应矩阵拼接图像

时间:2018-07-10 16:40:44

标签: c++ opencv homography panoramas

我试图通过基于两个图像之间的单应性使图像变形来缝合图像。

我计算出单应性,并通过standard homography example获得两个图像之间的匹配点。然后,我尝试使用以下代码使用此计算将图像扭曲在一起:

// Use the Homography Matrix to warp the images
cv::Mat result;
warpPerspective(I_1,result,H_12,cv::Size(800,600));
cv::Mat half(result,cv::Rect(0,0,I_2.cols,I_2.rows));
I_2.copyTo(half);
return result;

I_1和I_2是2张图片。 H_12它们之间的单应性。

但是这会产生如下图像:

enter image description here

使用标准的Stitcher类,可以将两幅图像正确拼接:

enter image description here

所以我想知道如何根据单应性正确地变形图像以将它们组合起来。

我的完整代码是here

编辑:

我计算单应性的方式导致图像偏移。我使用了BFMatcher而不是FlannBasedMatcher,并使其与skeller链接的示例一起使用。

我也可以将其与我的方法一起使用。我需要变形第二张图片,而不是第一张。因此,上面的代码更改为:

  cv::Mat result;
  warpPerspective(I_2,result,H_12,cv::Size(800,600));
  cv::Mat half(result,cv::Rect(0,0,I_2.cols,I_2.rows));
  I_1.copyTo(half);
  return result;

0 个答案:

没有答案