用MATLAB编程实现数字图像旋转-最新年精选文档 联系客服

发布时间 : 星期日 文章用MATLAB编程实现数字图像旋转-最新年精选文档更新完毕开始阅读422c8699b6360b4c2e3f5727a5e9856a5712260e

用MATLAB编程实现数字图像旋转

数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。目前,数字图像处理的信息大多是二维信息。由于数据量大,因此对计算机的计算速度、存储容量等要求较高。随着微型计算机性能的提高,原来以大型机、小型机为主机的图像处理系统演变为以微机为主机的结构,其应用也迅速普及,当前图像处理技术在工业自动化、工业检测、遥感探测、军事、航空、生物医学等各个方面都发挥着十分重要的作用。 图像旋转是一种常用的数字图像处理技术,传统的图像旋转都是在二维空间中进行的,由于旋转后图像像素点坐标不再是整数,故旋转后必须对像素点灰度进行一维插值运算或二维插值运算,尤其是当对旋转后的图像质量要求较高时,需要采用高阶插值运算。

文章从通用的图像旋转矩阵着手,给出了图像旋转变及换简单综合插值的推导过程,并用Matlab编程工具进行实验验证图像旋转结果。 1Matlab简介

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB

来解算问题要比用C、C#等语言来解算相同的事情简捷得多。 2图像旋转矩阵

一般图像的旋转是以图像的中心为原点,将图像上所有像素都旋转一个相同角度。图像的旋转变换后,图像的大小会改变。在图像旋转变换中既可以把转出显示区域的图像截去,也可以扩大范围(即是移动图像),以显示所有的图像。设点 旋转角后的对应点为,r是点到原点(0,0)的距离,在旋转过程中,r保持不变。如图1所示。

由三角函数公式可得: 写成矩阵表示为:

利用公式进行图像旋转变换时要需要注意如下两点: ①图像旋转之前,为了避免信息的丢失,一定要进行坐标移动,使旋转后的图像在计算机屏幕上能全部看得到。图像的移动是将一副图像所有点都按照给定的偏移量在水平方向沿x轴平移△x、在垂直方向沿y轴纵移△y,移动后的图像与原图像相同,图像上的点P0(x0,y0)和P(x,y)之间的关系可以用如下的移动变换矩阵表示为:

②图像旋转之后,由于坐标取整数的原因,会出现许多空洞点,对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。最简单的方法是行插值和列插值、移动平均插值;另外还有运算效复杂一点的如双线性插值、曲线插值、曲面插值和高阶插值等等。通常效果较好的其计算量也较大。文

章为了简化编程,采用简单的综合插值方法:

如果空点的上下左右四点均非空,则取这四点的平均值;如果空点的左、右紧邻的两点都是非空点,而上、下紧邻的两点有空点,则用行插值法,取这两个非空点的平均值;如果空点的上、下紧邻的两点都是非空点,而左、右紧邻的两点有空点,则用列插值法,取这两个非空点的平均值;如果空点的上下左右四周边紧邻的八个点存在非空点,则用四邻域插值法,取各非空点的以点距为权的加权平均;如果空点的四邻域的八个点均是空点,则此空点可能是图像本身的空洞点,不用插值,可跳过。

对于下一个空点,重复(1)~(5),就可完成全部空点插值。 3图像旋转算法

①读入图像文件并把图像转为灰度图像,显示图像,X轴标注为图(a);②计算图像旋转θ角后的四个顶点坐标(以便确定旋转后的图像大小);③根据四个顶点坐标,计算移动偏移量△x、△y,移动图像(目的使旋转后的图像全部能见);④计算图像旋转后的坐标并填充对应原图像坐标的灰度值;⑤显示旋转后的图像(可观察到图像中有许多空洞点),X轴标注为图(b);⑥找出四个顶点坐标围成的四边形内的空洞点并进行简单的综合插值;⑦显示经插值处理后的图像,X轴标注为图(c)。 4Matlab实验结果

根据上述算法,编制图像旋转文件Image_move.m。运行Image_move.m文件,输入小猫的图像文件名,得到较满意的实验

结果,见图2所示。图2-(a) 是原图像;图2-(b) 是旋转35度后末作插值处理的图像,可以看到有明显的空洞点;图2-(c) 是旋转35度后作了简单综合插值处理的图像,空洞点已基本消失。 平面图像旋转后比原图像大,也就是图2-(b)、图2-(c)实际上比图2-(a)大。因为在Matlab格式语句

(subplot(1,3,i),i=1,2,3。)的控制下,同在一个视窗输出的三个图像会自动缩放相同大小的三个方框内。若分不同视窗输出,会看到图2-(b)、图2-(c)比图2-(a)大许多。 5小 结

通过实验说明,图像旋转问题主要是消除旋转图像中的空洞点,消除空洞点的方法主要是采用插值法。在众多的插值方法中,文章采用的简单综合插值法,虽然不属于最好的方法,但是计算较简单,而且很有效。