平面的投影变换(3)——利用无穷线进行仿射校正
2016-08-30 20:40
260 查看
1. 一维投影几何
在一维空间P1中,直线上的点x的齐次坐标为x = (x1, x2)T,当 x2 =
0 时为理想点。在这条直线上的点的投影变换为
x' =H2×2x
其中投影矩阵H2×2有3个自由度,可由3个匹配点对确定。1维投影具有对互比例(cross ratio)的不变性。定义4个点xi的互比例为:
,其中
关于互比例,有如下结论:
(1) 互比例不依赖于点 xi 的任何一种齐次表示。
(2) 对于有限点 xi ,若它的齐次表示中 x2 =
1,则 |xixj|
代表两点之间的有符号距离。
(3) 如果一点
xi 是理想点,则互比例的定义依然有效。
(4) 互比例对投影变换具有不变性,即,如果x' = H2×2x,则Cross(x1', x2', x3', x4') =
Cross(x1, x2 ,x3, x4)。
并发线(Concurrent lines)是相交于一点的多条直线,是共线点的对偶。4条并发线 li 与直线 l 相交于4个点 xi ,这4条并发线的互比例就是4个点 xi 的互比例Cross(x1, x2 , x3, x4),它不变于直线
l 的位置。从投影的观点来看,这4个交点相当于4个共面点 x1, x2, x3, x4 在直线
l 上的中心投影,这个投影将空间P2上的点投影到空间P1。这4个投影点的互比例,也就是4条并发线的互比例,与直线
l 的位置无关,或者说不变于投影变换。
如果将上图中的投影中心c 看做摄像机中心,则直线 l 相当于成像直线(类似于成像平面),四个像点的互比例代表成像配置。成像直线的位置与4个像点的成像配置是无关的,对于任何成像直线,得到的都是相同的成像配置(互比例)。
学习并发线的投影几何,对于理解极线的投影几何非常重要。
2. 无穷线在仿射变换中的性质
定理(无穷线仿射定理):无穷线 l∞的投影变换
H 还是它本身,当且仅当 H 是仿射变换。
证明:
反之,设一个无穷点(x1,x2,
0)T,经过变换后仍被映射成为一个无穷点,则必有h31 =h32 =
0,这一定是仿射变换。
证毕。
无穷线 l∞ 上的一个点经仿射后一定仍然落在 l∞ 上,但却并不一定是该点本身,除非 A(x1, x2)T
= k(x1, x2)T 。
3. 恢复仿射属性
如果要消除一幅透视图像中的投影畸变,需要指定平面中4个参考点的位置,以求得投影变换矩阵 H (8 dof)。然而,考虑到投影变换可分解为相似性变换HS (4 dof)、仿射变换HA (2
dof)和投影变换HP (2 dof)的级联,即H = HSHAHP,因此实际上不需要求得完整的投影变换矩阵 H,而只需计 HA 和 HP 就足够恢复对象的形状了。
如果不需要消除所有的投影畸变,而只要求进行仿射属性(平行,面积比例)的测量,则只需计算 HP 就够了,这就是仿射校正。如下图,进行仿射校正之后的图像保持了对象的仿射属性。
从无穷线仿射定理可知,恢复 l∞ 就可以恢复仿射属性。一种简单的方法是:
(1) 先在投影图像中寻找一条无穷线的投影 l = (l1, l2, l3)T ,即灭线;
(2) 求出能将其变换到归一化无穷线 l∞= (0, 0, 1)T的投影矩阵H,即 l∞ = H-T l ;
(3) 然后用 H 对投影图像进行点变换;
(4) 在得到的校正图像上可以直接进行仿射属性的测量。
其中要求的投影矩阵 H 具有如下形式:
其中寻找灭线的方法是在投影图像中先求出灭点,然后两个灭点连成一条灭线。
求灭点的方法一:在投影图像中求两条平行线的投影直线的交点。
求灭线的方法二:在投影图像中利用三个共线点之间的长度比例求灭点。
4. 利用长度比例求灭点
设在世界坐标上有三个共线点x, y, z, 已知它们之间的长度比例为d(x,y):d(y,z) =a:b,则:
(1) 它们在投影图像中仍是三个共线点x', y', z',其长度比例为d(x',y'):d(y',z') =a':b'。
(2) 将点x, y, z表示为 1 维坐标的齐次形式,分别为(0, 1)T, (a,
1)T,(a+b, 1)T。
(3)将点x', y', z'表示为 1
维坐标的齐次形式,分别为(0, 1)T, (a',
1)T, (a'+b', 1)T。
(4) 求 1 维投影变换H2×2,使得
[(0, 1)T, (a',
1)T, (a'+b', 1)T]
= H2×2 [(0, 1)T, (a,
1)T, (a+b, 1)T]
求解上式,首先将其改写为非齐次方程,然后可分别求得H2×2各项。
(5) 对理想点(1, 0)T进行 1 维投影变换得到 1 维坐标系下的灭点,等于H2×2(1,
0)T。
在一维空间P1中,直线上的点x的齐次坐标为x = (x1, x2)T,当 x2 =
0 时为理想点。在这条直线上的点的投影变换为
x' =H2×2x
其中投影矩阵H2×2有3个自由度,可由3个匹配点对确定。1维投影具有对互比例(cross ratio)的不变性。定义4个点xi的互比例为:
,其中
关于互比例,有如下结论:
(1) 互比例不依赖于点 xi 的任何一种齐次表示。
(2) 对于有限点 xi ,若它的齐次表示中 x2 =
1,则 |xixj|
代表两点之间的有符号距离。
(3) 如果一点
xi 是理想点,则互比例的定义依然有效。
(4) 互比例对投影变换具有不变性,即,如果x' = H2×2x,则Cross(x1', x2', x3', x4') =
Cross(x1, x2 ,x3, x4)。
并发线(Concurrent lines)是相交于一点的多条直线,是共线点的对偶。4条并发线 li 与直线 l 相交于4个点 xi ,这4条并发线的互比例就是4个点 xi 的互比例Cross(x1, x2 , x3, x4),它不变于直线
l 的位置。从投影的观点来看,这4个交点相当于4个共面点 x1, x2, x3, x4 在直线
l 上的中心投影,这个投影将空间P2上的点投影到空间P1。这4个投影点的互比例,也就是4条并发线的互比例,与直线
l 的位置无关,或者说不变于投影变换。
如果将上图中的投影中心c 看做摄像机中心,则直线 l 相当于成像直线(类似于成像平面),四个像点的互比例代表成像配置。成像直线的位置与4个像点的成像配置是无关的,对于任何成像直线,得到的都是相同的成像配置(互比例)。
学习并发线的投影几何,对于理解极线的投影几何非常重要。
2. 无穷线在仿射变换中的性质
定理(无穷线仿射定理):无穷线 l∞的投影变换
H 还是它本身,当且仅当 H 是仿射变换。
证明:
反之,设一个无穷点(x1,x2,
0)T,经过变换后仍被映射成为一个无穷点,则必有h31 =h32 =
0,这一定是仿射变换。
证毕。
无穷线 l∞ 上的一个点经仿射后一定仍然落在 l∞ 上,但却并不一定是该点本身,除非 A(x1, x2)T
= k(x1, x2)T 。
3. 恢复仿射属性
如果要消除一幅透视图像中的投影畸变,需要指定平面中4个参考点的位置,以求得投影变换矩阵 H (8 dof)。然而,考虑到投影变换可分解为相似性变换HS (4 dof)、仿射变换HA (2
dof)和投影变换HP (2 dof)的级联,即H = HSHAHP,因此实际上不需要求得完整的投影变换矩阵 H,而只需计 HA 和 HP 就足够恢复对象的形状了。
如果不需要消除所有的投影畸变,而只要求进行仿射属性(平行,面积比例)的测量,则只需计算 HP 就够了,这就是仿射校正。如下图,进行仿射校正之后的图像保持了对象的仿射属性。
从无穷线仿射定理可知,恢复 l∞ 就可以恢复仿射属性。一种简单的方法是:
(1) 先在投影图像中寻找一条无穷线的投影 l = (l1, l2, l3)T ,即灭线;
(2) 求出能将其变换到归一化无穷线 l∞= (0, 0, 1)T的投影矩阵H,即 l∞ = H-T l ;
(3) 然后用 H 对投影图像进行点变换;
(4) 在得到的校正图像上可以直接进行仿射属性的测量。
其中要求的投影矩阵 H 具有如下形式:
其中寻找灭线的方法是在投影图像中先求出灭点,然后两个灭点连成一条灭线。
求灭点的方法一:在投影图像中求两条平行线的投影直线的交点。
求灭线的方法二:在投影图像中利用三个共线点之间的长度比例求灭点。
4. 利用长度比例求灭点
设在世界坐标上有三个共线点x, y, z, 已知它们之间的长度比例为d(x,y):d(y,z) =a:b,则:
(1) 它们在投影图像中仍是三个共线点x', y', z',其长度比例为d(x',y'):d(y',z') =a':b'。
(2) 将点x, y, z表示为 1 维坐标的齐次形式,分别为(0, 1)T, (a,
1)T,(a+b, 1)T。
(3)将点x', y', z'表示为 1
维坐标的齐次形式,分别为(0, 1)T, (a',
1)T, (a'+b', 1)T。
(4) 求 1 维投影变换H2×2,使得
[(0, 1)T, (a',
1)T, (a'+b', 1)T]
= H2×2 [(0, 1)T, (a,
1)T, (a+b, 1)T]
求解上式,首先将其改写为非齐次方程,然后可分别求得H2×2各项。
(5) 对理想点(1, 0)T进行 1 维投影变换得到 1 维坐标系下的灭点,等于H2×2(1,
0)T。
相关文章推荐
- 平面的投影变换(4)——利用虚圆点进行相似性校正
- 遥感影像几何纠正-正射校正-利用在线谷歌地图直接对影像进行几何校正
- 利用OpenCV进行图像伽马校正
- 利用kd树进行平面内最近点搜索
- 利用multiprocessing多进程模块进行影像校正
- 利用GDAL进行多项式几何校正校正新思路
- 利用matlab和opencv进行摄像头校正
- 利用 Calibration Toolbox for Matlab 工具箱进行双目立体校正
- 利用Turbo C进行平面二维图形的平移,旋转,缩放,对称
- 利用java反射机制对方法进行调用
- [python][计算方法]利用无穷级数计算幂运算(开根号)
- Android利用Json来进行网络数据传输
- 利用推特工具进行分词
- 利用互相关方法校正二维图像移动
- 【利用python进行数据分析-学习记录】python-matplotlib中Basemap插件的安装
- POJ 3468 A Simple Problem with Integers-利用lzy进行区间更新的线段树
- 利用Python进行数据分析——pandas入门(五)(4)
- 利用javascript在Siebel HI环境下进行简单的测试
- 如何利用php array_multisort函数 对数据库结果进行复杂排序
- 利用JAXP开发包进行SAX方式进行解析