如今视觉应用方面单纯依靠2D图像解决问题存在很多问题、稳定性差、定位不准确、还有配合机器人抓取方面只能抓高度一致的物品。
其实在Halcon算法库有非常强大的三维算法。
包括点云重建、激光三角法(2D相机加一个激光器即可),结构光相机、散斑相机。
三维的算法、物体尺寸测量、物体的三维定位、三维物体的匹配。

内容比较多、容我慢慢分享。
1.点云数据的获取

目前比较常用的3D相机(工业领域)、主要是结构光相机和散斑相机。散斑相机相对来说价格比较便宜但精度比较差5k rmb以内 Kinect 奥比中光 之类,精度5mm---30mm之间 并附带2d 图片信息、视野都比较大、体积小巧。
结构光相机 主要是 编码结构光 相机 和线激光相机。这种相机的精度根据视野而定。小视野相机 基本上都是um及精度
编码结构光相机 比较复杂。
但是线激光相机基本上就非常简单了、如果不是要求特别高的精度 完全可以用 2D相机加激光线 自己组装一台根据不同视野 精度基本 在 0.1mm到1mm之间。常规项目上能够满足。
先上一个详细的讲解(从论文里找到的)链接:https://pan.baidu.com/s/1bPApLfoX3SY0JMFNdOhLtQ 密码:78l7
等有时间的时候 再码字

更新:

先解析一下标定 激光三角法的例子calibrate_sheet_of_light_calplate.hdev

准备工作(搭建环境)
2D相机一个
选择2d相机时有个原则是帧率越高越好
目前usb3.0相机的帧率都比较高、但usb线是容易受到干扰丢帧。
根据三角成像原理、激光线条成像所占像素是在一定范围之内的
假设相机像素(1280X960)激光条成像范围跟激光器安装夹角有关。
有一点需要注意 超出相机景深时成像比较模糊 精度会变的很差
假设激光器与相机夹角 30度  结合相机实际景深 ,激光条成像像素基本在400像素以内变化
(1280X960)的分辨率有一部分像素是闲置用不上的。
此时需要设置一下相机的ROI 。
相机有一个特点、ROI越小相机的帧率越高

  例如网口相机、千兆网相机。相机最大的数据吞吐量是每秒千兆、
(1280X960)像素1228800 为 1228800字节  约等于 1.17MB
  网口数据量最大 120MB每秒
  因此 这种情况下 最大理论帧数 =120/1.17=102贞/s
  实际情况下 很难达到最高理论速度,因此相机的帧率受到限制
  但是 把相机的ROI改小 就会有另一种效果了。
  相机 数据传输 之传输 ROI设置部分数据。
  例如(1280X300)相机帧率就会提升很多(前提是相机支持这种模式)
  另外和成品的激光扫描相机相比 成品相机的帧率 会非常高400--600 贞每秒  !成品相机中 会使用移轴镜头(自行百度原理)进一步压缩像素范围。
}
将相机设置成多帧触发模式
设置相机的采集帧率(此参数标定扫描方向时会用到)
设置相机的采集贞数、此参数根据实际场景会 经常变化

扫描时间t=扫描长度/扫描速度
采集帧数 N=t*帧率;
采集帧数根据 扫描长度 和速度 动态变化。
相机 的多帧采集 通常是 给一次触发 以设置的采集速率 采集N张图片
达到设定帧数时自动停止。(需要注意的是相机的曝光时间一定要合理、如果曝光时间太大、是无法达到设定的采集速率的)

另外需要获得的图像是激光线条、可以根据实际情况使用滤波片提高抗干扰能力。
标定相机的时候、为了拍全标定板 可以将相机ROI放开。实际使用时在设置一个小的

激光器一个
运动机构
滑台、直线模组 或 机器人

总体上分三部分
1.相机内外参数的标定
2.光学平面的标定(激光器光线形成的平面标定)
3.运动方向的

1.第一部分比较常规 按照 标定相机 参数的方法进行即可
(初始化参数 采集图片 标定)
最终得到 
相机外参 CameraPose 
相机内参 CameraParameters

2.第二部分比较难理解(详细的原理说明参考网盘论文)
需要准备4张图片 
采集一张标定板图片  和当前状态下的激光线图片
调整高度与上一个采集位置形成高度差 再次采集一张标定板 图片和激光图片
按照流程标定即可。
最终得到 LightPlanePose

3.第三部分比较特别
按照正常标定时 采集在直线模组上 两个位置上的标定板图片完成标定即可。
得到 MovementPose
但是 如果保证 激光线 垂直于扫描方向进行扫描时 可以不用标定

MovementPose 是7位Htuple数据 第1位和第3位是激光线移动倾斜的矫正
如果对精度要求不高 并且保证 激光线与扫描方向大致垂直 填零即可 。
第二位的含义是 每采集一张图片 扫描多少距离 单位米。
可间接得到 MovementPose[1]=(扫描速度m/s)/(相机每秒的采样数量)
剩下4位直接填0即可。

未完!等待更新。。。。。。

激光三角法点云重建分享——halcon 方法的更多相关文章

  1. 激光三角测量(sheet of light)halcon示例详解 Reconstruct_Connection_Rod_Calib.hdev 三维重建

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11555100.html 前言:最近项目用到halcon的3d模板匹配,三维重建,相机标定,所以 ...

  2. photometric_stereo halcon光度立体法三维表面重建

    官方文档翻译 名称: photometric_stereo -- 通过光度立体技术重建表面. 签名: photometric_stereo(Images : HeightField, Gradient ...

  3. 恒天云技术分享系列5 – 虚拟化平台性能对比(KVM & VMware)

    恒天云技术分享系列:http://www.hengtianyun.com/download-show-id-14.html 概述 本性能测试报告将详细陈述各虚拟化平台基准性能测试的主要结论和详细结果. ...

  4. 恒天云技术分享系列4 – OpenStack网络攻击与防御

    恒天云技术分享系列:http://www.hengtianyun.com/download-show-id-13.html 云主机的网络结构本质上和传统的网络结构一致,区别大概有两点. 1.软网络管理 ...

  5. 恒天云技术分享系列3 – KVM性能调优

    恒天云技术分享:http://www.hengtianyun.com/download-show-id-11.html KVM是什么 KVM 是 kernel-based Virtual Machin ...

  6. 【腾讯云的1001种玩法】几种在腾讯云建立WordPress的方法(Linux)(二)

    版权声明:本文由张宁原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/126547001488207964 来源:腾云阁 ht ...

  7. 融云技术分享:解密融云IM产品的聊天消息ID生成策略

    本文来自融云技术团队原创分享,原文发布于“融云全球互联网通信云”公众号,原题<如何实现分布式场景下唯一 ID 生成?>,即时通讯网收录时有部分改动. 1.引言 对于IM应用来说,消息ID( ...

  8. 融云技术分享:融云安卓端IM产品的网络链路保活技术实践

    本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...

  9. 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...

随机推荐

  1. virtualbmc 使用

    virtualbmc 介绍 通常情况下,我们要使用 IPMI必须使用有带外管理功能的物理机.但是在很多测试环境,我们使用的是虚拟机.virtualbmc是一个可以使用 IPMI命令来控制虚机的open ...

  2. jmeter--001.介绍、下载与安装

    一.介绍 使用场景: -1.接口测试 -2.性能测试 .... 特点: -1.开源.轻量级.插件化 -2.适合自动化和持续集成 二.下载(Windows环境) 下载网址:http://jmeter.a ...

  3. es6 ...克隆与函数深度克隆

    es6的...运算, 可以进行一层的深度克隆; 在多层的情况下,不要用这种啊. 用深度克隆函数,或者JSON.parse(JSON.stringify(obj)),但json方式要求不能有属性值是函数 ...

  4. 匿名函数function前面的! ~等符号作用小解

    好久没写博客了,刚过完年,给大家拜个晚年,大家新年快乐! 相信昨晚前端,很多同学应该都见过类似于: !function() {do something...}() ~function(){do som ...

  5. react-redux简单的记事本应用

    首先给大家普及一个方法: let data = [ {id:1,text:'手机',check:false}, {id:2,text:'电脑',check:false}, {id:3,text:'平板 ...

  6. AS中jar包和aar包区别及导入导出

    发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 导出 导入 区别 包和 aar jar 发表文章 摘要:jar包和aar包区别*.jar:只包含class文件与清单文件,不包含资源 ...

  7. ide phpStorm更换主题

    #主题下载地址 http://www.phpstorm-themes.com #更换方式 1.将主题配置保存在 xxx.icls(如果是xml也保存成.icls) 2.打开phpStorm设置(中上方 ...

  8. NI Vision ClampRake修改

            也可以直接在C盘模板中直接修改,模板路径: C:\Program Files (x86)\National Instruments\Vision Assistant\CG\Visual ...

  9. Mybatis异常--There is no getter for property named 'XXX' in 'class java.lang.String'

    第一种 在service层加@Param(value="ip") void deleteIpsetup(@Param(value="ip")String ip) ...

  10. python 日常代码 tips

    1. 官方示例很多情况是用的列表的形式,bokeh本身不是基于pandas构建的可视化工具,所以它基本上是用的python自己的数据结构字典.列表:我们做数据分析肯定是基于pandas,以上就是做了一 ...