![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器视觉
三维视觉工作室
深度学习
展开
-
Halcon双目结构光定位(5):创建点云模板
其实讲了这么久点云处理,点云操作无非就是对一系列数组进行操作。这篇博文给大家讲解如何从获取的点云中提取ROI点云区域,并获取我们想要的点云模板。1.从调平的点云数据中提取我们想要的ROI点云通过显示算子,调正点云区域参数Pose是我们从哪个角度观察我们的点云数据,将Rx,Ry,Rz均设置成0,0,0.调正点云 Pose := [-0.1e-3,-0.47e-3,600,0,0,0,0]visualize_object_model_3d (WindowHandle, trans_Obj.原创 2020-08-04 14:01:07 · 2924 阅读 · 5 评论 -
Halcon双目结构光定位(4):选取最大点云区域的去噪手法+拟合光平面方式调平点云
1.首先对点云以高度方向初步去噪2.点云数据信息提取对于物料点云的长宽高的判别,最常用的手法是最最小外接矩形,通过获取最小外接矩形的L1,L2,L3,来确定点云的位置。也可以通过一下算子求得点云信息get_object_model_3d_params (ObjectModel3D, 'point_coord_z', GenParamValue)更正点云分割算子的参数含义//将4mm内的点云作为一个区域connection_object_model_3d (ObjectModel3原创 2020-08-03 23:08:14 · 2439 阅读 · 1 评论 -
Halcon 数组降序排列两种方式
1.使用API‘subset’ tuple_sort_index (Row, Indices) NewRow:=[] NewColumn:=[] if(Length>=1) *方法1 NewRow:=subset(Row,Indices) NewColumn:=subset(Column,Indices) endif2.使用一个for循环,使数组逆序排列 for原创 2020-07-27 08:01:38 · 3424 阅读 · 2 评论 -
Halcon三维测量(4):点云图转深度图+点云滤波(补洞)+断线拟合
对于三维测量的套路,都是将图像转成二维进行测量和处理我仍然以这个开关检测项目为例,开关点云有x,y,z,三个空间坐标如果对这个三维点云直接处理,有一个思路我提供给大家,将点云模型完全调平,然后针对x,y,z其中一个坐标进行测量,其实这种思路也是将三维图转为平面。一.点云图转深度图+点云滤波本篇着重讲解如何将点云模型转为深度图的思路。1.将点云模型拆分成x,y,z三个数组,这里的数据可以自动清空,具体请补充一下数据存储,堆和栈的内容。2.这里提出一个手法,将点云数据拆分成三个数组之后,有很.原创 2020-07-24 11:21:18 · 11144 阅读 · 18 评论 -
Halcon-GPU加速算子
Halcon是一款封装很完美的库,但个别算子优化的还是不尽人意,比如立体匹配,比如训练模型,今天介绍一种方法,可以充分利用PC的硬件资源加速我们的例程.首先枚举设备,差点我们主机可以用加速的硬件。1.下图可以看出,我可以使用我的GPU 930M,和CPU 5500运行程序。2.跟以往halcon的套路一样,建立加速句柄,并设置参数我设置的参数是’asynchronous_execution’3.加载待加速的算子这里我测试的是‘affine_trans_image’4.开启..原创 2020-07-19 09:39:59 · 4017 阅读 · 0 评论 -
Halcon2D测量-边缘直线测量+圆环测量
二维测量有一种形态学的方法,参照我之前的博客。形态学方法测量本文主要介绍一种建立测量模型的方法,对直线和圆进行测量.一.圆心度测量1.设定测量模型首先将我们将待测量圆的半径圆心,以及容错度声明出来。创建测量句柄 *1.创建测量句柄 create_metrology_model (MetrologyHandle) set_metrology_model_image_size (MetrologyHandle, Width, Height)初始化测量模.原创 2020-07-15 09:42:36 · 4764 阅读 · 0 评论 -
Halcon双目结构光定位(3):判别六面体+获取机器臂抓取点(六面翻转)
无序抓取(2)上一讲无序抓取,我们说到将去噪后的点云,按’z’方向从高到低排序。这一篇博文将叙述,判别匹配到的面是六面体的哪个面(正面、侧面、反面…)一.判别六面体首先将最高点的平面位姿,转换成矩阵,获得zx,zy,zz,通过判别zz的角度,确定当前平面落在那个象限内。通过zx,zy判定当前Pose的具体位姿,(正面,反面,侧面)大家可以学习一下这个switch的写法。框内的物体杂乱无章,可能会出现机器臂根本无法抓取的物料,所以此时要判别一下,当前识别的最高处,点云是否原创 2020-07-12 12:26:56 · 2307 阅读 · 2 评论 -
Halcon三维测量(3):鞋底涂胶+边缘提取
本篇文章讲解三维测量鞋底涂胶项目的思路。一.读取模型二.调平模型+预处理去噪调平三大手法由上图可知,鞋底模型是一个空间物体,且主轴明确,所以有三种方法做调平处理。调平方法1:最小外接矩形调平方法2:寻找立体物体的主轴1.首先切除鞋底模型,获得平台点云。2.寻找鞋底的主轴3.调整鞋底点云姿态调平方法3:获取平台点云,拟合平面,调整整体点云姿态。三.切片处理+获取边缘点(涂胶)将鞋底点云模型三角化处理我用间隔6mm的切片,提取92个边缘点构建切平面,提取点云边缘.原创 2020-07-10 15:36:12 · 5491 阅读 · 4 评论 -
Halcon三维测量(2):三维点云模型三角化+切片处理+边缘宽度测量
这一篇文章叙述一个开关测量的项目先讲解项目需求:1.如图是一个开关的三维点云模型,需要检测开关边缘间的距离(红圈部分),以及检测拨动部位的高度。一.调平操作1.看我下面的博文,对点云模型调平处理有深刻的讲解2.这个项目采用的是立体物理调平算法(moment)[调平三大手法]二.去噪处理获取空间ROI1.同样是采用高度筛选,以及特征点连通域分割的手法,提取ROI。点云去噪三.点云模型三角化处理三角化处理前的点云是离散的,如下图所示。三角化之后的效果图1.对三角化做一个简.原创 2020-07-07 13:44:58 · 9741 阅读 · 9 评论 -
Halcon小技巧:二维平面根据两个点确定方向向量+三维空间点确定姿态
生成两个点,这个算子在Halcon三维中常用。讲点连接成线 dev_set_line_width(2) *画点 dev_set_color('red') gen_cross_contour_xld(Cross1, 90, 103, 16, 0.785398) gen_cross_contour_xld(Cross2, 377, 341, 16, 0.785398) gen_contour_polygon_xld (line1, [90,377], [103.原创 2020-07-07 07:39:04 · 3868 阅读 · 2 评论 -
Halcon双目结构光定位(2)-三维模板匹配及按照点云高度排序
上一讲提到了点云模型的调平和去噪,下一步就是进行三维点云模板匹配。一.三维物体模板匹配1.模板图像2.模板匹配我们上一讲中输出的筛选过的点云模型,有连接在一起的部分,连通域拆分是无法拆解的。三维物体的模板匹配,就是看目标点云与模板之间重合的采样点的比例,占比越高,得分越高。将输入的点云图与模板各个面做匹配,自动拆分各个模块的点云,输出每个物料的匹配得分以及位姿(Pose)得分设置的小技巧:例如我的项目是六面空间物体的抓取,则得分不会超过1/6.不要设置过高,否则将会漏掉一部分物体。.原创 2020-07-06 17:54:44 · 6626 阅读 · 1 评论 -
Halcon双目结构光定位(1)-点云模型调平以及去噪处理在无序抓取中的应用
一.读取点云模型并调平使用前几讲的拟合平面的算法调平平台和物料。二.切除背景面在这里我分了两个步骤去噪。1.根据z轴方向的点云筛选以及连通域分割滤除平台背景。2.对去噪后的物料点云模型绘制外接箱体,获取箱体的姿态,做一个循环,从箱体上表面依次向下截取我们自定义的点云数量。直到提取到的点云数量达到要求,可以筛选出我们想要的ROI。3.去噪过程,为之后的模板匹配节约了大量的时间,并提高匹配率。...原创 2020-07-06 16:12:58 · 2914 阅读 · 1 评论 -
Halcon-三维物体仿射变换
上一讲叙述了点云模型的调平工作大家可以发现在调平模型的时候,基本都使用了姿态反转这个操作(pose_invert)本文详细描述点云模型姿态调正的细节,并与矩阵形式调整点云模型姿态做对比一.对姿态进行翻转pose_invert (MomentsPose, PoseInvert1)用姿态调整点云 rigid_trans_object_model_3d (ObjectModel3DScene, PoseInvert1, ObjectModel3DPCA)二.用矩阵形式对点云模型姿态调整.原创 2020-07-05 16:26:41 · 2977 阅读 · 1 评论 -
Halcon三维模型预处理(2):点云数据去噪+连通域分割
点云数据是庞大的点集合,点云模型去噪就是删除多余的点集。点云去噪的方式有两种:1.通过在x,y,z的方向去除固定范围的点云数据,提取想要的点云ROI2.通过选取连通域根据点云特征,筛选点云。一.方法1:沿x,y,z筛选点云数据将点云模型中的数据拆分成x,y,z坐标的三个集合选取’point_coord_x’, ‘point_coord_y’, 'point_coord_z’三个属性 get_object_model_3d_params (ObjectModel3DX, 'point_c.原创 2020-07-05 15:18:13 · 7653 阅读 · 5 评论 -
基于Halcon的线结构光三维重建
一. 加载标定板模型,标定相机二.拟合光平面1.参考坐标系并获得标定板位姿2.局部坐标系并获得位姿3.获取参考坐标系的光线点4.获得局部坐标系的光线点5.判断平面度利用高,低两条光线点拟合光平面三.标定位移矢量(要求平台移动多余一步)下图分别是我的起始标定板和移动20个步长的标定板。移动步长由运动控制卡的冒脉冲决定。四.三维重建选择需要重建的区域获得三维点云图我的三维重建图像有一部分噪点,可以通过调大阈值的方法去噪五.需要准备的数据标定图像(推荐.原创 2020-06-29 13:50:00 · 6369 阅读 · 9 评论 -
Halcon三维测量(1):基于深度图的测量
1.Halcon测量有两种方式,一种是对点云模型处理。对点云(x,y,z)做连通域分割,或使用数组排序处理的方式。对深度图X,Y,Z的处理。本文重点讲解将深度图拆分成X,Y,Z视差图。将图像从三维转换成二维,以二维图像的处理手段处理三维数据。一.拆分深度图从左到右依次为原深度图,X,Y,Z视差图二.测距方法1 二值化方法寻找边缘轮廓线选中第一部分测量区域二值化,提取边缘轮廓选中第二部分测量区域二值化,提取边缘轮廓方法2:Canny算法寻找边缘轮廓线edges_原创 2020-06-30 22:47:15 · 12111 阅读 · 13 评论 -
Halcon联合Qt显示三维点云图
之前的博客介绍了三维扫描过程扫描重建的点云模型要进行保存本篇博文需要有Qt基础,请先观看我的前几篇博文。一.前言:Halcon算子介绍write_object_model_3d (ObjectModel3DID, 'om3', './model', [], [])#前三个参数分别是点云模型,模型格式和保存路径。#点云模型很占内存,记得清理clear_object_model_3d (ObjectModel3DID)#无需清理图,图像不占用内存从保存的模型中读取点云数据rea.原创 2020-07-02 19:26:20 · 4213 阅读 · 3 评论 -
Halcon中点云模型、视差图与深度图之间的转换
深度图转视差图decompose3 (Image, Xm, Ym, Zm)视差图合成深度图compose3 (Xm, Ym, Zm , MultiChannelImage)视差图合成点图模型xyz_to_object_model_3d (Xm, Ym, Zm, ObjectModel3DModel)把点云模型差分成x,y,z的点坐标get_object_model_3d_params (ObjectModel3DModel, 'point_coord_x', x)..原创 2020-07-02 20:42:19 · 6050 阅读 · 4 评论 -
Halcon三维模型预处理(1):调平的三大手法
首先讲一下调平的目的:1.为接下来的预处理切除背景面做准备2.对于无序抓取项目,平台相对相机可能是有角度的,将抓取平台调整到与相机平行,可以以Z轴方向,从高到低获取抓取物点云。处理速度更快,且干扰更少。常见的调平手法有三种。一.拟合平面未完待续。。。。。。。。。。。。...原创 2020-07-04 22:36:19 · 6035 阅读 · 5 评论 -
Halcon截取三维模型-空间ROI
首先加载模型,并将模型移动到窗口中间模型位姿调整方法在上一篇博客显示模型并输出模型的位姿(Pose)画出待截取部位截取模型 reduce_object_model_3d_by_view (RegionDifference1, ObjectModel3D2, CamParam, Pose, ObjectModel3DReduced)注意:这里的Pose是显示模型输出的位姿,CamParam是自己设置的相机内参,缺一不可。...原创 2020-07-04 22:30:33 · 1967 阅读 · 0 评论 -
Halcon创建三维模型并调整模型初始角度
模板可以由CAD,PROE,solidwork等软件绘制常见的模板有机械组给我们的 STL 零件图以及‘.om3’模型格式读取模板(注意模板单位,贯穿整个程序)read_object_model_3d('./model/model10.om3','m', [], [],ObjectModel3D, Status)显示模板,这个算子的参数我前两篇博客有详细讲到 visualize_object_model_3d (WindowHandle,ObjectModel3D2, Cam.原创 2020-07-04 20:58:22 · 2851 阅读 · 0 评论 -
Halcon绘制不同形状的三维物体
在做三维测量项目的时候,经常会用到一些三维空间物体,辅助我们做姿态定位或点定位。下面介绍几种常见的算子其实Halcon这款软件非常适合看案例自学绘制平面gen_plane_object_model_3d ([0,0,0,0,0,0,0], [], [], ObjectModel3DPlane1)绘制带方向的球体gen_sphere_object_model_3d ([0,0,3,0,0,0,0], 0.5, ObjectModel3DSphere1)绘制不带方向的球体gen_sphere.原创 2020-07-04 20:12:08 · 2087 阅读 · 0 评论