【问题标题】:Two matrices Overlap diagonal transformation两个矩阵重叠对角变换
【发布时间】:2018-08-12 11:55:10
【问题描述】:

如何计算两个不同维度的矩阵之间的重叠区域? 例如 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

请注意,两个重叠区域应具有相同的尺寸。

【问题讨论】:

  • “重叠区域”是什么意思?您是否检查了 matlab 内置函数,例如 corr2? (可能无关紧要,但以防万一)。

标签: matlab matrix


【解决方案1】:

我发现应用对角线变换最简单的方法是使用imwarp

  1. 我们需要先创建变换矩阵。我们需要设置 和 如下图。

  1. 使用imref2d定义参考和浮动图像的空间空间。

  2. 使用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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多