对要求大测量范围和较高测量精度的场合,采用基于双摄像机的双目立体视觉系统比较合适;对测量范围要求比较小,对视觉系统体积和质量要求严格,需要高速度实时测量对象,基于光学成像的单摄像机双目立体视觉系统便成为最佳选择。

基于双摄像机的双目立体视觉系统必须安装在一个稳定的平台上,在进行双目视觉系统标定以及应用该系统进行测量时,要确保摄像机的内参(比如焦距)和两个摄像机相对位置关系不能够发生变化,如果任何一项发生变化,则需要重新对双目立体视觉系统进行标定。

⊿z=z*⊿d/f*b

⊿z表示测量得出的被测点与立体视觉系统之间距离的精度,z指被测点与立体视觉系统的绝对距离,f指摄像机的焦距,b表示双目立体视觉系统的基线距,⊿d表示被测点视差精度。

如果b和z之间的比值过大,立体图像对之间的交迭区域将非常小,这样就不能够得到足够的物体表面信息。b/z可以取的最大值取决于物体的表面特征。一般情况下,如果物体高度变化不明显,b/z可以取的大一些;如果物体表面高度变化明显,则b/z的值要小一些。无论在任何情况下,要确保立体图像对之间的交迭区域足够大并且两个摄像机应该大约对齐,也就是说每个摄像机绕光轴旋转的角度不能太大。

2.2 双目立体视觉系统标定

  为了进行视觉系统的标定,需要得到空间点的三维坐标以及该点在左右两幅图像中坐标的对应关系,另外还需要给定两个摄像机的初始参数。拍摄标定板图像时,要保证标定板在左右两个摄像机中都能够完整成像。

  如果使用HALCON标准标定板,首先可以通过函数find_caltab()在标定板图像中分离出标定板区域,然后利用find_marks_and_pose()算子,该算子通过亚象素阈值、亚象素边缘提取、圆心确定等一系列操作计算标定板上每个点的图像坐标以及标定板与摄像机之间大约的位置关系,即摄像机的外参初始值。其中使用find_caltab()分离标定板区域运算时间大约为5ms,find_marks_and_pose()计算标定板上49个标志点的坐标大约需要时间为40ms,计算坐标精度为亚象素级,如某标志点在左摄像机图像坐标系中坐标为(198.612619165, 344.142354438),右摄像机图像坐标系中相应点坐标为(212.140195587, 226.377754012)。 如果使用自定义的标定板,可以使用HALCON中的图像滤波、亚象素边缘及线提取、亚象素轮廓处理等基本函数开发算法求取标志点的坐标并估算摄像机的外参初始值。

  获得标志点相应的坐标以及摄像机的起始参数后,通过调用函数binocular_calibration()来确定两个摄像机的内参数、外参数以及两个摄像机之间的相对位置关系。通过539个标志点坐标的对应关系计算出摄像机各个参数需要的时间为1.6094s,计算误差约为0.02个象素。

  2.3 校正立体图像对

  为了能够更精确地进行匹配,提高运算的效率,在获得摄像机的内外参数后首先对立体图像对进行校正。校正的过程其实就是将图像投影到一个公共的图像平面上,这个公共的图像平面方向由双目立体视觉系统基线与原始两个图像平面交线的叉集确定。

  校正后的图像可以看作是一个虚拟的立体视觉系统(图5)采集的图像对。这个视觉系统中摄像机的光心与实际摄像机一致,只是通过绕光心的旋转使光轴平行,并且视觉系统中两个摄像机的焦距相同。这个虚拟的立体视觉系统就是双目立体视觉原理中提到的最简单的平视双目视觉模型。

  HALCON中将标定过程中获得的摄像机的内参以及两个摄像机相对位置关系作为参数传递给函数gen_binocular_rectification_map(),再将获得的两个图像的映射图传递给函数map_ image(),即可得到校正后的两幅图像,并可获得校正后虚拟立体视觉系统中两个摄像机的内参和外参。其中函数gen_binocular_rectification_map()耗时约为0.3488s,map_image()耗时约为0.0050s。

  2.4 获得图像中三维信息

  为了得到图像中某点的三维信息,需要在另一幅图像中找到该点的对应点坐标。因此想获得物体的深度信息,首先需要对校正后的立体图像对进行匹配。由于经过校正后,两幅图像中的对应点在图像的同一行中,因此在匹配时只需要在相应的行中寻找匹配点。为了得到更佳的匹配结果,如果被测物体表面没有明显的特征信息,则需要测量时在物体表面增加特征点。另外要避免被测物体上重复图案在同一行中。

  将校正后的图像以及虚拟立体视觉系统中的摄像机内外参数传递给binocular_disparity(), 这时可以设置匹配窗大小、相似度计算方式等参数,在匹配中使用图像金字塔提高匹配速度,并且可以自我检测匹配结果的正确性。函数返回一个视差图 (物体表面三维信息的表示)和一个匹配分值图(表示匹配结果的准确程度),函数的运行时间约为0.6051s。

  函数binocular_distance()与binocular_disparity()类似,只不过返回一个深度图(物体表面在第一个摄像机坐标系中的深度信息)和一个匹配分值图。图6~图9显示了HALCON中利用双目立体视觉测量电路板三维信息的过程。

  HALCON中另外还有很多关于立体视觉的函数,可以获得图像中某点的三维坐标,另外可以校正倾斜对高度测量的影响等。

Halcon:立体匹配相关推荐

  1. halcon 定位_HALCON高级篇:单个相机的尺寸测量

    点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自:AI图像 用单个相机在指定平面上的尺寸测量 在HALCON中 ...

  2. OpenCV、Halcon博客与资源收藏整理备用

    原文链接:https://libaineu2004.blog.csdn.net/article/details/88778170 原文作者:libaineu2004 OpenCV官网 https:// ...

  3. OpenCV/kornia/Pillow/Halcon/NI Vision/MIL/*计算机视觉资料汇总

    版权声明:本文为CSDN博主「libaineu2004」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lib ...

  4. 双目立体视觉案例源代码 基于HALCCN的双目立体视觉系统实现 基于openev的双目测距 双目测距-opency 通用化视堂系线板架 Halcon视觉例子程序

    双目立体视觉案例源代码 双目测距 双目摄像头图像获取 标定代码 1.Halcoa 10三椎视党 2.Halcon视觉例子程序 wa2013 3.OpenCV+OpencL.双目立体视觉三幢重建 vs2 ...

  5. halcon opencv 图像处理面试指南

    珠海某上市公司算法总监: 1.相机标定的原理与坐标系之间的转换,如何转换 2.激光三角原理,如何搭建 3.测量拟合的过程中有哪些算子,原理什么,接着问5,跌代多少次?什么情况最优,如何优化, 4.那个 ...

  6. halcon相机标定助手_HALCON高级篇:单个相机的尺寸测量

    用单个相机在指定平面上的尺寸测量 在HALCON中很容易从图像中获得在世界坐标中的非变形测量.一般情况下,如果相同的物体在同一时刻,在不同的空间位置下,用相机拍摄两个或更多的图像,才能完成这样的测量任 ...

  7. 双目视觉原理(万字总结,包含Halcon代码)

    双目视觉原理 1. 双目视觉的视差与深度 1.1 总览 2. 视差原理 2. 双目相机的坐标系 2.1 针孔相机的模型 2.2 四大坐标系 1 像素坐标系(单位:像素(pixel)) 2 图像坐标系( ...

  8. halcon与QT联合:(5.3)瓶盖检测以及QT界面搭建

    接着上篇博客的添加资源之后,本次要实现的是鼠标的滚轮功能图片的缩放. 在QT代码中中文乱码的处理方法: qDebuge()<<QString::fromLocal8Bit("这个 ...

  9. halcon与QT联合:(5.2)瓶盖检测以及QT界面搭建

    目录 1.添加按钮.添加资源 1.1添加那妞 1.2.添加资源 1.2.1.准备资源文件 1.2.2.添加资源文件 1.2.3.添加对应的资源代码 在上一个博客5.1中只是做了一个简单的界面,下面我们 ...

最新文章

  1. elasticsearch使用指南之Elasticsearch Document Index API详解、原理与示例
  2. SVN 文件的解锁方法
  3. 3._FILE_和_LINE_
  4. 银行计算机记账比赛,在银行柜台业务技术比赛颁奖仪式上的讲话(一).doc
  5. 计算机科学入门指南游戏攻略,【基础攻略】从零开始新手入门指南
  6. poj 1830 开关问题 高斯消元
  7. 计算机高职考理论知识,考计算机基础知识理论试题
  8. springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
  9. [Vue.js] 基础 -- 案例之Tab选项卡
  10. 华为年底将推多款平板产品:顶配版将搭载5nm麒麟9000
  11. 萌新的Python练习菜鸟100例(十二)判断101-200之间有多少个素数,并输出所有素数
  12. 如何在M1的Mac上检查App是原生执行,还是Rosetta转译后执行?
  13. IBM斥资20亿美元的收购,天气数据为何值钱?
  14. Pycharm专业版注册教程
  15. DY-SV17F 语音模块
  16. JavaScript-幸运转盘-抽奖
  17. vue 在线答题功能
  18. Pytorch下基于lstm的股价预测
  19. 当机械人也开始拥有感情‧谁来定义什么才是人类?
  20. 用Python分析广州房地产市场

热门文章

  1. 04 bbed修复system文件头损坏
  2. QT编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEvent'
  3. linux 进程优先级 调度 nice pri
  4. vuejs之Vue Devtools
  5. struts2的action中获得request response session 对象
  6. [つづく]MySTL
  7. Qt5.4生成安装包过程
  8. 程序员应知道这十大面向对象设计原则
  9. Centos7 下配置mysql5.6主从复制实例(一主两从)
  10. My new English