精华内容
下载资源
问答
  • 标定方法一直是线结构光三维测量系统研究的关键要素。重点讨论了线结构光传感器标定方法中的三个问题: ...最后, 总结了线结构光标定方法的发展现状, 指出线结构光自扫描测量系统和水下标定是线结构光传感器的发展趋势。
  • 本文将从单点激光测距原理、线结构光原理与线结构光标定这三部分对线结构光进行介绍。单点激光测距原理单点激光测距原理是线结构光的基本原理,通过该方法得到物体距离相机的距离进而得到物体的三维坐标。单点激光...

    线结构光法是一种可以精确获得物体三维坐标的方法,将线结构光传感器安装在机器人上就赋予了机器人视觉感知的能力。本文将从单点激光测距原理、线结构光原理与线结构光标定这三部分对线结构光进行介绍。

    • 单点激光测距原理

    单点激光测距原理是线结构光的基本原理,通过该方法得到物体距离相机的距离进而得到物体的三维坐标。单点激光测距原理图如下图所示。

    78539bc15325080c4a3d433289e79344.png

    如图

    是激光发射器,
    是目标点,
    是相机成像面。在该单点激光系统有几个不变的量,
    为相机光心与激光发射器的距离称为基线长,
    为激光线与基线的夹角,
    为焦距长。

    目标:获得

    点在相机坐标系下三维坐标值。

    那么关键是获得

    值也就是
    点的
    值,
    坐标值可以通过相机的透视投影求得。

    值如何求解。做两条辅助线
    过相机光心与
    平行交相机成像面
    过目标点与基线
    平行。这样构造成两个相似三角形,根据相似三角形有如下公式:

    基线长

    角认为是已知量,下面标定讲到如何标定得到。

    可以由像素、光心坐标与像元大小得到。

    最后计算得:

    • 线结构光原理

    以上讨论的单点激光,下面讨论线结构光。

    线结构光分为两种形式如下图所示,其区别在于激光与相机的位置摆放不同(位置不同只与标定有关)。

    3631269a7f3284dda087488829710adf.png

    本文只讨论第一种方式。第一种方式的模型如图所示。

    1539b29c63f50cd0b5b8d03829dc5395.png

    激光

    射出一个面激光照射在物体上形成一条激光线。现假设地面与相机感光面平行,
    点与
    点是激光线上的位置不同的两点,其中
    点在相机上的成像在图像的
    轴的中心点上(不准确)。面
    与地面垂直,那么
    是地面到光心
    的高,同时也是点
    的高,也就是
    方向的值。
    • 线结构光测高

    可以通过上面单点激光方法求得
    值,这是线结构光法求高。
    • 线结构光测距

    这里有一个容易混淆的地方,高与距离,点

    的高是
    值,而点
    到相机的距离是

    此时基线与激光面的夹角

    (oap)变为
    (oap')。

    现举例如何求激光线上任意点的高。如图是激光线。

    8be5cbb8c89818a192d97ba3d09ef13e.png

    黑色线是激光线由于照射在不规则的物体上形成的图像。红色线是相机x轴方向的中心点(是光心在成像平面上投影的x值,不一定是图像像素中心)。激光线上任意一点的高(z值)是其所在相同高度平面激光中心点的高。那就将问题转化为单点激光测距问题。

    利用单点激光测距公式

    可通过图像上激光点的y值确定。

    同理可以建立如下关系:

    7136297518c1cedda0bafb57b13ecaf4.png
    • b是基线长,θ是激光线与相机平面夹角,f是相机焦距。dx,dy是像素比例因子。
    • 线结构光标定

    线结构光标定的目的是为了获得几个不变的量,焦距

    、基线长
    、角度

    如图单点激光测距。

    b210bb106285c45fbf9835f87743cb83.png

    公式

    表示这几个量之间的关系,此时焦距
    、基线长
    、角度
    变成了未知数。为求解这几个未知数,假设有Object1、Object2、Object3这些点,这些点的高度差都为L,L为已知量,那么每一个点都可以由上面的公式得到:


    那么有4个未知量,至少有4个方程来求解。如图是标定板。

    ec2336c86860fdfd96c5b8afd0871c43.png

    黑色竖线是画在标定板上,红色横线表示相机在不同高度的位置。

    标定方法如下:

    1.调整相机与标定板平行,相机中轴线与黑色竖线平行;

    2.调整相机高度上升或下降使激光线沿黑色竖线上升或下降,每次调整相机都拍照;

    3.记录每次激光线与黑色竖线的交点坐标。

    • 方法一

    该方程组属于非线性,在得到>4组观察值时,求解方法可以使用梯度下降、最小二乘、极大似然估计。我推荐用梯度下降法:

    对于上式有通式:

    ,其中,
    组观测值,那么损失函数:

    分别对未知数

    求偏导并迭代求出其数值,迭代方法参考梯度下降。

    导数公式有些长,见下面图片:

    64a7f2a1c3c26475a85925115413cbda.png

    方法二

    可以用直接插值法计算

    之间的关系,因为两者关系是非线性的,那么可以增加采样(观测)密度,每段采样之间可以近似线性关系进行直接插值得到。

    填写AI大师码“0623”,购买滴滴云服务器享受9折优惠。

    展开全文
  • 本文将从单点激光测距原理、线结构光原理与线结构光标定这三部分对线结构光进行介绍。单点激光测距原理单点激光测距原理是线结构光的基本原理,通过该方法得到物体距离相机的距离进而得到物体的三维坐标。单点激光...

    线结构光法是一种可以精确获得物体三维坐标的方法,将线结构光传感器安装在机器人上就赋予了机器人视觉感知的能力。本文将从单点激光测距原理、线结构光原理与线结构光标定这三部分对线结构光进行介绍。

    • 单点激光测距原理

    单点激光测距原理是线结构光的基本原理,通过该方法得到物体距离相机的距离进而得到物体的三维坐标。单点激光测距原理图如下图所示。

    91fb16c57a04b54a9669d818005a95c5.png

    如图

    是激光发射器,
    是目标点,
    是相机成像面。在该单点激光系统有几个不变的量,
    为相机光心与激光发射器的距离称为基线长,
    为激光线与基线的夹角,
    为焦距长。

    目标:获得

    点在相机坐标系下三维坐标值。

    那么关键是获得

    值也就是
    点的
    值,
    坐标值可以通过相机的透视投影求得。

    值如何求解。做两条辅助线
    过相机光心与
    平行交相机成像面
    过目标点与基线
    平行。这样构造成两个相似三角形,根据相似三角形有如下公式:

    基线长

    角认为是已知量,下面标定讲到如何标定得到。

    可以由像素、光心坐标与像元大小得到。

    最后计算得:

    • 线结构光原理

    以上讨论的单点激光,下面讨论线结构光。

    线结构光分为两种形式如下图所示,其区别在于激光与相机的位置摆放不同(位置不同只与标定有关)。

    31c6de4ceb741318f6d3544b57d34a2e.png

    本文只讨论第一种方式。第一种方式的模型如图所示。

    ab99f40a25a93ab2acc6739852d2aeae.png

    激光

    射出一个面激光照射在物体上形成一条激光线。现假设地面与相机感光面平行,
    点与
    点是激光线上的位置不同的两点,其中
    点在相机上的成像在图像的
    轴的中心点上(不准确)。面
    与地面垂直,那么
    是地面到光心
    的高,同时也是点
    的高,也就是
    方向的值。
    • 线结构光测高

    可以通过上面单点激光方法求得
    值,这是线结构光法求高。
    • 线结构光测距

    这里有一个容易混淆的地方,高与距离,点

    的高是
    值,而点
    到相机的距离是

    此时基线与激光面的夹角

    (oap)变为
    (oap')。

    现举例如何求激光线上任意点的高。如图是激光线。

    049775e5615db324f96be0287836562e.png

    黑色线是激光线由于照射在不规则的物体上形成的图像。红色线是相机x轴方向的中心点(是光心在成像平面上投影的x值,不一定是图像像素中心)。激光线上任意一点的高(z值)是其所在相同高度平面激光中心点的高。那就将问题转化为单点激光测距问题。

    利用单点激光测距公式

    可通过图像上激光点的y值确定。
    • 线结构光标定

    线结构光标定的目的是为了获得几个不变的量,焦距

    、基线长
    、角度

    如图单点激光测距。

    46ab92b27d01209b849e5a7dd97a83e2.png

    公式

    表示这几个量之间的关系,此时焦距
    、基线长
    、角度
    变成了未知数。为求解这几个未知数,假设有Object1、Object2、Object3这些点,这些点的高度差都为L,L为已知量,那么每一个点都可以由上面的公式得到:


    那么有4个未知量,至少有4个方程来求解。如图是标定板。

    7357a04f7a4a2ba9bf7e1edb1debab96.png

    黑色竖线是画在标定板上,红色横线表示相机在不同高度的位置。

    标定方法如下:

    1.调整相机与标定板平行,相机中轴线与黑色竖线平行;

    2.调整相机高度上升或下降使激光线沿黑色竖线上升或下降,每次调整相机都拍照;

    3.记录每次激光线与黑色竖线的交点坐标。

    一条竖线计算来标定会引入很多误差,也可以设计多条竖线,用极大似然估计来减少误差。

    展开全文
  • 针对现有的测量系统中线结构光标定方法存在的局限性,设计了一种新的标定方法。该方法通过避免光条与靶标参照物上的棋盘相交,提高了特征点的提取精度,并通过增加用于拟合光平面的特征点数量来提高标定的精度。连接光...
  • 线结构光标定(Matlab工具箱)

    千次阅读 2019-12-21 20:34:56
    好像用matlab工具箱一样可以完成结构光标定,有机会要试一试啦! matlab有关3d的功能。 https://ww2.mathworks.cn/products/computer-vision.html#lidar-point-cloud-processing ...

    好像用matlab工具箱一样可以完成结构光的标定,有机会要试一试啦!

    matlab有关3d的功能。

    https://ww2.mathworks.cn/products/computer-vision.html#lidar-point-cloud-processing

    展开全文
  • 线结构光视觉传感器/线激光深度传感器标定工具

    万次阅读 热门讨论 2016-06-11 13:33:16
    续集:线结构光视觉传感器/线激光深度传感器标定工具(续) ... 线结构光视觉系统有着结构简单、使用灵活、受周围...线结构光的标定过程大概可以分为两个部分:相机标定和线结构光标定。目前相机标定技术比较成熟...

    续集:线结构光视觉传感器/线激光深度传感器标定工具(续)

    https://jah10527.github.io/articles/lineLaser.html

     

    线结构光视觉系统有着结构简单、使用灵活、受周围光照环境影响小等一系列特点,在实际中得到广泛的应用。在该技术的使用中,标定是避免不了的一个环节。线结构光的标定过程大概可以分为两个部分:相机标定和线结构光标定。目前相机标定技术比较成熟,尤其是以张正友平面标定法为代表的相机标定方法,得到了广泛的应用和认可。而线结构光的标定方法,目前也有一些标定方法在实际中应用。

     

    本人在学习和工作中对线结构光视觉系统的标定进行了研究和编程实现,目前完成了一个基于matlab 2015a的线结构光标定程序。该程序只需要使用一块棋盘格标定板即可完成线结构光视觉系统的标定。下面是该标定软件的具体使用过程。

     

    首先选择用于标定的图片所在的文件夹,然后点击标定按钮,软件将会自动完成相机标定和线结构光标定,并把标定结果存于txt文件中。

     

     

    相机参数

    [456.835948  0  319.163600

    0  455.503272  224.297494

    0  0  1]
    畸变系数

    [-0.428655 0.240668 0.000222 -0.000840 -0.074862]

    平均重投影误差

    0.148146pixel

    线结构光参数

    [0.996652  0.009722  0.081176  135.203206]

     

     

    附源码地址(.p文件)

    http://download.csdn.net/detail/j10527/9694703

     

     

    部分代码:

    1.相机标定按钮代码

     

    % --- Executes on button press in camera_calibration.
    function camera_calibration_Callback(hObject, eventdata, handles)
    % hObject    handle to camera_calibration (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    disp 'Camera calibration begin...';
    images = imageSet(get(handles.dir_cam, 'String'));
    % images = imageSet('robart');
    imageFileNames = images.ImageLocation;
    for k = 1:length(imageFileNames)
        im = imread(imageFileNames{k});
        if size(im,3)==3
            im=rgb2gray(im);
        end
        im = imadjust(im);
        imwrite(im,imageFileNames{k});
    end
    % Detect calibration pattern.
    [imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);
    
    % Generate world coordinates of the corners of the squares.
    % squareSize = 10; % millimeters
    squareSize = str2num(get(handles.square_size, 'String'));
    worldPoints = generateCheckerboardPoints(boardSize, squareSize);
    
    % Calibrate the camera.
    [params, ~, ~] = estimateCameraParameters(imagePoints, worldPoints, ...
        'EstimateTangentialDistortion', true, 'NumRadialDistortionCoefficients', 3);
    
    if get(handles.show, 'value')
        figure;subplot(2,1,1);
        showReprojectionErrors(params);
    end
    for k = 1:size(imagePoints,3)
    %     im = imread(imageFileNames{k});
    %     im = rgb2gray(im);
    %     J = undistortImage(im, params);
    %     imwrite(J,['undistorted_calib/im' num2str(k) '.jpg']);
        err(k) = norm(mean(abs(params.ReprojectionErrors(:,:,k)),1));
    end
    
    for k = 1:round(size(imagePoints,3)*0.3)
        [~,ind]=max(err);
        err(ind)=[];
        imagePoints(:,:,ind)=[];
    end
    
    % [imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);
    
    % Calibrate the camera.
    [params, ~, ~] = estimateCameraParameters(imagePoints, worldPoints, ...
        'EstimateTangentialDistortion', true, 'NumRadialDistortionCoefficients', 3);
    if get(handles.show, 'value')
        subplot(2,1,2);
        showReprojectionErrors(params);
        figure;
        showExtrinsics(params, 'CameraCentric');
    end
    dir_str = get(handles.dir_str, 'String');
    images = imageSet(dir_str);
    system('mkdir undistorted_stripe');
    delete undistorted_stripe/*
    for k = 1:images.Count
        I = imread(images.ImageLocation{k});
        [J,newOrigin] = undistortImage(I,params,'OutputView', 'same');
    %     if get(handles.show, 'value')
    %     figure;
    %     imshow(J);
    %     end
        imwrite(J,['undistorted_stripe/im_stripe' num2str(k) '.jpg']);
    end
    
    % images = imageSet('pics_raw/');
    % for k = 1:images.Count
    %     I = imread(images.ImageLocation{k});
    %     [J,newOrigin] = undistortImage(I,params,'OutputView', 'same');
    %     figure;
    %     imshow(J);
    %     imwrite(J,['pics/im_' num2str(k) '.jpg']);
    % end
    
    fd = fopen('cam_paras.txt', 'w+');
    
    fprintf(fd, '%f %f %f %f\n', params.IntrinsicMatrix(1), params.IntrinsicMatrix(3), ...
        params.IntrinsicMatrix(5), params.IntrinsicMatrix(6));
    fprintf(fd, '%f %f %f %f %f\n', params.RadialDistortion(1), params.RadialDistortion(2),...
        params.TangentialDistortion(1), params.TangentialDistortion(2), params.RadialDistortion(3));
    fprintf(fd, '%f\n', params.MeanReprojectionError(1));
    fclose(fd);
    disp 'Camera calibration done.';
    disp 'Camera calibration results were saved in cam_paras.txt.';

     

     

     

     

     

    stripe_paras.txt文件按照如下代码保存的:

     

    基于qt5和opencv3的新版本可执行文件,下载地址

    https://github.com/jah10527/laserLineToolkit

     

    上面只显示了Z坐标,X,Y未显示在界面上。

    展开全文
  • 线结构光-标定和测距
  • 线结构光传感器标定

    千次阅读 2016-05-03 08:45:44
    线结构光传感器的标定是型面数字化,外形检测,准确的标定线结构光参数是进行精确测量的前提。 2 基本概念2.1 结构光相关结构光方法: 结构光方法(Structured Light)是一种主动式光学测量技术,基本原理是由结构光...
  • 为提高线结构光传感器(LSLS)的标定精度, 提出了一种基于平面参考靶标的标定方法。给出了相机坐标系下参考靶标点中心坐标及激光平面方程的计算方法; 将参考靶标点中心向激光平面投影, 并以左下角投影点为原点建立世界...
  • 现有的线结构光传感器标定方法中,结构光平面上标定点的计算精度将会直接影响到传感器最终的标定精度。提出了一种基于共面靶标的线结构光传感器标定新方法,该方法无需计算光平面上的标定点,也无需反复计算摄像机的...
  • 1 研究意义 线结构光传感器的标定是型面数字化,外形检测,准确的标定线结构光参数是进行精确测量的前提。 应用:三维模型重建、物体表面轮廓信息提取2 基本概念2.1 结构光相关结构光方法:结构光方法(Structured ...
  • 线结构光标定(halcon)

    千次阅读 2019-12-21 20:27:55
    halcon 中有一个例子可以直接完成 线结构光的所有标定; 包括 1.相机内外参数的标定 2.激光平面参数的标定(最小拟合二乘的4个参数) 3.相机和运动模组之间的标定 想想之前用opencv 做了同样的事情,拍摄等多...
  • 针对大尺寸三维物体的测量需求,提出了一种超大尺度的线结构光传感器标定方法。使用平面靶标标定出摄像机内参数的初值,以相邻两控制点之间的距离为约束用LM 优化算法对初值进行优化;采用准一维靶标进行结构光参数...
  • 基于matlab的线结构光视觉传感器标定软件
  • 线结构光光平面参数标定工具
  • 线结构光视觉传感器的标定精度直接关系到测量结果的精度。传统的有模型标定方法为了提高标定精度,相应的模型也会越复杂,计算量也很大。为了实现高精度、高效率、低成本地标定线结构光视觉传感器,提出一种基于标准...
  • 为了将二维图像坐标转换到三维相机坐标, 提出一种线结构光传感器内外参数同时标定的方法。该方法使用准一维靶标进行标定, 通过获取运动机构平移过程中靶标与激光光条的图像, 计算得到线结构光传感器内外参数。实验...
  • 线结构光视觉测量系统参数标定是三维测量应用的首要步骤,其中光平面特征点的稳定获取最为关键。针对平面标靶的特点和基于交比不变定理获取特征点方法的不足,提出一种高效的基于相机投影矩阵和单应矩阵的标定法。首先...
  • 采用线结构光技术对摄像机进行标定、光平面标定和三维重建c2020-11-21下载地址https://www.codedown123.com/51731.html采用线结构光技术对摄像机进行标定、光平面标定和三维重建。资源下载此资源下载价格为2D币,请...
  • 线结构光视觉传感器/线激光深度传感器标定工具(matlab)发布时间:2018-03-13 17:32,...线结构光的标定过程大概可以分为两个部分:相机标定和线结构光标定。目前相机标定技术比较成熟,尤其是以张正友平面标定法为...
  • 针对现有线结构光双传感器测量系统标定过程中对设备要求高、标定过程复杂等难题, 提出了一种简便的基于平面标定参照物的现场标定方法。该方法不需要设计复杂的校准模型和高精度的辅助调整设备, 只需要将一个绘制有...
  • 线结构光三维测量系统扫描方向的标定
  • 在该模型中,提出了一种使用共面参考目标校准多线结构光的新型校准方法。 为了校准所有结构化的光平面,首先应根据共面参考目标上不同位置的点对其中的两个进行校准。 在模型中,将摄影机坐标视为全局世界坐标,...
  • 针对现有线结构光视觉传感器标定方法存在的局限性,提出一种不需要求解光平面标定点的标定方法。根据光条图像求解平面靶标上光条在摄像机坐标系下的Plücker矩阵。在视觉传感器前合适位置将平面靶标摆放多次,联立所有...
  • 为提高标定精度,提出一种基于直线空间变换的平面标定方法。首先利用互相关模板与5点滑动平均法提取激光条纹中心,然后采用正交回归法拟合图像中的条直线方程。通过平面单应性变换获得靶标面条直线方程,进一步再...
  • 为了实现测量系统多传感器同时标定, 提出一种线结构光多传感器三维轮廓测量系统的标定方法。以直接线性变换法为系统标定模型, 设计含有多特征点的靶标控制场来解算系统模型参数, 应用二元全区间插值误差校正方法对物...
  • 提出了一种可适用于未知环境的线结构光三维视觉传感器现场标定的新方法。与基于交比不变性求解特征点坐标来标定激光平面的方法不同,该方法可直接基于激光交线图像实现快速标定。通过拍摄一个与线结构光相交并以不同...
  • 结构光是一组由投射器(点,线,面)和摄像机组成的系统结构,用投影器投射特定的光信息到物体表面后及背景后,由摄像头采集,根据物体造成的光信号的变化来计算物体的位置和深度等信息,进而复原整个三维空间。...
  • 为了满足大型自由曲面工件高精度实时三维测量的需求, 设计了一种超大尺度线结构光传感器三维测量系统, 并提出一种基于一维靶标的传感器外参数的现场标定方法。实验结果表明, 该方法的标定精度与基于平面靶标的方法...

空空如也

空空如也

1 2 3 4 5 6
收藏数 101
精华内容 40
关键字:

线结构光标定