空三匹配和密集匹配的区别与联系

很多人包括一些业内人士都不清楚空三匹配(空中三角测量中的连接点匹配,亦即计算机视觉中的SFM算法中的同名点匹配,比如SIFT算法)和密集匹配(也叫立体匹配,立体对应或稠密匹配)有什么区别,于是经常会问诸如下列问题:

1. 做空三匹配的时候做的密集一点就是密集匹配了吧?

2. 空三匹配做完定向后就可以得到正射影像了吧?

3. 用sift也可以做密集匹配吧?

殊不知,以上三个问题的答案都是:NO!

下面我们就来说明一下空三匹配和密集匹配有什么区别和联系。

1. 定义

空三匹配:在空中三角测量(SFM)时,为了确定一些影像之间的同名连接点作为平差条件而进行的同名点匹配。
密集匹配:在生产DSM/DEM时,为了计算测区每个物方点三维坐标,从而重建整个测区地形而进行的同名点匹配。

2. 区别

项目空三匹配密集匹配
下游技术空中三角测量空间前方交会
计算目的影像外方位元素测区地形
方法内核特征匹配灰度匹配
分布特点稀疏密集
典型算法SiftSGM

3. 联系

二者也有联系,首先都是为了找不同影像上的同名地物点,因此本质是一致的,其次,空三匹配是密集匹配的基础,没有完成空三的密集匹配没有意义。

以上是从定义出发看待二者的区别与联系,其实也可以换一个角度审视该问题。

4. 换一个角度看区别

首先,来回顾一下测绘学的两个基本定理:
后方交会:从一个未知点观测两个已知点而确定该点坐标。
前方交会:从两个已知点分别观测同一个未知点而确定该未知点坐标。
如下图所示,红色点代表未知点,绿色点代表已知点,红线代表从未知点观测已知点,绿线代表从已知点观测未知点。

虽然二者完成了相同的工作,即由两个已知点计算一个未知点,但是实际应用中差别很大,总结起来如下:
后方交会:“ 主动的少数”,问路模式,即从少数未知点的主动观测求解这些未知点。
前方交会:“被动的多数”,传教模式,即多数未知点通过被少数已知点观测而求解。

举一个形象的例子如下:
小明被派去武汉传教,要求带回每个教徒的个人信息,于是,小明打算两步走:
首先,找几个人问路,确定自己是否在武汉。
然后,逢人遍开始传教,并记录教徒的信息。

再来回看摄影测量的流程:
现在有一批某地区的航空影像,要求得到该地区的DSM/DEM,于是,我们的工作分两步走:
首先,进行空中三角测量,确定每张影像的坐标姿态(外方位元素)。
然后,对每个立体相对进行密集匹配,并通过前方交会计算出每个物方点的三维坐标,从而得到该地区的DSM/DEM。

所以,对比以上例子,空三(SFM)匹配和密集匹配的区别就十分明显了。
  • 17
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SGBM算法的密集匹配SGBM算法介绍 在OpenCV中使用函数StereoSGBM ( ) 实现了SGBM算法。SGBM 算法核心步骤为:选取匹配基元;构建基于多个方向的扫描线的代价能量和函数;求取能量代价和函数的最优解。OpenCV中SGMB算法的实现主要分为以下四个步骤: ①预处理 SGBM采用水平Sobel算子,把图像做处理,然后用一个函数将经过水平Sobel算子处理后的图像上每个像素点(P表示其像素值)映射成一个新的图像,表示新图像上的像素值。映射函数如下: preFilterCap为一个常数参数,openCv默认取15。预处理实际上是得到图像的梯度信息。经预处理的图像保存起来,将会用于计算代价。 ②代价计算 代价有两部分组成:经过预处理得到的图像的梯度信息经过基于采样的方法得到的梯度代价;原图像经过基于采样的方法得到的SAD代价。 ③动态规划 用一维约束近似二维约束。在P的周围,以 45°为间隔设置了8个路径。通过8个路径计算最小代价路径,以此来近似二维约束匹配计算. 其中动态规划很重要两个参数P1,P2是这样设定的: P1 =8*cn*sgbm.SADWindowSize*sgbm.SADWindowSize; P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize; cn是图像的通道数, SADWindowSize是SAD窗口大小,数值为奇数。可以看出,当图像通道和SAD窗口确定下来,SGBM的规划参数P1和P2是常数。 ④后处理 openCvSGBM的后处理包含以下几个步骤: Step1:唯一性检测:视差窗口范围内最低代价是次低代价的(1 + uniquenessRatio/100)倍时,最低代价对应的视差值才是该像素点的视差,否则该像素点的视差为0。其中uniquenessRatio是一个常数参数。 Step2:亚像素插值 Step3:左右一致性检测:误差阈值disp12MaxDiff默认为1,可以自己设置。 获得深度信息 经过sgbm->compute(rectifyImageL, rectifyImageR, disp)获得视差映射后,利用式(2),式(3) ,通过简单的矩阵相乘就可提取深度信息。三维坐标就是( X /W,Y/W,Z /W) 。OpenCV中使用reprojectImageTo3D( )函数实现该功能,该函数输入上面得到的视差数据,输出所需的三维点阵,然后提取深度信息。 SGBM参数设置:(在下面的程序中已经标明) MinDisparity设置为0,因为两个摄像头是前向平行放置,相同的物体在左图中一定比在右图中偏右。如果为了追求更大的双目重合区域而将两个摄像头向内偏转的话,这个参数是需要考虑的。 UniquenessRatio主要可以防止误匹配,此参数对于最后的匹配结果是有很大的影响。立体匹配中,宁愿区域无法匹配,也不要误匹配。如果有误匹配的话,碰到障碍检测这种应用,就会很麻烦。该参数不能为负值,一般5-15左右的值比较合适,int型。 BlockSize:SAD窗口大小,容许范围是[5,255],一般应该在 5x5..21x21 之间,参数必须为奇数值, int型。 NumDisparities:视差窗口,即最大视差值与最小视差值之差,窗口大小必须是 16的整数倍,int型。 在SGBM算法的参数中,对视差生成效果影响较大的主要参数是BlockSize、NumDisparities和UniquenessRatio三个,一般只需对这三个参数进行调整,其余参数按默认设置即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值