机器视觉-标定篇

news2024/11/27 0:34:26

3D结构光标定

结构光视觉的优点:
 

非接触、信息量大、测精度高、抗干扰能力强。

结构光视觉传感器参数的标定包括:摄像机参数标定、结构光平面参数标定

结构光视觉测量原理图

5f424e0be580fb036a9edfe7478b4397.png

我们不考虑镜头的畸变,将相机的成像模型简化为小孔成像模型,则特征点的图像坐标Pf 与其在摄像机坐标系下的三维坐标P 之间的关系可表示为:

80b415087a49251d756255c7f55831db.png

其中:(u,v)是特征点的图像坐标,(u0,v0) 光轴中心的图像坐标,(kx ky )是X 轴,Y 轴方向的放大系数,(xc yc zc) 是特征点在摄像机坐标系下坐标,  Mc 是摄像机内参数矩阵。

结构光视觉投影成像模型:

2cd46c8cb80d7a946f4e850a159c74b4.png

设结构光在摄像头坐标系的平面方程为:

1a04ce755c7faa61f4ce0ed04599ea43.png

依据激光条纹特征点图像坐标就可以得到其在摄像机坐标系下的三维坐标

6f5e13039cb83bfbabf219495cd97250.png

相机参数标定:

采用张正友提出的基于2D平面棋盘格的摄像机标定方法,利用Matlab摄像头标定工具完成相机参数的标定。

摄像机标定工具箱主窗口:

abde47950d362c7979e05a8fd6150be6.png

用于摄像机标定的棋盘格图像:

c50f465918d3b4eab1dd33c353448c94.png

得到摄像机内参数矩阵:

c798eeb07e3e1f1091adbd2a05c658b9.png

结构光平面参数标定:

首先,激光器投射结构光平面到平面棋盘格上形成激光条纹,并通过CCD 摄像机采集激光条纹图像。然后,对图像进行处理,提取激光条纹上的两个特征点。控制机器人按照一定的约束进行运动,从一个标定位置移动到另一个位置,从而产生两条不共线的激光条纹,利用上述相同的图像处理方法再次提取激光条纹上的两个特征点。最后,利用结构光平面上的四个点来确定结构光平面方程参数。该方法可以在摄像机参数标定过程中,同时完成结构光平面方程参数的标定。同时,该方法不需要加工高精度的三维标定靶标,也不需要手工测量,标定过程简单实用。

试验装备:

一个六自由度机器人,一个CCD 工业摄像机,一个激光器和一个平面棋盘格靶标。

结构光平面参数标定系统示意图:

f315347546d4da37de8303118bf74a3b.png

摄像机坐标系位于摄像机中心,而世界坐标系位于平面棋盘格靶标上。一个特征点在摄像机坐标系下坐标与其在世界坐标系下坐标之间的对应关系可以用下式来表达:

204d43555e79720ee525d1475c7a6c30.png

标定过程如下:

(1)图像获取:

图像的获取是在摄机参数标定过程中同时完成。 首先将棋盘格放在工作台上, 在这个初始位置,利用摄像机采集一幅图,如图 (a) 所示 。保持摄像机和棋盘格的位置姿态不变,打开激光器让条纹投射到棋盘格上, 再采集一幅图像如图 (b) 所示:

4ff432d050c26b327583eda62f89ddb8.png

然后改变棋盘格和摄像机的相对位姿,使前后形成的两条激光条纹在空间上不共线,即可确定一个唯一的结构光平面。

bb6fe15ee253686057b41dd900665433.png

(2)图像处理:

图像处理的目的是提取激光条纹上特征点的图像坐标。

分为图像感兴趣区域(ROI)确定、自适应阈值分割、骨架细化和特征点计算。

1)图像ROI确定

通过观察图像看出,激光条纹大致平行于图像的u 轴,而且激光条纹处像素的灰度值高于图像中其它像素的灰度值,所以图像的ROI 可以通过对每行像素灰度值进行求和得到:

92a9c58b91533f4e3f1ed36760f0dbd7.png

2)阈值分割

阈值分割分为全局阈值分割、局部阈值分割和自适应阈值分割。最常用的自适应阈值分割是Otsu方法,该方法使用统计学的方法确定最优的阈值,适用于一般的图像,但是不太适合于棋盘格上激光条纹的分割。

根据图像中激光条纹的灰度值高于图像中其它像素的灰度值以及激光条纹所在区域比较集中的特点,利用图像ROI 内行像素灰度值之和计算激光条纹的自适应阈值:

4b1f20d3a7b757c8cb0aaf7f0a2c66cc.png

3) 骨架细化:

自适应阈值分割以后的激光条纹具有一定的宽度,直接处理计算量巨大而且精度较低,需要对图像进行骨架细化得到单像素的线。

采用下面文献中所提出的快速骨架细化方法:

ed0210ef8f4c0f6847f08c31732bb2c6.png

该方法通过迭代提取图像骨架,每个迭代过程分为两步,第一步去除东南边缘和西北角的点,第二步去除西北边缘和东南角的点。

8b3103fbd4ffba7f675b81733327fc9a.png

Pi分布情况如下:

7fd3ae7877ae3e88412b0f00eb843979.png

第二个迭代过程将上述条件的c、d条件更改为:

9ff0557a35640001995a1e21abc4b31d.png

4)特征提取:

选取激光条纹中心线上的两个点作为激光条纹的特征点,为了提高激光条纹中心线的提取精度,利用最小二乘法拟合方法对细化后的激光条纹直线进行处理。

2a27f392bdff002ac39d3a1612620f68.png

激光条纹特征点提取过程如下:

d1cd0d9c078c0c967ce4957ad614d576.png

标定棋盘格平面内任意一点与法向量关系

37bd5acf1f8fedfa3e88ccb4c6d9d396.png

由上图可知:

0bbb04a9bd79aa051d5de896384ca848.png

由特征点的图像坐标Pf 与其在摄像机坐标系下的三维坐标P 之间的关系知:

2a9933cec2035da344938d6d20a5f6fd.png

得到棋盘格上任意一点在摄像机坐标系下的zc 坐标

d6e6cccce3296b29abe873f893819483.png

得到激光条纹特征点在摄像机坐标系下的坐标值

b61ed3816731973a61456f55da1c1968.png

至此,得到四个激光条纹特征点的图像坐标,由上式得四个激光条纹特征点在摄像机坐标系下的坐标,由于三点确定一个平面方程,使用最小二乘法计算结构光平面方程如下:

0262262240aac5b2cf028abaa67aa572.png

参考文献:基于结构光视觉的焊缝识别与跟踪技术研究[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.单目深度估计方法:算法梳理与代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html中图片、音乐、视频标签及选择器、背景

目录 图片 音乐 视频 子代选择器 交集选择器 背景 文章主要补充之前html文章一些漏洞&#xff1a;HTML常用标签表格表单_小俱的一步步的博客-CSDN博客 在VScode中新创建html文件&#xff0c;&#xff01;“Tab”键&#xff0c;自动生成html骨架 图片 <img src"…

Android T 禁止应用添加窗口的操作

序 什么情况下会出现我们需要禁止应用添加窗口的情况呢&#xff1f; 假如有一个应用的窗口&#xff0c;我们点开后是透明的或者会影响到系统的使用&#xff0c;那么我们就有必要对这个窗口操作一下 回顾我们在Android T WMS窗口相关流程中所讲的内容 禁止应用添加窗口的操作…

leetcode题目分析(一)leetcode155最小栈

一、前言 本题基于leetcode155最小栈这道题&#xff0c;说一下通过java解决的一些方法。 需要尤其注意的是&#xff0c;此题输入的值的区间范围在-2^31 < val < 2^31 - 1.这将会影响我们最后一种最优解的结果出现问题。这些都是后话。 二、解决思路 其实在一开始的提交…

vue-cli vue3

安装 cli npm i -g vue/cli4.5.13查看版本&#xff1a;vue -V升级版本&#xff1a;npm update -g vue/cli 升级 在 v 3.0.0 版本中是不支持的最新的 script setup 语法执行指令升级&#xff1a; npm i vue3.2.8 vue-router4.0.11 vuex4.0.2 "vue": "^3.2.8&q…

方案:AI赋能,森林防火可视化智能监管与风险预警系统解决方案

一、方案背景 森林火灾是世界八大自然灾害之一&#xff0c;具有发生面广、突发性强、破坏性大、危险性高、处置扑救特别困难等特点&#xff0c;严重危及人民生命财产和森林资源安全&#xff0c;甚至引发生态灾难。有效预防和及时控制森林火灾是保护国家生态建设成果、推进生态…

SOLIDWORKS三维剖视图怎么做

1.SOLIDWORKS一般剖视图制作方法&#xff0c; a.先选择剖面视图命令制作&#xff08;常用&#xff09; b.先绘制剖切线制作剖视图&#xff0c;绘制剖切线—选择剖面视图命令 2.SOLIDWORKS剖面线的调整。当对默认剖面线不满意时&#xff0c;可以双击剖面线对剖面线进行调整调整 …

Qt重写QTreeWidget实现拖拽

介绍 此文章记录QTreeWidget的重写进度&#xff0c;暂时停滞使用&#xff0c;重写了QTreeWidget的拖拽功能&#xff0c;和绘制功能&#xff0c;自定义了数据结构&#xff0c;增加复制&#xff0c;粘贴&#xff0c;删除&#xff0c;准备实现动态刷新数据支持千万数据动态刷新&a…

Postman应用——Pre-request Script和Test Script脚本介绍

文章目录 Pre-request Script所在位置CollectionFolderRequest Test Script所在位置CollectionFolderRequest Pre-request Script&#xff08;前置脚本&#xff09;&#xff1a;可以使用在Collection、Folder和Request中&#xff0c;并在Request请求之前执行&#xff0c;可用于…

整站抓取的神器

整站抓取的神器 TeleportUltraWebZipMihov Picture DownloaderWinHTTrack HTTrackMaxprogWebDumper 五款整站抓取的工具 TeleportUltra Teleport Ultra所能做的&#xff0c;不仅仅是离线浏览某个网页(让你离线快速浏览某个网页的内容当然是它的一项重要功能)&#xff0c;它可…

链表oj题2(Leetcode)(牛客)——合并两个有序链表;判断回文链表;链表分割

链表oj题2&#xff08;Leetcode&#xff09;&#xff08;牛客&#xff09; 一&#xff0c;合并两个有序链表1.1分析2.2代码 二&#xff0c;链表的回文结构2.1分析2.2代码 三&#xff0c;链表分割3.1分析3.2代码 四&#xff0c;小结 一&#xff0c;合并两个有序链表 合并两个有…

vue的工程化开发全流程,以及开发中的细节语法和用法

vue的工程化开发全流程 文章目录 vue的工程化开发全流程1、工程化开发&脚手架Vue CLI1.1、前言1.2、脚手架Vue CLI1.3、脚手架目录文件介绍&项目运行流程1.4、组件化开发&根组件1.5、普通组件的注册使用 2、工程化开发细则2.1、组件的三大组成部分2.2、组件的样式冲…

yolov8在设置amp=False 之后map 训练依旧为0 解决办法

可能原因 是cuda 版本导致的半精度浮点数计算出现nan的bug 解决办法 设置ampFalse 就是不使用混合精度训练。或者直接改用低版本的cuda和pytorch。cuda11.6 以下 直接有效也有可能是学习率过高 降低学习率 设置ampFalse之后还是存在问题 是因为yolov8库的问题 按以下修改 找到…

RKDevTool打包成update.img

(1) 准备好RKDevTool_Release和rockdev目录相关的文件工具 (2) 在rockdev建立image目录 (3) 往image填入和package-file有关的img文件 (4) 运行需要的xxx_mkupdate文件,直到生成想要的update.img (5) 导入烧录工具,文件大,需要等待一段时间,进入MASKROM模式,点击烧录upd…

我只是个小市民——经受不住宏大叙事

我只是个小市民 ——经受不住宏大叙事 作日看到一个曾经的朋友在朋友圈晒出了在某地旅游的照片&#xff0c;照片清新动人&#xff0c;狠狠地打入了我的内心&#xff0c;我知道光靠手机是拍不出来这样唯美的画面的&#xff0c;于是我问她是如何弄出这么好看的照片&#xff0c;…

淘宝商品sku数据接口监控

淘宝商品sku数据接口监控是指通过API接口对淘宝店铺的商品库存、价格、销售量等数据进行实时监控&#xff0c;以便商家能够及时调整销售策略、优化库存、了解竞争对手的动态等。 监控的具体功能包括&#xff1a; 实时监控商品库存和价格变化&#xff0c;及时调整自己的销售策…

数据结构前瞻

集合框架 JAVA的集合框架是定义在java.util包下的一组接口和实现类&#xff0c;用于将多个元素置于一个单元中&#xff0c;对这些元素进行快速&#xff0c;便捷的存储&#xff0c;减速和管理&#xff0c;即增删查改 下面的格子&#xff0c;黄色代表接口&#xff0c;蓝色代表抽…

监控办公室电脑用什么软件?

监控办公室员工电脑的工作情况是一项非常重要的管理任务&#xff0c;它可以帮助企业管理者及时发现员工的问题、提高工作效率和保障企业安全。以下是一些具体的方法和步骤&#xff0c;供您参考&#xff1a; 1、安装监控软件 在监控员工电脑之前&#xff0c;您需要先安装一款专…

Redis核心数据结构实战与高性能解析

目录 一、安装Redis 二、Redis线程与高性能 2.1 Redis是单线程么&#xff1f; 2.2 Redis读写是单线程为何这么快&#xff1f; 2.3 Redis如何处理并发操作命令&#xff1f; 三、核心数据结构实战 3.1 字符串常用操作实战 SET 存入键值对 SETNX SETEX MSET 批量存入键…

vue3中两个el-select下拉框选项相互影响

vue3中两个el-select下拉框选项相互影响 1、开发需求2、代码2.1 定义hooks文件2.2 在组件中使用 1、开发需求 如图所示&#xff0c;在项目开发过程中&#xff0c;遇到这样一个需求&#xff0c;常规时段中选中的月份在高峰时段中是禁止选择的状态&#xff0c;反之亦然。 2、代…

《Cesium 进阶知识点》- 关闭天空盒,自定义背景图

效果 关键代码 1.代码第 4 行&#xff0c;初始化时配置 webgl.alpha 为 true&#xff1b; 2.代码第 8 行&#xff0c;不显示天空盒&#xff1b; 3.代码第 9 行&#xff0c;背景色透明&#xff1b; const viewer new Cesium.Viewer(cesiumContainer, {contextOptions: {…