目录
1.NCC算法
1.1 算法介绍
NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看成是一个样本数据的集合,如果它有一个子集与另外一个样本数据相互匹配则它的ncc值为1,表示相关性很高,如果是-1则表示完全不相关。
NCC计算公式如下:
其中NCC(p,d) 得到的值得范围将在[−1,1]之间。
Wp为之前提到的匹配窗口。
I1(x,y)为原始图像的像素值。
I1(px,py)为原始窗口内像素的均值
I2 (x+d,y)为原始图像在目标图像上对应点位置在x方向上偏移d后的像素值。
I2(px+d,py)为目标图像匹配窗口像素均值。
1.2匹配流程
1.采集图像:通过标定好的双目相机采集图像,当然也可以用两个单目相机来组合成双目相机。
2.极线校正:校正的目的是使两帧图像极线处于水平方向,或者说是使两帧图像的光心处于同一水平线上。通过校正极线可以方便后续的NCC操作。
1)由标定得到的内参中畸变信息中可以对图像去除畸变。
2)通过校正函数校正以后得到相机的矫正变换R和新的投影矩阵P,接下来是要对左右视图进行去畸变,并得到重映射矩阵。
3.特征匹配:这里便是我们利用NCC做匹配的步骤啦,匹配方法如上所述,右视图中与左视图待测像素同一水平线上相关性最高的即为最优匹配。完成匹配后,我们需要记录其视差d,即待测像素水平方向xl与匹配像素水平方向xr之间的差值d=xr−xll,最终我们可以得到一个与原始图像尺寸相同的视差图D
4.深度恢复:通过上述匹配结果得到的视差图D,我们可以很简单的利用相似三角形反推出以左视图为参考系的深度图。计算原理如下图所示:
如图,Tx为双目相机基线,f为相机焦距&