MATLAB 图像平移操作,转 - 張晓

MATLAB 图像平移操作(转)

function outImage=immove(inImage,Tx,Ty)

[m, n] = size(inImage);

Tx=fix(Tx);

Ty=fix(Ty);

%move x

if (Tx<0)

inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);

[m, n] = size(inImage);

Tx=0;

end

%move y

if (Ty<0)

inImage=imcrop(inImage,[1,abs(Ty),m,n-abs(Ty)]);

[m, n] = size(inImage);

Ty=0;

end

outImage = zeros(m+Ty, n+Tx);

outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage;

另外,用translate函数也可以实现以上功能:

I = imread(\'cameraman.tif\');

se = translate(strel(1), [25 25]);

J = imdilate(I,se);

imshow(I), title(\'Original\')

figure, imshow(J), title(\'Translated\');

但是它始终保持原图像大小,当图像向右下移动时,有部分图像被剪切掉了。