图像几何变换程序
图像几何变换(旋转和缩放)

图像几何变换的重要性
图像几何变换可以帮助我们更好地理 解和分析图像内容,例如在人脸识别 、目标检测和跟踪、遥感图像处理等 领域。
通过变换可以纠正图像的畸变,提高 图像的清晰度和可读性,从而改善图 像的质量。
图像几何变换的应用场景
医学影像处理
在医学领域,通过对医学影像进行几何变换,可以更好地 观察和分析病变部位,提高诊断的准确性和可靠性。
图像旋转
图像旋转的基本概念
图像旋转是指将图像围绕一个点 进行旋转的操作。这个点被称为
旋转中心或原点。
旋转角度是旋转的度数,通常以 度(°)为单位。
旋转可以是顺时针或逆时针方向, 取决于旋转角度的正负值。
图像旋转的算法实现
图像旋转可以通过多种算法实现,其 中最常用的是矩阵变换和插值算法。
插值算法通过在旋转过程中对像素进 行插值,以获得更平滑的旋转效果。 常用的插值算法包括最近邻插值、双 线性插值和双三次插值等。
矩阵变换算法通过将图像表示为一个 矩阵,并应用旋转矩阵来计算旋转后 的像素坐标。
图像旋转的优缺点
优点
图像旋转可以用于纠正倾斜的图像、 增强图像的视觉效果、实现特定的艺 术效果等。
缺点
图像旋转可能会改变图像的比例,导 致图像失真或变形。此外,对于大尺 寸的图像,旋转操作可能需要较长时 间和较大的计算资源。
双线性插值和双三次插值等。
重采样算法
重采样算法通过重新计算每个像 素的灰度值来实现图像缩放。这 种方法通常比插值算法更精确,
但计算量较大。
多项式拟合算法
多项式拟合算法通过拟合原始图 像中的像素点,然后根据多项式 函数来计算新的像素值。这种方 法适用于对图像进行复杂变换的
情况。
图像缩放的优缺点
图像几何变换

实验二 图像几何变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;二、实验原理1 初始坐标为(x , y )的点经过平移(0x ,0y ),坐标变为('x ,'y ),两点之间的关系为:⎩⎨⎧+=+=0''y y y x x x ,以矩阵形式表示为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 0y 1 0 0 11''00y x x y x2 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1 0 0 0 11''y x y x ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1- 0 0 0 11''y x y x 3 图像缩小和放大变换矩阵相同: ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 0 0 0 1''y x y x S S y x 当1 ,1≤≤y x S S 时,图像缩小;1 ,1≥≥y x S S 时,图像放大。
4 图像旋转定义为以图像中某一点为原点以逆时针或顺时针方向旋转一定角度。
其变换矩阵为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 cos sin 0 sin cos 1''y x y x θθθθ 该变换矩阵是绕坐标轴原点进行的,如果是绕一个指定点(b a ,)旋转,则现要将坐标系平移到该点,进行旋转,然后再平移回到新的坐标原点。
三、实验步骤1 启动MA TLAB 程序,对图像文件分别进行生成、失真和校正。
实验报告几何变换实验

实验报告几何变换实验实验报告:几何变换实验引言:几何变换是计算机图形学中的重要概念,它可以改变图像的形状、位置和大小。
在本次实验中,我们将通过对几何变换的实际操作,深入了解几何变换的原理和应用。
一、实验目的本次实验的主要目的是探究几何变换在图像处理中的应用,具体包括平移、旋转、缩放和翻转等几何变换操作。
通过实际操作和观察,我们将了解几何变换对图像的影响,并学习如何使用计算机编程实现这些变换。
二、实验材料和方法1. 实验材料:- 一台计算机- 图像处理软件(如Photoshop、GIMP等)- 编程软件(如Python、MATLAB等)2. 实验方法:- 步骤一:选择一张图片作为实验对象,并导入到图像处理软件中。
- 步骤二:使用图像处理软件进行平移操作,观察图像的位置变化。
- 步骤三:使用图像处理软件进行旋转操作,观察图像的旋转效果。
- 步骤四:使用图像处理软件进行缩放操作,观察图像的大小变化。
- 步骤五:使用图像处理软件进行翻转操作,观察图像的翻转效果。
- 步骤六:使用编程软件编写程序,实现上述几何变换操作,并观察结果。
三、实验结果与分析1. 平移操作:在实验中,我们发现通过平移操作,可以将图像在水平和垂直方向上进行移动。
通过调整平移的距离和方向,我们可以改变图像在画布上的位置。
这种操作常用于图像的对齐和拼接等应用中。
2. 旋转操作:旋转操作可以改变图像的角度和方向。
通过调整旋转的角度和中心点,我们可以使图像以不同的角度进行旋转。
这种操作常用于图像的矫正、仿射变换等应用中。
3. 缩放操作:缩放操作可以改变图像的大小。
通过调整缩放的比例,我们可以使图像变得更大或更小。
这种操作常用于图像的放大、缩小、裁剪等应用中。
4. 翻转操作:翻转操作可以改变图像的方向。
通过水平或垂直翻转,我们可以使图像在左右或上下方向发生镜像反转。
这种操作常用于图像的镜像处理、对称效果等应用中。
四、实验总结通过本次实验,我们深入了解了几何变换在图像处理中的应用。
第6章-图像的几何变换课件

第6章-图像的几何变换
1、几何变换基础
• 几何变换常用于摄象机的几何校正过程,这对于利用 图像进行几何测量的工作是十分重要的。
• 如:仿射变换(Affine Transformation),它属于射影 几何变换,多用于图像配准(Image Registration)作 为比较或匹配的预处理过程;
二维平面图像的几何变换;
三维图像的几何变换;
三维向二维平面投影变换等。
• 从图像的性质分,图像的几何变换有:
平移、比例缩放、旋转、反射和错切等基本变换;
透视变换和复合变换;
插值运算等。
第6章-图像的几何变换
1、几何变换基础
图像的几何变换是通过改变图像中物体(像素)之间 的空间关系的过程。图像的几何变换可以看成将各像 素在图像内移动的过程。其定义为 :
x x0 x y y0 y
这个变换用矩阵的形式可以表示为:
x 1 0x0 x
y
0 1y0
y
第6章-图像的几何变换
1.1齐次坐标
O P0(x0 , y0)
x y0
y
P(x , y)
y x0
x
点的平移 第6章-图像的几何变换
1.1齐次坐标
而平面上点的变换矩阵中没有引入平移常
第6章-图像的几何变换
2、图像比例缩放
比例缩放前后两点P0(x0, y0)、P(x, y)之间的 关系用矩阵形式可以表示为:
x
fx
0
0
x
0
y 0
fx
0
图像几何变换ppt课件

f(u0, v) = S(1+α)f(u -1, v)+S(α) f(u,
v)+
f(u+2, v)
S(1-α) f(u+1, v)+ S(2-α)
同理可得f(u , v-1), f(u , v+1), f(u , v+2) 22
三种方法比较
优点 最近邻法 简单快速
双线性插值 法
三次内插法
14
重采样
• 问题:
– 对输出离散图像使用逆映射函数得到的采样位 往往与输入离散图像坐标不相重合
• 解决方法:
1.将输入离散图像转换成一个连续的表面,即图 像重建过程
2.重建后,便可以在任意位置对其进行采样
• 图像重采样的两个步骤:
1.图像重建
2.采样
15
灰度插值方法
• 最近邻法 • 双线性插值法 • 三次内插法
16
出点 (u0, v0)的灰度值 (a)最近邻法; (b)双线性插值法;(c)三次内 插法
17
最近邻法
• 将与(u0, v0)点最近的整数坐标(u, v)点的灰度
值取为(u0, v0)点的灰度值
18
双线性插值法
• 用线性内插方法,根据(u0, v0)点的四个相
邻点的灰度值,插值计算出(u0, v0) 点的灰
5
几何变换
• 由两个基本操作组成
1.坐标的空间变换 2.灰度内插
6
坐标的空间变换
• (u, v)是原图像中像素的坐标 • (x, y)是变换后图像中像素的坐标 • 例如,变换(x, y) = T{(u, v)} = (u/2, v/2)
7
坐标的空间变换
halcon 几何变换

halcon 几何变换
Halcon是一款用于机器视觉应用开发的软件库,其几何变换功能可以用来对图像进行平移、旋转、缩放和仿射等变换操作。
在Halcon中,可以使用以下函数来实现几何变换:
1. affine_trans_image():用于对图像进行仿射变换,可以通过指定仿射矩阵来进行旋转、平移、缩放和错切等变换操作。
2. hom_mat3d_translate():用于对3D图像进行平移变换,可以通过指定平移向量来实现。
3. hom_mat3d_rotate():用于对3D图像进行旋转变换,可以通过指定旋转轴和旋转角度来实现。
4. projective_trans_image():用于对图像进行透视变换,可以通过指定透视矩阵来实现。
5. hom_mat2d_identity():用于创建2D仿射变换的单位矩阵,可以用来初始化变换矩阵。
这些函数可以在Halcon的开发环境中使用,详细的使用方法和参数说明可以参考Halcon的官
方文档。
数字图像处理---图像的几何变换

数字图像处理---图像的⼏何变换图像的⼏何变换图像的⼏何变换包括了图像的形状变换和图像的位置变换图像的形状变换图像的形状变换是指图像的放⼤、缩⼩与错切图像缩⼩图像的缩⼩是对原有的数据进⾏挑选或处理,获得期望缩⼩尺⼨的数据,并尽量保持原有的特征不消失分为按⽐例缩⼩和不按⽐例缩⼩两种最简单的⽅法是等间隔地选取数据图像缩⼩实现设原图像⼤⼩为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%。
数字图像处理课件第6章图像的几何变换

x Hx H
y Hy H
第6章 图像的几何变换
齐次坐标的几何意义相当于点(x, y)落在3D空间H=1
的平面上,如图6-2所示。如果将xOy平面内的三角形abc的 各顶点表示成齐次坐标(xi, yi, 1)(i=1, 2, 3)的形式,就变成H =1平面内的三角形a1b1c1的各顶点。
图6-2 齐次坐标的几何意义
第6章 图像的几何变换
齐次坐标在2D图像几何变换中的另一个应用是:如某 点S(60 000,40 000)在16位计算机上表示,由于大于32767 的最大坐标值,需要进行复杂的处理操作。但如果把S的坐 标形式变成(Hx, Hy, H)形式的齐次坐标,则情况就不同了。 在齐次坐标系中,设H=1/2,则S(60 000,40 000)的齐次坐 标为(x/2,y/2,1/2),那么所要表示的点变为(30 000, 20 000,1/2),此点显然在16位计算机上二进制数所能表示 的范围之内。
(图像上各点的新齐次坐标)
(图像上各点的原齐次坐标)
第6章 图像的几何变换 设变换矩阵T为
a b p
T c
d
q
l m s
则上述变换可以用公式表示为
=
T
Hx1' Hy1'
Hx2' Hy2'
Hxn' Hyn'
x1 x2 xn
T
y1
y2
yn
H H H 3n
1 1 1 3n
第6章 图像的几何变换
6.4 图像镜像
6.4.1 图像镜像变换 图像的镜像(Mirror)变换不改变图像的形状。 镜像变换分为两种:一种是水平镜像,另外一种是垂直镜
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期图像处理综合训练题目:图像几何变换程序设计专业班级:姓名:学号:指导教师:成绩:目录摘要 0一、前言 (1)二、算法分析与描述 (2)2.1图象平移 (2)2.2图象比例变换 (2)2.3图象水平、垂直翻转 (3)2.4图象旋转 (3)三、详细设计过程 (5)3.1算法分析 (5)3.2设计内容 (6)3.3流程图 (6)四、调试过程中出现的问题及相应解决办法 (8)五、程序运行截图及其说明 (9)六、简单操作手册 (12)设计总结 (16)参考资料 (17)致谢 (18)附录 (19)摘要图形图像处理主要是通过计算机对图像进行处理,从而达到预期的那种效果的技术。
因为处理离不开计算机,所以又称计算机图像处理。
图像几何变换是计算机图像处理中很重要的一部分,主要包括图像的水平、垂直翻转,图像旋转变换,图像比例变换。
在图像处理中,可以通过MATLAB来实现图像的几何变换,此软件的语法结构简单,并且具有极强的数值计算、图形文字处理、数据分析、图形绘制及图像处理等功能。
关键字:图像的几何变换;MATLAB;图像的旋转;垂直、水平翻转;比例变换一、前言MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是一种既可交互使用又能解释执行的计算机编程语言。
所谓交互使用,是指用户输入一条语句后立即就能得到该语句的计算结果,而无需像C语言那样首先编写源程序,然后对之进行编译,连接,才能最终形成可执行文件。
MATLAB语言可以用直观的数学表达式来描述问题,从而避开繁琐的底层编程,因此可大大提高工作效率。
图像用数字任意描述像素点、强度和颜色。
描述信息文件存储量较大,所描述对象在缩放过程中会损失细节或产生锯齿。
在显示方面它是将对象以一定的分辨率分辨以后将每个点的色彩信息以数字化方式呈现,可直接快速在屏幕上显示。
分辨率和灰度是影响显示的主要参数。
图像适用于表现含有大量细节(如明暗变化、场景复杂、轮廓色彩丰富)的对象,如:照片、绘图等,通过图像软件可进行复杂图像的处理以得到更清晰的图像或产生特殊效果。
图像几何变换主要是指数字图像的几何变换(或称为空间变换),即图像中点与点之间的空间映射关系。
是通过数学建模实现对数字图象进行几何变换的处理。
可以让我们从不同角度去观察或欣赏图片,增加对个方位图像的理解。
二、算法分析与描述2.1图象平移图像平移是将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平移后的图像与原图像相同。
平移后的图像上的每一点都可以在原图像中找到利用齐次坐标,变换前后图像上的点P0(x0, y0)和P(x, y)之间的关系可以用如下的矩阵变换表示为:2.2图象比例变换图象比例变换是指图象缩小。
图象缩小是通过减少像素个数来实现的,根据所期望缩小的尺寸数据,从原图象中选择合适的像素点,使图象缩小之后可以尽量保持原有图像的概貌特征不丢失。
以图象缩小为例设原图像大小为M*N,缩小为k1M*k2N,(k1<1,k2<1)。
算法步骤如下:(1)设原图为F(i,j),i=1,2,…,M;j=1,2,…,N.压缩后图像是G(x,y), x=1,2,…,k1M, y=1,2,…,k2N.其中,c1=1/k1 c2=1/k2 为采样间隔(2)G(x,y)=F(c1*x,c2*y)2.3图象水平、垂直翻转图像的水平翻转操作是以原图像的垂直中轴线为中心,将图像分为左右两部分对称变换;图像的垂直镜像操作是以原图的水平中轴线为中心,将图像分为上限两部分对称变换。
翻转后的高和宽都不变。
设图像高度为Height ,宽度为Width ,原图中的(0x ,0y )经过水平翻转后坐标将变为(Width-0x ,0y )即1010Width-x x y y =⎧⎨=⎩ 同样,(0x ,0y )经过垂直翻转后坐标将变成为(0x ,Width-0y ),即1010Height-x x y y =⎧⎨=⎩ 2.4图象旋转图像的旋转是指以图像中的某一点为原点以逆时针或顺时针方向旋转一定的角度。
通常是围绕图像的起始点以逆时针旋转。
这样,就可以利用解析几何的方法来实现图像的旋转。
(x ,y )直角坐标系中的图像旋转)图像旋转计算公式如下:1010Width-x x y y =⎧⎨=⎩ 其中,(,)i j 是原图像(,)f i j 中的像素的坐标;''(,)i j 是对应像素点(,)i j 经过旋转变换后图像''(,)G i j 的像素的像素点坐标。
图像旋转以后会出现空穴的现象,可以用插值法来解决。
所谓插值法就是在判断为空穴的位置上填充一个估计的值。
因为估计值的选择不同,得到的方法的复杂度和效果也不同,在这里用的是均值插值法。
均值插值法是将空穴像素周围像素的均值作为填充值填在该空穴点中,如:图图131112232122333132 0 0 0 0 G 0 0 0f f f f f f f f f ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦其空穴像素点为(2,3)的周围(上、下、左、右)的像素值为13221223,,,f f f f ,则该点的像素值2313221223()/4g f f f f =+++,即13111223232122333132 0 0 0 G 0 0 0f f f g f f f f f f ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦。
三、详细设计过程3.1算法分析本课程设计通过菜单和按钮的方式来对图片进行各种几何变换,操作简单,处理结果一目了然。
系统具备良好的图形用户界面,通过按钮或菜单进行操作控制,能让用户方便地选择不同的图像文件进行处理,并显示图像处理的结果。
利用菜单按钮及简介的版块设计实现各功能的处理结果与操作方式。
介绍图片处理按钮菜单的功能。
主界面设计如下:图(1)主界面3.2设计内容图像的几何变换:平移,缩放,翻转,旋转。
1平移:平移是日常生活中最普遍的运动方式,而图像的平移是几何变换这中最简单的变换之一。
菜单中使用 translate函数和movesult对图像进行平移,通过改变程序中的参数可以控制平移的方式,视需求而定。
2翻转:实现水平,垂直,翻转处理,双精度取点后调用函数实现。
3缩放与旋转变换:利用'nearest' 'bilinear' 'bicubic'三个函数实现图片的三种缩放与旋转处理。
利用imresize和imrotate两个函数实现缩放及旋转功能。
3.3流程图(1)翻转图(2)翻转流程图(2)缩放与旋转图(3)缩放与旋转四、调试过程中出现的问题及相应解决办法对matlab函数调用不够熟悉,导致在设计的时候陷入很多误区。
比如,平移变换的方法二总是指示错误,后来几经调试,才排除错误,得到正确的结果。
还有提高部分的努力也是一样。
本次课程设计主要是运用了上课所学的知识与Matlab的强大函数调用功能,不足之处甚多,但是本次的设计中我们也有少许的创新之处,比如,Matlab 参数录入子程序就是小组自己编写的,花了很多功夫收集资料以及改进。
五、程序运行截图及其说明(1)未经处理的原图图(4)原图(2)图像进行平移变换:图(5)平移后的结果(3)水平翻转:图(6)水平翻转(4)垂直翻转:图(7)垂直翻转(5)旋转图(8)旋转45度六、简单操作手册在matlab中打开kk.fig并运行,在打开的图形界面中单击:文件--->打开,选中所要处理的图片,打开。
选择所要进行的变换方式,进行变换,打开图片界面图(9)操作界面平移效果:图(10)图(11)放大、缩小:图(12)图(13)双线性内插法放大2倍水平翻转:图(14)水平翻转垂直翻转:图(15)垂直翻转旋转:图(16)图(17)图像旋转100度(截取部分)撤销、退出:“撤销”可以实现图像的还原,“退出”可以退出编辑图(18)设计总结通过这次“基于matlab的数字图像处理”的课程设计,学到了很多很多,最基本的就是重新熟悉了matlab语言,不仅仅只是在matlab编程上面有所提高和对界面设计熟悉,对数字图像处理也有了更深刻的认识。
首先,明白了图像对于matlab而言就是矩阵,灰度图像和彩色图像对应于不同维数的矩阵,分别为二维和三维,其中三维矩阵每一位代表一种颜色。
矩阵可以使实数,也可以使复数,不同的图像矩阵的元素对应于不同的类型,有double,uint8等类型。
由于几乎所有的matlab函数及其工具箱函数都可以使用double作为参数类型,不过由于64bit来表示图像数据存储量特别巨大,所以matlab还支持图像数据的无符号整型存储,所以使用时还要注意输出数据类型的转换。
最后,我们必须要明白理论指导实践,要想实现预期的效果,必须明白它实现的机制和相应的算法,只有通过相应的理论来指导,我们才能有所创新,才能有所突破,而不只是单纯的引用相应的处理函数。
例如对于截图函数,它只能是截取坐标轴内的图像,对坐标轴意外的图像却不能处理,而且对于同时显示在坐标轴上的几张图像,它只能处理最后显示的那张,如果我们通过对它改进,能实现像qq截图那样的功能就很强大了。
不过通过这次的实现,我对图像的模式,几何变换的原理,图像的平移,水平、垂直翻转,缩放以及旋转等原理都有了更清楚的认识,也明白了它们的实现机制。
matlab还有很多很多新功能等待我们去探索。
通过这次的课程设计,我们受益匪浅。
参考资料[1]郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社2002年版[2]张弘.数字图像处理与分析[M].北京:机械工业出版社 2005年版[3]孙兆林.MATLAB 6.X图像处理[M].北京:清华大学出版社 2010年版致谢通过此次课程设计,在一定程度上提高了我的实际动手能力,同时也培养了我思考问题、解决问题的能力。
对于matlab软件的应用能力也得到了很大的提高,了解到了很多自己有所不足的地方。
虽然只有短短的两周时间,但是这使我认识到了做设计的乐趣,也明白了课程设计对于知识的吸收和要点的理解是非常重要,在两周的时间里,遇到了很多问题,周围同学和老师的帮助起了很大的作用,非常感谢他们,充分体会到了团队合作的重要性。
附录Matlab程序实现代码(1)图片的平移平移axes(handles.axes2); %定义图像显示位置I=handles.img;%选定操作图T=getimage;%获取图像信息prompt={'输入参数:'};defans={'2'};p=inputdlg(prompt,'input',1,defans); %创建数据输入窗口 p1=str2num(p{1});J = double(I);%定义为双精度型H = size(I);%定义尺寸I_moveresult = zeros(H);%平移后背景变成了黑色的x_move =p1; y_move =p1;I_moveresult(x_move+1:H(1),y_move+1:H(2),1:H(3))=J(1:H(1)-x_move,1:H(2)-y_move,1:H(3));imshow(mat2gray(I_moveresult));(2)图片的放大、缩小缩放axes(handles.axes2); %定义图像显示位置;I=handles.img; %选定操作图T=getimage; %获取图像信息prompt={'输入参数:'};defans={'2'};%定义数据,放大缩小p=inputdlg(prompt,'input',1,defans);%创建数据输入窗口 p1=str2num(p{1});f=imresize(I,p1,'nearest'); %选用插值方法最近邻法figure,%新建窗口imshow(f);%显示结果(3)图片翻转水平翻转axes(handles.axes2); %定义图像显示位置;A1=handles.img; %选定操作图A1=double(A1);%定义为双精度型H=size(A1);%定义尺寸A3(1:H(1),1:H(2),1:H(3))=A1(1:H(1),H(2):-1:1,1:H(3));%水平翻转imshow(uint8(A3));%显示结果垂直翻转axes(handles.axes2); %定义图像显示位置;A1=handles.img; %选定操作图A1=double(A1); %定义为双精度型H=size(A1); %定义尺寸A2(1:H(1),1:H(2),1:H(3))=A1(H(1):-1:1,1:H(2),1:H(3));%垂直翻转imshow(uint8(A2)); %显示结果(4)图片的旋转旋转axes(handles.axes2); %定义图像显示位置;T=getimage; %获取图像信息prompt={'旋转角度:'};defans={'0'};p=inputdlg(prompt,'input',1,defans); %创建数据输入窗口p1=str2num(p{1});%把字符串转换为数值f=imrotate(handles.img,p1,'nearest');%旋转并定义插值方法imshow(f); %显示结果(5)撤销(还原)axes(handles.axes2);%还原y=imread(S);f=imshow(y);handles.img=y;guidata(hObject,handles);。