0

画像のスティッチングを行うために、Xdata/Ydata が異なる 2 つの画像をプロットする必要があります。私が実行した解決策は次のとおりです。

% Transform the second image using the estimated homography
T = maketform('projective', inv(H));
[~, xdata, ydata] = imtransform(im2, T);

% Compute bounds for stitched image
xdataout = [min(1, xdata(1)) max(size(im1, 2), xdata(2))];
ydataout = [min(1, ydata(1)) max(size(im1, 1), ydata(2))];
% Transform both images with the computed xdata and ydata
im2t = imtransform(im2, T, 'XData', xdataout, 'YData', ydataout);
T2 = maketform('affine', eye(3));
im1t = imtransform(im1, T2,'XData', xdataout, 'YData', ydataout);

% Merge the two images 
result = max(im1t, im2t); 
figure, imshow(result)

ただし、このようにして、輝度の高い画像を前景に配置しています。代わりに、参照画像 (im1) を前景に配置する必要があります。私は次のように試しました:

result = im1t; 
result(result == 0) = im2t(result == 0);

しかし、この方法では、im1t の上部境界にアーティファクトが表示されます (一種の黒い境界が表示されます)。これは、2 つの画像を登録するために行ったアフィン変換によるものだと思います。前もって感謝します

編集: imtransform のパラメーターとして「FillValues」、NaN を使用して問題を最終的に解決しました

4

0 に答える 0