最近使用opencv做有关双目校正以及深度检测的工作,在深度检测时使用到BM算法,特别感谢这两位的博客解析https://blog.csdn.net/bennygato/article/details/37708195 , https://blog.csdn.net/zilanpotou182/article/details/72329903
在这两篇博文的指导下很快就熟悉了opencv中视差的使用,但对于新手来说其中的相关参数的作用却不是很了解,在调参数时不能根据实际情况调节相关参数。
opencv中三种算法的运算速度方面BM>SGBM>GC,但相反实际效果BM<SGBM<GC,以及在opencv3中BM算法的更新的使用方法详细内容可以点击第二个链接,进博客自行阅读。在使用BM算法时,需要具体设置的参数
- //BM(bidirectional matching)算法进行双向匹配,首先通过匹配代价在右图中计算得出匹配点。
- //然后相同的原理及计算在左图中的匹配点。比较找到的左匹配点和源匹配点是否一致,如果是,则匹配成功。
- //初始化 stereoBMstate 结构体
- //错误:不允许使用抽象类型的stereoBM对象
- //C++中含有纯虚拟函数并且所有纯虚函数并未完全实现的类称为抽象类,它不能生成对象
- //opencv3以后的版本不能这么用了
- //StereoBM bm;
- //int unitDisparity = 15;//40
- //int numberOfDisparities = unitDisparity * 16;
- //bm.state->roi1