局部匹配算法可以大体分为三类:区域匹配算法、特征匹配算法和相位匹配算法.
一:区域匹配算法
- 本质上, 基于光度测量学不变性原理的区域匹配算法, 常以邻域窗的灰度为匹配基元, 以相关程度作为判别依据, 可以得到较稠密的视差图.从灰度相关性和非参数变换思想两个方面进行分类. 灰度相关性算法的研究主要集中在匹配代价聚合的窗口构建上, 主要包括: 固定窗算法、多窗口关联算法和自适应窗算法. 算法性能依赖于窗口的两个性质: 其一, 窗内像素点最好具有同一深 度, 不同深度的像素点应尽量少; 其二,窗内应包含足够多易于识别计算的灰度变化. 自适应算法思想是以灰度值和深度值作为自变量构造尺度函数, 进行窗的选择.
- 区域匹配算法的一个突出缺点是, 对无纹理区域常常由于相关函数变化的锐度不够以及难于保留深度不连续特性, 不能取得精确的匹配结果。
灰度相关性算法: - 灰度匹配算法
经过极线矫正之后的图像,在左图像中选择一个[2m+1,2m+1]大小的区域,在右边相同行上选择同样大小的区域,从左到右遍历右图像上此行的所有像素点,以相关值的计算作为匹配标准,找到对应的匹配点。而对于不同的相关函数,其性质也不大一样。比如常用的相关公式有:
而比较明显的是,不同的相关值,所计算的相关峰也不一样,如下:
ZNCC公式
NCC公式
在实验中,选择一张图的同样区域进行匹配,得到的匹配相关峰为:
ZNCC峰值
NCC峰值
以上,表示在区域匹配时,选择相关函数的重要性,一般而言,ZNCC比NCC效果要好,比SAD、SSD也要好一些。
- 而相关窗口的大小,一般而言,有矩形窗口、米字形窗口、十字窗口、自适应窗口(依据颜色相似性和距离给与窗口内不同的像素不同的权值)等等。而窗口的大小没有可以量化的准则,对于多大的图像、灰度突变的地方要选择多大的窗口比较好,一般依据经验选择窗口大小。但也有一些规律可循。
- 对于灰度值从0-255变化的图像,不存在过暗或者过亮、曝光等情况,窗口大小在4040~8080之间,也就是m在[20,40]z之间。
- 越亮的地方,需要的窗口越大,越暗的地方需要的窗口越小,根据文献的描述,从走到右,窗口不是固定的,是变动的,从走到右变大。而文献也是在寻找一个最佳的窗口。
- 库可以评价各种算法的效果
窗口的大小,可以使用自适应权重窗口法解决,大体思路是按照:每个像素的权重由两部分决定,颜色和距离。而对于窗口内距离太远或者颜色差异太大的像素,权重可以近似为0,这样就得到每个像素的最佳匹配窗口。
权重公式由以下的公式决定:
各部分的定义如下:
fs是颜色相似性,fp是距离相似性
伽马一般取14.Lab是颜色的表示方式
其中的gpq表示欧式距离。
对窗口区域内的点做如上的处理,而匹配的过程中:
左右图像
匹配代价计算公式。
使用Middlebury Stereo Datasets中的图片,再结合我们的此方法和传统方法的比较有,这部分的结果来自文献:
可以看到结果有明显的改善。
但这也带来一些缺点:耗时过大、不能够满足实时测量的需求等等