• 3D 线激光相机的激光条纹中心提取方法


    论文地址:Excellent-Paper-For-Daily-Reading/application/centerline at main

    类别:应用——中心线

    时间:2023/11/06

    摘要

    线激光条纹中心提取是实现线激光相机三维扫描的关键,根据激光三角测量法研制了线激光相机,基于传统 Steger 法对其进行优化并提出一种适用于提取线激光相机光条中心的方法。对图像进行预处理,结合 Canny 算子找出光条边缘,求取光条边缘极值并计算确定ROI区域,利用高斯滤波处理提取后的图像,利用 Hessian 矩阵求取光条中心法线方向,在法线方向进行二阶泰勒展开确定光条中心点,最后对中心点连接并平滑处理,实现中心线精确提取。实验表明,采用本方法能够准确找到不同背景与光源环境下的光条中心,不同条件下的光条中心均方根误差平均值小于0.4,并能够准确扫描出零件三维点云。

    实验

    Canny、Sobel 和 Laplace边缘检测算子的对比结果:

    由图可知,Canny 算子检测的线激光边缘更清 晰和准确。利用 Canny 算子作为边缘检测方法,设 计了自适应 ROI 范围算法。

    极值法、灰度重心法、骨骼细化法、法向质心法与本文所提方法对六组图像进行图像处理对 比,记录运行时长。平均运行时间:

    由以上数据可知,每种算法所需时间均不同,运算量越大的方法其处理速度越慢,其中骨骼细化法 速度最慢,平均速度比极值法慢 1.6 ~ 2.1 倍。本文所提方法运行速度与法向质心法相接近,比骨骼细化法快 40.6% ~ 87.2% ,比灰度重心法快 25.2% ~ 53.2% 。对比不同组别的结果可以发现,不同环境下的运行速度也不一样,在弱光环境下算法速度更快。分析原因是弱光环境下激光光条的成像效果会变差,光条中点的数量变少,同时环境的噪点也变少,图像滤波与光条中点的遍历计算均会变快。

    为了验证本文方法的提取精度,分别使用灰度重心法、法向质心法与本文方法对六组图片进行 20 次分析处理,记录 300 ~ 600 列的中心点行坐标数据。 利用 Bessel 公式求取标准误差:

    s = \sqrt[]{\frac{\sum_{i=1}^{n}v_i^{2}}{n-1}}

    残差v_{i}=x_{i}-\bar{x}代替真差。

    总结

    基于三角激光测量法研制了线激光相机,搭建了相关实验系统,提出了激光条纹中心提取方法。 对图像进行预处理,结合 Canny 算子优化的自适应ROI处理,对提取后的图像进行滤波处理。基于 Hessian 矩阵的 Steger 法提取中心线,并且对中心线进行拟合平滑处理。对3D线激光相机进行标定。匹配相机扫描速度与被测物运动速度,实现对目标零件的三维点云获取。由实验结果可知,本文所提方法在不同环境下运行较为稳定,处理图像的时间波动小于 10ms,精度较高,均方根误差小于 0.4。 利用本文方法,线激光相机能够较好地提取零件点云。但该方法依然存在一定的局限性,即物体在试验台上运动速度与相机采集的匹配速度不快,影响整个系统的运行速度,后续将进行相关优化。

  • 相关阅读:
    【英雄哥六月集训】第 23天: 字典树
    ibevent 定制——libevent 定制内存分配
    NOI1995:石子合并
    Docker搭建Nginx实现SpringBoot+Nginx集群
    孙卫琴的《精通Vue.js》读书笔记-在Vue项目中使用Axios
    找出数组所有元素中最小值或每行每列中最小值忽略nan值numpy.nanmin()
    Python 什么是flask框架?快速入门(flask安装,登录,新手三件套,登录认证装饰器,配置文件,路由系统,CBV)
    Kubernetes Kubelet 状态更新机制
    JavaString类中的常用方法
    懒人福利:只需一行代码,导入所有的 Python 库
  • 原文地址:https://blog.csdn.net/m0_62919535/article/details/134253073