详解3D结构光如何标定
结构光视觉的优点:
非接触、信息量大、测精度高、抗干扰能力强。
结构光视觉传感器参数的标定包括:摄像机参数标定、结构光平面参数标定。
结构光视觉测量原理图
我们不考虑镜头的畸变,将相机的成像模型简化为小孔成像模型,则特征点的图像坐标Pf 与其在摄像机坐标系下的三维坐标P 之间的关系可表示为:
其中:(u,v)是特征点的图像坐标,(u0,v0) 光轴中心的图像坐标,(kx ky )是X 轴,Y 轴方向的放大系数,(xc yc zc) 是特征点在摄像机坐标系下坐标, Mc 是摄像机内参数矩阵。
结构光视觉投影成像模型:
设结构光在摄像头坐标系的平面方程为:
依据激光条纹特征点图像坐标就可以得到其在摄像机坐标系下的三维坐标
相机参数标定:
采用张正友提出的基于2D平面棋盘格的摄像机标定方法,利用Matlab摄像头标定工具完成相机参数的标定。
摄像机标定工具箱主窗口:
用于摄像机标定的棋盘格图像:
得到摄像机内参数矩阵:
结构光平面参数标定:
首先,激光器投射结构光平面到平面棋盘格上形成激光条纹,并通过CCD 摄像机采集激光条纹图像。然后,对图像进行处理,提取激光条纹上的两个特征点。控制机器人按照一定的约束进行运动,从一个标定位置移动到另一个位置,从而产生两条不共线的激光条纹,利用上述相同的图像处理方法再次提取激光条纹上的两个特征点。最后,利用结构光平面上的四个点来确定结构光平面方程参数。该方法可以在摄像机参数标定过程中,同时完成结构光平面方程参数的标定。同时,该方法不需要加工高精度的三维标定靶标,也不需要手工测量,标定过程简单实用。
试验装备:
一个六自由度机器人,一个CCD 工业摄像机,一个激光器和一个平面棋盘格靶标。
结构光平面参数标定系统示意图:
摄像机坐标系位于摄像机中心,而世界坐标系位于平面棋盘格靶标上。一个特征点在摄像机坐标系下坐标与其在世界坐标系下坐标之间的对应关系可以用下式来表达:
标定过程如下:
(1)图像获取:
图像的获取是在摄机参数标定过程中同时完成。 首先将棋盘格放在工作台上, 在这个初始位置,利用摄像机采集一幅图,如图 (a) 所示 。保持摄像机和棋盘格的位置姿态不变,打开激光器让条纹投射到棋盘格上, 再采集一幅图像如图 (b) 所示:
然后改变棋盘格和摄像机的相对位姿,使前后形成的两条激光条纹在空间上不共线,即可确定一个唯一的结构光平面。
(2)图像处理:
图像处理的目的是提取激光条纹上特征点的图像坐标。
分为图像感兴趣区域(ROI)确定、自适应阈值分割、骨架细化和特征点计算。
1)图像ROI确定
通过观察图像看出,激光条纹大致平行于图像的u 轴,而且激光条纹处像素的灰度值高于图像中其它像素的灰度值,所以图像的ROI 可以通过对每行像素灰度值进行求和得到:
2)阈值分割
阈值分割分为全局阈值分割、局部阈值分割和自适应阈值分割。最常用的自适应阈值分割是Otsu方法,该方法使用统计学的方法确定最优的阈值,适用于一般的图像,但是不太适合于棋盘格上激光条纹的分割。
根据图像中激光条纹的灰度值高于图像中其它像素的灰度值以及激光条纹所在区域比较集中的特点,利用图像ROI 内行像素灰度值之和计算激光条纹的自适应阈值:
3) 骨架细化:
自适应阈值分割以后的激光条纹具有一定的宽度,直接处理计算量巨大而且精度较低,需要对图像进行骨架细化得到单像素的线。
采用下面文献中所提出的快速骨架细化方法:
该方法通过迭代提取图像骨架,每个迭代过程分为两步,第一步去除东南边缘和西北角的点,第二步去除西北边缘和东南角的点。
Pi分布情况如下:
第二个迭代过程将上述条件的c、d条件更改为:
4)特征提取:
选取激光条纹中心线上的两个点作为激光条纹的特征点,为了提高激光条纹中心线的提取精度,利用最小二乘法拟合方法对细化后的激光条纹直线进行处理。
激光条纹特征点提取过程如下:
标定棋盘格平面内任意一点与法向量关系
由上图可知:
由特征点的图像坐标Pf 与其在摄像机坐标系下的三维坐标P 之间的关系知:
得到棋盘格上任意一点在摄像机坐标系下的zc 坐标
得到激光条纹特征点在摄像机坐标系下的坐标值
至此,得到四个激光条纹特征点的图像坐标,由上式得四个激光条纹特征点在摄像机坐标系下的坐标,由于三点确定一个平面方程,使用最小二乘法计算结构光平面方程如下:
至此,完成结构光平面方程的参数的标定。
来源:马少爷,版权归作者所有。
编辑:act视觉系统设计
参考文献:基于结构光视觉的焊缝识别与跟踪技术研究[D]. 中国科学院自动化研究所. 中国科学院大学. 2019.
本文仅做学术分享,如有侵权,请联系删文。
3D视觉精品课程推荐:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
详解3D结构光如何标定相关推荐
- 基础 | 详解3D结构光如何标定
来源丨马少爷 编辑丨AIoT工业检测 结构光视觉的优点: 非接触.信息量大.测精度高.抗干扰能力强. 结构光视觉传感器参数的标定包括:摄像机参数标定.结构光平面参数标定. 结构光视觉测量原理图 我们不 ...
- 一分钟详解线结构光扫描系统
前言 利用视觉进行测距,大家都知道哪些方案呢?除了常见的传统的双目立体视觉(可以参见<立体视觉动态测量技术>).TOF技术.面结构光技术(可以参见<3D Scanner相机>) ...
- 结构光系统标定方法详解
来源:CSDN 作者:明天的阵雨(已授权) 编辑:3D视觉开发者社区 前言:上篇介绍了标准结构光系统和改进的结构光系统模型,这篇我们来讲结构光系统标定方法,结构光系统标定的方法实际上还挺多的,本篇我们 ...
- 基于多项式拟合的结构光系统标定
前言:上篇介绍了标准结构光系统和改进的结构光系统模型,这篇我们来讲结构光系统标定方法,结构光系统标定的方法实际上还挺多的,本篇我们只讨论分析我实现过的比较方便及运用较多的两种方法之一,我给其命名为基于 ...
- 结构光系统标定(三)基于多项式拟合的结构光系统标定
结构光系统标定的方法实际上还挺多的,我只讨论分析我读过且实现过的两种,两种方法都比较经典.应用较多.速度较快且操作简便的.这篇文章会讨论第一种,基于多项式拟合的结构光系统标定.当然这名字是我自己给它取 ...
- 顺藤摸瓜之3D结构光原理
1概述: 如何描述二维相平面中的一个点? 该二维相面,即 三维空间 的一个点 两个船桨位于 水面(二维平面)的点,通过支架(光心),两桨(光机相机)相交于一三维空间点的一点. 水面表示相机面和光机面: ...
- 项目需求|3D结构光扫面(项目经费50万)
项目需求:3D结构光扫面(项目需求名称) 需求内容:3D结构光扫面重建测量物品在坐标系中成像,计算与地面切面和夹角等 工作环境:室内工作环境,光源稳定,识别的工作距离为0.5-1.5M 项目经费:50 ...
- 线结构光平面标定矩阵变换算子
这五个算子在线结构光的标定中用于矩阵变换,为了计算物体移动的距离 第一个 pose_to_hom_mat3d算子将 3D 姿势转换为均匀的转换矩阵,在线结构光平面标定中,这个算子把相机外参转为一个矩阵 ...
- 3D结构光摄像头深度算法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 光学和算法是3D结构光的核心能力,性能优越的3D结构光摄像头必须是光学系统和深度算法的完美融合,两者高 ...
- 3D结构光摄像头深度算法 转载
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 光学和算法是3D结构光的核心能力,性能优越的3D结构光摄像头必须是光学系统和深度算法的完美融合,两者高 ...
最新文章
- python检查URL是否能正常访问
- em算法python代码_EM 算法求解高斯混合模型python实现
- 第六章 贪心 【完结】
- html 轮播 平移,网站轮播图的实现-平移版
- 在.net core3.0中使用SignalR实现实时通信
- 阵列信号处理学习小结
- 离散傅里叶变换matlab程序
- Linux0.11内核详解,linux 内核0.11 学习(一)
- 图像处理之对比度增强
- 如何搭建经营分析看板
- js 中国时间转换美国太平洋标准时间
- 【AJAX 教程】Jquery 实现 AJAX 请求的三种方式
- 综合日语第一册第五课
- 分享Three.js 泛光(眩光)效果实现
- 开发跨设备的鸿蒙(HarmonyOS) App
- 计算机的正确配置文件,显示器颜色配置文件在win10电脑中设置正确配置的方法...
- PHP中利用PHPMailer配合QQ邮箱实现发邮件
- 用itunes把iphoto已导入到iphone的照片怎么删除?
- php上传文件失败的原因,PHP图片文件上传失败的原因
- 央企招聘:中国航天科工集团2023校园招聘
热门文章
- Wireshark基础知识(一)
- MOSFET的雪崩失效
- Linux(Centos7) 报 “RTNETLINK answers: File exists” 问题的解决
- matlab实现退化模型,数字图像处理Matlab退化模型示例(example0507).docx
- 计算机十年歌曲,抖音还有多少个十年原唱是谁 歌词一览
- 疑问词+不定式(短语)
- How、what...like的疑问代词_19
- 申请德国农工大学计算机案例,德州农工大学本科案例
- Java 初级软件工程师 认证考试试卷1
- Windows没有应用商店情况安装英特尔集成显卡控制面板