如何计算具有不同维度的2个矩阵之间的重叠区域? 例如600X300和600X650。我们需要计算从左上角到右下角的重叠区域和从相反方向计算的第二个矩阵。
我们已经在下面的代码中看到了第一部分。
[fix_r,fix_c] = size(fix_img);
[float_r,float_c] = size(float_img);
diagLineFix = hypot(size(fix_img,1), size(fix_img,2));
diagLineFlt = hypot(size(float_img,1), size(float_img,2));
diagLine = min(diagLineFix,diagLineFlt);
end_rang = 2*diagLine;
step = 10;
for i = 1:step:end_rang
float_img_t =0;
fix_img_t = 0;
if i <fix_r && i < fix_c
float_img_t = float_img(1:i+1,1:i+1);
fix_img_t = fix_img(fix_r - (i):end,fix_c - (i):end);
if disply == 1 %display the output
registration_display(fix_img_t,float_img_t);
end
end %% more code should be here to complete diagonal transformation
end
请注意,两个重叠区域应具有相同的尺寸。
答案 0 :(得分:0)
我发现应用对角线变换的最简单方法是使用imwarp
。
使用imref2d
定义参考图像和浮动图像的空间。
使用imwarp
将转换应用于浮动图像。
我们需要设置 和(具有所需的值)以沿对角线方向转换浮动图像。
cb = checkerboard(40,20);
cb_ref = imref2d(size(cb));
background = zeros(2000);
bg_ref = imref2d(size(background));
tx = 100;
ty = 100;
T = [1 0 0;0 1 0;tx ty 1];
tform_t = affine2d(T);
[out,out_ref] = imwarp(cb,cb_ref,tform_t);
imshowpair(out,out_ref,background,bg_ref)