图像的几何变换都可以用X=imtransform(I, TFORM , method)函数完成
I:要进行几何变换的图片
TFORM :选择变换的类型
method:允许为imtransform函数选择的插值方法,以下三种可填:
‘nearest’ 最近邻插值
‘bilinear’ 双线性插值
‘bicubic’ 双三次插值
TFORM =maketform(transformtype, Matrix );
transformtype:变换的类型,例如常见的‘affine’二维仿射变换(平移、旋转、比例、拉伸等)
Matrix :转换矩阵
- 图像的平移
首先我们应求出Matrix 矩阵,确定选择变换的类型
例如将图像沿x方向平移x0,y方向平移y0
x’=x+x0;
y’=y+y0;
[x’;y’;1]=[1 0 0;0 1 0;x0 y0 1][x;y;1]
其中Matrix= [1 0 0;0 1 0;x0 y0 1]
x0=300;y0=600;
I=imread('C:\Users\14372\Desktop\Music_pictures\图片\821065.jpg');
A=[1 0 0 ; 0 1 0 ; x0 y0 1 ];
tform =maketform('affine',A);
X=imtransform(I,tform,'XData',[1 size(I,2)],'YData',[1 size(I,1)]);
figure;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(X);title('平移后的图像');
- 图像的镜像
以水平镜像为例:
同样我们应求出Matrix 矩阵,确定选择变换的类型
x’=-x+width;
为什么要+width? 先反转后平移,将反转的图像重新移入显示范围
y’=y;
所以[x’;y;;1]=[1 0 0;0 1 0;width 0 1] [x;y;1]
其中Matrix= [1 0 0;0 1 0;width 0 1]
I=imread('C:\Users\14372\Desktop\Music_pictures\图片\821065.jpg');
[height,width,dim]=size(I);
B=[-1 0 0 ; 0 1 0 ; width 0 1 ];
tform=maketform('affine',B);
X=imtransform(I,tform,'XData',[1 size(I,2)],'YData',[1 size(I,1)]);
figure;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(X);title('镜像后的图像');
垂直镜像同理,反转平移的为y