首页 > 解决方案 > 将matlab上的m*n图像矩阵右移

问题描述

我目前有灰度点的 am*n 图像矩阵。我想将图像向右移动一定数量的像素。以下代码似乎将其向右和向上移动。我怎样才能解决这个问题?我需要进行某种矩阵运算来进行移位,因此内置函数将不起作用。

% Performs a shift on an input image matrix
function shift(CBout, matrix)    
    [m,n]=size(CBout);
    T=ones(m,n)*200;

    CBout = T+CBout;

    plot(CBout(1,:), CBout(2,:), 'k.');
    scale = 400;
    axis([-scale scale -scale scale])
end

标签: matlabmatrixlinear-algebra

解决方案


我能够弄清楚。我只是创建一个向量,然后将其添加到 mxn 矩阵的第一行。

% Performs a shift on an input image matrix
function shift(CBout, amount)
    disp('Shifting...');

    n = size(CBout, 2);
    T=ones(1,n)*amount;

    % Add shift amount to every element in the first row
    CBout = [CBout(1,:)+T; CBout(2,:)];

    plot(CBout(1,:), CBout(2,:), 'k.');
    scale = 400;
    axis([-scale scale -scale scale])
end

推荐阅读