关于双目立体视觉的三大基本算法及发展现状的总结.docxVIP

关于双目立体视觉的三大基本算法及发展现状的总结.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

关于双目立体视觉的三大基本算法及发展现状的总结

来源|3D视觉工坊

双目立体视觉一直是机器视觉研究领域的发展热点和难点,“热”是因为双目立体视觉有着及其广阔的应用前景,且随着光学、计算机科学等学科的不断发展,双目立体技术将不断进步直到应用到人类生活的方方面面。“难”则是因为受到摄像机、镜头等硬件设备及一些相关算法的限制,双目立体视觉的研究及如何更好的应用到生产实际中仍有待在座的各位去进行突破。

一.简介

双目立体视觉是机器视觉中的一个重要分支,自上世纪60年代中期开创以来,经过几十年的发展,如今在机器人视觉、航空测绘、军事应及医学成像、工业检测上应用极其广泛。双目立体视觉基于视差原理并利用成像设备从不同的位置获取被测物体的左右两幅图像,然后根据三角测量原理计算空间点在二维图像的位置偏差,最后再利用位置偏差进行三维重建来获取被测物体的三维几何信息(本文不对双目立体视觉的数学原理进行详细介绍)。

二.双目立体视觉的三大基本算法的原理及其代码实现(基于opencv)

双目立体视觉中常用的基于区域的局部匹配准则主要有图像序列中对应像素差的绝对值之和SAD(sumofabsolutedifferences)、对应像素差的平方之和SSD(sumofsquareddifferences)及半全局匹配算法SGM(semi—globalmatching)。

2.1SAD(sumofabsolutedifferences)的原理

匹配算法SAD的基本思想是对经行对准后的左右视图图像的对应像素块的对应像素差的绝对值进行求和。

其数学公式如下:

SAD匹配算法的基本流程如下:

①输入两幅已经校正实现行对准的左视图(Left-Image)及右视图(Right-Image)。②对左视图Left-Image进行扫描选定一个锚点并构建一个类似于卷积核的小窗口。③用此小窗口覆盖Left-Image,并选择出小窗口覆盖区域的全部像素点④同样用此小窗口覆盖Right-Image,并选择出小窗口覆盖区域的全部像素点。⑤Left-Image覆盖区域的像素减去Right-Image覆盖区域的像素,并求出所有像素点的差的绝对值之和。⑥移动Right-Image的小窗口并重复④—⑤的操作(注意此处会设置一个搜索范围,超过此范围则跳出)⑦找到这个范围内SAD值最小的小窗口,此时便找到了与Left-Image锚点的最佳匹配的像素块。2.1.1SAD(sumofabsolutedifferences)的基于opencv的C++代码实现首先先定义一个SAD算法的头文件(SAD_Algorithm.h):

#includeiostream#includeopencv2/opencv.hpp#includeiomanipusingnamespacestd;usingnamespacecv;classSAD{public:SAD():winSize(7),DSR(30){}SAD(int_winSize,int_DSR):winSize(_winSize),DSR(_DSR){}MatcomputerSAD(MatL,MatR);//计算SAD

private:intwinSize;//卷积核的尺寸intDSR;//视差搜索范围};

MatSAD::computerSAD(MatL,MatR){intHeight=L.rows;intWidth=L.cols;

MatKernel_L(Size(winSize,winSize),CV_8U,Scalar::all(0));MatKernel_R(Size(winSize,winSize),CV_8U,Scalar::all(0));MatDisparity(Height,Width,CV_8U,Scalar(0));//视差图

for(inti=0;iWidth-winSize;i++)//左图从DSR开始遍历{for(intj=0;jHeight-winSize;j++){Kernel_L=L(Rect(i,j,winSize,winSize));MatMM(1,DSR,CV_32F,Scalar(0));for(intk=0;kDSR;k++){intx=i-k;if(x=0){Kernel_R=R(Rect(x,j,winSize,winSize));MatDif;absdiff(Kernel_L,Kernel_R,Dif);//求差的绝对值之和ScalarADD=

文档评论(0)

liwenfang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档