资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五章数字图像处理中的基本运算,1,本章主要内容和基本要求,数字图像的基本代数运算,数字图像的几何运算,2,5.1,数字图像处理基本运算的分类,一、图像处理算法的分类:,单幅图像,单幅图像,多幅图像,单幅图像,多幅图像或单幅图像,数值,/,符号(图像分析),二、根据基本运算分类,点运算,邻域运算,3,5.2,点运算,一、数字图像的代数运算,1,、基本代数运算基础:,设图像,其运算可以分为图像自身的运算和图像间的运算,从根本上而言可以看成对图像位置的运算或对该位置上灰度级的运算。,4,基本代数运算:图像象素几何位置不变图像灰度级的加、减、乘、除等运算。,几何运算:图像象素位置变换后,经过计算,确定该象素灰度的运算。,例如图像,f,和,g,:,5,代数运算就是二者点对点的加、减、乘、除运算。对,f,图所有灰度加,c,级灰度可作如下处理:,J=f+c,6,给整幅图像增加灰度级会使图像亮度得到提高整体偏亮,给个别象素加灰度值可以使目标景物突出,例如:,7,给一幅图像乘以一个系数,可以改变图像的灰度级范围如:,原来是,20,200,的灰度级范围,乘以,2,则有,40,400,的灰度级范围,8,9,10,两幅连续的图像运算可以有基本运算组合而成如:,K,af,bg,:,11,二、代数运算的用途,可以对同一场景的多幅图像求平均,以降低加性零值平稳噪声。,两幅图像叠加达到二次曝光的效果。,减去图中不需要的加性噪声。,计算两幅场景的变化。,检测轮廓,确定轮廓现。,12,5.3,图像的几何运算,几何运算也叫几何变换:包括图象的平移,旋转,镜象变换,转置,放缩等。,一平移,(translation),将图像沿水平或垂直方向移动位置后,获得新的图像的变换方式。例如:图像坐标中象素点(,x,0,y,0,),移动到(,x,1,y,1,),位置灰度不变。,13,14,(,x,0,y,0,),点,经过平移(,tx,ty,),变为点(,x,1,y,1,)两点之间的关系,为:,x,1,=x,0,+tx;y,1,=y,0,+ty.,以矩阵的形式表示为,:,15,我们更关心的是它的逆变换,:,因为:我们想知道的是平移后的图象中每个像素的颜色,。,x0=x1-tx,y0=y1-ty,16,例如:新图中左上角点的,RGB,值是多少?很显然,该点是原图中的某一点经过平移后得到的,这两点的颜色肯定是一样的,所以只要知道了原图那点的,RGB,值即可。那么到底新图中的左上角点对应原图中的哪一点呢?将左上角点的坐标(,0,0,)代入公式,(2),,得到,x,0,=-tx,;,y,0,=-ty,;所以新图中的,(0,0),点的颜色和原图中(,-tx,-ty,)的一样。设用 表示新图,用,表示原图,。,17,在新图的坐标系中,是左上角的象素,原图,中的象素,在新坐标系中的位置变成了,f,(,tx,-ty),,,新的坐标系中,g(0,0),f(-tx,-ty),。,例如:,18,平移后出现的问题,1,、如果新图中有一点(,x1,y1,),按照公式,(2),得到的,(x0,y0),不在原图中该怎么办?,通常的做法是,把该点的,RGB,值统一设成,(0,0,0),或者,(255,255,255),。,2,、平移后的图象是否要放大?,一种做法是不放大,移出的部分被截断,如下图所示,图,2,为原图,图,3,为移动后的图。这种处理,文件大小不会改变。,19,平移前的图,20,平移后的图像,21,还有一种做法是:将图象放大,使得能够显示下所有部分,移动后被放大图像,22,这种处理,文件大小要改变。设原图的宽和高分别是,w1,h1,则新图的宽和高变为,w1+|tx|,和,h1+|ty|,,加绝对值符号是因为,tx,ty,有可能为负,.,下面给出,Translation,的源代码。算法的思想是先将所有区域填成白色,然后找平移后显示区域的左上角点,(x0,y0),和右下角点,(x1,y1),。,分几种情况:,23,先看,x,方向,(width,指图象的宽度,),1.tx-width,很显然,图象完全移出了屏幕,不用做任何处理,2,-widthtx0,,如图,5,所示图像向左上方移动图象区域的,x,范围从,0,到,width-|tx|,对应原图的范围从,|tx|,到,width,24,图,5,25,3,0txwidth,如图,6,所示,图像向右下方平移,0txwidth,0tyheight,的情况图象区域的,x,范围从,tx,到,width,对应原图的范围从,0,到,width-tx,图,6,26,4,txwidth,图象完全移出了屏幕,不用做任何处理,。,y,方向是对应的(,height,表示图象的高度,1,ty-height,,图象完全移出了屏幕,不用做任何处理,2,-heightty0,,图象区域的,y,范围从,0,到,height-|ty|,对应原图的范围从,|ty|,到,height3,0tyheight,,图象区域的,y,范围从,ty,到,height,对应原图的范围从,0,到,height-ty4,tyheight,,图象完全移出了屏幕,不用做任何处理),27,这种做法利用了位图存储的连续性,即同一行的像素在内存中是相邻的。利用,memcpy,函数,从,(x,0,y,0,),点开始,一次可以拷贝一整行(宽度为,x,1,-x,0,),然后将内存指针移到,(x,0,y,0+1,),处,拷贝下一行,这样拷贝,(y,1,-y,0,),行就完成了全部操作,避免了一个一个像素的计算,提高了效率,。,28,二、旋转,(rotation),图像旋转是指图像以某一点作为轴转过一定的角度。通常的做法是以图象的中心为圆心旋转。,例如:图,7,旋转,30,度(顺时针方向)后的图象如图,8,所示,.,可以看出,旋转后图象变大了。,29,图,8,旋转后的图,图,7,原图,30,若要使旋转后保持原尺寸图像就要进行裁切,有些内容就会损失。我们采用第一种做法,31,图像旋转变换矩阵,先来看一下,将一个点顺时针旋转,a,角后的坐标变换公式,如图,10,所示,,r,为该点到原点的距离,在旋转过程中,,r,保持不变。,b,为,r,与,x,轴之间的角度。,x,0,=r*cos(b),;,y,0,=r*sin(b),图,10,32,旋转前:,x,0,=r*cos(b),;,y,0,=r*sin(b),旋转,a,角度后,:,33,以矩阵的形式表示,34,其逆矩阵的形式表示为,35,上面的公式中,坐标系,I,是以图象的中心为原点,向右为,x,轴正方向,向上为,y,轴正方向。它和以图象左上角点,向右为,x,轴正方向,向下为,y,轴正方向的坐标系,II,之间的转换关系如何呢?,两种坐标系间的转换关系,36,逆变换为,:,37,按照上面的公式,我们可以把变换分成,3,步:,第一:将坐标系,II,变成,I,;第二:将该点顺时针旋转,a,角;第三:将坐标系,I,变回,II,,这样,我们就得到了变换矩阵,是上面三个矩阵的级联。,38,上面公式中,Wold,表示原图的宽,Hold,表示原图 的高,Wnew,新图的宽,Hnew,新图的高,可以看出,Wnew=max(|x4-x1|,|x3-x2|);,Hnew=max(|y4-y1|,|y3-y2|).,39,可以根据以上公式,求出对应的原图中的点,得到它的灰度,如果超出原图范围则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图象可能会出现锯齿),更精确的方法是采用插值。插值算法后面详细介绍。,40,三、镜象,(mirror),镜象分水平镜象和垂直镜象两种,原图,41,水平镜像,42,垂直镜像,43,镜象的变换矩阵很简单,设原图宽为,w,,高为,h,,变换后,图的宽和高不变,.,水平镜象为:,垂直镜象为,44,四、转置,(transpose),转置是指将,x,y,坐标对换,原图,转制后的图,45,要注意的是,转置和旋转,90,度是有区别的,不信你可以试试,你怎么转,也转不出图,15,度来。另外,转置后图的宽高对换了。转置的变换矩阵很简单,:,46,五、缩放(,zoom,),图像比例缩放是指将给定的图像在,x,轴方向按比例缩放,f,x,倍,沿,y,轴方向比例缩放,f,y,。当,f,x,f,y,时,称为图像的全比例缩放。当,f,x,f,y,时,图像象素间的相对位置会发生畸变。,设原图像中的点,P(x,0,,,y,0,),比例缩放后在新的图像中对应点,P(x,y),,,P(x,0,,,y,0,),和,P(x,y),之间的对应关系如图所示:,47,48,比例缩放前后两点之间的关系用矩阵表示为:,49,其逆矩阵为:,50,插值算法(,Interpolation,),比例缩放所产生的图像中有可能在原图中找不到相应的象素点,我们采用的做法是找与之最临近的点,我们采用的做法是找与之最临近的点。即利用邻域的像素来估计新的像素值 的处理方法就是插值算法。,常用的插值算法有:,最邻近插值(,Nearest Neighbour Interpolation,)。,线形插值,(Linear Interpolation),。,双线形插值(,Bilinear Intrepolation,),曲线插值(,Curvilinear Interpolation,),51,(,1,)最临近插值,图像变换后找不到相应的象素点时,直接赋值为和它最相近的的象素值的插值算法。,例如:在图像的缩放中,将一幅,66,的图像按比例缩小,,fx,fy,1/2,图像的长和宽均缩小到原来的一半,成为一幅,33,的图像。,原图像的象素从(,0,,,0,)到(,5,,,5,),新图像的象素从(,0,,,0,)到(,2,,,2,)。如下图:,52,66,的原图,f,新图中的灰度值利用缩放公式,计算得到,53,X0=0/0.5=0 y0=0,X1=1/0.5=2 y1=2,X2=2/0.5=4 y2=4,g(0,0)=f(0,0),g(0,1)=f(0,2),g(0,2)=f(0,4),g(1,0)=f(2,0),g(1,1)=f(2,2),g(1,2)=f(2,4)g(2,0)=f(4,0),g(2,1)=f(4,2),g(2,2)=f4,4),33,的新图,g,66,的原图,f,54,图像缩小,可以在原图像中挑选信息,缩小之后的图与原图像比较丢失了很多信息。,图像放大处理中,需要对放大后多出来的空格填入适当的象素值,采用最临近插值法举例如下:,44,的以原图,f,55,长和宽各放大,2,倍,利用公式得到,88,的新图像。新图像中各象素位置,X0=0 Y0=0 X1=0.5 Y1=0.5 X2=1 Y2=1 X3,1.5 Y3=1.5 X4=2 Y4=2 X5=2.5 Y5=2.5 X6=3 Y6=3 X7=3.5 Y7=3.5,g(0,0)=f(0,0)g(0,1)=f(0,0.5)g(0,2)=f(0,1)g(0,3)=f(0,1.5)g(0,4)=f(0,2)g(0,5)=f(0,2.5)g(0,6)=f(0,3)g(0,7)=f(0,3.5)g(1,0)=f(0.5,0)g(1,1)=f(0.5,0.5)g(1,2)=f(0.5,1)g(1,3),f(0.5,1.5)g(1,4)=f(0.5,2)g(1,5)=f(0.5,2.5)g(1,6)=f(0.5,,,3,),g(1,7)=f(0.5,3.5)g(2,0)=f(1,0)g(2,1)=f(1,0.5),56,g(2,2)=f(1,1,),g(2,3)=f(1,1.5)g(2,4)=f(1,2)g(2,5)=f(1,2.5)g(2,6)=f(2,3,),g(2,7)=f(1,3.5)g(3,0)=f(1.5,0)g(3,1)=f(1.5,0.5)g(3,2)=f(f(1.5,1)g(3,3)=f(1.5,1.5)g(3,4)=f(1.5,2)g(3,5)=f(1.5,2.5,),g(3,6)=f(1.5,3)g(3,7)=f(1.5,3.5)g(4,0)=f(2,0)g(4,1),f(2,0.5)g(4,2)=f(2,1)g(4,3)=f(2,1.5,),g(4,4)=f(2,2)g(4,5)=f(2,2.5)g(4,6)=f(2,3)g(4,7)=f(2,3.5)g(5,0)=f(2.5,0)g(5,1),f(2.5,0.5)g(5,2)=f,(,2.5,1)g(5,3)=f(2.5,1.5,),g(5,4)=f(2.5,2)g(5,5)=f(2.5,2.5)g(5,6)=f(2.5,3)g(5,7)=f(2.5,3.5)g(6,0)=f(3,0)g(6,1),f(3,0.5)g(6,2)=f,(,3,1)g(6,3)=f(3,1.5,),g(6,4)=f(3,2)g(6,5)=f(3,2.5)g(6,6)=f(3,3)g(6,7)=f(3,3.5)g(7,0)=f(3.5,0)g(7,1)f(3.5,0.5)g(7,2)=f(3.5,1)g(7,3)=f(3.5,1.5,),g(7,4)=f(3.5,2)g(7,5)=f(3.5,2.5)g(7,6)=f(3.5,3)g(7,7)=f(3.5,3.5),57,放大后,88,的新图,58,(2),线形插值,线形插值是使用原图中两个值来构造所求坐标处的值。,例如:如图所示,如果已经知道了两点,x0,x2,处的函数值,f(x0),f(x2),,现在要求,x1,处的函数值,f(x1),。我们假设函数是线性的,利用几何知识可以知道,:,59,60,双线性插值,在图象处理中需要将线形插值扩展到二维的情况,即采用双线形插值(,Bilinear Intrepolation,),例如:已知四点,f(x0,y0),f(x2,y2),,,f(x2,y0),f(x2,y2),的灰度,要求,g,(,x1,y1),点的灰度,可以先在水平方向上由,f(x0,y0),f(x2,y2),线形插值求出,g(x0,y1),,,f(x2,y0),f(x2,y2),线形插值求出,g(x2,y1),,然后在垂直方向上由,g(x0,y1),g(x2,y1),线形插值求出,g(x1,y1),61,62,双线性插值可以通过三次运算的到。处理效果比较满意。这种处理具有低通滤波性质,使高频分量受到损失,图像轮廓模糊。,另外,图像处理中还使用双曲线插值,及三次内插法解决图像缩放及图像旋转后的灰度填充。,63,图像几何变换综合训练,1,、已知,33,的图像如图所示,A,、将此图以图形中心为轴顺钟向旋转,30,度,B,、将此图放大,2,倍,C,、对此图作水平镜像,64,1,、首先将此图平移至以图像中心为原点的坐标系中,65,新坐标系中任一点与原坐标系的点的对应关系如下,X1=X-2,Y1=Y-2,由新图像找原图像中的对应点用拟矩阵,66,新图像用,g,(u,y),表示,原图像用,f(x,y),表示有:,u0=x2 v0=y2 u(-1,),=x1 v(-1)=y1 u1=x3 v1=y3,g(-1,-1)=f(1,1)g(-1,0)=f(1,2)g(-1,1)=f(1,3),g(0,-1)=f(2,1)g(0,0)=f(2,2)g(0,1)=f(2,3),g(1,-1)=f(3,1)g(1,0)=f(3,2)g(1,1)=f(3,3),平移后的图像:,67,68,第二、将图像以坐标原点为轴顺钟向转过,30,度,69,计算旋转后的图像大小,宽度,:w=w,0,cos(a)+H,0,sin(a),高度,:H=H,0,cos(a)+w,0,sin(a),因此,旋转后的图像:,70,旋转后的图像与未旋转图之间的对应关系如下:,旋转后的图像坐标用,x,2,y,2,表示,未旋转的图像坐标用,x,1,y,1,表示。,71,72,由新图像找原图像中的对应点用逆矩阵,73,新图像用,p(s,t,),表示,原图像用,g(u,v),表示有:,S(-2)=u(-2.732)t(-2)=v(-2.732),s(-1)=u(-1.366)t(-1)=v(-1.366),S(0)=u(0)t(0)=v(0),s(1)=u(1.366)t(1)=v(1.366),s(2)=u(2.732)t(2)=v(2.732),p(-2,-2)=g(-2,-2)p(-2,-1)=g(-2,-1)p(-2,0),g(-2,1)p(-2,1)=g(-2,1)p(-2,2)=g(-2,2)p(-1,-2)=g(-1,-2)p(-1,-1)=g(-1,-1)p(-1,0),g(-1,0)p(-1,1)=g(-1,1)p(-1,2)=g(-1,2),74,P(0,-2)=g(0,-2)p(0,-1)=g(0,-1)p(0,0),g(0,0)p(0,1)=g(0,1)p(0,2)=g(0,2)p(1,-2)=g(1,-2)p(1,-1)=g(1,-1)p(1,0),g(1,1)p(1,1)=g(1,1)p(1,2)=g(1,2),P(2,-2)=g(0,-2)p(2,-1)=g(0,-1)p(2,0),g(0,0)p(2,1)=g(0,1)p(2,2)=g(0,2),经过旋转的图像如下,75,用白色填充找不到的象素点得道的图像,A,,用深色填充找不到的象素点得道的图像,B,A,B,76,2,、将此图放大,2,倍,M*N=6*6,用,g(u,v),表示放大后的图像,,f(x,Y),表示原图,u(0)=X(0)v(0)=y(0,),u(1)=x(0.5)v(1)=y(0.5)u(2)=x(1)v(2)=y(1)u(3),X(1.5)v3=Y(1.5)u(4)=X(2)v(4)=Y(2)u(5)=X(2.5)v(5)=Y(2.5),77,g(0,0)=f(0,0)g(0,1)=f(0,0.5)g(0,2)=f(0,1)g(0,3)=f(0,1.5)g(0,4)=f(0,2)g(0,5)=f(0,2.5),g(1,0)=f(0.5,0)g(1,1)=f(0.5,0.5)g(1,2)=f(0.5,1)g(1,3),f(0.5,1.5)g(1,4)=f(0.5,2)g(1,5)=f(0.5,2.5)g(2,0)=f(1,0)g(2,1)=f(1,0.5)g(2,2)=f(1,1,),g(2,3)=f(1,1.5)g(2,4)=f(1,2)g(2,5)=f(1,2.5)g(3,0)=f(1.5,0)g(3,1)=f(1.5,0.5)g(3,2)=f(f(1.5,1)g(3,3)=f(1.5,1.5)g(3,4)=f(1.5,2)g(3,5)=f(1.5,2.5)g(4,0)=f(2,0)g(4,1),f(2,0.5)g(4,2)=f(2,1)g(4,3)=f(2,1.5,),g(4,4)=f(2,2)g(4,5)=f(2,2.5)g(5,0)=f(2.5,0)g(5,1),f(2.5,0.5)g(5,2)=f(2.5,1)g(5,3)=f(2.5,1.5,),g(5,4)=f(2.5,2)g(5,5)=f(2.5,2.5),78,79,3,、对此图作水平镜像,在坐标系中以图像宽度为轴对图像作水平镜像。设原图像中的点为,P0(x0,y0),镜像后的点为,p(x,y),图像宽度为,w,。则有:,X=w-x0,Y=y0,矩阵形式,80,81,2,、已知边长为,1cm,的,44,的图像,f,(,x,,,y,)如下:,A,、将它沿,p,(,x,,,Y,)(,60,,,120,)与,x,轴成,30,度的直线上放大,120,,写出几何变换公式,82,B,、分别用最临近插值和双线性插值求,f(2.3,3.2),的值,A,、首先对其平移,平移后的图像中心为,p(60,120).,平移后的图像用,f(x1,y1),表示,原图像用,g(x,y).,X1=X-60,Y1=Y-120,矩阵为,83,逆运算为:,逆矩阵为:,84,第二、将图像以坐标原点为轴顺钟向转过,30,度,宽度,:w=w0cos(a)+sin(a),高度,:H=w0cos(a)+sin(a),因此,旋转后的图像:,85,86,由新图像找原图像中的对应点用逆矩阵,87,
展开阅读全文