2020-11-13 14:36:23
上一讲无序抓取,我们说到将去噪后的点云,按’z’方向从高到低排序。这一篇博文将叙述,判别匹配到的面是六面体的哪个面(正面、侧面、反面…)一.判别六面体首先将最高点的平面位姿,转换成矩阵,获得zx,zy,zz,通过判别zz的角度,确定当前平面落在那个象限内。通过zx,zy判定当前Pose的具体位姿,(正面,反面,侧面)大家可以学习一下这个switch的写法。框内的物体杂乱无章,可能会出现机器臂根本无...
2020-11-13 14:31:20
本篇文章讲解三维测量鞋底涂胶项目的思路。一.读取模型二.调平模型+预处理去噪调平三大手法由上图可知,鞋底模型是一个空间物体,且主轴明确,所以有三种方法做调平处理。调平方法1:最小外接矩形调平方法2:寻找立体物体的主轴1.首先切除鞋底模型,获得平台点云。2.寻找鞋底的主轴3.调整鞋底点云姿态调平方法3:获取平台点云,拟合平面,调整整体点云姿态。三.切片处理+获取边缘点(涂胶)将鞋底点云模型三角化处理...
2020-11-13 14:29:12
这一篇文章叙述一个开关测量的项目先讲解项目需求:1.如图是一个开关的三维点云模型,需要检测开关边缘间的距离(红圈部分),以及检测拨动部位的高度。一.调平操作1.看我下面的博文,对点云模型调平处理有深刻的讲解2.这个项目采用的是立体物理调平算法(moment)[调平三大手法]二.去噪处理获取空间ROI1.同样是采用高度筛选,以及特征点连通域分割的手法,提取ROI。点云去噪三.点云模型三角化处理三角化...
2020-11-13 14:27:40
一.二维平面确定法向向量生成两个点,这个算子在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,...
2020-11-13 14:24:15
上一讲提到了点云模型的调平和去噪,下一步就是进行三维点云模板匹配。一.三维物体模板匹配1.模板图像2.模板匹配我们上一讲中输出的筛选过的点云模型,有连接在一起的部分,连通域拆分是无法拆解的。三维物体的模板匹配,就是看目标点云与模板之间重合的采样点的比例,占比越高,得分越高。将输入的点云图与模板各个面做匹配,自动拆分各个模块的点云,输出每个物料的匹配得分以及位姿(Pose)这里注意:如果匹配输出的P...
2020-11-13 14:11:43
一.读取点云模型并调平使用前几讲的拟合平面的算法调平平台和物料。二.切除背景平台在这里我分了两个步骤去噪。1.根据z轴方向的点云筛选以及连通域分割滤除平台背景。2.对去噪后的物料点云模型绘制外接箱体,获取箱体的姿态,做一个循环,从箱体上表面依次向下截取我们自定义的点云数量。直到提取到的点云数量达到要求,可以筛选出我们想要的ROI。3.去噪过程,为之后的模板匹配节约了大量的时间,并提高匹配率。转载自...
2020-11-13 14:10:24
上一讲叙述了点云模型的调平工作大家可以发现在调平模型的时候,基本都使用了姿态反转这个操作(pose_invert)本文详细描述点云模型姿态调正的细节,并与矩阵形式调整点云模型姿态做对比一.对姿态进行翻转用姿态调整点云这里介绍一个自己调整点云模型位姿的方式TPose:=[0,20,30,90,0,0,0]*TPose是我们自定义的姿态,同样有七个数据。*PoseCompose 待调整的姿态
po...
2020-11-13 14:07:38
点云数据是庞大的点集合,点云模型去噪就是删除多余的点集。点云去噪的方式有两种:1.通过在x,y,z的方向去除固定范围的点云数据,提取想要的点云ROI2.通过选取连通域根据点云特征,筛选点云。一.方法1:沿x,y,z筛选点云数据将点云模型中的数据拆分成x,y,z坐标的三个集合选取’point_coord_x’, ‘point_coord_y’, 'point_coord_z’三个属性读取原始...
2020-11-13 14:06:02
一. 加载标定板模型,标定相机二.拟合光平面1.参考坐标系并获得标定板位姿2.局部坐标系并获得位姿3.获取参考坐标系的光线点4.获得局部坐标系的光线点5.判断平面度利用高,低两条光线点拟合光平面三.标定位移矢量(要求平台移动多余一步)下图分别是我的起始标定板和移动20个步长的标定板。移动步长由运动控制卡的冒脉冲决定。四.三维重建选择需要重建的区域获得三维点云图我的三维重建图像有一部分噪点,可以通过...
2020-11-13 13:59:45
之前的博客介绍了三维扫描过程扫描重建的点云模型要进行保存本篇博文需要有Qt基础,请先观看我的前几篇博文。一.前言:Halcon算子介绍write_object_model_3d (ObjectModel3DID, 'om3', './model', [], [])#前三个参数分别是点云模型,模型格式和保存路径。
#点云模型很占内存,记得清理
clear_obje...
2020-11-13 13:58:08
深度图转视差图视差图合成深度图视差图合成点图模型把点云模型差分成x,y,z的点坐标通过x,y,z三维点云坐标点合成点云模型对比二维联合算子 ‘Union’gen_object_model_3d_from_points(x, y, z, ObjectModel3D1)...
2020-11-13 13:56:27
面结构光拍摄生成的点云模型,往往相对系统坐标系是有角度的。首先讲一下调平的目的:1.为接下来的预处理切除背景面做准备3.不做调平,后续处理会很麻烦,因为不清楚坐标系在平台的为位置2.对于无序抓取项目,平台相对相机可能是有角度的,将抓取平台调整到与相机平行,可以以Z轴方向,从高到低获取抓取物点云。处理速度更快,且干扰更少。常见的调平手法有三种。一.拟合平面方式该方法适合平面点云模型的调平处理回顾一下...
2020-11-13 13:54:40
首先加载模型,并将模型移动到窗口中间模型位姿调整方法在上一篇博客显示模型并输出模型的位姿(Pose)画出待截取部位截取模型 reduce_object_model_3d_by_view (RegionDifference1, ObjectModel3D2, CamParam, Pose, ObjectModel3DReduced)1注意:这里的Pose是离线显示模型时输出的位姿,CamPara...
2020-11-10 18:19:34
如题所示标题,想同时表达两个意思:1:缩放平移绘制区域,2:创建模板匹配区域并保存。被一个技术问题卡住折腾了近大半天时间+熬夜2个小时,经过不懈努力,反复验证各参数意义,找到了问题的原因,终于攻克难题。分享给需要的朋友。效果如下:思路如下:首先鼠标滚轮缩放,按压鼠标左键平移的鼠标事件组合:MouseDown,MouseUp,MouseMove,MouseWheelEvent,具体为:void Ad...
2020-11-10 18:15:40
如下图所示为偏转摆正后的图像,截取“PROD”固定字符创建NCC模板 ;NCC 算法= normalized cross correlation,归一化互相关匹配法创建模板* 图像增强
scale_image (ImageReduced, ImageScaled, 2.74194, -129)
threshold (ImageScaled, Regions, 179, 255)
erosio...
2020-11-07 21:21:07
矫正图像对于Blob分析或者OCR的应用,具有不变形的图像是很有必要的。假设一个OCR已经基于不变形图像数据被训练,然后,它将不能识别变形很严重的字符。在这样的情况下,图像数据必须被矫正,如在OCR应用之前,镜头和透视畸变必须被消除。转换图像到WCS算子image_to_world_plane通过将其转化到测量平面来矫正一张图像,例如WCS中z=0的平面。被矫正的图像没有镜头和透视畸变。其对应一张...
2020-11-07 21:16:32
高斯混合模型(GMM)分类的理论有点复杂。当处理分类时候,基本理论之一就是贝叶斯决策规则。一般,贝叶斯决策规则告诉我们,通过最大化特征向量x属于某类的可能性,来最小化错分特征向量的可能性。这个所谓的“后验概率”应该在所有的类别中被最大化。然后,贝叶斯决策规则将特征空间划分为相互不连接的区域。这些区域被超平面所分割,例如对于1D数据被点分割,或者2D数据被曲线分割。尤其是,超平面是由点定义的,相邻的...
2020-11-07 21:02:35
halcon中有一组纹理修复的算子,比较有趣。我们来了解一下,也许在以后的某个项目中可以用得上也保不准。它们是:harmonic_interpolation功能:对一个图像区域执行谐波插值。inpainting_aniso功能:通过各向异性扩散执行图像修复。inpainting_ced功能:通过一致性增强扩散执行图像修复。inpainting_ct功能:通过连贯传送执行图像修复。inpaintin...
2020-11-07 20:47:48
这个例子中,在相机聚焦清晰的图片中创建一个ncc的模板。随后,相机变焦数次,然后在这些失焦的图片中再模板,可以看到ncc相关性模板匹配很好的适合了图片的这种变化,稳定的找到了模板。聚焦清楚的图变焦严重的情况下准确的找到模板演示代码:dev_update_off ()
read_image (Image, 'smd/smd_on_chip_05')
get_image_size...
2020-11-07 19:38:16
文章目录检测任务检测思路点胶质量检测代码及解析图示处理思路检测任务点胶检查检测以下缺陷:1.缺少粘合胶的部分(断胶)2.粘合剂过多或过少的部分(溢胶、缺胶)3.粘合胶离其预定位置太远(点胶偏移)halcon对应示例程序:apply_bead_inspection_model.hdev效果图示:检测思路示例程序的图像处理思路:1.使用halcon的可变形模板匹配,将检测物品转正,方便检测这里我们用的...
2020-11-07 19:32:58
halcon的这种纹理检测模型使用起来相当方便。只需要下面几个步骤:创建纹理检测模型create_texture_inspection_model读多张图,选择图片中的一片没纹理正常的ROI传给检测模型设置训练参数 set_texture_inspection_model_param开始训练 train_texture_inspection_model读取要检测的图片,apply_texture...
2020-11-06 23:16:43
粘连的东西,最常见的思路是进行腐蚀,缩小region。用下面的思路也是可以的。(1)简单的阈值分割;(2)计算连通域connection;(3)基于距离变换的分水岭区域分割,使用算子distance_tansform,watersheds(4)盆地与原连通域求交集,分离粘连颗粒;演示程序如下:*采集图像
dev_close_window ()
read_image (Image, 'p...
2020-11-03 21:18:30
引言:特征提取是缺陷检测和分类器的重要基础,由于网络资料匮乏,这个系列的贴子勇哥会长期更新,以充实其内容。函数原型:gray_projections(Region, Image:: Mode: HorProjection, VerProjection) 功能:计算在水平和垂直方向的灰度值投影当Mode = 'rectangle'时,选取输入区域的任意方向的最小内接矩形,在其主轴方向...
2020-11-03 20:57:23
引言:特征提取是缺陷检测和分类器的重要基础,由于网络资料匮乏,这个系列的贴子勇哥会长期更新,以充实其内容。gray_histo_abs(Regions, Image : : Quantization : AbsoluteHisto)函数计算图像Image 内区域Regions的绝对灰度直方图AbsoluteHisto。参数Quantization 定义了一个频率值加多少个相邻灰度值的频率。生成的...
2020-11-03 19:46:15
引言:特征提取是缺陷检测和分类器的重要基础,由于网络资料匮乏,这个系列的贴子勇哥会长期更新,以充实其内容。moments_gray_plane(Regions, Image : : : MRow, MCol, Alpha, Beta, Mean)函数计算一个平面的灰度值矩和灰度值的参数。公式为:F为平面, 为中点。m11,m20,m02为区域缩放矩。因此 Alpha 表示沿直线轴方向的梯度(“向...
2020-10-30 23:57:55
这是网上写得比较好的一篇贴子,勇哥转载一下以方便大家。讲的都是基础的region操作。1、区域的运算在学习特征分析之前,先了解一下几个区域的基本运算方式。区域的运算主要包含:区域作差、区域合并、区域集合、区域的选择、区域的填充、区域的骨架等。在项目中,根据实际需要,灵活的选择相应的计算方式。在Halcon创建两个矩形,作为后面算子测试用:*生成两个矩形区域
gen_rectangle1 (Rec...
2020-10-30 16:47:17
目录1、图像边缘提取原理2、边缘提取算子介绍3、图像的亚像素边缘提取4、亚像素轮廓的特征分析5、xld的分割及直线拟合6、圆及椭圆的拟合7、中心线的提取1、图像边缘提取原理网上搜索图像边缘提取,有很多详细的讲解,就是讲的都太深奥,很难看明白。图像边缘提取原理并不复杂,至于一些大牛提供的复杂变换公式,也没必要深入的去研究,halcon都已经在算子中将其封装好了,我们会用就行。边缘的定义:边缘是图像中...
2020-10-30 08:43:23
* This example program shows how to classify different
* metal parts using a general MLP classification
*
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 640, 480, 'black',...
2020-10-29 21:26:44
神经网络直接决定类与类之间的separating hyperplanes(分离超平面),而超平层分隔开两个类的特征向量,落在在层的一边的特征向量属于class 1,落在另一边则属于class 2。基于单层神经网络的分类器需要 linearly separable classes(线性可分的类),在许多应用中不够高效。基于多层神经网络的分类器则无此限制,只要隐藏层包含足够多的处理单元即可。神经网络神...
2020-10-29 21:20:19
* This example program shows you how to use the GMM classifier for novelty
* detection to perform a web inspection task. To perform the novelty detection,
* all pixels belonging to the single train...