1. 早期的立体匹配是基于特征的,得到的稀疏视差图需要通过插值计算来转换为稠密视差图,插值过程比较复杂,而且特征的提取以及定位的好坏对匹配后的结果的影响比较大。
为了避免插值带来的复杂过程以及误差,通常是选择直接获取稠密视差图。
2.应用
机器人自主导航是双目立体视觉较早开始的一个应用领域,其通过在机器人上固定一个双目立体视觉系统来判断周围环境中的距离,可以有效的避开障碍物。
汽车的无人驾驶系统式就是通过固定在汽车上的双目立体视觉系统对前方路况图像进行处理获取视差图,通过获取的视差图可以有效的探测前方车辆以及障碍物的距离,然后经过系统判断以控制汽车保持安全的车距,降低车祸的发生率。
三维重建主要针对于大尺寸物体,例如利用航拍飞行器的双目立体视觉系统对城市或者山区三维地貌的重建以及在军事系统中对于敌人的基地或者是作战地的三维地貌重建等.
3. 双目立体视觉系统,双目立体视觉是通过特定的立体匹配算法找到同一个点在左右相机不同位置的差异,我们称之为视差。
相机分别采集左右两幅图像,采集时应尽量调节左右相机曝光,使其光照条件大致相同,以降低误匹配的像素数目。
双目立体标定是为了得到两个相机的内参数以及两个相机之间的相对位置关系,这个步骤的主要目的就是为了图像的校正。
张正友证明使用大于等于3不同位置的图像就可以求解相机内外参数,而为了避免操作带来的误差以及高的精度,通常取大于等于10幅不同位置的平面标定图像。
立体匹配是在校正后的图像之间按行搜索找到对应点之间的关系,生成视差图。立体匹配的原理就是根据选取好的匹配基元,沿着已经校正好的目标图像的水平极线进行搜索,求取参考图像和目标图像的像素点的一一对应关系,遍历整幅图像计算出视差图。
4. 匹配代价:
匹配代价的计算就是确定两个匹配基元之间的相似度测量函数。根据相似度测量函数的不同,匹配代价的计算可以分为基于像素的匹配代价计算(AD、SD等)和基于区域的相似度匹配代价计算(SAD、SSD、NCC、Census等)。前者主要用于全局(半全局)的优化算法,后者主要用于局部的优化算法。
5.代价聚合:
只要是局部匹配算法,因为全局算法基于原始匹配代价进行后续算法计算。而局部算法需要通过对窗口的匹配代价求和或求均值,以消除单个像素计算的匹配代价误差带来的影响。
匹配窗口的必须要满足平滑性约束,所谓的平滑性约束就是支撑窗口中的像素点都应该具有相同或者相近的视差。
对于大的噪声Rank变换仅仅是一个单位的误差,如下图3.4所示。而SAD,SSD等算法则会将噪声产生的误差全部算入匹配代价中,并且通常情况下噪声的突变会导致匹配代价的计算值比较大,增加了错误匹配的几率。
以上是rank
下边是census
将中心像素的领域像素通过一定的准则映射成一串位串(Bitstring),同样,如果领域像素的像素值小于中心像素的像素值,则将该像素对应的位设为1,反之设为0,位串的排列顺序是从变换窗口的第一行最左的像素点开始向右移动,接着从上往下遍历窗口的每一行。
然后计算两幅Census变换图待匹配位串之间的汉明距离,在信息理论中,Hamming Distance 表示两个等长字符串在对应位置上不同字符的数目,差异性,越小越相似。
则Census变换的相似度测量函数定义为:
7. 匹配策略:
立体匹配的最终问题是最小化匹配基元代价能量函数。一个好的匹配策略要兼顾到本身算法的问题以及外界环境的影响(噪声 ,光照等)。
8.视差计算、优化
对于局部算法来说,在完成匹配代价聚合以后,只需在一定范围内选取聚合匹配代价最优的点(SAD和SSD取最小值,NCC取最大值)作为对应匹配点,如胜者为王算法WTA(Winner-take-all)。‘胜者为王即在视差搜索范围内选择累积代价最优的点作为对应匹配点,与之对应的视差即为所求的视差。
而全局算法则直接对原始匹配代价进行处理,一般会先给出一个能量评价函数,然后通过不同的优化算法来求得能量的最小值,同时每个点的视差值也就计算出来了。
8.视差精细化
。。。。。。
9.匹配算法分类:
全局:
半全局:
立体匹配的评价: