2

我正在编写一个查找图像之间差异的程序。现在,我正在寻找 AKAZE 的功能,所以我有 2 张图像的共同点。问题是这两个图像只有一部分共同点。如何从两个图像中提取公共部分?为了更好地解释:我需要从第一个图像中提取公共部分,然后从第二个图像中提取,这样我就可以absdiff找到差异。我正在用 C++ 编程

谢谢大家!

4

1 回答 1

1

您应该将第一张图像扭曲到第二张图像上。您可以使用findHomographyperspectiveTransform您的关键点对应的功能。您可以在此处找到所需的大部分代码。

更新


顺便说一句,我今天必须做基本相同的事情。它在灰色图像Mat1bMat3b这里是代码的相关部分:

Mat1b A = imread("...");
Mat1b B = imread("...");

vector<Point2f> ptsA; 
vector<Point2f> ptsB;

// Fill ptsA, ptsB with the points given by the match of your descriptors.

Mat H = findHomography(ptsA, ptsB, CV_RANSAC); // With ransac is more robust to outliers

Mat1b warpedA;
warpPerspective(A, warpedA, H, B.size());

// Now compute diff
Mat1b res;
absdiff(warpedA, B, res);

// res is what you are looking for!
于 2015-07-07T00:56:40.153 回答