双目视觉之 SGBM 各个函数的参数的介绍,淡定的CrazyDog

cv::StereoSGBM sgbm;  
        sgbm.preFilterCap = 63;  
        int SADWindowSize=11;   
        int cn = 1;  
        sgbm.SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 3;  
        sgbm.P1 = 4*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;  
        sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;  
        sgbm.minDisparity = 0;  
        sgbm.numberOfDisparities = 32;  
        sgbm.uniquenessRatio = 10;  
        sgbm.speckleWindowSize = 100;  
        sgbm.speckleRange = 32;  
        sgbm.disp12MaxDiff = 1;  
      
        sgbm(left , right , left_disp_);  
        sgbm(right, left  , right_disp_);  

  下面我简要介绍一下各个参数的意义

minDisparity -最小的是视差,一般设置为0

numDisparities 最大的视差,这个需要自己去定,这个数值比0大,而且要被16整除, 比如32 64

SADWindowSize  滑动窗口的大小,必须要大于1,一般取在3-11之间

P1   惩罚系数,用于控制图像的平滑,具体需要看这个函数的算法,很多博客有介绍P1和P2的惩罚系数

P2   惩罚系数  

disp1MaxDiff  视差图的像素点检查,设置为1

uniquenessRatio 最好的代价方程值“赢了”第二好的代价方程值的概率,通常设置为5-15之间效果达到最佳

speckleWindowSize  针对散斑滤波的窗口大小,如果设置为0则不允许散斑滤波,否则设置为50-200之间

speckleRange-  相邻像素点的视差值浮动范围,通常设置为1-2就好了,这个系数会被乘以16输入到程序中

fullDP  如果是尺寸比较大的图片,这里设置为true,否则设置为false

 

posted on 2015-12-18 15:21  淡定的CrazyDog  阅读(4227)  评论(0编辑  收藏  举报

导航