数字图像处理几何变换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2 点运算
• 一、数字图像的代数运算 • 1、基本代数运算基础: 设图像
I f ( x, y)
J g ( x, y)
其运算可以分为图像自身的运算和图像间的运算, 从根本上而言可以看成对图像位置的运算或对该位 置上灰度级的运算。
基本代数运算:图像象素几何位置不变图 像灰度级的加、减、 乘、 除等运算。 几何运算:图像象素位置变换后,经过计 算,确定该象素灰度的运算。
这种做法利用了位图存储的连续性, 即同一行的像素在内存中是相邻的。 利用memcpy函数,从(x0,y0)点开始, 一次可以拷贝一整行(宽度为x1-x0), 然后将内存指针移到(x0,y0+1)处,拷贝 下一行,这样拷贝(y1-y0)行就完成了 全部操作,避免了一个一个像素的计 算,提高了效率。
二、旋转(rotation)
上面的公式中,坐标系I是以图象的中心为原点,向 右为x轴正方向,向上为y轴正方向。它和以图象左 上角点,向右为x轴正方向,向下为y轴正方向的坐 标系II之间的转换关系如何呢?
两种坐 标系间 的转换 关系
逆变换为 :
按照上面的公式,我们可以把变换分成 3步:
第一: 将坐标系II变成I ; 第二: 将该点顺时针旋转a角; 第三: 将坐标系I变回II ,这样,我们 就得到了变换矩阵,是上面三个矩阵的 级联。
先看x方向(width指图象的宽度)
1.tx≤-width 很显然,图象完全移出了屏幕,不用做任何处 理 2.-width<tx≤0,如图5所示图像向左上方移 动 图象区域的x范围从0到width-|tx|,对应原图 的范围从|tx|到width
图5
3.0<tx<width , 如图6所示 , 图像向右下方平移 0<tx<width,0<ty<height的情况图象区域的x范围 从tx到width,对应原图的范围从0到width-tx
• 先来看一下,将一 个点顺时针旋转a 角后的坐标变换公 式,如图10所示, r为该点到原点的 距离,在旋转过程 中,r保持不变。b 为r与x轴之间的角 度。
图10
x0=r*cos(b); y0=r*sin(b)
旋转前:x0=r*cos(b); y0=r*sin(b) 旋转a角度后 :
x1 r *cos(b a)
r *cos(b) cos(a) r *sin(b)sin(a) x0 cos(a) y0 sin(a)
y1 r *sin(b a) r *sin(b) cos(a) r *cos(b)sin(a) y0 cos(a) x0 sin(a)
以矩阵的形式表示
其逆矩阵的形式表示为
五、缩放(zoom)
• 图像比例缩放是指将给定的图像在x轴方向按比 例缩放fx倍,沿y轴方向比例缩放fy。当fx= fy 时,称为图像的全比例缩放。当fx ‡fy时,图像 象素间的相对位置会发生畸变。 • 设原图像中的点P(x0,,y0),比例缩放后在新的图 像中对应点P(x,y), P(x0,,y0)和 P(x,y)之间的 对应关系如图所示:
• 图像旋转是指图像以某一点作为轴转过一定的 角度。通常的做法是以图象的中心为圆心旋转。 • 例如:图7旋转30度(顺时针方向)后的图象 如图8所示. 可以看出,旋转后图象变大了。
图-7原图
图-8旋转后的图
若要使旋转后保持原尺寸图像就要进行裁切
有些内容就会损失。我们采用第一种做法
图像旋转变换矩阵
第五章数字图像处理中的 基本运算
本章主要内容和基本要求
• 数字图像的基本代数运算 • 数字图像的几何运算
5.1 数字图像处理基本运算的分类
一、图像处理算法的分类: 单幅图像————单幅图像 多幅图像————单幅图像 多幅图像或单幅图像————数值/符号(图像分析) 二、根据基本运算分类 点运算 邻域运算
比例缩放前后两点之间的关系用矩阵表示为:
x fx y 0 0 1
x1 f x x0
0 x0 fy 0 y0 1 0 1 0
y1 f y y0
其逆矩阵为:
x0 y 0 1
例如图像f和g:
f11 f f 21 f 31
f12 f 22 f 32
f13 f 23 f 33
g11 g g 21 g 31
g12 g 22 g 32
g13 g 23 g 33
代数运算就是二者点对点的加、减、乘、除 运算。对f图所有灰度加c级灰度可作如下处理: J=f+c
二、代数运算的用途
• 可以对同一场景的多幅图像求平均,以 降低加性零值平稳噪声。 • 两幅图像叠加达到二次曝光的效果。 • 减去图中不需要的加性噪声。 • 计算两幅场景的变化。 • 检测轮廓,确定轮廓现。
5.3 图像的几何运算
• 几何运算也叫几何变换:包括图象的平移, 旋转,镜象变换,转置,放缩等。 一.平移(translation) 将图像沿水平或垂直方向移动位置后,获 得新的图像的变换方式。例如:图像坐标 中象素点(x0 ,y0)移动到(x1,y1) 位置灰度 不变。
平移前的图
平移后的图像
还有一种做法是:将图象放大,使得能够显示下所有部分
移动后被放大图像
• 这种处理,文件大小要改变。设原图的宽和高 分别是w1,h1则新图的宽和高变为w1+|tx|和 h1+|ty|,加绝对值符号是因为tx,ty有可能为 负. 下面给出Translation的源代码。算法的思想是 先将所有区域填成白色,然后找平移后显示区 域的左上角点(x0,y0)和右下角点(x1,y1)。 分几种情况:
双线形插值(Bilinear InBaidu Nhomakorabearepolation) 曲线插值(Curvilinear Interpolation)
(1)最临近插值
• 图像变换后找不到相应的象素点时,直接赋值 为和它最相近的的象素值的插值算法。 • 例如:在图像的缩放中,将一幅6×6的图像 按比例缩小,fx=fy=1/2,图像的长和宽均缩 小到原来的一半,成为一幅3×3的图像。 原图像的象素从(0,0)到(5,5),新图 像的象素从(0,0)到(2,2)。如下图:
(x0 ,y0 )点,经过平移(tx,ty),变为点 (x1,y1)两点之间的关系 为:x1=x0+tx; y1=y0+ty.以矩阵的形式表示为 :
我们更关心的是它的逆变换:
因为:我们想知道的是平移后的图象中每个像素 的颜色 。x0=x1-tx , y0=y1-ty
例如:新图中左上角点的RGB值是多少?很显 然,该点是原图中的某一点经过平移后得到的, 这两点的颜色肯定是一样的,所以只要知道了 原图那点的RGB值即可。那么到底新图中的左 上角点对应原图中的哪一点呢?将左上角点的 坐标(0,0)代入公式(2),得到x0=-tx;y0=ty;所以新图中的(0,0)点的颜色和原图中(g ( x,表示新图,用 y) tx,-ty)的一样。设用 表示原图, y ) f (x。
在新图的坐标系中
中的象素
g (0,0)
是左上角的象素,原图
f(-tx,-ty),新的坐标系中g(0,0)=f(-tx,-ty)。
例如:
f ( x0 , y0 )
在新坐标系中的位置变成了
平移后出现的问题
• 1、如果新图中有一点(x1,y1),按照公式(2)得到的 (x0,y0)不在原图中该怎么办? 通常的做法是,把该点的RGB值统一设成(0,0,0)或者 (255,255,255)。 • 2、平移后的图象是否要放大? • 一种做法是不放大,移出的部分被截断,如下图所示, 图2为原图,图3为移动后的图。这种处理,文件大小 不会改变。 •
三、镜象(mirror)
• 镜象分水平镜象和垂直镜象两种
原图
水平镜像
垂直镜像
镜象的变换矩阵很简单,设原图宽为w,高为h, 变换后,图的宽和高不变. 水平镜象为:
垂直镜象为
四、转置(transpose)
• 转置是指将x,y坐标 对换
原图
转制后的图
要注意的是,转置和旋转90度是有区别的,不信你 可以试试,你怎么转,也转不出图15度来。另外, 转置后图的宽高对换了。 转置的变换矩阵很简单:
图6
4.tx≥width,图象完全移出了屏幕,不用做任 何处理 。
y方向是对应的(height表示图象的高度
1.ty≤-height,图象完全移出了屏幕,不用做任 何处理 2.-height<ty≤0,图象区域的y范围从0到 height-|ty|,对应原图的范围从|ty|到height 3.0<ty<height ,图象区域的y范围从ty到 height,对应原图的范围从0到height-ty 4.ty≥height,图象完全移出了屏幕,不用做任 何处理 )

1 fx 0 0
0 1 fy 0
0 x 0 y 1 1
x x0 fx
y y0 fy
插值算法(Interpolation)
• 比例缩放所产生的图像中有可能在原图中找不到相应 的象素点,我们采用的做法是找与之最临近的点,我们 采用的做法是找与之最临近的点 。即利用邻域的像素 来估计新的像素值 的处理方法就是插值算法。 • 常用的插值算法有: 最邻近插值(Nearest Neighbour Interpolation)。 线形插值(Linear Interpolation)。
上面公式中Wold表示原图的宽 ,Hold表示原 图 的高,Wnew新图的宽 ,Hnew新图的高 ,可 以看出
Wnew=max(|x4-x1|,|x3-x2|) ;
Hnew=max(|y4-y1|,|y3-y2|).
可以根据以上公式 ,求出对应的原图中 的点,得到它的灰度,如果超出原图范 围则填成白色。要注意的是,由于有浮 点运算,计算出来点的坐标可能不是整 数,采用取整处理,即找最接近的点, 这样会带来一些误差(图象可能会出现 锯齿),更精确的方法是采用插值 。插 值算法后面详细介绍。
6×6的原图f
3×3的新图g
图像缩小,可以在原图像中挑选信息,缩小之后的图 与原图像比较丢失了很多信息。
图像放大处理中,需要对放大后多出来的空格填入适 当的象素值,采用最临近插值法举例如下:
4×4的以原图f
长和宽各放大2倍,利用公式得到8×8的新 图像。新图像中各象素位置 X0=0 X2=1 X4=2 X6=3 Y0=0 Y2=1 Y4=2 Y6=3 X1=0.5 X3=1.5 X5=2.5 X7=3.5 Y1=0.5 Y3=1.5 Y5=2.5 Y7=3.5
f11 c f12 c f13 c J f c f 21 c f 22 c f 23 c f c f c f c 32 33 31
给整幅图像增加灰度级会使图像亮度得到提 高整体偏亮,给个别象素加灰度值可以使目 标景物突出,例如:
给一幅图像乘以一个系数,可以改变图像的灰 度级范围如:
af11 J af af 21 af 31
af12 af 22 af 32
af13 af 23 af 33
原来是20-200的灰度级范围,乘以2则 有40-400的灰度级范围
两幅连续的图像运算可以有基本运算组合而成 如:K=af+bg:
6×6的原图f
新图中的灰度值利用缩放公式
x x0 fx
计算得到
y y0 fy
X0=0/0.5=0
X1=1/0.5= 2 X2=2/0.5=4 g(0,0)=f(0,0) , g(1,0)=f(2,0), g(2,0)=f(4,0),
y0 =0
y1=2 y2=4 g(0,1)=f(0,2) , g(0,2)=f(0,4), g(1,1)=f(2,2), g(1,2)=f(2,4) g(2,1)=f(4,2) ,g(2,2)=f4,4)
bg11 bg12 K bg bg 21 bg 22 bg 31 bg 32
bg13 bg 23 bg 33
af11 af af 21 af 31
af12 af 22 af 32
af13 af 23 af 33
相关文档
最新文档