
上QQ阅读APP看书,第一时间看更新
4.3 图像镜像
镜像变换又分为水平镜像和竖直镜像。水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换,如图4.4所示。

▲图4.4 镜像变换,其中心轴在图中以虚线标出
4.3.1 图像镜像的变换公式
● 水平镜像的变换关系为

对矩阵求逆得到

● 竖直镜像变换关系可形式化地描述如下。

逆运算为

4.3.2 图像镜像的Matlab实现
一个镜像变换的示例程序如例4.2所示。
[例4.2]图像镜像
% 镜像变换
A=imread('pout.tif');
[height,width,dim]=size(A);
tform = maketform('affine',[-1 0 0;0 1 0; width 0 1]);
%定义水平镜像变换矩阵
B = imtransform(A,tform,'nearest');
tform2 = maketform('affine',[1 0 0;0 -1 0; 0 height 1]);
%定义竖直镜像变换矩阵
C = imtransform(A,tform2,'nearest');
subplot(1,3,1),imshow(A);
title('原图像');
subplot(1,3,2),imshow(B);
title('水平镜像');
subplot(1,3,3),imshow(C);
title('竖直镜像');
运行结果如图4.5所示。

▲图4.5 镜像变换效果图