09 第十章 图象几何变换
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
x'
象素移交映射
x
y'
(向前映射)
y
输入象素的灰度逐个转移到输出图象 灰度在四个输出象素间分配 f(x’,y’) (x’,y’)整型 g(x,y) (x,y)非整型
(a) 图10.2 象素变换
11
10.1.3 实现
另一种更有效地达到目的的方法是象素填 充 ( pixe l f illing ) 或 称 为 向 后 映射算 法 。 在这里输出象素一次一个地映射回到输入 图象中,以便确定其灰度级。 如果一个输出象素被映射到四个输出象素 之间,则其灰度值由灰度级插值决定,见图 10.2(b) 向后空间变换是向前变换的逆。
8
有了空间变换和灰度级插值算法,我们就 可以开始执行一个几何运算。 通常,计算机程序中总有几种固定的灰度 级插值算法,而用来定义空间变换的算法将随 任务不同而不同。 因为灰度级插值算法总是相同的,或可从 几种算法中选一个,因此,每个特定的几何运 算基本是由空间变换算法定义的。
9
10.1.3 实现
一个用于灰度插值的算法,这是因为,在 一般情况下,输入图象的位置坐标 (x,y) 为整数, 而输出图象的位置坐标为非整数,反过来也是 如此。
3
几何运算多用于摄像机的几何校正,利用图象 进行几何测量,影视特技及广告的制作中图象的变形。
在图象的获取或显示过程中往往会产生几何失 真。对于这些图象必须加以校正,以免影响分析精度。 例如,成象系统有一定的几何非线性,因此会 造成如图 10.1所示的枕形失真或桶形失真。图 (a)为原 始图象,图(b)和图(c)为失真的图象。 由于斜视角度获得的图象的透视失真。 由卫星摄取的地球表面的图象往往覆盖较大的 面积,由于地球表面呈球形,这样摄取的平面图象也 将会有较大的几何失真。
17
(a )
(b)
图10.4 零阶插值 (a)原图 (b)放大时用零阶插值
18
10.2.2 双线性插值
一阶插值(或称双线性插值法)和零阶插 值法相比可产生更令人满意的效果。只是程序 稍微复杂一些,运行时间稍长一些。 由于通过四点确定一个平面是一个过约束 问题,所以在一个矩形栅格上进行的一阶插值 就需要用到双线性函数。
12
x'
象素填充映射
x
y'
(向后映射) 入图象 f(x’,y’)
y
输出象素的位置逐个映射回输
灰度由四个输入象素间插值
g(x,y) (x,y)整型
(x’,y’) 非整型
(b)
图10.2 象素变换
13
由于许多输入象素可能映射到输出图象的边界 之外,故向前映射算法有些浪费。 而且,每个输出象素的灰度值可能要由许多输 入象素的灰度值来决定,因而要涉及多次计算。
虽然如此,象素填充法对一般的应用更为 切实可行。
15
10.2 灰度级插值
输出象素通常被映射到输入图象中的非整 数位置,即位于四个输入象素之间。
因此,为了决定与该位置相对应的灰度值, 必须进行插值运算。 可采用的插值方法有多种:最近邻插值、 双线性插值、 Sink 插值、多项式插值、 B 样条 函数近似插值等。 最常用的是最近邻插值和双线性插值。
如果空间变换中包括缩小处理,则会有四个以 上的输入象素来决定一输出象素的灰度值。
如果含有放大处理,则一些输出象素可能被漏 掉(如果没有输入象素被映射到它们附近位置的话)。
14
向后映射算法是逐象素、逐行地产出输出 图象。 每个象素的灰度级由最多四个象素参与的 插值所唯一确定。
当然,输入图象必须允许按空间变换所定 义的方式随机访问Baidu Nhomakorabea因而可能有些复杂。
6
10.1.1 空间变换
几何运算一般定义为: g(x,y)=f(x’,y’)=f[a(x,y),b(x,y)]
(10.1)
其中, f(x,y) 表示输入图象, g(x,y) 表示输 出图象, a(x,y) 和 b(x,y) 表示空间变换,若它们 是连续的,则将保持图象中的连通关系。
7
10.1.2 灰度级插值
在输入图象 f(x,y) 中,灰度值仅在整数位 置(x,y)处被定义。 然而,在等式10.1中,g(x,y)的灰度值一般 由处在非整数坐标上的f(x,y)的值来决定。 如果把几何运算看成是一个从 f到g的映射, 则f中的一个象素会映射到 g中几个象素之间的 位置,反之亦然; 为了方便讨论,我们规定所有象素正好位 于采样栅格的整数坐标处。
当实现一个几何运算时,可采用如下两种 方法。 你可以把几何运算想象成将输入图象的灰 度一个一个象素地转移到输出图象中。 如果一个输入象素被映射到四个输出象素 之间的位置,则其灰度值就按插值算法在四个 输出象素之间进行分配。 我们称之为象素移交( pixel carry-over ) 或称为向前映射法,见图10.2(a)。
16
10.2.1 最近邻插值
最简单的插值方法是所谓的零阶插值或称 为最近邻插值,即令输出象素的灰度值等于离 它所映射到的位置最近的输入象素的灰度值。
最近邻插值计算十分简单,在许多情况下, 其结果也可令人接受。 然而,当图象中包含象素之间灰度级有较 大变化的细微结构时,最近邻插值法会在图象 中产生人工的痕迹。
令f(x,y)为两个变量的函数,其在单位正方 形顶点的值已知。假设希望通过插值得到正方 形内任意点的f(x,y)值。
10 图象几何变换
1
10.1 引言
几何运算可改变图象中各物体之间的空间 关系。 这种运算可以被看成是将(各)物体在图 象内移动。 其效果正如在一块橡皮板上画图,拉伸该 橡皮板,并在不同的点固定该橡皮板。
几何运算住往需作一些限制以保持图象的 外观顺序。
2
一个几何运算需要两个独立的算法。 一个算法来定义空间变换本身,用它描述 每个象素如何从其初始位置“移动”到终止位 置,即每个象素的“运动”。
4
(a)
(b)
(c)
图10.1 几何失真示例
5
10.1.1 空间变换
在大多数应用中,要求保持图象中曲线型 特征的连续性和各物体的连通性。 一个约束较少的空间变换算法很可能会弄 断直线和打碎图象,从而使图象内容“支离破 碎”。 人们可以逐点指定图象中每个象素的运动, 但即使对于尺寸较小的图象,这种方法也会很 快让人厌烦。 更方便的是用数学方法来描述输入、输出 图象点之间的空间关系。
x'
象素移交映射
x
y'
(向前映射)
y
输入象素的灰度逐个转移到输出图象 灰度在四个输出象素间分配 f(x’,y’) (x’,y’)整型 g(x,y) (x,y)非整型
(a) 图10.2 象素变换
11
10.1.3 实现
另一种更有效地达到目的的方法是象素填 充 ( pixe l f illing ) 或 称 为 向 后 映射算 法 。 在这里输出象素一次一个地映射回到输入 图象中,以便确定其灰度级。 如果一个输出象素被映射到四个输出象素 之间,则其灰度值由灰度级插值决定,见图 10.2(b) 向后空间变换是向前变换的逆。
8
有了空间变换和灰度级插值算法,我们就 可以开始执行一个几何运算。 通常,计算机程序中总有几种固定的灰度 级插值算法,而用来定义空间变换的算法将随 任务不同而不同。 因为灰度级插值算法总是相同的,或可从 几种算法中选一个,因此,每个特定的几何运 算基本是由空间变换算法定义的。
9
10.1.3 实现
一个用于灰度插值的算法,这是因为,在 一般情况下,输入图象的位置坐标 (x,y) 为整数, 而输出图象的位置坐标为非整数,反过来也是 如此。
3
几何运算多用于摄像机的几何校正,利用图象 进行几何测量,影视特技及广告的制作中图象的变形。
在图象的获取或显示过程中往往会产生几何失 真。对于这些图象必须加以校正,以免影响分析精度。 例如,成象系统有一定的几何非线性,因此会 造成如图 10.1所示的枕形失真或桶形失真。图 (a)为原 始图象,图(b)和图(c)为失真的图象。 由于斜视角度获得的图象的透视失真。 由卫星摄取的地球表面的图象往往覆盖较大的 面积,由于地球表面呈球形,这样摄取的平面图象也 将会有较大的几何失真。
17
(a )
(b)
图10.4 零阶插值 (a)原图 (b)放大时用零阶插值
18
10.2.2 双线性插值
一阶插值(或称双线性插值法)和零阶插 值法相比可产生更令人满意的效果。只是程序 稍微复杂一些,运行时间稍长一些。 由于通过四点确定一个平面是一个过约束 问题,所以在一个矩形栅格上进行的一阶插值 就需要用到双线性函数。
12
x'
象素填充映射
x
y'
(向后映射) 入图象 f(x’,y’)
y
输出象素的位置逐个映射回输
灰度由四个输入象素间插值
g(x,y) (x,y)整型
(x’,y’) 非整型
(b)
图10.2 象素变换
13
由于许多输入象素可能映射到输出图象的边界 之外,故向前映射算法有些浪费。 而且,每个输出象素的灰度值可能要由许多输 入象素的灰度值来决定,因而要涉及多次计算。
虽然如此,象素填充法对一般的应用更为 切实可行。
15
10.2 灰度级插值
输出象素通常被映射到输入图象中的非整 数位置,即位于四个输入象素之间。
因此,为了决定与该位置相对应的灰度值, 必须进行插值运算。 可采用的插值方法有多种:最近邻插值、 双线性插值、 Sink 插值、多项式插值、 B 样条 函数近似插值等。 最常用的是最近邻插值和双线性插值。
如果空间变换中包括缩小处理,则会有四个以 上的输入象素来决定一输出象素的灰度值。
如果含有放大处理,则一些输出象素可能被漏 掉(如果没有输入象素被映射到它们附近位置的话)。
14
向后映射算法是逐象素、逐行地产出输出 图象。 每个象素的灰度级由最多四个象素参与的 插值所唯一确定。
当然,输入图象必须允许按空间变换所定 义的方式随机访问Baidu Nhomakorabea因而可能有些复杂。
6
10.1.1 空间变换
几何运算一般定义为: g(x,y)=f(x’,y’)=f[a(x,y),b(x,y)]
(10.1)
其中, f(x,y) 表示输入图象, g(x,y) 表示输 出图象, a(x,y) 和 b(x,y) 表示空间变换,若它们 是连续的,则将保持图象中的连通关系。
7
10.1.2 灰度级插值
在输入图象 f(x,y) 中,灰度值仅在整数位 置(x,y)处被定义。 然而,在等式10.1中,g(x,y)的灰度值一般 由处在非整数坐标上的f(x,y)的值来决定。 如果把几何运算看成是一个从 f到g的映射, 则f中的一个象素会映射到 g中几个象素之间的 位置,反之亦然; 为了方便讨论,我们规定所有象素正好位 于采样栅格的整数坐标处。
当实现一个几何运算时,可采用如下两种 方法。 你可以把几何运算想象成将输入图象的灰 度一个一个象素地转移到输出图象中。 如果一个输入象素被映射到四个输出象素 之间的位置,则其灰度值就按插值算法在四个 输出象素之间进行分配。 我们称之为象素移交( pixel carry-over ) 或称为向前映射法,见图10.2(a)。
16
10.2.1 最近邻插值
最简单的插值方法是所谓的零阶插值或称 为最近邻插值,即令输出象素的灰度值等于离 它所映射到的位置最近的输入象素的灰度值。
最近邻插值计算十分简单,在许多情况下, 其结果也可令人接受。 然而,当图象中包含象素之间灰度级有较 大变化的细微结构时,最近邻插值法会在图象 中产生人工的痕迹。
令f(x,y)为两个变量的函数,其在单位正方 形顶点的值已知。假设希望通过插值得到正方 形内任意点的f(x,y)值。
10 图象几何变换
1
10.1 引言
几何运算可改变图象中各物体之间的空间 关系。 这种运算可以被看成是将(各)物体在图 象内移动。 其效果正如在一块橡皮板上画图,拉伸该 橡皮板,并在不同的点固定该橡皮板。
几何运算住往需作一些限制以保持图象的 外观顺序。
2
一个几何运算需要两个独立的算法。 一个算法来定义空间变换本身,用它描述 每个象素如何从其初始位置“移动”到终止位 置,即每个象素的“运动”。
4
(a)
(b)
(c)
图10.1 几何失真示例
5
10.1.1 空间变换
在大多数应用中,要求保持图象中曲线型 特征的连续性和各物体的连通性。 一个约束较少的空间变换算法很可能会弄 断直线和打碎图象,从而使图象内容“支离破 碎”。 人们可以逐点指定图象中每个象素的运动, 但即使对于尺寸较小的图象,这种方法也会很 快让人厌烦。 更方便的是用数学方法来描述输入、输出 图象点之间的空间关系。