2020-10-28 21:47:15
texture.hdev这个例子是主要讲解了histo_2dim 、class_2dim_sup 搭配使用灰度直方图进行图像分割。* Find textured areas (trees and bushes)
*
dev_close_window ()
Interactive := 0
dev_close_window ()
read_image (MreutHill, 'm...
2020-10-28 21:03:27
无纺布折痕检测(3)· 基于灰度投影的折痕检测 http://www.skcircle.com/?id=1279频率域滤波基础之一 http://www.skcircle.com/?id=330基于二次曲面拟合的脏污检测 http://www.skcircle.com/?id=1274视觉进阶:阈值分割函数总结 http://www.skcircle.com/?id=683Hal...
2020-10-28 20:54:24
引言:texture_laws算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。纹理分析是图像处理中的一种典型任务,texture_laws是Halcon中纹理分析的重要算子,其本质原理是利用不同的kernel与图像进行卷积运算,提取出图像的高频部分或低频部分。纹理(texture)由纹理单元(texel)组成,纹理单元是纹理图像中最小的重复单元,texe...
2020-10-28 20:33:39
功能:1、按住鼠标左键拖动鼠标进行擦除工作,松开鼠标停止擦除2、继续按住鼠标左键重复功能1,鼠标右键退出这里使用到的halcon是17.12版本的对应同版本的HDevelop,在API中就找到两个鼠标事件:get_mbutton 和 get_mposition前者等待鼠标按下,后者无需等待直接监听鼠标并且都是一次触发一次返回,这样一来实现上面的功能就要挠一挠脑壳了。 halcon实现:read_i...
2020-10-28 20:32:48
算子介绍inspect_shape_model创建形状模型的表示。运算符对于确定参数NumLevels和Contrast尤其有用,它们可以快速,方便地用于create_shape_model,create_scaled_shape_model或create_aniso_shape_model中。模型的表示是在多个图像金字塔级别上创建的,其中级别的数量由NumLevels确定。在其典型用法中,使用N...
2020-10-28 20:28:15
今天要给大家分享一点关于Halcon测量圆直径(半径)的方法。首先容我啰嗦两句:之所以要对这个看似很基础的问题进行探讨,主要原因有二,其一是这个问题确实困扰了我一段时间,当然这主要是由于我自己经验不足所致;其二是为了解决这个问题,我在网上查阅了很多博客资料,突然发现一件比较有趣的事情——网上多数能搜索到的关于这个问题的博客居然都主动避开了Halcon设计者的初衷,即最简单实现它的方式,反而和我这个...
2020-10-28 20:25:08
Halcon模板匹配算子find_shape_model里的参数Row, Column, Angle(单位:弧度)含义是什么?find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Col...
2020-10-28 20:18:38
一、提高Halcon的运算速度,有以下几种方法:1、Multithreading(多线程)2、Automatic Parallelization(自动操作并行化)3、Compute devices,利用GPU提速,如果显卡性能好,至少可以提高5~10倍的运算速度二、多线程1、官方自带的例程get_operator_info.hdev,可以查看支持多线程的算子;* Determine the mul...
2020-10-28 20:16:18
图像噪声是图像在获取或传输过程中受到随机信号干扰,妨碍人们对图像理解及分析的信号。很多时候将图像噪声看作多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即使用其概率分布函数和概率密度分布函数。图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产生图像噪声的主要因素是所用的传输信道受到噪声污染。一、噪声类型1、椒盐噪声(盐=白色,椒=黑色)椒盐噪声是数字图像中...
2020-10-28 20:12:55
理论基础一、频率特征是图像的灰度变化特征,低频特征是灰度变化不明显,例如图像整体轮廓,高频特征是图像灰度变化剧烈,如图像边缘和噪声。一个重要的经验结论:低频代表图像整体轮廓,高频代表了图像噪声,中频代表图像边缘、纹理等细节。什么时候使用傅里叶变换进行频域分析?具有一定纹理特征的图像,纹理可以理解为条纹,如布匹、木板、纸张等材质容易出现。 需要提取对比度低或者信噪比低的特征。 图像尺寸较大或者需要与...
2020-10-28 20:11:17
一、缺陷检测综述缺陷检测是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证。首先常见缺陷:凹凸、污点瑕疵、划痕、裂缝、探伤等。常用的手法有六大金刚(在halcon中的ocv和印刷检测是针对印刷行业的检测,有对应算子封装):1.blob+特征(例如官方示例surface_scratch.hdev)2.blob+差分+特征3.光度立体4.特征训练5.测量拟合6.频域+空间结合 二、频域+空间结合...
2020-10-28 20:09:34
一、图像分割思想图像分割的主要算法:1.基于阈值的分割方法2.基于边缘的分割方法3.基于区域的分割方法4.基于聚类分析的图像分割方法5.基于小波变换的分割方法6.基于数学形态学的分割方法7.基于人工神经网络的分割方法基于阈值的分割方法阈值分割方法作为一种常见的区域并行技术,就是用一个或几个阈值将图像的灰度直方图分成几个类,认为图像中灰度值在同一类中的像素属于同一物体。由于是直接利用图像的灰度特性,...
2020-10-28 20:08:06
一、边缘提取1、设置ROI兴趣区域2、快速二值化,并连接相邻区域。这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来3、提取最接近目标区域的轮廓常用函数有boundary,gen_contour_region_xldboundary(获取一个区域的边界)Region (input_object) Regions for which the boundary is to...
2020-10-28 20:03:36
*如果是畸变图,需要先校正
read_image (Image, 'D:/1.bmp')
get_image_size (Image, Width, Height)
*彩色转灰度图
count_channels (Image, Channels)
if (Channels == 3 or Channels == 4)
rgb1_to_gray (Image...
2020-10-28 20:01:42
一、先来看理论:摘自论文《基于HDevelop的形状匹配算法参数的优化研究》1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。...
2020-10-28 19:59:56
一、Halcon遍历xld,halcon中统计数目归纳下:图形元组变量计算数目 是使用 count_obj算子统计控制元组变量计算数目 是通过|元组名称|进行的(对控制类型数组用||统计)count_obj(DeformedContours, NumberContours)
area_center_xld (DeformedContours, Area1, Row1, Column1, Poin...
2020-10-28 19:56:55
XLD: eXtended Line Descriptions 亚像素轮廓1、何谓亚像素?面阵摄像机的成像面以像素为最小单位。例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限...
2020-10-28 19:53:36
一、HALCON 12.0例程里有一个类似的,Ctrl+E打开例程,搜关键字“circle”或者"ball"就行。请重点关注下measure_circles.hdev,circles.hdev,union_cocircular_contours_xld.hdev,ball.hdev这几个例程。大概过程差不多是:找到圆形区域--亚像素边缘--结果曲线分段--筛选出圆形--拟合 二...
2020-10-28 19:52:56
fit_line_contour_xld.hdevfit_line_contour_xld(Contours : : Algorithm, MaxNumPoints, ClippingEndPoints, Iterations, ClippingFactor : RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)参数说明:1 Contours 输入的...
2020-10-28 19:43:28
Halcon中线条提取的算子主要有:lines_color(Image : Lines : Sigma, Low, High, ExtractWidth, CompleteJunctions : )lines_facet(Image : Lines : MaskSize, Low, High, LightDark : )lines_gauss(Image : Lines : Sigma, Low,...
2020-10-28 19:41:35
先看代码实践dev_update_off ()
dev_close_window ()
*读图
read_image (Image, 'D:/1.bmp')
get_image_size (Image, Width, Height)
*测试提取边缘
edges_image(Image,Amp,Dir,'lanser2',0.5,'no...
2020-10-28 19:34:52
如何判断一个点是否在多边形内部?(1)面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。--采纳(2)夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。(3)引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。(4)转角法:按照多边形顶点逆...
2020-10-26 13:27:42
(一)Wrong number of values of control parameter 2(HALCON错误代码:1402)这种错误发生算子add_sample_class_mlp中。其原因是你现在的图片计算出来的FeatureVector和之前添加的FeatureVector大小不一致。这是因为训练图片的尺寸大小不致造成的。如下图所示,哪怕是你的图像大小差一行像素,也会造成FeatureV...
2020-10-23 20:56:57
勇哥的一个案子里需求如下:分割出齿轮的小齿,小齿要排列规则,图像大小固定由于齿轮数量有40多个,因此分割要求速度快分割后的图片形成磁盘文件 (图1 分割后的图片样例)(图2 要分割的齿轮和极坐标转换后的效果) 这个需求如果不考虑速度的话,是很简单的。最简单的是转动图片固定角度,然后用一个矩形ROI去切割固定位置的小齿。但是这个办法由于耗时太长,能实现功能,却达不到速度要求。还有一个办法是...
2020-10-21 08:08:26
灰度共生矩阵灰度共生矩阵定义为像素对的联合分布概率,是一个对称矩阵,它不仅反映图像灰度在相邻的方向、相邻间隔、变化幅度的综合信息,但也反映了相同的灰度级像素之间的位置分布特征,是计算纹理特征的基础。设f(x,y)为一幅数字图像,其大小为M×N,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为:其中#(x)表示集合x中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d...
2020-10-20 22:43:48
首先看看要使用的图像(这是闲着无聊在halcon网上找的一张实际生产中的图):从图像中看,颗粒状物体都有不同程度的粘连在一起,这给我们在处理上带来了一定的麻烦。首先想,对于这样的图,人是怎么识别的?抽象出来就是:先记住颗粒的形状,再去里面找。因此很明显想到的是图像匹配识别,不过粘连度高的就不好使用特征模板匹配了,因为粘连的物体本身其特征就模糊了很多。这里建议使用ncc模板匹配,至于ncc与shap...
2020-10-20 22:38:29
在二维平面中,相同的来料都有它关于来料相同的平面矩阵,因此在初始来料上规划好路径后只要得到二次来料它发生的位移以及旋转角度就能很容易得到这次来料上的规划路径关系,从而控制机械手准确走完规划路径。但当来料过大超出相机抓图的视野就可以通过mark点来获得这两个关系,mark点可以是一个、两个或者三个,分别取决于不同的场合。关于一个mark点的定位就非常简单了,但有个局限就是这个mark点必要很容确定旋...
2020-10-20 22:34:49
关键算子: orientation_region vector_angle_to_rigid affine_trans_region 测试图片:halcon代码:*此例子将图中没有偏移的形状参照旋转的形状进行旋转
read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test14...
2020-10-18 21:17:20
例一:毛刺在往外凸的面上策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域。 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg')
binary_threshold (Tu, Region, 'max_separability', 'dark',...
2020-10-15 21:55:43
inspect_bottle_mouth.hdev巧妙运用了极坐标变换法,细节很精细,值得学习* tuning parameters
SmoothX := 501
ThresholdOffset := 25
MinDefectSize := 50
*
* initialization
PolarResolution := 640
RingSize := 70
get_system...