图像旋转算法研究毕业论文(26页).docx
-图像旋转算法研究毕业论文-第 22 页河南农业大学本科生毕业论文题 目 图像旋转算法研究 学 院 理学院 专业班级 11级电子信息科学与技术 (信息安全专门化)班 学生姓名 雷盼盼 指导教师 朱连轩 撰写日期: 2015 年 05 月28 日图像旋转算法研究雷盼盼摘要图像旋转是图像处理中几何变换部分较复杂的一种,通过对图像旋转的基本原理分析,图像的旋转变换包括坐标的几何运算赋值和对运算结果的插值处理两个方面。运算结果赋值包括正向映射和反向映射,为了避免有未被赋值“空”像素的产生,在图像旋转中一般 采用反向映射法。现代的插值算法包括线性和非线性插值、有理插值、曲面重构和自适应区域插值等,但很多算法都由于过于复杂难于在硬件上实现,在硬件上实现常用的插值算法有最近邻插值算法,双线性插值算法,双三次插值算法等。为了解决图像旋转之后出现的空洞点问题,本文详细介绍了图像旋转中常用的差值方法:最近邻插值法、双线性插值法和双三次插值法,并通过对同一幅图像分别利用三种插值算法进行旋转30°的仿真实验,总结每种算法的特点,通过比较和分析,从而得出在进行图像旋转时,应根据不同的用途和效果选用适合的算法。 关键词:图像旋转;正向映射法;反向映射法;插值算法Image rotation algorithms researchLEI Pan-panAbstract Image rotation in image processing is a part of the complex geometric transformation, by analyzing the basic principle of image rotation, the rotation of the image transformation including the coordinates of the geometric operations assignment and interpolation processing two aspects of the operation result. Operation results assignment including forward mapping and reverse mapping, in order to avoid "empty" has not been assignment pixels, reverse mapping method commonly used in the image rotation. Modern interpolation algorithm including linear and nonlinear interpolation, rational interpolation, the interpolation curved surface reconstruction and adaptive area, etc. but many algorithms are too complex to on hardware implementation, on the hardware implementation of commonly used interpolation algorithm with nearest neighbor interpolation algorithm, bilinear interpolation algorithm, double three interpolation algorithm, etcIn order to solve the problem of empty point of the image rotation, this paper introduces in detail the image rotation difference method is commonly used in: Nearest neighbor interpolation method, bilinear interpolation method and double three interpolation method, and based on the same image respectively by using three kinds of interpolation algorithm for the simulation experiment of 30° rotation, summarizes the characteristics of each algorithm, through the comparison and analysis, and concluded in the image rotation, should be selected according to the purpose and effect of different suitable algorithm.Keywords:The image rotation;Forward mapping method;Reverse mapping method;The interpolation algorithm 目录1 绪论11.1 研究背景及意义11.2 研究背景及意义11.3 课题研究的基本方法21.4 论文构成及研究内容32 图像旋转的几何原理42.1 正向映射法42.2 反向映射法52.3 图像绕中心旋转几何原理73 常用的插值算法123.1 插值算法123.2 最近邻接插值算法123.1.1 最近邻插值算法几何原理123.2.2 最近邻插值算法的函数原理133.3 双线性差值算法133.3.1 双线性差值算法原理143.4双三次插值算法173.4.1 双三次插值算法的原理174 基于matlab仿真实验和结果194.1 软件MATLAB的简介194.2 MATLAB在图形处理方面的应用194.3 三种插值算法的matlab实验204.3.1前两种插值算法的matlab代码实验过程204.3.2三种插值算法的实验结果对比214.4三种插值算法的评价指标224.4.1均方误差MSD224.4.2 差异点比例PD%234.4.3 相对运行时间T235 结论24参考文献25致谢271 绪论1.1 研究背景及意义近几十年来 ,在现代化工业自动化生产中,有各种各样的对产品检测、生产监视的工作,如集成电路上的字符识别、电子装配线的元件自动定位、生产线上产品的外形检测等。通常这种带有智能性和高度重复性的工作都是由肉眼来完成的,而在有些情况下,如对产品形状匹配,尺寸大小的精确快速测量等,靠肉眼几乎无法连续地检测。这样对新的检测方法就提出了迫切的需求。于是人们开始考虑用摄像机拍摄图像后送入计算机或图像处理设备,通过数字化的处理来进行尺寸、形状等的判别。图像在人类感知中扮演着十分重要的角色,人们随时随处都要接触图像。数字图像处理即是指使用数字计算机对图像进行加工与处理。在对倾斜图像进行校正,对多幅图像进行比较和模式识别,对图像进行剪裁和拼接前等处理过程中都要用到图像旋转。随着相关科学的发展,以及各领域对图像处理要求的提高,数字图像处理技术得到了更加深入、广泛的迅速的发展。数字图像处理不仅是计算机科学的一个重要研究领域,而且也是计算机图像处理软件的一项核心技术。而图像的旋转是图像处理中的一个非常重要的环节,也是图像的几何变换手法之一。图像的旋转算法是图像的基础算法。在数字图像处理过程中,经常要用到图像旋转,例如:在进行图像扫描时,需要运用旋转实现图像的倾斜校正;在进行多幅图像的比较和模式识别和对图像进行剪裁和拼接前,都需要进行图像的旋转处理1。在数字图像处理中,图像旋转是一种最基本、最常用的几何运算2,是常用的数字图像处理技术,目前已广泛地应用于军事、航空、生物医学等方面。其研究成果可以广泛应用于现代社会生产生活的各个领域:在现代工业自动化生产中,涉及到各种各样的检测、生产监视、和零件尺寸检验等应用,广泛的应用在汽车、制药、军事、电子与电气、制造、包装、食品和医学等领域。例如:汽车零配件批量加工的尺寸检查、高速贴片机上对电子元件的快速定位、电子装配线的元件自动定位、对管脚数目的检查、IC芯片上的字符识别、医药包装盒上的污点自动检测、食品包装上面对生产日期的辨识和标签贴放位置的检查,以及医疗方面对细胞数量和性质的判断、图像扫描输入时的倾斜矫正、多幅图像的比较和模式识别、图像的剪裁和拼接等。几乎所有这些图像的检测都离不开图像旋转这个预处理过程,都需要对图像进行实时地旋转处理后再进行正确地处理和识别等后处理过程。1.2 国内外研究现状 科学研究和统计表明,人类从外界获得的信息约有 75来自于视觉系统3。早期的数字图像处理技术出现的主要目的是为了改善图像采集设备的成像质量,以方便人类获取信息。20 世纪 60 年代初期,美国喷气推进实验室首次成功应用数字图像处理技术对太空船返回月球图片信息进行处理。随着计算机技术、多媒体技术以及人工智能技术的不断向前发展,数字图像处理技术受到了前所未有的广泛重视,并获得了尤为突出的进步。数字图像处理技术已经走出了实验室,走入到更为广阔的应用领域中,包括工业领域、航空航天领域、生物医疗领域、安防领域,甚至走入了我们的日常生活4。对图像旋转系统的研究,重点在于图像旋转算法以及系统体系结构。 国外对图像旋转算法的研究可追溯至 20 世纪 80 年代。1980 年 Catmull 和 Smith 在硬件上用两步法实现了图像旋转5,但是第一步变换中,丢失图像中的高频部分,图像质量下降明显。Paeth 和 Tanaka 在 1986 年提出了三步实现的办法,只需通过三次平移就可以完成图像旋转处理,便于硬件实现,但是图像质量未得到很好的改善。1996 年,Kiern 提出用快速傅里叶变换实现图像旋转的方法6,不同于直接法、两步法或三步法在完成坐标变换后需要进行图像插值,该方法将坐标变换与图像插值合二为一,但是计算量庞大,不利于硬件。袁凤刚,刘建成7研究了不同插值方法实现数字图像旋转研究,分析了图像旋转的几何原理,并对图像旋转中用到的插值处理方法,即:最近邻法、双线性插值法和双三线性插值法,进行了比较和分析,在此基础上对其应用进行了阐述。郝蕊洁,万小红8研究了插值算法在图像旋转中的应用,详细介绍了图像旋转中常用的最近邻插值法、双线性插值法和双三次插值法,并通过对同一幅图像分别利用三种插值算法进行旋转的仿真实验,选择合适的算法。康牧,凌凤彩9认为旋转算法采用的插值方法毒在不足,容易出现“锯齿”形边缘和模糊的现象,改变了图像的表示模型,为此提出了平面插值和球面插值相结合的图像插值方法,从而避免了传统的插值方法用统一的模型逼近所有像素的不足,它对不同的情况采用不同的插值方法。理论分析和实验结果表明了该方法的有效性。1.3 课题研究的基本方法从原图像和目标图像关系来考虑,可以把图像的变换分为两种:一种是原图像到目标图像的变换;另一种是目标图像到原图像的变换即逆变换。由于在图像旋转变换的过程中要用到浮点运算,原始图像为整数的像素坐标,变换为目标图像的位置坐标并非整数,反过来当目标图像的相应位置坐标为整数,原图像的相应位置坐标一般也为非整数。于是旋转后必须对新的像素点灰度值进行插值运算10。因此,图像的插值算法是数字图像的几何运算的重要环节,是图像变换处理的基础算法。图像的旋转变换包括坐标的几何运算和对运算结果的插值处理两个方面,并且根据选择插值方法的不同,得到的旋转效果也不同。传统的插值方法有:最近邻插值法、双线性插值法、双三次卷积法11、双三次插值法12、双三线性插值法7、二元Newton-Thiele型向量有理插值曲面法13、B样条插值法14、有理样条插值法、双三次插值有理样条法、曲面拟合插值法15、线性空间移变技术插值法16、边缘保护插值法17、区域方向自适应插值法18、扇形滤波器插值法19、向量分类法20、边缘自适应插值法21、无级平滑法22、梯度角约束插值法23、偏微分方程法24-25、基于模糊理论的方法26、四元数插值法27、内容自适应插值法28等。文献介绍,最近邻法速度快,方法简单,但生成图像效果较差;双三次插值7算法计算精度高,效果好,但计算复杂,速度较慢;双线性插值算法效果较好,运行时间较短。另外,实现赋值的方法分为正向映射法和反向映射法:正向映射法是指,从原始图像坐标出发,计算出在旋转图像上坐标,然后将原始图像该坐标的灰度值赋给对应旋转图像该坐标点;反向映射法则反之。由于数字图像中像素坐标值只能为整数,旋转任意角度后由正向映射法求出的坐标值往往为小数这样就会有未被赋值的”空”像素。为避免这种情况发生,图像旋转中一般采用反向映射法即由变换后的映射图像像素的坐标值,逆推出在原图像中对应的坐标值。在反向映射过程中,由于每个像素映射到新的位置,新位置坐标可能不为整数,而对于数字图像来说,其像素值仅在坐标为整数处有定义,所以在非整数处的像素值就要用其周围一些整数坐标处的像素值来计算,即灰度插值10。1.4 论文构成及研究内容本论文首先分别从正向映射和反向映射两个方面分析了图像旋转的几何原理。因为对图像旋转的处理,处理要进行几何运算意外,还需要对目标图像的坐标位置进行插值处理。进而引出了对图像旋转插值算法的研究。插值算法的计算方法有许多种,本文将分别采用基于正向映射的最近邻插值算法、基于反向映射的双线性插值算法 、双三次插值算法实现图像旋转,并分别分析三种算法的实现效果和对比三种算法的效果。并且利用mable来分别用三种插值算法来实现图像旋转。本论文的构成为:1 绪论2 图像旋转的几何原理3 常用的插值算法4 基于mable仿真实验和结果5 结论2 图像旋转的几何原理2.1 正向映射法旋转有一个绕着什么转的问题,通常的做法是以图像的中心为圆心旋转。已知正向映射法是指从原始图像坐标出发,计算出在旋转图像上坐标,然后将原始图像该坐标的灰度值赋给对应旋转图像该坐标点;在图2.1所示正向映射图像旋转示意图的坐标系A中,以图像的中心为原点0,向右为x轴正方向,向上为y轴正方向,点()为原始图像坐标,点(,)为目标图像坐标,点()顺时针旋转角后坐标变换为(,)。设r为点()到原点(0,0)的距离,在旋转过程中,r保持不变, 为()与原点所成的直线与x轴之间的角度,则有: r r () 0 图2.1 正向映射图像旋转示意图 旋转a角度前: = rcos尾 (2.1) = r (2.2)旋转后: = r= r + r = + (2.3) = = = (2.4)2.2 反向映射法与正向映射法相反,反向映射法是指从目标图像坐标出发,计算出在旋转图像上坐标,然后将目标图像该坐标的灰度值赋给对应原始图像该坐标点;在图2.2所示反向映射图像旋转示意图的坐标系B中,点()为原始图像坐标,点(,)为目标图像坐标,以图像的中心为原点0,向右为x轴正方向,向上为y轴正方向,点()顺时针旋转角后坐标变换为(,)。设r为点()到原点(0,0)的距离,在旋转过程中,r保持不变,为()与原点所成的直线与x轴之间的角度,则有: y () r () r 0 x图2.2 反向映射图像旋转示意图旋转a角度前: = r (2.5) = r (2.6)旋转后: = r = r r = (2.7) = r = r = (2.8)基于正向映射旋转以矩阵的形式表示为: (2.9)基于反向映射旋转,即公式(2.9)的逆变换为: (2.10)2.3 图像绕中心旋转几何原理 上述的旋转式绕坐标原点的,即在最常见的笛卡尔坐标系内完成旋转操作,而在实际应用中,旋转都是绕图像中心进行的。所以首先应该将坐标系从原点平移到图像的中心,然后进行旋转,旋转结束后,再平移回原点。将绕图像中心旋转记为坐标系,其x轴向右增长,y轴向下增长;将绕坐标原点旋转记为坐标系,其x轴向右增长,y轴向下增长。如图2所示,设图像的宽度为w,高度为h,图中原点在坐标系中的坐标为,将系平移到系的位值。 0.5w 0.5h 图2.3 坐标系转换示意图 则坐标变换的矩阵表示为: * (2.11)逆变换矩阵为: = * (2.12)于是,坐标系中图像的旋转变换可分为3步:(1) 应用公式(2.11)将坐标系变成坐标系;(2) 应用公式(2.10)在坐标系中将该点顺时针旋转角;(3) 应用公式(2.12)将坐标系变回坐标系。这样,我们就得到了变换矩阵,是上面三个矩阵的级联。则旋转图像矩阵表示如下: = * * (2.13) 整理可得: = * (2.14)其中,, 表示原图的宽和高,, 表示旋转后得到新图的宽和高。公式(2.13)的逆变换为 = * * * (2.15)整理可得: = * (2.16)这样,对于新图中的每一点(),可以根据公式(2.16)求出对应原图中的(),得到它的灰度,如果超出原图范围,则填成白色。要注意的是:原始图像的像素坐标为整数,由于有浮点运算,变换后的目标图像的坐标位置可能不是整数。所以,对图像的旋转处理除了要进行几何运算,还需要对目标图像的坐标位置进行插值处理。3常用的插值算法3.1 插值算法插值算法(interpolation),也称“重置样本”。是指在不生成像素的情况下增加图像像素大小的一种方法也就是根据中心像素点的坐标模拟周边像素值的方法,在图像的旋转操作中应用最为广泛,下面介绍3种插值算法。3.2 最近邻接插值算法最近邻接插值算法也称作零阶插值,是最简单的插值方法。就是令变换后像素的灰度值等于距它最近的输入像素的灰度值。最近邻算法简单,在很多情况下都能得到令人满意的效果,但当图像中中包含像素之间灰度级有变化的细微结构时, 最近邻插值算法会在图像中产生人工的痕迹。最近邻插值算法的定位误差最大是半个像素。这种误差在物体具有直线边界时就会显现出来,在变换后可能会呈现阶梯状。特点:造成的空间偏移误差为像素单位,计算简单。3.2.1最近邻插值算法几何原理如图 3.1 所示,该算法的几何原理是首先计算出与浮点坐标()相邻的四个点中距离最近的一个整数坐标点A的灰度值,并将作为F近似值赋给目标图像上像素点的灰度值: C D· A B图3.1 最近邻插值法示意图3.2.2 最近邻插值算法的函数原理在一维的情况下。一次近似时插值函数为矩形函数:rx = (3.1)二维的情况下此近似函数为方柱函数: r = (3.2)显然,相对旧采样点fi,j 来说,新采样点fk,l的值取决于式(3.3):fk,l = (3.3)这一算法只需对fk,l赋值,并没有做任何运算,它算法简单,在实际执行中效率较高。在旋转过程中,用此方法会让图像产生边缘锯齿。3.3 双线性差值算法双线性插值又叫一阶插值法,它要经过三次插值才能获得最终结果,是对最近邻插值法的一种改进双线性插值是利用需要处理的原始图像像素点周围的四个像素点的相关性,考虑到了点(x,y)的4个直接邻点对它的影响,通过双线性算法计算得出。一般可以得到令人满意的插值效果。考虑到精度和速度的双重需求,双线性插值在插值算法中是一种理想的,也是使用频率最高的一种插值方法。其算法只需要计算插值点到近邻点的距离,以距离加权,计算简单,计算速度比较快,而且既能保证精度的需求,也能满足速度的需要,所得的结果比较满意,没有出现灰度不连续的现象。在同一行内根据待插值像素点与其前后的原图像像素点的位置距离进行加权线性插值,即离原图像像素点越近的待插值像素点,原图像像素的加权系数就越大;行间根据待插值行与其上下的原图像行间的距离进行加权线性插值,即离原图像行越近的待插值行,原图像行的加权系数就越大。3.3.1 双线性差值算法原理实现赋值的方法有正向映射法和反向映射法两大类,通常反向映射比正向映射更容易实现。本文采用反向映射法,如图3.2 所示。该方法是指从旋转图像上像素点坐标出发,求出原始图像上对应的像素点坐标x,y,然后将原始图像上对应像素点 x,y的灰度值赋给旋转图像上对应像素点。 反向映射 x,y 灰度赋值 旋转图像 原始图像图3.2 反向映射示意图 双线性插值算法的原理是将待求像素点的灰度值取为与它相邻的四个点的灰度值在行和列两个方向上的线性内插,对于目标图像的一个坐标 ,通过向后映射法得到该坐标在原始图像中对应的浮点坐标x,y, 利用点 x,y在原始图像中所对应的周围四个坐标为i,j、i+1,j+1 像素值求得该处的灰度值gx,y。根据下面的方法计算 x,y点处的灰度值。 如图3.3所示: y i+1,j+1 0 x 图3.3 双线性插值算法原理图设坐标i,j、i+1,j+1分别对应的灰度值为gi,j、g、g、gi+1,j+1。浮点坐标x,y满足:。计算步骤如下:首先可以由相邻坐标的像素值gi,j和g在x方向上进行线性插值得到x,j 处的像素值gx,j,可由以下公式计算得到: gx,j = x-i * g + * gi,j (3.4)再由另外两个相邻坐标的像素值g和gi+1,j+1在x方向上进行线性插值得到处的像素值g,可由以下公式计算得到:g = x-i * gi+1,j+1 + * g (3.5)然后由gx,j和g 在y方向上进行线性插值就可以得到点x,y处的灰度值gx,y,可由以下公式计算得到:gx,y = y-j * g + * gx,j (3.6)即整理可得:gx,y = y-j * * gi+1,j+1 + y-j * * g + * x-i * g + * * gi,j (3.7)双线性插值算法相对最近邻插值法,其速度慢,但是得到的图像质量高,纹理较清晰,能够满足大多数程序的要求。双线性插值算法用4个相邻点做插值,可能会引起小的分辨率降低和模糊,原因在于其平均化的本性。减轻了在最近邻插值中出现的阶梯状边界的问题。3.4 双三次插值算法双三次插值算法又称为立方卷积插值。双线性插值法考虑到浮点坐标 x,y的4个直接邻点对它的影响。而双三次插值法则考虑到该点周围16个邻点对它的影响。双三次插值算法不仅考虑了直接邻点的灰度值对待采样点的影响,还考虑了邻点间灰度值变化率的影响, 频带宽,在图像高频区正确性更高,比占主导地位的双线性插值保留更好的图像细节,是二维空间中最常用的插值方法之一。 3.4.1 双三次插值算法的原理如图3.4所示,双三次插值算法是对待求像素点相邻的十六个点的灰度值作三次插值,从而计算出点x,y的灰度值fx,y,令x = i + u,y = j + v,其中 u,v为0,1)区间的浮点数。 Y i-1,j-1 i-1,j+1 i,j u r i+2,j-1 i+2,j+2 X 图3.4 双三次插值算法原理图则 fx,y可由以下公式计算得到:fx,y = (3.8)其中: = (3.9) = (3.10) = (3.11)其中三次多项式s插值函数sx=/ sx = (3.12) 是周围像素沿x方向与原点的距离。因此求得的待采样点灰度值更接近原来采样点值,此方法是用增大计算量来换取待采样点精度的进一步提高。双三次插值法旋转后图像的细节最清楚,效果最好,所以一般用于对图像质量要求较高的场合。4 基于matlab仿真实验和结果4.1 软件MATLAB的简介 MATLAB是美国MathWorksMATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计