立体匹配是立体视觉研究中的关键部分。其目标是在两个或多个视点中匹配相应像素点,计算视差。通过建立一个能量代价函数,对其最小化来估计像素点的视差,求得深度。
概述
点P和Q,映射到左相机OR像面上的同一点p≡q,只要找到p和q在右相机OT像面上的对应点就可以通过三角计算估计深度。找到对应点的过程,即立体匹配。
为了找到对应点,需要增加约束,最常用的是极线约束。
P和Q映射到左相机QR像面上的同一点p≡q,直线pq上的点对应点一定位于右像面的直线p’q’上,p’q’即为直线pq的极线,这就是极线约束。
接下来就可以根据视差估计深度,然后通过Graph cuts算法给每一个像素点分配视差从而得到深度图,不再详细说明。
分类
根据采用图像表示的基元不同,分为:
1.区域立体匹配算法
给定一幅图像上的一点,选取该点邻域内的一个子窗口,在另一幅图像中的一个区域内,根据某种相似性,寻找与子窗口图像最相似的窗口,得到的匹配窗口中对应的像素点就为该像素的匹配点。可获得稠密视差图。
2.基于特征的立方匹配算法
基于几何特征信息(边缘、线、轮廓、兴趣点、角点和几何基元等)提取图像的几何特征点,针对几何特征点进行视差估计,利用得到的视差信息重建三维空间场景。可获得稀疏视差图,通过插值可获得稠密视差图。
3.基于相位立体匹配算法
假设在图像对应点中,其频率范围内局部相位相等,在频率范围内进行视差估计。
根据采用的最优化理论方法,分为:
1.局部立体匹配算法
主要分为自适应立体匹配算法、自适应权值的立体匹配算法和多窗体立体匹配算法。
2.全局立体匹配算法
采用全局优化理论方法估计视差,建立全局能量函数,通过最小化全局能量函数得到最优视差值。主要算法有Graph cuts,belief propagation,动态规划等。
下图是立体匹配算法及其优缺点的总结
立体匹配重要网站:http://www.p-chao.com/2016-09-26/%e7%ab%8b%e4%bd%93%e8%a7%86%e8%a7%89benchmark-middlebury/
一位作者个人博客:https://sites.google.com/site/hgjeoncv/publications