2

画像の違いを見つけるプログラムを書いています。とりあえずAKAZEで特徴を探っているので、2枚の画像の共通点がわかりました。問題は、これら 2 つの画像に共通する部分しかないことです。両方の画像から共通部分を抽出するにはどうすればよいですか? より良い説明のために:最初の画像から共通部分を抽出し、次に2番目の画像から共通部分を抽出する必要があるためabsdiff、違いを見つけることができます。私はc ++でプログラミングしています

ありがとうございます!

4

1 に答える 1

1

最初の画像を 2 番目の画像にワープする必要があります。キーポイントの対応によって与えられた機能findHomographyを使用できます。perspectiveTransform必要なコードのほとんどはここにあります。

アップデート


ちなみに、今日も基本的に同じことをしなければなりませんでした。グレーの画像 ( ) でテストされMat1bていますが、RGB 画像 ( ) に適用するには、わずかな変更のみが必要ですMat3b。コードの関連部分は次のとおりです。

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 に答える