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