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');
但是它始终保持原图像大小,当图像向右下移动时,有部分图像被剪切掉了。  

posted on 2013-06-04 00:27  張晓  阅读(10201)  评论(0编辑  收藏  举报

导航