第七章几何操作_第1页
第七章几何操作_第2页
第七章几何操作_第3页
第七章几何操作_第4页
第七章几何操作_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章几何操作 几何操作是通过一种约束的方式重新排列像素而改变一幅图像的几何布局换句话说不是去改变像素值而是要改变图像中感兴趣的目标或代表特征的像素组之间的相对位置关系。 几何操作可以用来达到不同的目的 大多数几何操作包括两个组件 (1)映射函数:用一组空间变换方程来指定。 (2)插值方法:用来计算在空间变换后的图像中各个像素的新值。7.2 映射和仿射变换 一个几何操作从数学上可描述为通过调整图像像素坐标将一幅输入图像f(x,y)变换为一幅新图像g(x, y)的过程: f(x,y)g(x,y) 映射函数 (x,y)=T(x,y) 转化为两个分离的函数 x=Tx(x,y) y=Ty(x,y) 其

2、中Tx,Ty常表示成x和y的多项式。当Tx和Ty是x和y的线性组合时可称这种情况为仿射仿射变换变换(或仿射映射):(或仿射映射): 仿射映射可以将直线变换成直线,三角形变换成三角形,矩形变换成平行四边形。012yb xb yb012 xa xa ya表7.1对所选仿射变换系数的汇总变换a0a1a2b0b1b2用x, y平移10 x01y用sx,sy放缩sx000sy0用角度逆时针旋转cos -sin 0sin cos 0用shx,shy剪切1shy0shx10 例 利用仿射变换将一个三角形映射为另一个三角形(x0,y0)( x2,y2 )(x1,y1)(x2,y2)(x0,y0)(x1,y1)

3、输入输出 在在MATLAB中中 IPT有两个与仿射变换关联的函数:maketform和imtransform。 函数maketform:用来定义希望的2D空间变换,支持投影变换和自定义的变换。 函数imtransform :在定义了需要的变换后,可以使用函数imtransform将其用于输入图像。例7.1对下面的各个操作构建仿射变换矩阵:(a)旋转30;(b)在两个方向上都用因子3.5进行放缩;(c)用25,15个像素进行平移;(d)用因子2,3剪切。 解:将上述值代入表7.1,得到如下结果 (a)因为cos30=0.866,sin30=0.500: (a) 0.866 -0.5 0 0,5

4、0.866 00 0 1(b)3.5 0 0 0 3.5 00 0 1 (c)1 0 00 1 025 15 1(d)1 3 02 1 00 0 1 filename = psb(3).jpg I = imread(filename); Ta = maketform(affine,cosd(30) -sind(30) 0; sind(30) cosd(30) 0; 0 0 1); Ia = imtransform(I, Ta); Tb = maketform(affine,3.5 0 0;0 3.5 0;0 0 1); Ib = imtransform(I, Tb); xform=1 0 0;

5、0 1 0;25 15 1; Tc = maketform(affine,xform); Ic = imtransform(I, Tc, XData, 1 (size(I,2) + xform(3,1),XData, 1 (size(I,1) + xform(3,2),FillValue,128); Td = maketform (affine,1 3 0;2 1 0;0 0 1); Id = imtransform(I,Td); subplot(2,6,1),imshow(I); subplot(2,6,2),imshow(Ia); subplot(2,6,3),imshow(Ib); su

6、bplot(2,6,4),imshow(Ic); subplot(2,6,5),imshow(Id); affine:仿射变换,包括平移、旋转、比例和错切。变换后,直线仍是直线,平行线保持平行,但矩形有可能变为平行四边形。原始图像旋转后图像放缩后像平移后的像剪切后的图像7.3 插值方法 7.3.1 对差值的需求 对原始图像几何操作后各个像素的结果值有两种算法向前映射和向后映射。 向前映射:源到目标映射。它包括计算输入图像所有像素的新坐标并将其值复制到新的位置。 缺点:很多由变换式算的坐标不是整数; 很多坐标可能落在界外; 很多输出像素的坐标在计算中赋值了很多 次而有些根本没有赋值过。 T源图像

7、F目标图像Fyxyx图7.3 向前映射 向后映射:访问输出图像中的每个像素并使用逆变换确定输入图像中需要采样像素值的坐标。输出像素一次一个地映射回到原始(输入)图像中,以便确定其灰度级。 缺点:常产生在原始图像采样网格点之外的结果,还需要某种形式的插值以计算一个像素的最佳值。向后映射方法也成为目标到源的映射源图像F目标图像FyxyxT 图7.4 向后映射 7.3.2 简单的插值方法 缺陷 (1)当放大一幅图像时”块”效应可能变得比较明显;如图7.5如果放大倍数太大, 按照最近邻插值处理会出现马赛克效应。 放大5倍图 7.5(2) 在收缩过程中有可能删除了本质的信息;(3)很难讲这些方法推广到任

8、意的、非整数的放缩因子。 其他简单插值方法如使用输入图像中原始nn块的均值来确定收缩图像中各个输出像素的值,也会产生低质量的结果甚至在一些情况下失效。 7.3.3 (1 )零阶插值(最近邻插值) 原理:它将计算的坐标(x,y)舍入到它们最近的整数。取待采样点周围四个相邻像索点中距离最近的一个邻点的灰度值作为该点的灰度值。就是最临近点重复 (2)线形插值 线形插值是使用原图中两个值来构造所求坐标处的值。 例如:如图所示,如果已经知道了两点x0,x2处的函数值f(x0),f(x2),现在要求x1处的函数值f(x1)。我们假设函数是线性的,利用几何知识可以知道:20110020()()()()()f

9、 xf xf xxxf xxx 在图象处理中需要将线形插值扩展到二维的情况,即采用双线形插值(Bilinear Intrepolation)7.3.4 一阶(双线性)插值 原理: 一阶插值用输入图像中围绕参考像素的四个像素灰度值的加权函数来计算差值像素(在坐标(x,y)处)的灰度值。 例如:已知四点 f(x0,y0),f(x0,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)

10、,g(x2,y1)线形插值求出g(x1,y1)020001100020( ,)( ,)( , )()( ,)f x yf x yg x yyyf x yyy222021102020( ,)( ,)( , )()( ,)f x yf x yg x yyyf x yyy212111100120( , )( , )( , )()( , )f x yf x yg x yxxf x yxx双线性插值可以通过三次运算的到。处理效果比较满意。这种处理具有低通滤波性质,使高频分量受到损失,图像轮廓模糊。7.3.5 高阶插值 原理:它考虑围绕参考像素的44邻域并通过将该邻域与一个立方函数卷积来计算差值像素的灰度

11、值。7.4 使用MATLAB进行几何操作 7.4.1 放大缩小和调整大小 调整大小:结果图像尺寸改变了,非交互进行。 放大、缩小:交互进行,图像结果存在很短时间。 用来调整大小的函数:imresize。函数imresize允许用户指定所用插值方法。 7.4.2 平移 对一幅图像f(x,y)相对于他的坐标原点平移产生输出图像g(x,y)。 其中每个像素都平移了x, y .平移实例 7.4.3 旋转 对一幅图像的旋转是另一种仿射变换的特殊情况。 平移和旋转都可以利用maketform和imtransform来实现。 IPT还有专门用来旋转的函数:imrotate。 以原点为中心的旋转原图像 7.4

12、.4 裁剪 裁剪图像的函数:imcrop。裁剪矩形可以使用鼠标交互指定,也可以用坐标作为参数传递给函数。以图像中心为中心的旋转原图像新图像 实例:用imcrop裁剪一幅图像 I = imread(F:photoslena.jpg); J = imcrop(I,60 40 100 90); imshow(J); 运行结果如下:结果图像原图像 7.4.5 翻转 翻转函数: flipud,fliplr。 7.5 其它几何操作和应用 7.5.1 扭曲 定义:通过对2-D平面从新参数化来变换一幅图像。也称橡胶片变换。 二阶扭曲是多项式扭曲的一个特例对一个像素的原始坐标(x,y),它的变换坐标(x,y)为

13、:系数用来将更复杂的失真引入。 特殊应用:补偿镜头失真。 二阶或更高的扭曲操作常由在源图像中的控制点来指定,并将它们映射到目标图像的相应位置。控制点常与图像中关键位置和特征相关联。 分段扭曲:是多项式扭曲的一种替代。它允许借助覆盖在输入图像上的控制网格来制定希望的扭曲。22345120yxyb xbbybyxbb22345012yxxya xaaya xaa原图扭曲效果1扭曲效果2 7.5.2 非线性图像变换 非线性图像变换常包括一个从矩形坐标到极坐标的转换,后接一个对结果点集的有意变形。 捻转:捻转变换导致一幅图像围绕一个坐标(xc,yc)的定位点旋转一个随空间变化的角度:这个角度在定位点的

14、值是,然后随着与中心径向距离的增加而线性减少。这种效果局限于最大半径为rmax的区域。 逆映射函数的方程: Tx x= Ty y=yc+rsin( ) rrmaxy rrmax xc+rcos() rrmaxx rrmaxdx=x-xc, rdx+dy,dy=y-yc, +arctan(dx,dy)+(rmax-r)/rmax). 纹波:纹波变换导致一幅图像沿x和y 方向产生一个局部波纹状的移动。这个映射的参数是周期长度Lx,Ly以及相关联的振幅值Ax,Ay,逆变换函数为: Tx:x=x+Axsin(2y/Lx) Ty :y=y+Aysin(2x/Ly) 7.5.3 变形 变形可以看作一个修改

15、过的分段弯曲版本,用户在初始图像和最终图像中指定控制点,这些控制点用来生成网格,每幅图像一个,仿射变换将结果网格结合起来。变形的另一个方面是渐进的计算弯曲,一次一个小步骤,并在从初始图像到结果图像中间与一个叠化效果相结合。 7.5.4 接缝焊接 算法基本思路是在原始图像中寻找接缝并使用该信息: (1):通过消去对图像内容贡献最少的接缝减少图像尺寸; (2):通过插入更多的接缝来扩大图像。 7.5.5图像配准 对同一场景两幅或多幅图像对齐的过程。 首先,输入图像都与一幅参考图像比较 下一步,对输入图像使用一个空间变换以将它与基图像对齐。 教程(1)使用imresize来收缩图像I = imrea

16、d(F:photospip.png)subplot(2,2,1),imshow(I);I_sm2 = imresize(I, 0.5, nearest);I_sm3 = imresize(I, 0.5, bilinear);I_sm4 = imresize(I, 0.5, bicubic);figure,subplot(2,2,2),imshow(I_sm2);figure,subplot(2,2,3),imshow(I_sm3);figure,subplot(2,2,4),imshow(I_sm4);原始图像最近邻插值图像双线性插值图像双立方插值图像双立方插值最近邻插值 教程(2)使用flipud,fliplr翻转 I = imread(F:photoslena.jpg); J = flipud(I);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论