概率方法分析图像点的深度信息
一幅图像中的像素点为中心产生一个patch,在另一幅图像对应的极线上搜索patch,使用NCC(NormalizedCrossCorrelation)来分析两个patch间的相似程度,在深度[X(min),X(max)]区间内进行搜索匹配,这个区间内NCC的计算结果会产生一系列局部极值。
把上述计算过程看作是一个深度传感器的计算过程,其输出结果为一系列NCC的局部极值对应的点的深度信息。它们是有噪声的数据
一幅图像对应另外n幅图像,可以看作为n个深度传感器,把得到点的深度信息的问题看作是有噪声的多传感器数据融合的问题,使用GaussianUniform mixturemodel来对这一问题进行建模,假设好的测量值符合正态分布,噪声符合均匀分布,好的测量值的比例为pi,使用贝叶斯方法不断更新这个模型,让点的深度(也就是正态分布中的均值参数)和好的测量值的比例pi收敛到真实值。
实际实现的时候一个seed对应与图像中一个像素,这个像素是想要求得其深度信息的点。
一个seed还关联五个参数,其中四个参数是模型中的参数,分别是好的测量值和坏的测量值的个数,深度估计中高斯分布的均值和方差。最后一个参数是以这个像素点为中心的一个正方形patch,计算这个patch和其他图像中的对应极线上的patch的NCC值,此处因为计算量的关系不会搜索整个极线,只会搜索以目前模型中高斯分布的均值(深度)对应的极线上的像素点为中心的一个固定范围。
每次新进一帧,依照这样的过程:
1.产生新的seed(seed的数目固定,上次迭代结束时会去掉一些seed)
2.对每个seed进行更新:在此帧上进行相关seed的对极搜索;检测极线上点对应patch与seed中的patch的NCC分数的局部极大值;用这些局部最大值更新seed中的四个参数
3.去掉那些好的测量值的个数低于阈值的,如果好的测量值的个数高于阈值而且方差低于一个阈值,把这个seed对应的点的三位坐标算出来并加到地图中。