我试图通过基于两个图像之间的单应性使图像变形来缝合图像。
我计算出单应性,并通过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它们之间的单应性。
但是这会产生如下图像:
使用标准的Stitcher类,可以将两幅图像正确拼接:
所以我想知道如何根据单应性正确地变形图像以将它们组合起来。
我的完整代码是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;