图像位置变换
三种图象变换:平移变换、对称变换和伸缩变换

三种图象变换:平移变换、对称变换和伸缩变换①平移变换:(h>0)Ⅰ、水平平移:函数()y f x a =+的图像可以把函数()y f x =的图像沿x 轴方向向左(0)a >或向右(0)a <平移||a 个单位即可得到;1)y=f(x)h 左移→y=f(x+h);2)y=f(x) h 右移→y=f(x -h);Ⅱ、竖直平移:函数()y f x a =+的图像可以把函数()y f x =的图像沿x 轴方向向上(0)a >或向下(0)a <平移||a 个单位即可得到;1)y=f(x) h 上移→y=f(x)+h ;2)y=f(x) h下移→y=f(x)-h 。
②对称变换:Ⅰ、函数()y f x =-的图像可以将函数()y f x =的图像关于y 轴对称即可得到; y=f(x) 轴y →y=f(-x)Ⅱ、函数()y f x =-的图像可以将函数()y f x =的图像关于x 轴对称即可得到;y=f(x) 轴x →y= -f(x)Ⅲ、函数()y f x =--的图像可以将函数()y f x =的图像关于原点对称即可得到;y=f(x) 原点→y= -f(-x)Ⅳ、函数)(y f x =的图像可以将函数()y f x =的图像关于直线y x =对称得到。
y=f(x) x y =→直线x=f(y)Ⅴ、函数)2(x a f y -=的图像可以将函数()y f x =的图像关于直线a x =对称即可得到;y=f(x) a x =→直线y=f(2a -x)。
③翻折变换:Ⅰ、函数|()|y f x =的图像可以将函数()y f x =的图像的x 轴下方部分沿x 轴翻折到x 轴上方,去掉原x 轴下方部分,并保留()y f x =的x 轴上方部分即可得到;Ⅱ、函数(||)y f x =的图像可以将函数()y f x =的图像右边沿y 轴翻折到y 轴左边替代原y 轴左边部分并保留()y f x =在y 轴右边部分即可得到④伸缩变换:Ⅰ、函数()y af x =(0)a >的图像可以将函数()y f x =的图像中的每一点横坐标不变纵坐标伸长(1)a >或压缩(01a <<)为原来的a 倍得到;y=f(x)ay ⨯→y=af(x)Ⅱ、函数()y f ax =(0)a >的图像可以将函数()y f x =的图像中的每一点纵坐标不变横坐标压缩(1)a >或伸长(01a <<)为原来的1a倍得到。
图象平移的概念

图象平移的概念图象平移是图像处理中的一个基本概念,指的是将一个图像中的所有像素点沿着指定的方向和距离移动,从而改变图像在平面上的位置。
平移变换是图像处理中最简单的几何变换之一,它对于图像的位置、移动、对齐和配准具有重要的作用。
下面详细介绍图像平移的概念、原理和应用。
图像平移的概念:图像平移是指将一个图像的每个像素点按照指定的距离和方向进行移动,移动后的像素点的位置发生改变,从而得到一个新的平移后的图像。
平移操作并不改变图像的形状和大小,只是改变了图像在平面上的位置。
图像平移的原理:图像平移的原理是对每个像素点进行坐标变换。
假设需要将一个图像平移(x,y)个单位,则原始图像上的像素(i,j)在平移后的位置为(i+x,j+y)。
即将原始图像上的每个像素点的坐标都加上平移的距离,得到平移后的图像。
图像平移的步骤如下:1. 读取原始图像,获取图像的宽度和高度。
2. 创建一个新的图像,用于存储平移后的结果。
3. 遍历原始图像的每个像素点。
4. 对于每个像素点,计算它在平移后的位置,并将原始图像上的像素值赋给相应的位置。
5. 完成遍历后,保存平移后的图像。
图像平移的应用:1. 视觉效果增强:通过平移图像,可以实现一些视觉效果的增强,例如移动背景、改变图像的位置和朝向等,从而使图像更加生动和有趣。
2. 物体配准:图像平移可以用于物体配准,即将两个或多个图像的特征点对齐,从而实现图像的融合和比较,例如医学影像中的图像对准、遥感图像中的图像注册等。
3. 图像拼接:图像平移可以用于图像拼接,即将多个图像拼接在一起,从而实现全景图像的生成。
拼接过程中,需要对每个图像进行平移操作,将它们的重叠区域对齐,从而得到一个完整的全景图像。
4. 图像重建:图像平移可以用于图像重建,即根据已知的一部分图像信息,推测出缺失的部分。
通过平移已有的图像像素,可以填补图像中的空洞,从而还原缺失的图像信息。
5. 目标跟踪:图像平移可以用于目标的跟踪,即通过一系列平移变换,跟踪目标在图像序列中的位置和运动轨迹。
函数图像的三种变换平移变换

函数图像的三种变换一 、平移变换函数图象的平移变换,表现在函数图象的形状不变,只是函数图象的相对位置在变化,其平移方式可分为以下两种: 沿水平方向左右平行移动比如函数()y f x =与函数()(0)y f x a a =->,由于两函数的对应法则相同,x a -与x 取值范围一样,函数的值域一样。
以上三条决定了函数的形状相同,只是函数的图象在水平方向的相对位置不同,如何将函数()y f x =的图象水平移动才能得到函数()y f x =的图象呢?因为对于函数()y f x =上的任意一点(11,x y ),在()y f x a =-上对应的点为11(,)x a y +,因此若将()y f x =沿水平方向向右平移a 个单位即可得到()(0)y f x a a =->的图象。
同样,将()y f x =沿水平方向向左平移a 个单位即可得到()(0)y f x a a =+>的图象。
沿竖直方向上下平行移动比如函数()y f x =与函数()(0)y f x b b =+>,由于函数()y f x =函数()(0)y b f x b -=>中函数y 与y b -的对应法则相同,定义域和值域一样,因此两函数形状相同,如何将函数()y f x =的图象上下移动得到函数()y b f x -=的图象呢?因为对于函数()y f x =上的任意一点(11,x y ),在()(0)y b f x b -=>上对应的点为11(,)x y b +,因此若将()y f x =沿竖直方向向上平移a 个单位即可得到()(0)y b f x b -=>的图象。
同样,将()y f x =沿竖直方向向下平移a 个单位即可得到()(0)y b f x b +=>的图象。
据此,可以推断()y f x a b =±±(0,0)a b >>为水平方向移动a 个单位,“左加右减”,竖直方向移动b 个单位,“上加下减”。
数字图像处理---图像的几何变换

数字图像处理---图像的⼏何变换图像的⼏何变换图像的⼏何变换包括了图像的形状变换和图像的位置变换图像的形状变换图像的形状变换是指图像的放⼤、缩⼩与错切图像缩⼩图像的缩⼩是对原有的数据进⾏挑选或处理,获得期望缩⼩尺⼨的数据,并尽量保持原有的特征不消失分为按⽐例缩⼩和不按⽐例缩⼩两种最简单的⽅法是等间隔地选取数据图像缩⼩实现设原图像⼤⼩为M ∗N ,缩⼩为K 1M ∗K 2N (K 1<1,K 2<1)1. 设原图为F (i ,j ),i =1,2,...,M ,j =1,2,...,N ;压缩后地图像为G (x ,y ),x =1,2,...,k 1M ,y =1,2,...,k 2N2. G (x ,y )=F (c 1∗i ,c 2∗j );其中,c 1=1/k 1,c 2=1/k 2图像放⼤图像放⼤时对多出的空位填⼊适当的值,是信息的估计最简单的思想是将原图像中的每个像素放⼤为k ∗k 的⼦块图像放⼤实现设原图像⼤⼩为M ∗N ,缩⼩为K 1M ∗K 2N (K 1>1,K 2>1)1. 设原图为F (i ,j ),i =1,2,...,M ,j =1,2,...,N ;压缩后地图像为G (x ,y ),x =1,2,...,k 1M ,y =1,2,...,k 2N2. G (x ,y )=F (c 1∗i ,c 2∗j );其中,c 1=1/k 1,c 2=1/k 2图像错切图像错切变换实际上是平⾯景物在投影平⾯上的⾮垂直投影效果图像错切的数学模型x ′=x +d x y y ′=y(x ⽅向的错切,dx =tan θ)x ′=x y ′=y +d y x(y ⽅向的错切,dy =tan θ)图像的位置变换图像的位置变换是指图像的平移、镜像与旋转,即图像的⼤⼩和形状不发⽣变化主要⽤于⽬标识别中的⽬标配准图像平移公式:{{x ′=x +Δx y ′=y +Δy图像镜像图像镜像分为⽔平镜像和垂直镜像,即左右颠倒和上下颠倒公式:图像⼤⼩为M*Nx ′=x y ′=−y (⽔平镜像)x ′=−x y ′=y(垂直镜像)由于不能为负,因此需要再进⾏⼀次平移x ′=x y ′=N +1−y (⽔平镜像)x ′=M +1−xy ′=y(垂直镜像)图像旋转公式:x ′=xcos θ−ysin θy ′=xsin θ+ycos θ由于计算结果值所在范围与原有值不同,因此需要在进⾏扩⼤画布、取整、平移等处理画布扩⼤原则:以最⼩的⾯积承载全部的画⾯信息⽅法:根据公式x ′=xcos θ−ysin θy ′=xsin θ+ycos θ计算x ′min ,x ′max ,y ′min ,y ′max旋转后可能导致像素之间相邻连接不再连续,因此需要通过增加分辨率的⽅式填充空洞插值最简单的⽅式就是⾏插值(列插值)⽅法1. 找出当前⾏的最⼩和最⼤的⾮背景点坐标,记作:(i,k1)、(i,k2)2. 在(k1,k2)范围内进⾏插值,插值⽅法为空点的像素值等于前⼀点的像素值3. 重复上述操作直⾄没有空洞图像的仿射变换图像的仿射变换即通过通⽤的仿射变换公式,表⽰⼏何变换{{{{{{{齐次坐标原坐标为(x,y),定义齐次坐标为(wx,wy,w)实质上是通过增加坐标量来解决问题仿射变换通式通过齐次坐标定义仿射变换通式为x ′=ax +by +Δx y ′=cx +dy +Δy⇒x ′y ′=a b Δx c dΔyx y⼏何变换表⽰1. 平移x ′y ′1=10Δx 01Δy 001x y12. 旋转x ′y ′1=cos θ−sin θ0sin θcos θ0001x y 13. ⽔平镜像x ′y ′1=−10001001x y14. 垂直镜像x ′y ′1=1000−10001x y15. 垂直错切x ′y ′1=1d x 00−10001x y16. ⽔平错切x ′y ′1=100d y −10001x y1图像的⼏何校正由于图像成像系统的问题,导致拍摄的图⽚存在⼀定的⼏何失真⼏何失真分为{[][][][][][][][][][][][][][][][][][][][][]1. 系统失真:有规律的、可预测的2. ⾮系统失真:随机的⼏何校正的基本⽅法是先建⽴⼏何校正的数学模型,其次利⽤已知条件确定模型参数,最后根据模型对图像进⾏⼏何校正步骤:1. 图像空间坐标的变换2. 确定校正空间各像素的灰度值(灰度内插)途径:1. 根据畸变原因,建⽴数学模型2. 参考点校正法,根据⾜够多的参考点推算全图变形函数空间坐标变换实际⼯作中利⽤⼀幅基准图像f(x,y),来校正失真图像g(x′,y′)根据⼀些控制点对,建⽴两幅图像之间的函数关系,通过坐标变换,以实现失真图像的⼏何校正两幅图像上的f(x,y)=g(x′,y′)时,称其为对应像素(同名像素)通过表达式x′=h1(x,y)y′=h2(x,y)表⽰两幅图像之间的函数关系通常⽤多项式x′=n∑i=0n−i∑j=0a ij x i y jy′=n∑i=0n−i∑j=0b ij x i y j来近似h1(x,y)、h2(x,y)当多项式系数n=1时,畸变关系为线性变换x′=a00+a10x+a01yy′=b00+b10x+b01y六个未知数需要⾄少三个已知点来建⽴⽅程式当多项式系数n=2时,畸变关系式为x′=a00+a10x+a01y+a20x2+a11xy+a02y2y′=b00+b10x+b01y+b20x2+b11xy+b02y2 12个未知数需要⾄少6个已知点来建⽴⽅程式当超过已知点数⽬超过要求时,通过最⼩⼆乘法求解n=2时多项式通式为B2∗n=H2∗6A6∗n(n为待求点数)B2∗n=x′1x′2⋯x′n y′1y′2⋯y′n{ []H 2∗6=a 00a 10a 01a 20a 11a 02b 00b 10b 01b 20b 11b 02A 6∗n =11⋯1x 1x 2⋯x n y 1y 2⋯y n x 21x 22⋯x 2n x 1y 1x 2y 2⋯x n y ny 21y 22⋯y 2n同名点对要求1. 数量多且分散2. 优先选择特征点直接法利⽤已知点坐标,根据x ′=h 1(x ,y )y ′=h 2(x ,y )⇒x =h ′1(x ′,y ′)y =h ′2(x ′,y ′)x =n ∑i =0n −i∑j =0a ′ij x ′i y′jy =n ∑i =0n −i∑j =0b ′ijx ′i y ′j解求未知参数;然后从畸变图像出发,根据上述关系依次计算每个像素的校正坐标,同时把像素灰度值赋予对应像素,⽣成校正图像由于像素分布的不规则,导致出现像素挤压、疏密不均等现象,因此最后还需要进⾏灰度内插,⽣成规则图像间接法间接法通过假定⽣成图像的⽹格交叉点,从⽹格交叉点(x,y)出发,借助已知点求取未知参数,根据x ′=n ∑i =0n −i∑j =0a ij x i y jy ′=n ∑i =0n −i∑j =0b ij x i y j推算⽹格交叉点(x,y)对应畸变图像坐标(x',y'),由于对应坐标⼀般不为整数,因此需要通过畸变图像坐标周围点的灰度值内插求解,作为⽹格交叉点(x,y)的灰度值间接法相对直接法内插较为简单,因此常采⽤间接法作为⼏何校正⽅法像素灰度内插最近邻元法最近邻元法即根据四邻域中最近的相邻像素灰度决定待定点灰度值该⽅法效果较佳,算法简单,但是校正后图像存在明显锯齿,即存在灰度不连续性双线性内插法[][]{{双线性内插法是利⽤待求点四个邻像素的灰度在两个⽅向上作线性内插该⽅法相较最近邻元法更复杂,计算量更⼤,但是没有灰度不连续的缺点,且具有低通滤波性质,图像轮廓较为模糊三次内插法三次内插法利⽤三次多项式S(x)来逼近理论最佳插值函数sin(x)/xS(x)=1−2|x|2+|x|30≤|x|<1 4−8|x|+5|x|2−|x|31≤|x|<20|x|≥2该算法计算量最⼤,但是内插效果最好,精度最⾼{Processing math: 100%。
医学图像处理4几何变换

Medical Image Processing
5
一、图像的位置变换
图像的平移(translation):是将图像中所有的点 都按照指定的平移量水平、垂直移动。
x' x x
y'
y
y
Medical Image Processing
Medical Image Processing
22
图像的插值
最简单的方法:行插值或是列插值方法:
» 找出当前行的最小和最大的非空白点的坐标,记作: (i,k1)、(i,k2)。
»在(k1,k2)范围内进行插值,插值的方法是:空 点的像素值等于前一点的像素值。
»同样的操作重复到所有行。
经过插值处理之后,图像效果就变得自然。
Medical Image Processing
3
图像的几何变换
几何变换的需求
受成像系统拍摄角度 及失真的影响 几何变换不改变像素 值,而是改变像素所 在的位置 又称几何校正
主要内容及要点
图像的位置变换
» 平移、镜像、旋转、 插值等
图像的形状变换
» 缩小、放大、错切变 换、几何畸变的校正 等
Medical Image Processing
y'
0.5x
0.866y
x'min 0.866 0.5*3 0.634
x'max 0.866 *3 0.5 2.098
y'min 0.866 0.5 1.366 y'max 0.866 *3 0.5*3 4.098
重要 图像的几何变换

图像的几何变换,是指使用户获得或设计的原始图像,按照需要产生大小、形状和位置的变化。
从变换的性质分,图像的几何变换有位置变换(平移、镜像、旋转)、形状变换(比例缩放、错切)和复合变换等。
1. 图像的位置变换主要包括图像平移变换、图像镜像变换和图像旋转变换等,下面针对这三个主要的位置变换进行分析。
平移变换的几点说明:(1)平移后图像上的每一点都可以在原图像中找到对应的点。
对于不在原图像中的点,可以直接将它的像素值统一设置为0或者255(对于灰度图就是黑色或白色)。
(2)若图像平移后图像不放大,说明移出的部分被截断。
(3) 若不想丢失被移出的部分图像,将新生成的图像扩大.图像镜像变换图像的镜像变换不改变图像的形状。
图像的镜像(Mirror)变换分为三种:水平镜像,垂直镜像和对角镜像。
1. 图像水平镜像图像的水平镜像操作是将图像左半部分和右半部分以图像垂直中轴线为中心进行镜像对换。
2. 图像垂直镜像图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心进行镜像对换。
3. 图像对角镜像图像的对角镜像操作是将图像以图像水平中轴线和垂直中轴线的交点为中心进行镜像对换。
相当于将图像先后进行水平镜像和垂直镜像。
图像旋转变换旋转(rotation)有一个绕着什么转的问题,通常的做法是以图像的中心为圆心旋转,将图像上的所有像素都旋转一个相同的角度。
图像的旋转变换是图像的位置变换,但旋转后,图像的大小一般会改变。
和图像平移一样,在图像旋转变换中既可以把转出显示区域的图像截去,旋转后也可以扩大图像范围以显示所有的图像。
2. 图像形状变换图像比例缩放变换图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴方向按比例缩放fy倍,从而获得一幅新的图像。
(1). 图像的比例缩小变换从数码技术的角度来说,图像的缩小是将通过减少像素个数来实现的,因此,需要根据所期望缩小的尺寸数据,从原图像中选择合适的像素点,使图像缩小之后可以尽可能保持原有图像的概貌特征不丢失,下面介绍两种简单的图像缩小变换。
初中数学 二次函数的图像的平移变换如何影响图像的位置

初中数学二次函数的图像的平移变换如何影响图像的位置
二次函数的图像的平移变换是通过改变二次函数的参数来实现的,其中包括改变顶点的横坐标和纵坐标以及改变二次函数的平移方向。
以下是对二次函数图像的平移变换如何影响图像位置的详细解释:
1. 改变顶点的横坐标:将二次函数的顶点从原点(0, 0) 平移到其他位置,可以通过改变顶点的横坐标实现。
如果我们将顶点的横坐标加上一个正数a,那么图像会向右平移 a 个单位;如果我们将顶点的横坐标减去一个正数a,那么图像会向左平移 a 个单位。
2. 改变顶点的纵坐标:将二次函数的顶点的纵坐标从原点(0, 0) 平移到其他位置,可以通过改变顶点的纵坐标实现。
如果我们将顶点的纵坐标加上一个正数b,那么图像会向上平移b 个单位;如果我们将顶点的纵坐标减去一个正数b,那么图像会向下平移b 个单位。
3. 改变平移方向:除了改变顶点的横坐标和纵坐标,我们还可以通过改变二次函数的平移方向来实现图像的平移变换。
当a 的值为正数时,二次函数图像向右平移;当 a 的值为负数时,二次函数图像向左平移。
同样地,当b 的值为正数时,二次函数图像向上平移;当b 的值为负数时,二次函数图像向下平移。
通过改变顶点的横坐标和纵坐标以及改变平移方向,我们可以实现二次函数图像的平移变换。
这些变换会影响图像的位置,使图像在坐标平面上移动到新的位置。
理解和运用平移变换的概念和方法,有助于我们分析和解释二次函数图像的位置和变化。
需要注意的是,平移变换只会改变二次函数图像的位置,而不会改变图像的形状。
图像的形状由二次函数的系数决定。
平移变换是一种基本的图像变换,也是了解和应用二次函数图像的重要工具之一。
图像变换

如普通坐标系的点(2,3)的齐次坐标可以是:
(1,1.5,0.5),(4,6,2),(6,9,3)等。
普通坐标与齐次坐标的关系为“一对多”
普通坐标w =>齐次坐标 齐次坐标/w =>普通坐标 当w = 1时产生的齐次坐标称为“规格化坐标”
f(x,y) 减去背景图像b(x,y) g(x,y) 添加蓝色背景
图像的错切效果
在这个错切变换中,蒙娜丽莎的图像被变形,但是中心的 纵轴在变换下保持不变。(注意:角落在右边的图像中被 裁掉了。)蓝色的向量,从胸部到肩膀,其方向改变了, 但是红色的向量,从胸部到下巴,其方向不变。因此红色 向量是该变换的一个特征向量,而蓝色的不是。因为红色 向量既没有被拉伸又没有被压缩,其特征值为1。所有沿着 垂直线的向量也都是特征向量,它们的特征值相等。它们 构成这个特征值的特征空间。
=
图像的或运算
模板运算:提取感兴趣的子图像
=
图像的与运算
0 1=0 1 0=0 0 0=0 求两个子图像的相交子图
1 1=1
^
= 模板运算:提取感兴趣的图像^=图像加法运算举例
+
=
图像加法运算举例
图像加法运算举例
图像加法运算举例
图像减法运算举例
=
图像减法运算举例
因为前n个坐标是普通坐标系下的n维坐标。
图像的仿射变换
—— 齐次坐标的特点
(x,y)点的齐次坐标为(xw,yw,w) xw=wx,yw=wy,w≠0
(x,y)点对应的齐次坐标为三维空间的一条直线 :
xw yw
wx wy
zw
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像位置变换图像的位置变换是指图像的大小和形状不发生变换,只是将图像进行平移,镜像和旋转的变换等,主要用于图像目标识别的目标配准。
一、图像旋转变换旋转。
一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。
旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。
图像的旋转变换也可以用矩阵变换来表示。
设点),(000y x P 逆时针旋转θ角后的对应点为),(y x P 。
那么,旋转前后点),(000y x P 、),(y x P 的坐标分别是:⎩⎨⎧==ααcos cos 00r y r x ⎩⎨⎧+=+=+=-=-=+=θθθαθαθαθθθαθαθαcos sin sin cos cos sin )sin(sin cos sin sin cos cos )cos(0000y x r r r y y x r r r x 写成矩阵表达式为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11000cos sin 0sin cos 100y x y x θθθθ 其逆运算为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1100cos sin 0sin cos 100y x y x θθθθ(3-9) 利用上述方法进行图像旋转时需要注意如下两点:(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。
(2)图像旋转之后,会出现许多空洞点。
对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。
以上所讨论的旋转是绕坐标轴原点(0,0)进行的。
如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。
如将一幅图像绕点(a,b)逆时针旋转θ度,首先将原点平移到(a,b),即⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=1001001b a A 然后旋转⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=000cos sin 0sin cos θθθθB 然后再平移回来⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=1001001b a C 综上所述,变换矩阵为A B C T ⋅⋅=。
在旋转变换的Callback 函数下添加代码如下:function xuanzhuanbianhuan_Callback(hObject, eventdata, handles) % hObject handle to xuanzhuanbianhuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes_2); prompt={'Input Angle'}; title='Input Angle'; def={'0'};x=inputdlg(prompt,title,2,def); y=str2num(char(x));img_1=getappdata(handles.figure_by_me,'img_1'); img_2=imrotate(img_1,y,'nearest'); imshow(uint8(img_2));二、图像平移变换平移变换是几何变换中最简单的一种变换,是将一幅图像上的所有点都按照给定的偏移量在水平方向沿x 轴、在垂直方向沿y 轴移动。
设图像中点P 0(x 0,y 0)进行平移后已到P(x,y),其中x 方向的平移量为Δx,y 方向的平移量为Δy 。
那么,点P(x,y)的坐标为:x=x 0+Δxy=y 0+Δy利用齐次坐标系,变换前后图像上的点P 0(x0,y0)和P(x,y)之间的关系可以用如下的矩阵变换表示为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x y =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡∆∆10010x 01y ×⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x 00y 利用坐标变换原理我们进行编程。
首先要设计一个GUI 界面方便我们进行图像处理。
首先读入图片,并将其显示在第一个坐标轴上,处理后的图像显示在第二个坐标轴上,形成对比。
Matlab 中读入函数imread,打开对话框函数为uigetfile 。
在打开菜单的Callback函数下添加函数激活打开命令。
function dakai_Callback(hObject, eventdata, handles)[]=uigetfile(...{'*.bmp;*.png;*.jpeg;*.jpg','Image Files(*.bmp,*.jpg,*.png,*.jpeg)';...'*.*', 'All Files(*.*)'},...'Pick an image');if isequal()||isequal(pathname,0)return;endfpath=[pathname ];img_1=imread(fpath);imshow(img_1);title(' ');setappdata(handles.figure_by_me,'img_1',img_1);获得图片后,接下来就是对其进行处理,以实现图像几何变换菜单下的平移变换。
在平移变换的Callback函数下添加如下代码:function pingyibianhuan_Callback(hObject, eventdata, handles)% hObject handle to pingyibianhuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)prompt={'X(0-166)','Y(0-166)'};title='pingyibianhuan'defaults={'0','0'};xy_cells=str2num(char(inputdlg(prompt,title,1,defaults)));if isempty(xy_cells)msgbox('为您执行平移操作,'提示,'help');elsex=xy_cells(1);y=xy_cells(2);axes(handles.axes_2);img_1=getappdata(handles.figure_by_me,'img_1');img_2=double(img_1);img_2_M=zeros(size(img_2));H=size(img_2);move_x=x;move_y=y;if(size(img_2,3)~=1)img_2_M(round(move_x)+1:round(H(1)),round(move_y)+1:round(H(2)),1:roun d(H(3)))=img_2(1:round(H(1))-round(move_x),1:round(H(2))-round(move_y),1 :round(H(3)));%此处利用矩阵直接进行图像平移操作,其中move_x为在x方向平移尺度大小,move_y为在y轴方向平移的尺度大小H(1)为图像的行数,H(2)为图像的列数,H(3)为图像维数,函数round为取整操作。
elseimg_2_M(round(move_x)+1:round(H(1)),round(move_y)+1:round(H(2)))=i mg_2(1:round(H(1))-round(move_x),1:round(H(2))-round(move_y));%此处为利用矩阵直接进行灰度图像的平移的操作,其中move_x为在x方向平移尺度的大小,move_y为在y轴方向平移的尺度大小,H(1)为图像的行数,H(2)为图像的列数,函数round为取整操作。
endimshow(uint8(img_2_M));end;当选择“平移变换”菜单时,则弹出如图所示对画框。
设定水平平移30个像素,垂直平移65个像素,单击OK,处理结果如下:三、图像镜像变换1、图像水平镜像图像的水平镜像操作是将图像的左半部分和又半部分以图像垂直中线为中心进行镜像对换。
设点P 0(x 0,y 0)进行镜像后的对应点为P(x,y),图像高度为f H ,宽度为f W ,原图像中P 0(x 0,y 0)经过水平镜像后坐标将变为(f W -x 0,y 0),其代数表达式为:x=f W -x 0y=y 0 矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x y =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100010f 01-W ×⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x 00y在水平镜像的Callback 函数下添加如下代码:function shuipingjingxiang_Callback(hObject, eventdata, handles) % hObject handle to shuipingjingxiang (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes_2);img_1=getappdata(handles.figure_by_me,'img_1'); img_1=double(img_1); H=size(img_1);img_2(1:H(1,1),1:H(1,2))=img_1(1:H(1,1),H(1,2):-1:1); imshow(uint8(img_2));点击菜单栏中图像几何处理中的平移变换,结果如下图所示:2、图像垂直镜像图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心进行的镜像变换。
设点P 0(x 0,y 0)进行镜像后的对应点为P(x,y),图像高度为f H ,宽度为f W ,,原图像中P 0(x 0,y 0)经过垂直镜像后坐标将变为(x 0,f H -y 0),其代数表达式为:x=x0 y=f H -y 0矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x y =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100f 1-0001H ×⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1x 00y 在图像垂直镜像的Callback 函数下添加代码如下:function chuizhijingxaing_Callback(hObject, eventdata, handles) % hObject handle to Untitled_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes_2);img_1=getappdata(handles.figure_by_me,'img_1');img_1=double(img_1);H=size(img_1);img_2(1:H(1,1),1:H(1,2))=img_1(H(1,1):-1:1,1:H(1,2));imshow(uint8(img_2));点击菜单栏图像几何处理中的垂直镜像,结果如下图所示:3、图像对角镜像图像对角镜像是将图像以图像水平中轴线和垂直中轴线的交点为中心进行镜像对换。