图像几何运算.

上传人:我** 文档编号:117866540 上传时间:2019-12-11 格式:PPT 页数:54 大小:1.43MB
返回 下载 相关 举报
图像几何运算._第1页
第1页 / 共54页
图像几何运算._第2页
第2页 / 共54页
图像几何运算._第3页
第3页 / 共54页
图像几何运算._第4页
第4页 / 共54页
图像几何运算._第5页
第5页 / 共54页
点击查看更多>>
资源描述

《图像几何运算.》由会员分享,可在线阅读,更多相关《图像几何运算.(54页珍藏版)》请在金锄头文库上搜索。

1、图像几何运算 几何运算改变像素之间的空间位置,没有改变灰度等级 值,需要两个独立的算法:空间变换和灰度值插值 图像的几何运算 几何运算也叫几何变换:包括图象的平移, 旋转,镜象变换,转置,放缩等。 一平移(translation) 将图像沿水平或垂直方向移动位置后,获得 新的图像的变换方式。例如:图像坐标中象 素点(x0 ,y0)移动到(x1,y1) 位置灰度不变。 (x0 ,y0 )点,经过平移(tx,ty),变为点( x1,y1)两点之间的关系 为:x1=x0+tx; y1=y0+ty.以矩阵的形式表示为 : 我们更关心的是它的逆变换: 因为:我们想知道的是平移后的图象中每个像素 的颜色

2、。x0=x1-tx , y0=y1-ty 例如:新图中左上角点的RGB值是多少?很显 然,该点是原图中的某一点经过平移后得到的 ,这两点的颜色肯定是一样的,所以只要知道 了原图那点的RGB值即可。那么到底新图中的 左上角点对应原图中的哪一点呢?将左上角点 的坐标(0,0)代入公式(2),得到x0=-tx;y0=- ty;所以新图中的(0,0)点的颜色和原图中(-tx, -ty)的一样。设用 表示新图,用 表示原图。 在新图的坐标系中是左上角的象素,原图 中的象素 在新坐标系中的位置变成了 f(tx,-ty),新的坐标系中g(0,0)f(-tx,-ty)。 例如: 平移后出现的问题 1、如果新图

3、中有一点(x1,y1),按照公式(2)得到的 (x0,y0)不在原图中该怎么办? 通常的做法是,把该点的RGB值统一设成(0,0,0)或者 (255,255,255)。 2、平移后的图象是否要放大? 一种做法是不放大,移出的部分被截断,如下图所示,图2 为原图,图3为移动后的图。这种处理,文件大小不会改变 。 平移前的图 平移后的图像 还有一种做法是:将图象放大,使得能够显示下所有部分 移动后被放大图像 这种处理,文件大小要改变。设原图的宽和高 分别是w1,h1则新图的宽和高变为w1+|tx|和 h1+|ty|,加绝对值符号是因为tx,ty有可能为负 . 下面给出Translation的源代码

4、。算法的思想是 先将所有区域填成白色,然后找平移后显示区 域的左上角点(x0,y0)和右下角点(x1,y1)。 分几种情况: 先看x方向(width指图象的宽度) l1.tx-width 很显然,图象完全移出了屏幕,不用做任何处理 2-widthtx0,如图5所示图像向左上方移动 图象区域的x范围从0到width-|tx|,对应原图的范围 从|tx|到width 图5 30txwidth , 如图6所示 , 图像向右下方平移 0txwidth,0tyheight的情况图象区域的x范围从 tx到width,对应原图的范围从0到width-tx 图6 4txwidth,图象完全移出了屏幕,不用做任

5、 何处理 。 y方向是对应的(height表示图象的高度 1ty-height,图象完全移出了屏幕,不用做任 何处理 2-heightty0,图象区域的y范围从0到height- |ty|,对应原图的范围从|ty|到height 30tyheight ,图象区域的y范围从ty到height, 对应原图的范围从0到height-ty 4tyheight,图象完全移出了屏幕,不用做任 何处理 ) 这种做法利用了位图存储的连续性 ,即同一行的像素在内存中是相邻的 。利用memcpy函数,从(x0,y0)点开始 ,一次可以拷贝一整行(宽度为x1-x0 ),然后将内存指针移到(x0,y0+1)处, 拷贝

6、下一行,这样拷贝(y1-y0)行就完 成了全部操作,避免了一个一个像素 的计算,提高了效率。 图像平移实例 1.图像平移按钮属性修改 2.创建translation 的窗体,添加两个 按钮,2个textbox控件,2个label控 件和1个groupbox控件 3.Translation窗体的按钮click事件, 2个get属性访问器 4.图像平移按钮的click事件(主) 保持原图像尺寸大小不变,超出的尺寸被截断,不足的部分以白色像素填充 X=x+x0 Y=y+y0 (4.1) 把坐标原点(0 ,0)平移到(x0,y0) 图像镜象(mirror) 镜象分水平镜象和垂直镜象两种 原图 水平镜像

7、 垂直镜像 镜象的变换矩阵很简单,设原图宽为w,高为h ,变换后,图的宽和高不变. 水平镜象为: 垂直镜象为 图像镜像实例 1.Mirror窗体2个按钮控件,1个 groupbox控件和2个Radiobutton控件 2.给Mirror窗体的2个按钮添加click事件 和1个get属性访问器 3.主窗体的图像镜像按钮,添加click事件(主) 以水平中轴线为对称轴,两边像素值互换 图像缩放(zoom) 图像比例缩放是指将给定的图像在x轴方向按比 例缩放fx倍,沿y轴方向比例缩放fy。当fx fy时, 称为图像的全比例缩放。当fx fy时,图像象素间 的相对位置会发生畸变。 设原图像中的点P(x

8、0,,y0),比例缩放后在新的图像 中对应点P(x,y), P(x0,,y0)和 P(x,y)之间的对应 关系如图所示: 比例缩放前后两点之间的关系用矩阵表示为: 其逆矩阵为: 插值算法(Interpolation) 比例缩放所产生的图像中有可能在原图中找不到相应的 象素点,我们采用的做法是找与之最临近的点,我们采 用的做法是找与之最临近的点 。即利用邻域的像素来 估计新的像素值 的处理方法就是插值算法。 常用的插值算法有: 最邻近插值(Nearest Neighbour Interpolation)。 线形插值(Linear Interpolation)。 双线形插值(Bilinear In

9、trepolation) 曲线插值(Curvilinear Interpolation) (1)最临近插值 图像变换后找不到相应的象素点时,直接赋值 为和它最相近的的象素值的插值算法。 例如:在图像的缩放中,将一幅66的图像按 比例缩小,fxfy1/2,图像的长和宽均缩小到 原来的一半,成为一幅33的图像。 原图像的象素从(0,0)到(5,5),新图像 的象素从(0,0)到(2,2)。如下图: 66的原图f 新图中的灰度值利用缩放公式 计算得到 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(

10、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 图像缩小,可以在原图像中挑选信息,缩小之后的图 与原图像比较丢失了很多信息。 图像放大处理中,需要对放大后多出来的空格填入适 当的象素值,采用最临近插值法举例如下: 44的以原图f 长和宽各放大2倍,利用公式得到88的新图 像。新图像中各象素位置 X0=0 Y0=0 X1=0.5 Y1=0.5 X2=1 Y2=1 X31.5 Y3=1.5 X4=2 Y

11、4=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

12、,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(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

13、(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)

14、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) 放大后88的新图 (2)线形插值 线形插值是使用原图中两个值来构造所求坐标处的值 。 例如:如图所示,如果已经知道了两点x0,x2处的函数 值f(x0),f(x2),现在要求x1处的函数值f(x1)。我们假设 函数是线性的,利用几何知识可以知道: 双线性插值 在图象处理

15、中需要将线形插值扩展到二维的情况, 即采用双线形插值(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) 双线性插值可以通过三次运算的到。处理效果比较满 意。这种处理具有低通滤波性质,使高频分量受到损 失,图像轮廓模糊。 另外,图像处理中还使用双曲线插值,及三次内插法 解决图像缩放及图像旋转后的灰度填充。 图像缩放实例 将图像中某点(x,y)经过缩小放大后位置变成(x,y):x=ax y=by (4.5) 1.主窗体添加图像缩放控件 2.创建zoom的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号