0

我需要绘制两个具有不同 Xdata/Ydata 的图像以执行图像拼接。我执行的解决方案如下:

% 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 的顶部边框出现了伪影(出现了一种黑色边框)。我想这是由于我为了注册这两个图像而执行的仿射变换。提前致谢

编辑:我终于解决了使用'FillValues',NaN作为imtransform中的参数的问题

4

0 回答 0