normxcorr2 matlab 関数を使用して、画像のサブイメージの正確な位置を特定しようとしています。画像を正確な場所に配置することを除いて、すべてうまくいくようです。
全体像はコチラ
サブ画像はこれ
2 つの画像の相関関係の xpeak と ypeak を見つけ、これら 2 つの座標を使用して両方を表示しています。しかし、理由は不明ですが、本来あるべき場所にありません。
出力は次のようになります
私のコードは次のとおりです
clear
clc
%#read & convert the image
imgGray = imread('1.jpg');
imgGray = rgb2gray(imgGray);
obj = rgb2gray(imread('2.jpg'));
%# cross-correlate and find the offset
cor = normxcorr2(obj,imgGray);
[max_cc,indx] = max(abs(cor(:))); %# Modify for multiple instances (generalize)
[yPeak, xPeak] = ind2sub(size(cor),indx(1));
offset = [yPeak - size(obj,1), xPeak - size(obj,2)];
% size(obj,2)
% create a mask
xbegin = offset(1)+1;
xend = offset(1)+size(obj,2);
ybegin = offset(2)+1;
yend = offset(2)+size(obj,1);
mask = uint8(zeros(size(imgGray)));
mask(ybegin:yend,xbegin:xend) = obj;
h1 = imshow(imgGray);
set(h1,'AlphaData',0.7)
hold on
h2= imshow(mask);
set(h2,'AlphaData',0.9)
何か提案してください