图像的几何变换一、MATLAB中的图像基本操作关于图像的函数和命令(1)F=imread(‘rice.bmp’);%读工作区下的rice图片,将其灰度值存入F矩阵中。F=imread(‘D:\rice.bmp’);%D盘下的rice图片,将其灰度值存入F矩阵中。whosF%whos命令查看图片变量F的信息G=rgb2gray(F);%将F对应的RGB彩色图像数据转换为灰度图像数据,存入G中关于图像的函数和命令(2)imwrite(G,‘rice1.bmp’);%将图像数据G写入文件rice1中,存为新图片。imshow(F);%显示图像数据F对应的图像figure;%创建新的图像窗口subplot(2,2,1);%将当前图像窗口划分为2行2列,即4个子窗口,要显示的内容在第一个子窗口中显示例如:关于图像的函数和命令(3)im2double(F);%将图象数组F转换成double精度类型im2uint8(F);%将图象数组F转换成unit8类型im2uint16(F);%将图象数组F转换成unit16类型二、图像几何变换由于拍摄图像的角度、距离等原因,可能会需要对图像进行适当的几何变换。几何变换又称为空间变换,是将一幅图像中的坐标位置映射到另外一幅图像中的新坐标位置。它不改变图像的像素值,只是在图像平面上进行像素的重新安排。三、解决几何变换问题的思路一般要考虑原图像中的某个像素点的坐标(x0,y0)和此像素点映射到新图像中的新坐标(x1,y1)之间的关系。可由下式描述:x1=f1(x0,y0);y1=f2(x0,y0);主要内容2.1基本知识2.2图像平移2.3图像镜像2.4图像转置2.5图像缩放2.6图像旋转图像平移1.平移的变换公式(x0,y0)是原图像上的点,图像水平平移量为a,垂直平移量为b,如图所示。平移后的新坐标点为:x1=x0+a;y1=y0+b;0yxabx0y0x1y1平移2.程序实现:3.MATLAB中实现平移的函数主要内容2.1基本知识2.2图像平移2.3图像镜像2.4图像转置2.5图像缩放2.6图像旋转图像镜像水平镜像:图像的左半部分和右半部分以图像竖直中轴线为中心轴进行对换。垂直镜像:图像的上半部分和下半部分以图像水平中轴线为中心轴进行对换。1.水平镜像的变换公式(x0,y0)是原图像上的点,中心轴如图所示,水平镜像对应的新坐标点为:x1=M-x0;y1=y0;0yxx0y0x1y1水平镜像M2.垂直镜像的变换公式(x0,y0)是原图像上的点,中心轴如图所示,垂直镜像对应的新坐标点为:x1=x0;y1=N-y0;0yxx0y0x1y1垂直镜像N3.程序实现:4.MATLAB中实现镜像的函数水平镜像和垂直镜像的变换矩阵:主要内容2.1基本知识2.2图像平移2.3图像镜像2.4图像转置2.5图像缩放2.6图像旋转图像转置1、图像转置的公式0yxx0y0y1x1转置图像转置即为行列互换,(x0,y0)是原图像上的点,转置后对应的新坐标点为:x1=y0;y1=x0;注意:图像尺寸有可能改变。2.程序实现:3.MATLAB中实现图像转置的函数:图像转置的变换矩阵:主要内容2.1基本知识2.2图像平移2.3图像镜像2.4图像转置2.5图像缩放2.6图像旋转图像缩放图像缩放:指图像大小按照指定的比率放大或者缩小。图像尺寸会发生变化。放大到同样尺寸:1、图像缩放的公式0yxx0y0x1y1缩放图像转置即为行列互换,(x0,y0)是原图像上的点,转置后对应的新坐标点为:x1=a*x0;y1=b*y0;注意:图像尺寸有可能改变。2.程序实现:3.MATLAB中实现图像缩放的函数:图像转置的变换矩阵:主要内容2.1基本知识2.2图像平移2.3图像镜像2.4图像转置2.5图像缩放2.6图像旋转图像旋转以原点为中心的旋转以图像中心为中心的旋转1、图像以原点为中心点的旋转公式设(x0,y0)是原图像上的点,L为(x0,y0)到原点的距离。有:sin(b)=x0/Lcos(b)=y0/Lsin(a+b)=x1/L=sin(a)cos(b)+cos(a)sin(b)cos(a+b)=y1/L=cos(a)cos(b)-sin(a)sin(b)旋转后对应的新坐标点为:x1=y0sin(a)+x0cos(a);y1=y0cos(a)-x0sin(a);0yxx0y0x1y1旋转aLbL2.程序实现:3、图像以图像中心为中心点的旋转公式(x0,y0)是原图像上的点,L为(x0,y0)到原点的距离。有:sin(b)=(x0-M/2)/Lcos(b)=(y0-N/2)/Lsin(a+b)=(x1-M/2)/L=sin(a)cos(b)+cos(a)sin(b)cos(a+b)=(y1-N/2)/L=cos(a)cos(b)-sin(a)sin(b)旋转后对应的新坐标点为:x1=(y0-N/2)sin(a)+(x0-M/2)cos(a)+M/2;y1=(y0-N/2)cos(a)-(x0-M/2)sin(a)+N/2;yxx0y0x1y1旋转aLbLM/2,N/25.MATLAB中实现图像旋转的函数:本章小结1、掌握几何变换前后像素点之间的映射关系,学会使用MATLAB语言实现常用的几何变换功能。2、了解MATLAB中关于几何变换的一些函数,学会使用它们处理图片。作业1.请找一幅待处理图片,若为RGB彩图转换为灰度图,uint8类型的。2.自己编写MATLAB程序,实现图像平移、图像水平镜像、图像转置、图像缩放、图像旋转的功能。3.要求:独立完成的同学将.m源文件和图片发给我。