线激光扫描三维成像
文章平均质量分 51
装置搭建、成像原理、各类标定原理及算法实现、各类激光线提取原理及算法实现。目前尚未更新完毕,后续补充点云处理算法、模型切片研究等内容, 最终会对专栏内所有文章进行统一梳理。届时专栏订阅会有略微涨价
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
一叶孤舟渡
活捉一只加油鸭:涉足三维成像与测量领域的研究。
展开
-
【必备知识】线激光扫描三维成像原理
🥰WELCOME🥰🔥🔥🔥欢迎来到K❤️J的空间🔥🔥🔥 💞💞💞本文主要讲解线激光扫描三维成像的算法实现原理💤,基于这篇文章介绍🗺️,期待你对此类三维重建方法有一个清晰的认识~💯!💞💞💞> 💞💞💞专栏更新中~💞💞💞🤩写在前面🤩通过三维测量方法获取目标物体表面三维数据,本文将介绍线激光扫描三维成像原理~笔记主要是关于自己在线激光扫描三维测量领域的一些认识,介绍了相关的实现原理和算法。笔记由两部分内容构成: 原理介绍和算法介绍🕛 人的才能像挂钟一样,如果停止了摆动,就要落后了~🕛..原创 2022-04-22 14:03:45 · 11818 阅读 · 16 评论 -
代码:激光中心线提取软件(steger法)(vs+opencv+qt实现)
激光中心线提取软件编写原创 2022-04-21 13:04:58 · 2943 阅读 · 6 评论 -
代码:利用Steger算法提取激光中心线的亚像素坐标(Matlab)
最近一直在做线结构光扫描三维成像方面的内容,采用结构光进行扫描检测时,需要提取激光条纹的中心线,我利用Steger算法提取激光中心线的亚像素坐标,在Matlab 2018b 软件上运行。下面先介绍一下steger算法的运行思路:(借鉴的别人的总结,直接截图白嫖过来了)根据算法思路,我们①输入图像②图像处理③利用高斯模板与图像卷积构造hessian矩阵④求解hessian的特征值得到光.........原创 2020-03-03 18:19:42 · 16551 阅读 · 20 评论 -
代码:相机标定与图像校正助手(VS+OpenCV+Qt实现)
环境:VS2019+OpenCV4.4+Qt5.12.3软件打包软件:Inno Setup Compiler链接库搜索软件:Everything实现功能:相机标定;图像校正界面分布:标定区;校正区;控制台;操作反馈;参数显示作者联系方式:936874728界面实现软件功能实现告警提示,鲁棒性增强工程核心代码展示:#联系方式:936874728#include "CamCali.h"#pragma execution_character_set("utf-8") /.原创 2022-04-10 17:24:58 · 3274 阅读 · 2 评论 -
代码:steger算法提取激光条纹中心线(主函数)
主函数,steger原创 2022-06-29 23:33:05 · 2720 阅读 · 4 评论 -
代码:拟合法求解激光中心线(matlab)
拟合法原创 2022-06-08 20:35:53 · 860 阅读 · 3 评论 -
代码:极值法求解激光中心线(matlab)
极值法原创 2022-06-08 20:34:40 · 537 阅读 · 0 评论 -
代码:模板法求激光中心线(matlab)
模板法原创 2022-06-08 20:33:47 · 463 阅读 · 0 评论 -
代码:灰度重心法求激光中心线(matlab)
灰度重心法原创 2022-06-08 20:32:47 · 1739 阅读 · 0 评论 -
代码:骨架提取中心线(matlab)
骨架提取原创 2022-06-08 20:31:39 · 1574 阅读 · 0 评论 -
代码:中心法&边缘法求激光中心线(matlab)
中心法&边缘法原创 2022-06-08 20:30:15 · 561 阅读 · 0 评论 -
代码:matlab对stl模型切片(显示切片处的三角形的三顶点)
stl模型切片相关原创 2022-06-08 20:23:59 · 1425 阅读 · 2 评论 -
代码:matlab读取点云文件
matlab读取点云原创 2022-06-08 20:19:31 · 655 阅读 · 0 评论 -
matlab点云去噪(KNN去噪,聚类去噪)
点云去噪:KNN去噪,聚类去噪。附带点云素材下载链接原创 2022-06-08 20:13:36 · 1237 阅读 · 0 评论 -
相机标定教程(使用Matlab工具箱)
matlab相机标定工具箱使用教程原创 2022-05-16 20:32:02 · 1653 阅读 · 0 评论 -
CCD和CMOS的优劣分析
作为目前主流的两种图像传感器CCD(Charge Coupled Device,电荷耦合器件)和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体),两者基本原理相同,但各有优缺点。CCD和CMOS图像传感器各自主要的核心元件均为光电二极管,而CMOS图像传感器中一个像素点中还包含放大和数模转换电路。由于结构上的不同,CMOS以点为单...原创 2020-03-04 20:49:56 · 7031 阅读 · 1 评论 -
代码:获取棋盘格标定板的角点坐标(matlab)
使用matlab,读取标定板图像detectCheckerboardPoints()函数获得棋盘格规格和像素坐标输入棋盘格尺寸generateCheckerboardPoints()函数计算的到棋盘格的世界坐标,即物理坐标clcclearclose all% 输入图片imageFileName ='1.jpg';% 角点检测,求像素坐标[imagePoints, boardSize, ~] = detectCheckerboardPoints(imageFileName);...原创 2022-05-05 18:50:58 · 3305 阅读 · 0 评论 -
代码:法向质心法提取线激光条纹中心线(CPP+OpenCV)
🥰WELCOME🥰🔥🔥🔥欢迎来到K❤️J的空间🔥🔥🔥 💞💞💞本文主要讲解法向质心法提取中心线💯!💞💞💞🤩写在前面🤩首先使用灰度重心法提取中心线,然后计算光条的初始法向,在法线方向求解最终的中心线坐标🕛 人的才能像挂钟一样,如果停止了摆动,就要落后了~🕛🤩博客内容🤩#include <iostream>#include <opencv2/opencv.hpp>//亚像素灰度值计算float ijpixel(float x, float y, cv:..原创 2022-04-27 19:01:24 · 3506 阅读 · 0 评论 -
【必备知识】摄像机标定基础理论
🥰WELCOME🥰🔥🔥🔥欢迎来到K❤️J的空间🔥🔥🔥 💞💞💞本文主要讲解摄像机标定基础理论💯!💞💞💞🤩写在前面🤩这里主要是分享在单线结构光扫描中的标定基础理论、摄像机标定方法,并展示了在halcon平台实现的单相机线激光扫描案例。笔记由三部分内容构成: 标定的基础理论、摄像机标定方法和单相机线激光扫描案例🕛 人的才能像挂钟一样,如果停止了摆动,就要落后了~🕛🤩博客内容🤩✨标定基础理论✨✨视觉成像与视觉测量✨视觉成像:三维空间的物体在二维平面上的呈现。视觉成像过程本质上是三..原创 2022-04-23 10:48:52 · 4549 阅读 · 3 评论 -
代码:细化法+灰度重心法提取线激光条纹中心线(CPP+OpenCV)
先使用细化法去进行激光中心线的粗提取,在此基础上应用灰度重心法进行中心线的精提取。#include<opencv2/core/core.hpp>#include<opencv2/calib3d/calib3d.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<iostream>#include<fstre.原创 2022-04-21 21:53:47 · 2124 阅读 · 0 评论 -
代码:方向模板法提取线激光条纹中心线(Matlab)
方向模板法是考虑了光条的方向,常见的有四方向模板,即水平、垂直、左倾45°、右倾45°四个偏移方向。clear;clcI = imread('1.png');img = imread('1.png');if ndims(I) == 3 I = rgb2gray(I);endthresh =20;[r,c] = size(I);for i = 1:r for j = 1:c if I(i,j) < thresh I(i,j) .原创 2022-04-21 20:01:18 · 1515 阅读 · 0 评论 -
代码:骨架提取法提取线激光条纹中心线(CPP+OpenCV)
细化法(又称形态学骨架法)是通过对光条纹不断地进行腐蚀操作,剥离光条纹边界,得到单像素宽度的光条纹连通线(又称骨架)的形态学处理方法。该方法是通过细化技术,将光条纹区域的细化曲线作为光条纹中心线。 由于细化法是基于形态学的方法,只是对光条纹骨架进行提取,没有考虑到光条纹的横截面灰度分布特点。因此,细化法提取的光条纹中心线精度有限。另一方面,由于该方法需要大量时间来进行反复的细化操作,提取算法的运算速度被大大降低。#include <opencv2/opencv.hpp>#include .原创 2022-04-21 19:55:37 · 1245 阅读 · 0 评论 -
代码:Steger算法提取线激光条纹中心线(CPP+OpenCV)
最近一直在做线结构光扫描三维成像方面的内容,采用结构光进行扫描检测时,需要提取激光条纹的中心线,我利用Steger算法提取激光中心线的亚像素坐标。下面先介绍一下steger算法的运行思路:(借鉴的别人的总结,直接截图白嫖过来了)根据算法思路,我们①输入图像②图像处理③利用高斯模板与图像卷积构造hessian矩阵④求解hessian的特征值得到光条的法线方向⑤法线方向泰勒展开获得亚像素位置⑥选择合适的像素点,此时获得的是像素坐标(x0,y0),和对应的(tnx,tny)相加获得亚像素坐标。.原创 2022-04-21 19:52:26 · 3636 阅读 · 0 评论 -
代码:极值法提取线激光条纹中心线(CPP+OpenCV)
按行(列)扫描,将光条截面灰度最大值的像素点作为光条中心点。易受噪声影响。#include <opencv2\opencv.hpp>#include <iostream>#include <opencv2\imgproc\types_c.h>using namespace cv;using namespace std;// 极值法int Max_Value(Mat Src, int i){ Mat dst = Src.clone(); .原创 2022-04-21 19:48:33 · 1070 阅读 · 0 评论 -
代码:灰度重心法提取线激光条纹中心线(CPP+OpenCV)
灰度重心法是根据每行光条纹横截面内的灰度分布特征逐行进行处理,通过在行坐标的方向上,逐行计算提取光条纹区域的灰度重心点,并将该点用来代表该截面的光条纹中心点位置,最后将所有中心点拟合形成光条纹中心线。灰度重心法计算光条纹中心点的公式(光条纹第v列的灰度重心坐标):图像包含U行、V列的图像中坐标(u, v)处的像素灰度值为I(u,v),其中u=1,2,3,…,U; v=1,2,3…,V。灰度重心法提取光条纹中心线时运算速度快,实时性好。但是易受图像中的噪点干扰,导致中心线坐标偏移。#include.原创 2022-04-21 19:43:09 · 2241 阅读 · 0 评论 -
代码:均值滤波处理线激光条纹图像
输入图像—>转灰度图像—>均值滤波close allclear clcsrc_image = imread('1.bmp');image = rgb2gray(src_image);[m, n] = size(image);%模板大小k = 3;myFilter = zeros(k, k, 'uint8');for i = 1 : k for j = 1 : k myFilter(i, j) = 1; endendimage2 .原创 2022-04-21 19:36:18 · 521 阅读 · 0 评论 -
代码:中值滤波处理线激光条纹图像
输入原图—>转灰度图像—>中值滤波close allclear clcsrc_image = imread('1.bmp');image = rgb2gray(src_image);[m, n] = size(image);%模板大小k = 3;myFilter = zeros(k, k, 'uint8');for i = 1 : k for j = 1 : k myFilter(i, j) = 1; endendimage3.原创 2022-04-21 19:33:24 · 951 阅读 · 0 评论 -
【必备知识】:线激光条纹中心线提取算法导读
线激光条纹特性线激光器是由点激光器和前置透镜组成的。点激光器可以为He-Ne激光器或半导体激光器。相比较He-Ne激光器,半导体激光器因其输出光源具有发散性,更适合用于制作线激光器。需要说明的是,半导体激光器产生的点光源是高斯形状的。图中,激光束剖面成Gaussian分布,光条中心点的提取正是根据这个特性来进行的。线激光条纹根据其生成机理,其横截面可以用高斯模型来描述:线激光条纹中心线传统提取算法线激光投射在目标物体表面,相机采集目标物体表面受高度调制的形变线激光条纹,由于线激光原创 2022-04-21 19:19:47 · 2070 阅读 · 0 评论 -
标定代码:CPP+OpenCV实现张正友标定法
#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/calib3d/calib3d.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <fstream>#include <vector>using原创 2022-04-17 12:31:35 · 1420 阅读 · 3 评论 -
标定代码:Python+OpenCV实现张正友标定法
输入靶标图像坐标和世界坐标,需要图像尺寸已知运行下面代码import cv2import numpy as npimport math#定义函数def get_data( data_name): file = open(data_name) dataMat = [] temp = [] for index, line in enumerate(file.readlines()): curLine = line.strip().split('\t.原创 2022-04-17 12:27:38 · 688 阅读 · 0 评论 -
标定代码:张正友标定法(matlab工具箱&自编程序)(matlab)
张正友标定法详细讲解,包括代码实现原创 2022-04-17 12:17:02 · 2144 阅读 · 0 评论 -
激光平面标定代码:不共线三点确定一个平面(matlab)
标定原理激光平面标定过程根据交比不变性,可以根据两已知点坐标求解中间点坐标。以A点为例,假设A1点图像坐标值为(x1,y1),世界坐标值为(XAw1,YAw1);A2点图像坐标值为(x2,y2),世界坐标值为(XAw2,YAw2);A点图像坐标值为(x,y)。由于立体靶标的特征量在设计时已经明确,知道|A_1 A_2 |=7mm,A的唯一世界坐标值为(Xw,Yw,Zw):代码实现main.m% % %% 光平面标定,计算光平面方程。x1=2.4005;y1=42;z1=0;%点一原创 2022-04-17 11:54:14 · 2470 阅读 · 0 评论 -
标定代码:Tsai两步标定法(matlab)
Tsai两步标定法原理讲解,代码实现。原创 2022-04-17 11:40:57 · 2047 阅读 · 1 评论 -
代码:三维灰度图像生成方法,Matlab
%绘制ROI区域的三维图像----------------------------------[y,x] = size(imagedata); %取出图像的大小[X,Y] = meshgrid(1:x,1:y); %生成网格坐标double_img = double(imagedata); %uint8转换为double,double类型用于运算figu...原创 2020-03-19 17:24:12 · 2165 阅读 · 0 评论 -
代码:Delaunay三角剖分,MATLAB代码
clear all;clc;close all;data = load('255440.txt');x = data(:,1);y = data(:,2);z = data(:,3);%load seamount% [x,y,z]=peaks;plot3(x,y,z);%plot(x,y,'.','markersize',10)xlabel('x'), ylabel('y')grid ontri = delaunay(x,y);hold on, triplot(tri,x,y), h原创 2020-10-29 19:53:37 · 1514 阅读 · 0 评论 -
代码:相机标定C++程序
//**************************************// 文件名字: // 文件功能: //=====================================// 生成日期: 2021年1月15日// 生成时间: 14:51// 作者: K♥J// 版本号: v1.0.0.0// ====================================// Copyright © K♥J(康杰)// ===================原创 2021-01-15 15:24:25 · 1088 阅读 · 0 评论 -
代码:二值化图像新思路,Matlab
%对ROI图像进行二值化处理----------------------------------------------Max = max(max(imagedata)); % 图像最大灰度值Min = min(min(imagedata)); %图像最小灰度值Avg = mean(mean(imagedata));%遍历所有像素点,求平均灰度值yuzhi = (Max+Avg)/2;...原创 2020-03-19 17:23:08 · 385 阅读 · 0 评论 -
代码:用鼠标选取图像的感兴趣区域,matlab
%% 使用鼠标选定图片区域clcclearI=imread('test.jpg'); imshow(I);k = waitforbuttonpress; % 等待鼠标按下point1 = get(gca,'CurrentPoint'); % 鼠标按下了finalRect = rbbox; %point2 = ge...原创 2020-03-14 18:31:47 · 3166 阅读 · 0 评论 -
代码:图像二值化的方法,matlab
遍历图像中所有像素点的灰度值,求取图像的平均灰度值。运用公式:img = imread('1.bmp');img = rgb2gray(img);Max = max(max(img));Min = min(min(img));Avg = mean(mean(img));yuzhi = (Max+Avg)/2;[M N]=size(img);for i=1:M fo...原创 2020-03-17 15:21:10 · 1760 阅读 · 0 评论 -
代码:骨骼提取,原图匹配,Matlab
%激光光条的骨骼提取------------------------------------- se = strel('disk', 5, 4);%strel定义核的形状和大小,关键字‘disk’指圆形核,后面两个数字指核的大小和圆的半径fo = imclose(imagedata, se); %openclose形态学close操作,目的为了平滑轮廓,所以...原创 2020-03-19 17:26:23 · 1939 阅读 · 9 评论