不同方法获得视差图比较
来源:互联网 发布:网络推广学校 编辑:程序博客网 时间:2024/06/06 03:50
原帖地址:http://blog.csdn.net/mailang2008/article/details/5873883
对OpenCV中涉及的三种立体匹配算法进行代码及各自优缺点总结:
首先我们看一下BM算法:
该算法代码:
- CvStereoBMState *BMState = cvCreateStereoBMState();
- int SADWindowSize=15;
- BMState->SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 9;
- BMState->minDisparity = 0;
- BMState->numberOfDisparities = 32;
- BMState->textureThreshold = 10;
- BMState->uniquenessRatio = 15;
- BMState->speckleWindowSize = 100;
- BMState->speckleRange = 32;
- BMState->disp12MaxDiff = 1;
- cvFindStereoCorrespondenceBM( left, right, left_disp_,BMState);
- cvNormalize( left_disp_, left_vdisp, 0, 256, CV_MINMAX );
其中minDisparity是控制匹配搜索的第一个参数,代表了匹配搜苏从哪里开始,numberOfDisparities表示最大搜索视差数uniquenessRatio表示匹配功能函数,这三个参数比较重要,可以根据实验给予参数值。
该方法速度最快,一副320*240的灰度图匹配时间为31ms,视差图如下。
第二种方法是SGBM方法这是OpenCV的一种新算法:
- 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_);
各参数设置如BM方法,速度比较快,320*240的灰度图匹配时间为78ms,视差效果如下图。
第三种为GC方法:
- CvStereoGCState* state = cvCreateStereoGCState( 16, 2 );
- left_disp_ =cvCreateMat( left->height,left->width, CV_32F );
- right_disp_ =cvCreateMat( right->height,right->width,CV_32F );
- cvFindStereoCorrespondenceGC( left, right, left_disp_, right_disp_, state, 0 );
- cvReleaseStereoGCState( &state );
该方法速度超慢,但效果超好。
各方法理论可以参考文献。
0 0
- 不同方法获得视差图比较
- 比较两个数组获得不同元素
- OpenCV中GC方法求视差图的实现
- Ios XML 不同解析方法比较
- 不同方法数组去重的比较
- 关于视差图
- 求视差图
- 稳压电源(11) 获得不同输出电压的方法
- 稳压电源(12) 获得不同输出电流的方法
- 不同版本Hidernate获得SessionFactory对象的方法
- 不同版本Hidernate获得SessionFactory对象的方法
- 比较不同
- 混沌------分岔图绘制不同方法的总结、比较(转)
- 比较好用的获得文件大小的方法
- Java比较两个对象是否相同并获得不同的字段
- 双目立体视差图计算
- 视差滚动教程、实现方法、源代码
- 视差滚动教程、实现方法、源代码
- 机房收费系统—结账
- 上拉电阻
- Android - Binder机制
- 概率论与数据统计在分类预测中的原理介绍(信息增益、交叉熵等)
- 好网址
- 不同方法获得视差图比较
- 系统启动的原理
- 将两个递增的有序链表合并为一个递增的有序链表(C语言编程实现)
- 异常处理 续之(堆栈解退、auto_ptr)http://blog.csdn.net/feitianxuxue/article/details/7314079
- apk 反编译失败
- Android学习第一天之LinearLayout浅析
- 程序员书单_sshi框架篇
- 循环赛日程表
- 保存dotNetCharting for WinForm 控件的生成的图表