立体匹配

来源:互联网 发布:js高级程序设计百度云 编辑:程序博客网 时间:2024/06/10 00:23

块立体匹配函数:cvFindStereoCorrespondenceBM包括三个方面:预处理、匹配、后处理;

(1):预处理

预处理就是使图像亮度归一化并加强图像纹理,在这里提供了两种亮度归一化的方法。一是CV_NORMALIZED_RESPONSE。在这种方法中,当中心像素的值和窗口均值之差超出范围Icap,就令中间值为Icap;当差值在范围Icap内,则中间值等于中间值减去窗口内的均值,即相当于去均值。二是CV_LAPLACIAN_OF_GAUSSIAN,即高斯平滑函数。

(2):匹配

匹配参数minDisparity和numberOfDisparities重要,这两个决定了获得的深度范围(具体的见learning opencv,p-478,图12-14)。当摄像机前向平行时,左图特征点的的匹配点一定是在右图相同位置的左边(具体的见learning opencv,p-479,图12-15)。

而且可以估计出测量精度(具体的见learning opencv,p-480公式)。从公式可以看到:1:距离越近精度越高;2:视差越精确,精度越高;3:f越大,精度越高(这个相当于距离近了);(4):基线越大,精度越高。

(3):后处理

对误匹配点进行处理,这里参数uniquenessRatio重要,其直接影响了匹配质量;而textureThreshold用来保证足够的纹理;还有specklWindowSize用于处理边缘。注意,我们在匹配的时候,一般坚持宁缺勿难的原则。

(4):因为匹配是很重要的一块,所以这里用一个统一的函数进行处理。那就是

CvStereoBMState *BMState = cvCreateStereoBMState(CV_STEREO_BM_BASIC,0)

BMState包含了前面需要的设置内容,这种单独处理可以使匹配方便快捷而不需要每次重新计算。在后面的视差计算过程中,直接调用即可。

原创粉丝点击