多视角线扫成像/点云处理/机械臂抓取
1、单、多视角线激光扫描三维成像(涉及的方案涉及、标定算法、图像处理等内容)
2、点云处理(针对线激光扫描三维成像获得的点云数据,采用PCL点云库进行处理,常用的点云处理算法)
3、机械臂抓取(根据目标三维数据,计算目标位姿信息,涉及配准,手眼标定、tcp标定等内容)
4、项目涉及到的其他补充内容
一叶孤舟渡
活捉一只加油鸭:涉足三维成像与测量领域的研究。
展开
-
【多视角线扫成像/点云处理/机械臂抓取】专栏目录
【专栏目录】多视角线激光扫描三维成像PCL点云处理ABB六轴机械臂抓取原创 2022-05-16 20:03:27 · 829 阅读 · 0 评论 -
代码:steger算法提取激光条纹中心线(主函数)
主函数,steger原创 2022-06-29 23:33:05 · 2720 阅读 · 4 评论 -
代码:PCD格式与TXT格式互相转换
pcd和txt格式互相转换原创 2022-06-12 16:50:09 · 1069 阅读 · 3 评论 -
代码:拟合法求解激光中心线(matlab)
拟合法原创 2022-06-08 20:35:53 · 861 阅读 · 3 评论 -
代码:极值法求解激光中心线(matlab)
极值法原创 2022-06-08 20:34:40 · 537 阅读 · 0 评论 -
代码:模板法求激光中心线(matlab)
模板法原创 2022-06-08 20:33:47 · 464 阅读 · 0 评论 -
代码:灰度重心法求激光中心线(matlab)
灰度重心法原创 2022-06-08 20:32:47 · 1740 阅读 · 0 评论 -
代码:骨架提取中心线(matlab)
骨架提取原创 2022-06-08 20:31:39 · 1575 阅读 · 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 · 656 阅读 · 0 评论 -
代码:利用Steger算法提取激光中心线的亚像素坐标(Matlab)
最近一直在做线结构光扫描三维成像方面的内容,采用结构光进行扫描检测时,需要提取激光条纹的中心线,我利用Steger算法提取激光中心线的亚像素坐标,在Matlab 2018b 软件上运行。下面先介绍一下steger算法的运行思路:(借鉴的别人的总结,直接截图白嫖过来了)根据算法思路,我们①输入图像②图像处理③利用高斯模板与图像卷积构造hessian矩阵④求解hessian的特征值得到光.........原创 2020-03-03 18:19:42 · 16552 阅读 · 20 评论 -
代码:三维灰度图像生成方法,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 · 2166 阅读 · 0 评论 -
粗略的计算流水线上某一时刻传送的物体的截面积-matlab
联系方式:936874728背景:一维移动部件(传送带)传送煤炭,计算某一时刻的煤炭的截面积。处理图像:思路:提取两光条的中心线数据,做差求和计算得到截面积。光条提取效果图:断线重补获得点坐标:相同的方法求其他激光光条数据。...原创 2020-05-13 11:47:08 · 238 阅读 · 0 评论 -
代码:获取棋盘格标定板的角点坐标(matlab)
使用matlab,读取标定板图像detectCheckerboardPoints()函数获得棋盘格规格和像素坐标输入棋盘格尺寸generateCheckerboardPoints()函数计算的到棋盘格的世界坐标,即物理坐标clcclearclose all% 输入图片imageFileName ='1.jpg';% 角点检测,求像素坐标[imagePoints, boardSize, ~] = detectCheckerboardPoints(imageFileName);...原创 2022-05-05 18:50:58 · 3305 阅读 · 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 评论 -
三维重建效果图
联系方式:936874728微信公众号:原创 2020-11-08 15:59:56 · 777 阅读 · 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 评论 -
代码:ROI区域选取,Matlab
一幅图像,我们需要处理的区域可能只占整幅图像的一小部分,通过鼠标进行手动选取,展示图像,并且获得ROI图像的起始行列坐标。%输入原图像------------------------------------------img = imread('6.bmp'); %读取原图像%选取图像的ROI区域-----------------------------------figur...原创 2020-03-19 17:15:31 · 10367 阅读 · 10 评论 -
代码:极值法提取线激光条纹中心线(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 评论 -
应用:基于线结构传感器的××纵向弯曲度检测
雪糕棒的制作工艺和制作过程复杂,在加工过程中,由于工艺并不完善,保存和加工过程中出现的受潮和高温情况,都会造成生产出的雪糕棒和标准值有所出入,纵向弯曲就是雪糕棒各种形状缺陷中的一种,会直接影响冷饮厂后续的自动化生产。雪糕棒的纵向弯曲检测通常采用人工目测的方式,该法检测精度低,检测速度慢。接触式测量可能会造成雪糕棒外观的损坏,而且人工检测带有主观色彩,无法用一套准确的检测标准来衡量雪糕棒的好坏。三维激光扫描测量技术是近些年发展起来的新技术,该技术旨在获取被测物体的空间三维轮廓数据并进行高精度的三维逆向建模[1原创 2020-06-04 15:07:29 · 990 阅读 · 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)
🥰WELCOME🥰🔥🔥🔥欢迎来到K❤️J的空间🔥🔥🔥 💞💞💞本文主要讲解法向质心法提取中心线💯!💞💞💞🤩写在前面🤩首先使用灰度重心法提取中心线,然后计算光条的初始法向,在法线方向求解最终的中心线坐标🕛 人的才能像挂钟一样,如果停止了摆动,就要落后了~🕛🤩博客内容🤩#include <iostream>#include <opencv2/opencv.hpp>//亚像素灰度值计算float ijpixel(float x, float y, cv:..原创 2022-04-27 19:01:24 · 3506 阅读 · 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 · 3638 阅读 · 0 评论 -
必备知识:三维测量-思维导图
原创 2020-10-29 20:29:28 · 1650 阅读 · 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
遍历图像中所有像素点的灰度值,求取图像的平均灰度值。运用公式: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 评论 -
代码:灰度重心法提取线激光条纹中心线(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 · 2242 阅读 · 0 评论 -
基于移动平台的线激光扫描物体三维重建
接下这段时间将整理下列内容:标定相关:相机标定、光平面标定、扫描方向标定、多相机全局标定、机械臂手眼标定、工具(TCP)标定。成像相关:图像去噪技术、线激光条纹中心线提取技术(中心法、边缘法、灰度重心法、骨架提取法、曲线拟合法、steger算法等)点云相关:点云去噪技术、多视角点云拼接技术、模型切片技术、点云配准技术(ndt、icp、fpfh等)、点云拼接融合技术、点云尺寸计算等。...原创 2022-03-19 23:29:37 · 4696 阅读 · 0 评论 -
代码:细化法+灰度重心法提取线激光条纹中心线(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 · 2125 阅读 · 0 评论 -
CCD和CMOS的优劣分析
作为目前主流的两种图像传感器CCD(Charge Coupled Device,电荷耦合器件)和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体),两者基本原理相同,但各有优缺点。CCD和CMOS图像传感器各自主要的核心元件均为光电二极管,而CMOS图像传感器中一个像素点中还包含放大和数模转换电路。由于结构上的不同,CMOS以点为单...原创 2020-03-04 20:49:56 · 7033 阅读 · 1 评论 -
必备知识:关于曲线的一、二、三阶导的总结
最近在做光条中心线提取方面的工作,由于激光光条符合高斯模型,高斯模型又是一个近似抛物线的二维曲线。在求解光条中心的过程中要求解曲线的极值之类的问题,与曲线的导数相关,所以总结一下相关的内容。一阶导数可以用来描述原函数的增减性。区间内,一阶导数大于零,单增,一阶导数小于零,单减。二阶导数可以用来判断函数在一段区间上的凹凸性,二阶导大于零,是凹的,小于零是凸的。三阶导数一般不用,可以用来找函数的拐点,拐点的意思是如果曲线f(x)在经过点(x0,f(x0))时,曲线的凹凸性改变了,那么就称这个点为曲线的拐点原创 2020-05-11 19:49:04 · 10756 阅读 · 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 评论 -
代码:用鼠标选取图像的感兴趣区域,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
%激光光条的骨骼提取------------------------------------- se = strel('disk', 5, 4);%strel定义核的形状和大小,关键字‘disk’指圆形核,后面两个数字指核的大小和圆的半径fo = imclose(imagedata, se); %openclose形态学close操作,目的为了平滑轮廓,所以...原创 2020-03-19 17:26:23 · 1939 阅读 · 9 评论 -
代码:对图像进行高斯滤波处理,Matlab
W = fspecial('gaussian',[3,3],0.5); %构造高斯滤波器([3,3],0.5)G = imfilter(img_ROI, W, 'replicate'); %对图像进行高斯滤波去噪处理imwrite(G,'g_laser_ROI.bmp'); %保存高斯滤波去噪后的图像 ③figure(3);subplot(...原创 2020-03-19 17:18:17 · 4342 阅读 · 2 评论 -
代码:基于移动平台的多线激光扫描的石膏头像三维重建
本文装置基于一维运动平台-传送带,可以实现单视角线激光扫描三维重建,也可实现多视角多线激光扫描三维重建。内容包括:标定工作(相机标定、光平面标定、扫描方向标定、多相机全局标定)、激光中心线提取工作、图像和点云处理工作等等。原创 2022-03-20 10:28:42 · 2657 阅读 · 3 评论 -
代码:获取图像信息,图像灰度化,Matlab
%获取ROI图像的信息--------------------------------------Xinxi = imfinfo('duibi_laser_ROI.bmp'); %获取图像的相关信息[imagedata,map] = imread('duibi_laser_ROI.bmp'); %索引图像调用,map为[]%判断ROI图像的类型并转灰度-----------...原创 2020-03-19 17:21:43 · 913 阅读 · 0 评论 -
必备知识:相机标定-旋转矩阵性质
旋转矩阵是一个酉矩阵,所以有下列性质:所以在张正友标定法中,利用上述性质得出下面公式:原创 2020-08-13 10:43:31 · 2227 阅读 · 1 评论