收藏 分销(赏)

数字图像处理第六章图像的几何变换.ppt

上传人:精**** 文档编号:12590783 上传时间:2025-11-07 格式:PPT 页数:81 大小:2.12MB 下载积分:18 金币
下载 相关 举报
数字图像处理第六章图像的几何变换.ppt_第1页
第1页 / 共81页
数字图像处理第六章图像的几何变换.ppt_第2页
第2页 / 共81页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六章 图像的几何变换,6.1 几何变换基础,6.1.1 概述,图像的几何变换,,按照需要使图像产生大小、形状和位置的变化。,从变换的性质分,图像的几何变换有平移、比例缩放、旋转、反射和错切等基本变换,透视变换等复合变换,以及插值运算等。,除了插值运算外,常见的图像几何变换可以通过与之对应的矩阵线性变换来实现。,为了能够用统一的矩阵线性变换形式,表示和实现这些常见的图像几何变换,,需要引入一种新的坐标,即,齐次坐标,。,6.1.2 齐次坐标,现设点,P,0,(,x,0,y,0,)进行平移后,移到,P,(,x,y,),其中,x,方向的平移量为,x,,,y,方向的平移量为,y,。那么,点,P,(,x,y,)的坐标为,如图6-1所示。这个变换用矩阵的形式可以表示为,图6-1 点的平移,通常将23阶矩阵扩充为33阶矩阵,以拓宽功能。,下面再验证一下点,P,(,x,y,)按照33的变换矩阵,T,平移变换的结果。,从上式可以看出,引入附加坐标后,扩充了矩阵的第3行,并没有使变换结果受到影响。,这种用,n,1维向量表示n维向量的方法称为,齐次坐标表示法,。,因此,2D图像中的点坐标(,x,y,)通常表示成齐次坐标(,Hx,Hy,H),其中,H,表示非零的任意实数,当,H,1时,则(,x,y,1)就称为点(,x,y,)的规范化齐次坐标。,由点的齐次坐标(,Hx,Hy,H,)求点的规范化齐次坐标(,x,y,1),可按如下公式进行:,齐次坐标的几何意义相当于点(x,y)落在3D空间H1的平面上,,如图6-2所示。如果将XOY 平面内的三角形abc 的各顶点表示成齐次坐标(,x,i,y,i,1)(,i,=1,2,3)的形式,就变成,H,1平面内的三角形,a,1,b,1,c,1,的各顶点。,图6-2 齐次坐标的几何意义,齐次坐标在2D图像几何变换中的,另一个应用,是:如某点S(60 000,40 000)在16位计算机上表示则大于32 767的最大坐标值,需要进行复杂的操作。但如果把,S,的坐标形式变成(,Hx,Hy,H,)形式的齐次坐标,则情况就不同了。在齐次坐标系中,设,H,12,则(60 000,40 000)的齐次坐标为(1/2,x,1/2,y,1/2),那么所要表示的点变为(30 000,20 000,1/2),此点显然在16位计算机上二进制数所能表示的范围之内。,因此,,采用齐次坐标,并将变换矩阵改成33阶的形式后,便可实现所有2D图像几何变换的基本变换。,6.1.3 二维图像几何变换的矩阵,利用齐次坐标及改成33阶形式的变换矩阵,实现2D图像几何变换的基本变换的一般过程是:,1、将2,n,阶的二维点集矩阵,表示成齐次坐标,2、,然后乘以相应的变换矩阵即可完成。即,变换后的点集矩阵=变换矩阵,T,变换前的点集矩阵,(图像上各点的新齐次坐标)(图像上各点的原齐次坐标),设变换矩阵,T,为,则上述变换可以用公式表示为,图像上各点的新齐次坐标规范化后的点集矩阵为,引入齐次坐标后,表示2D图像几何变换的33矩阵的功能就完善了,可以用它完成2D图像的各种几何变换。下面讨论33阶变换矩阵中各元素在变换中的功能。几何变换的33矩阵的一般形式为,33的阶矩阵T可以分成四个子矩阵。其中,这,一子矩阵可使图像实现恒等、比例、反射(或镜像)、错切和旋转变换。,l m,这一行矩阵可以使图像实现平移变换,。,p,q,T,这一列矩阵,可以使图像实现透视变换,但当,p,=0,,q,=0时它无透视作用。,s,这一元素可以使图像实现全比例变换,。例如,将图像进行全比例变换,即,将齐次坐标 规范化后,。由此可见,当s1时,图像按比例缩小;当0,s,1时,整个图像按比例放大;当,s,1时,图像大小不变。,6.2 图像比例缩放,6.2.1 图像比例缩放变换,图像比例缩放,是指,将给定的图像在x轴方向按比例缩放,fx,倍,在,y,轴方向按比例缩放,fy,倍,从而获得一幅新的图像,。,如果,fx,fy,,即在,x,轴方向和,y,轴方向缩放的比率相同,,称这样的比例缩放为,图像的全比例缩放,。如果,fx,fy,,图像的比例缩放会改变原始图像的像素间的相对位置,产生几何畸变。,设原图像中的点,P,0,(,x,0,y,0,)比例缩放后,在新图像中的对应点为,P,(,x,y,),则,P,0,(,x,0,y,0,)和,P,(,x,y,)之间的对应关系如图6-3所示。,图6-3 比例缩放,比例缩放前后两点,P,0,(,x,0,y,0,)、,P,(,x,y,)之间的关系用矩阵形式可以表示为,(6-1),公式(6-1)的逆运算为,即,比例缩放所产生的图像中的像素可能在原图像中找不到相应的像素点,这样就必须进行插值处理。插值处理常用的方法有两种,,一种是直接赋值为和它最相近的像素值,,另一种是通过一些插值算法来计算相应的像素值。,前一种方法计算简单,但会出现马赛克现象;后者处理效果要好些,但是运算量也相应增加。在下面的算法中直接采用了前一种做法。实际上,这也是一种插值算法,称为,最邻近插值法,(Nearest Neighbor Interpolation)。,首先讨论图像的比例缩小,。最简单的比例缩小是当,fx=fy,=12时,图像被缩到一半大小,图像缩小之后,因为承载的信息量小了,所以画布可相应缩小。此时,只需在原图像基础上,每行隔一个像素取一点,每隔一行进行操作,即取原图的偶(奇)数行和偶(奇)数列构成新的图像,如图6-4所示。,图6-4 图像缩小一半,如果图像按任意比例缩小,则需要计算选择的行和列。,如果,M,N,大小的原图像,F,(,x,y,)缩小为,kM,kN,大小(,k,1)的新图像,I,(,x,,,y,)时,则,I,(,x,y,)=,F,(int(,c,x,),int(,c,y,),其中,,c,=1,k,。由此公式可以构造出新图像,如图6-5所示。,图6-5 图像按任意比例缩小,当,fx,fy,(,fx,fy,0)时,图像不按比例缩小,,这种操作因为在x方向和y方向的缩小比例不同,一定会带来图像的几何畸变。图像不按比例缩小的方法是:,如果,M,N,大小的旧图,F,(,x,,,y,)缩小为,k,1,M,k,2,N,(,k,1,1,,k,2,1)大小的新图像,I,(,x,,,y,)时,则,I,(,x,y,)=,F,(int(,c,1,x,),int(,c,2,y,),其中,由此公式可以构造出新图像。,图像在缩小操作中,是在现有的信息里如何挑选所需要的有用信息。,在图像的放大操作中,则需要对尺寸放大后所多出来的空格填入适当的像素值,这是信息的估计问题,所以较图像的缩小要难一些。,当,fx,fy,2时,图像被按全比例放大2倍,放大后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于原图中的(0,0.5)像素,该像素不存在,可以近似为(0,0)也可以近似(0,1);(0,2)像素对应于原图像中的(0,1)像素;(1,0)像素对应于原图中的(0.5,0),它的像素值近似于(0,0)或(1,0)像素;(2,0)像素对应于原图中的(1,0)像素,依此类推。其实这是将原图像每行中的像素重复取值一遍,然后每行重复一次。图6-6是原始图像,图6-7和图6-8是分别采用上述两种近似方法放大后的图像。,图6-6 放大前的图像,图6-7 按最近邻域法放大两倍的图像,图6-8 按插值法放大两倍的图像,一般地,按比例将原图像放大,k,倍时,如果按照最近邻域法则需要将一个像素值添在新图像的,k,k,的子块中,如图6-9所示。显然,如果放大倍数太大,按照这种方法处理会出现马赛克效应。当,fx,fy,(,fx,fy,0)时,图像在x方向和y方向不按比例放大,此时,这种操作由于,x,方向和,y,方向的放大倍数不同,一定带来图像的几何畸变。,放大的方法是将原图像的一个像素添到新图像的一个,k,1,k,2,的子块中去。为了提高几何变换后的图像质量,常采用线性插值法,。该方法的原理是,,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值,,如图6-10所示。,图6-9 按最近邻域法放大五倍的图像,图6-10 线性插值法示意图,简化后的灰度值计算式如下:,g,(,x,,,y,)=(1-,q,)(1-,p,),g,(,x,,,y,)+,p,g,(,x,+1,,y,)+,q,(1-,p,),g,(,x,,,y,+1)+,p,g,(,x,+1,,y,+1),式中:,g,(,x,,,y,)为坐标(,x,,,y,)处的灰度值,x、y 分别为不大于,x,y,的整数。关于这个问题的详细算法及其实现,读者可以参考有关参考文献。,6.2.2 比例缩放的实现,图6-11 图像比例缩放处理结果,6.3 图 像 平 移,6.3.1 图像平移变换,图6-12 图像平移,设点,P,0,(,x,0,y,0,)进行平移后,移到,P,(,x,y,),其中,x,方向的平移量为,x,,,y,方向的平移量为,y,。那么,点,P,(,x,y,)的坐标为,利用齐次坐标,变换前后图像上的点,P,0,(,x,0,y,0,)和,P,(,x,y,)之间的关系可以用如下的矩阵变换表示为,(6-2),对变换矩阵求逆,可以得到式(6-2)的逆变换,即,这样,平移后的图像上的每一点都可以在原图像中找到对应的点。例如,对于新图中的(0,0)像素,代入上面的方程组,可以求出对应原图中的像素(-,x,,-,y,)。如果,x,或,y,大于0,则点(-,x,,-,y,)不在原图像中。,对于不在原图像中的点,可以直接将它的像素值统一设置为0或者255,。同样,若有像素点不在原图像中,也就说明原图像中有点被移出显示区域。如果不想丢失被移出的部分图像,可以将新生成的图像宽度扩大|,x,|,高度扩大|,y,|。,图6-13 平移前的图像,图6-14 平移后的图像,图6-15 平移扩大后的图像,6.4 图 像 镜 像,6.4.1 图像镜像变换,图像的镜像(Mirror)变换分为两种:一种是水平镜像,另外一种是垂直镜像。,图像的水平镜像操作是将图像左半部分和右半部分以图像垂直中轴线为中心进行镜像对换,;,图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心进行镜像对换,,如图6-16所示。,图6-16 图像的镜像,图像的镜像变换也可以用矩阵变换表示。设点,P,0,(,x,0,y,0,)进行镜像后的对应点为,P,(,x,y,),图像高度为,f,Height,宽度为,fWidth,,原图像中,P,0,(,x,0,y,0,)经过水平镜像后坐标将变为(,fWidth,-,x,0,,,y,0,),其矩阵表达式为,(6-3),逆运算矩阵表达式为,即,同样,,P,0,(,x,0,y,0,)经过垂直镜像后坐标将变为(,x,0,,,fHeight-y,0,),其矩阵表表达式为,(6-4),逆运算矩阵表达式为,即,图6-18 水平镜像,图6-19 垂直镜像,图6-17 镜像前的图像,6.5 图像旋转,6.5.1 图像旋转变换,一般图像的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。,图像的旋转变换是图像的位置变换,但旋转后,图像的大小一般会改变。,和图像平移一样,在图像旋转变换中既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。如图6-20、图6-21所示。,图6-20 旋转前的图像,图6-21 旋转后的图像(扩大图像、转出部分被截),同样,图像的旋转变换也可以用矩阵变换表示。设点,P,0,(,x,0,y,0,)旋转角后的对应点为P(x,y),如图6-22所示。那么,旋转前后点,P,0,(,x,0,y,0,)、,P,(,x,y,)的坐标分别是:,图6-22 图像旋转,角,写成矩阵表达式为,(6-5),其逆运算为,利用公式(6-5)可以确定旋转后图像上的像素。例如,当,=30时,公式(6-5)为,而且,此时,x,min,=0.866-0.53=-0.634;,x,min,=0.8663-0.5=2.098,y,min,=0.866+0.5=1.366;,y,max,=0.8663+0.53=4.098,图6-23 图像旋转,角,利用公式(6-5)进行图像旋转时需要注意如下两点:,(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移,具体的做法有如图6-24所示的两种方法。,图6-24 图像旋转之前进行的平移,(2)图像旋转之后,会出现许多空洞点,如图6-23所示。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。最简单的方法是行插值方法或列插值方法:,找出,当前行的最小和最大的非白点的坐标,,记作:(,i,k,1)、(,i,k,2)。,在(k1,k2)范围内进行插值,插值的方法是:,空点的像素值等于前一点的像素值,。,同样的操作重复到所有行。经过如上的插值处理之后,图像效果就变得自然。如图6-25所示。列插值方法与此类同,请读者自己给出。,图6-25 图6-23中的图像处理后的效果,图6-26 旋转前的图像,图6-27 旋转15并进行插值处理的图像,图6-28 被放大的旋转前图像,6-29 旋转300并进行插值处理的放大图像,6.6 图像复合变换,6.6.1 图像复合变换,图像的复合变换,是指,对给定的图像连续施行若干次如前所述的平移、镜像、比例、旋转等基本变换后所完成的变换,,图像的复合变换又叫,级联变换,。利用齐次坐标,对给定的图像依次按一定顺序连续施行若干次基本变换,其变换的矩阵仍然可以用33阶的矩阵表示,而且从数学上可以证明,,复合变换的矩阵等于基本变换的矩阵按顺序依次相乘得到的组合矩阵。,设对给定的图像依次进行了基本变换,F,1,,,F,2,,,F,N,,它们的变换矩阵分别为,T,1,,,T,2,,,T,N,,按照公式(6-1)(6-6)的表示形式,图像复合变换的矩阵,T,可以表示为:,T,=,T,N,T,N,-1,T,1,。,1.复合平移,设某个图像先平移到新的位置,P,1,(,x,1,y,1,)后,再将图像平移到,P,2,(,x,2,y,2,)的位置,则复合平移矩阵为,由此可见,尽管一些顺序的平移,用到矩阵的乘法,但最后合成的平移矩阵,只需对平移常量作加法运算。,(6-7),2.复合比例,同样,对某个图像连续进行比例变换,最后合成的复合比例矩阵,只要对比例常量作乘法运算即可。复合比例矩阵如下:,(6-8),3.复合旋转,类似地,对某个图像连续进行旋转变换,最后合成的旋转变换矩阵等于两次旋转角度的和,复合旋转变换矩阵如下式所示:,(6-9),上述均为相对原点(图像中央)作比例、旋转等变换,如果要相对某一个参考点作变换,则要使用含有不同种基本变换的图像复合变换。不同的复合变换,其变换过程不同,但是,无论它的变换过程多么复杂,都可以分解成一系列基本变换。,相应地,使用齐次坐标后,图像复合变换的矩阵由一系列图像基本几何变换矩阵依次相乘而得到。下面通过一个例子讨论含有不同种基本变换的图像复合变换。,从6.2和6.5节的讨论中可以看出,在进行图像的比例缩放、图像的旋转变换时,一般地,在进行图像的几何变换时,除了要进行其本身的几何变换外,还要进行灰度级插值处理。,灰度级插值处理可采用如下两种方法,。第一,可以把几何变换想像成将输入图像的灰度一个一个像素地转移到输出图像中。如果一个输入像素被映射到四个输出像素之间的位置,则其灰度值就按插值算法在四个输出像素之间进行分配。,把这种灰度级插值处理称为像素移交(pixel carryover)或称为向前映射法,如图6-30所示。,另一种更有效的灰度级插值处理方法是像素填充(pixel filling)或称为向后映射算法。,输出像素一次一个地映射回到原始(输入)图像中,以便确定其灰度级。如果一个输出像素被映射到四个输入像素之间,则其灰度值由灰度级插值决定,如图6-30所示。向后空间变换是向前变换的逆变换。,图6-30 灰度级插值处理(像素变换),在像素填充法中,变换后(输出)图像的像素通常被映射到原始(输入)图像中的非整数位置,即位于四个输入像素之间。因此,为了决定与该位置相对应的灰度值,必须进行插值运算。最简单的插值方法是零阶插值或称为最近邻插值,也叫最近邻域法,参见本书6.2节。一阶插值或称双线性插值法和零阶插值法相比可产生更令人满意的效果,只是程序稍复杂一些,运行时间稍长一些。它的原理如图6-10和图6-31所示,插值计算公式参见6.2.1中的公式(6-2)。由于篇幅所限,双线性插值公式的推导在此从略,有兴趣的读者请参考书后的参考文献。,图6-31 双线性插值,在这里还要说明一点,为了提高双线性插值的速度,双线性插值也可以分解为三个线性插值来实现,公式如下:,f,(,x,0)=,f,(0,0)+,x,f,(1,0)-,f,(0,0),f,(,x,1)=,f,(0,1)+,x,f,(1,1)-,f,(0,1)(6-10),f,(,x,y,)=,f,(x,0)+y,f,(,x,1)-,f,(,x,0),因为公式(6-2)需要用到四次乘法、八次加(或减)法运算,而公式(6-10)表示的第二种方法只需要三次乘法和六次加(或减)法,所以几何变换程序一般选择后者。从图6-31也可以看出双线性插值与最近邻插值的区别。,在几何运算中,双线性灰度插值的平滑作用可能会使图像的细节产生退化,尤其是在进行放大处理时,这种影响将更为明显。而在其他应用中,双线性插值的斜率不连续性会产生不希望得到的结果。这两种情况都可以通过高阶插值得到修正,当然这需要增加计算量。使用高阶插值函数的例子有:三次样条、Legendre中心函数和sin(,x,)/,函数(即sin(,x,)函数)。高阶插值常用卷积来实现,这部分内容请读者参考书后所附的参考文献。,6.6.2 图像复合变换的示例,图6-32 坐标系的平移,两个坐标系之间的坐标变换矩阵表达式为:,它的逆变换矩阵表达式是:,为了推导公式简单起见,假设图像未旋转时中心坐标为(,a,,,b,),旋转后中心坐标为(,c,,,d,)(在新的坐标系下旋转后新图像左上角为原点),则旋转变换矩阵表达式为,(6-11),其逆变换表达式为,(6-12),即,(6-13),因此,(6-14),公式(6-10)说明绕任意点(,a,b,)旋转的几何变换是由平移旋转平移三个基本变换所构成,即先将坐标系平移到点(,a,b,),再进行旋转,然后将旋转后的图像平移回原来的坐标原点。,利用上面的转换公式(6-12)(6-14),就可以比较方便地编写出实现图像旋转的函数。首先应计算出公式中需要的几个参数:,a,,,b,,,c,,,d,和旋转后新图像的高、宽度。现在已知图像的原始宽度为,lWidth,,高度为,lHeight,,以图像中心为坐标系原点,则原始图像四个角的坐标分别为,按照旋转公式(6-11)(6-14),在旋转后的新图像中,这四个点坐标为,则新图像的宽度lNewWidth和高度lNewHeight为,lNewWidth,=max(,fDstX,4-,fDstY,1,fDstX,3-,fDstY,2),lNewHeight,=max(,fDstX,4-,fDstY,1,fDstX,3-,fDst,Y2),如果令,(6-15),由已知及假设,由公式(6-13)得,(6-16),公式(6-16)、(6-17)便是图像绕任意点(,a,,,b,)旋转的变换公式,由此便可以编写出实现该变换的程序。事实上,只要先按上述公式计算出旋转后新图像的高度和宽度以及常数f1和,f,2,,并按照公式(6-17)计算出变换后图像上的点(,i,0,j,0):,/计算该像素在源DIB中的坐标,i0=(float)j)*f sina+(float)i)*f cosa+f2;,j0=(float)j)*f cosa+(float)i)*f sina+f1;,6.8 应用实例,下面给出图像几何变换应用的一个例子图像的转置。图像的转置是将给定图像像素的x坐标和y坐标互换的几何变换。,图像的转置和图像的旋转不同,而且仅仅通过旋转是不可能实现图像转置的。旋转操作与镜像操作结合才能实现图像的转置。图像转置的方法如下:,首先将图像水平镜像,然后逆时针旋转90才可以实现。设点,P,0,(,x,0,y,0,)进行转置后的对应点为,P,(,x,y,),图像高度为fHeight,宽度为fWidth,原图像中,P,0,(,x,0,y,0,)经过转置后坐标将变为(,y,0,x,0,)。如果把图像转置看作是图像镜像与旋转的复合,并且图像的水平镜像在,x,方向不作平移。此时,6.4.1中的公式(6-4)变为,根据此式及6.5.1中的公式(6-6)可得,(6-20),公式(6-20)就是图像转置的变换公式。,事实上,(6-19)也可以直接得到,因为原图像中,P,0,(,x,0,y,0,)经过转置后坐标将变为,P,(,y,0,x,0,),即,x,y,0,y,x,0,,把这个关系用齐次坐标写成矩阵形式就是式(6-20)。,图像转置的实现和图像镜像变换类似,不同之处在于图像转置后DIB的头文件也要进行相应的改变,主要是将头文件中图像高度和宽度信息更新。因此传递给图像转置函数的参数是直接指向DIB的指针,而不是直接指向DIB像素的指针。下面给出实现图像转置函数TransposeDIB()的框架和主要算法。,图6-37 转置后的图像,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服