Halcon学习笔记
HALCON20.11:深度学习笔记(5)

HALCON20.11:深度学习笔记(5)HALCON 20.11.0.0中,实现了深度学习方法。
关于超参数的有关设置内容如下:不同的DL方法被设计用于不同的任务,它们的构建方式也会有所不同。
它们都有一个共同点,即在模型的训练过程中都面临着一个最小化问题。
训练网络或子网络,一个目标是努力使适当的损失函数最小化,参见“网络和训练过程”一节。
为此,有一组进一步的参数,这些参数是在开始训练之前设置的,在训练期间未进行优化。
我们将这些参数称为超参数。
对于DL模型,您可以设置更改策略,指定您希望在培训期间何时以及如何更改这些超参数。
在本节中,我们将解释不同超参数的概念。
注意,某些方法有额外的超参数,你可以在它们各自的章节中找到更多的信息。
如前所述,损失比较来自网络的预测与图像内容的给定信息。
损失决定惩罚偏差。
训练网络以这样的方式更新滤波器权值,使损失受到的惩罚更少,从而使损失结果得到优化。
为此,需要从训练数据集中获取一定数量的数据。
对于这个子集,计算损失的梯度,并修改网络以更新其相应的滤波权重。
现在,对下一个数据子集重复这一过程,直到整个训练数据被处理。
这些训练数据的子集被称为批,这些子集的大小,即“batch_size”,决定了一个批处理的数据数量,并作为结果一起处理。
对整个训练数据的完整迭代称为epoch。
对训练数据进行多次迭代是有益的。
迭代次数由“epochs”定义。
因此,“epochs”决定了算法在训练集上循环多少次。
一些模型(如异常检测)一次训练使用整个数据集。
对于其他模型,数据集按批处理,为了做到这一点,使用了随机梯度下降算法SGD (Stochastic Gradient Descent)。
这涉及到更多的参数,将在下面解释。
在每次计算损失梯度后,滤波器权值被更新。
对于这个更新,有两个重要的超参数:'learning_rate',它决定更新的损失函数参数(过滤器权重)上的梯度的权重,以及间隔内的'momentum',它指定以前更新的影响。
halcon学习笔记——实例篇(2)长度和角度测量

halcon学习笔记——实例篇(2)长度和⾓度测量实例⼆:长度和⾓度测量素材图⽚:halcon代码:1: *读取并截取图⽚2: dev_close_window()3: read_image (Image, 'D:/MyFile/halcon/长度和⾓度测量/图.png')4: crop_rectangle1 (Image, ImagePart, 75, 0, 400, 400)5: get_image_size (ImagePart, Width, Height)6: dev_open_window (0, 0, Width, Height, 'black', WindowHandle)7: dev_display (ImagePart)8:9: *获取图形的边界10: threshold (ImagePart, Regions, 0, 112)11:12: *分离三⾓形和圆形13: connection(Regions,ConnectedRegions)14: sort_region(ConnectedRegions,SortedRegions,'upper_left','true','column')15: select_obj(SortedRegions,Circle,1)16: select_obj(SortedRegions,Triangle,2)17:18: *获取三⾓形各边的信息19: skeleton(Triangle,TriangleSkeleton)20: gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter')21: segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2)22: select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5)23: fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)24:25: *计算三⾓形⾓度26: angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], Angle1)27: angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle2)28: angle_ll (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle3)29: Angle1:=abs(deg(Angle1))30: Angle2:=abs(deg(Angle2))31: Angle3:=abs(deg(Angle3))32:33: *获取圆的信息34: area_center(Circle,AreaCircle, RowCircle, ColumnCircle)35:36: *计算圆⼼到三⾓形各边的距离37: Distance := []38:for Index := 0 to 2 by 139: distance_pl (RowCircle, ColumnCircle, RowBegin[Index], ColBegin[Index], RowEnd[Index], ColEnd[Index], ThisDistance)40: Distance := [Distance,ThisDistance]41: endfor。
工业机器视觉基础教程-halcon篇

工业机器视觉基础教程-halcon篇工业机器视觉是指应用机器视觉技术在工业生产中,实现产品质量检测、工业自动化等一系列目标。
而HALCON则是一款功能齐全、具备丰富图像处理库的应用授权软件。
本文将介绍HALCON图像处理中的基本操作和应用。
一、HALCON图像处理的基本操作1.图像加载:使用read_image操作,该操作可以加载多种图像格式的图片文件。
如:read_image(Image, “test.jpg”)。
2.图像显示:使用disp_image操作可以对加载图像进行可视化处理并显示在界面上。
如:disp_image(Image)。
3.图像缩放:resize_image操作可以对图像进行缩放处理,缩放后的图像尺寸可以根据需求调整。
如:resize_image(Image,Image2,800,600,”bilinear”)。
4.图像灰度化:使用rgb1_to_gray操作可以将彩色图像转化为灰度图像。
如:rgb1_to_gray(Image,Image2)。
5.边缘检测:使用edge_image操作可以对图像进行边缘检测,检测出目标区域的轮廓和边缘。
如:edge_image(Image,Image2,”canny”)。
6.形态学操作:morph_operator操作可以对图像进行形态学操作,如膨胀、腐蚀、开、闭等。
如:morph_operator(Image,Image2,”dilation”,5)。
7.颜色分割:color_segmentation操作可以根据像素的颜色信息进行分割处理,一般是针对彩色图像。
如:color_segmentation (Image,Image2,“HSV”,[1, 0,0],[255, 255, 255])。
二、HALCON图像处理的应用1.工业质检:HALCON图像处理可以应用于工业质检领域,在生产线上进行产品质量检测,包括外观、尺寸、缺陷等。
2.智能制造:HALCON图像处理可以实现机器视觉智能制造,根据生产工艺流程和生产数据进行智能制造调节和优化。
Halcon学习(20)摄像机标定常用函数(一)

Halcon学习(二十)摄像机标定常用函数(一)在HALCON所有算子中,变量皆是如上格式,即:图像输入:图像输出:控制输入:控制输出,其中四个参数任意一个可以为空。
控制输入量可以是变量、常量、表达式,控制输出以及图像输入和输入必须是变量,以存入算子计算结果中。
1.caltab_points:从标定板中读取marks中心坐标,该坐标值是标定板坐标系统里的坐标值,该坐标系统以标定板为参照,向右为X正,下为Y正,垂直标定板向下为Z正。
该算子控制输出为标定板中心3D坐标。
2.create_calib_data:创建Halcon标定数据模型。
输出一个输出数据模型句柄。
3.set_calib_data_cam_param:设定相机标定数据模型中设置相机参数的原始值和类型。
设置索引,类型,以及相机的原始内参数等。
4.set_calib_data_calib_object:在标定模型中设定标定对象。
设定标定对象句柄索引,标定板坐标点储存地址。
5.find_caltab:分割出图像中的标准标定板区域。
输出为标准的标定区域,控制6.find_marks_and_pose:抽取标定点并计算相机的内参数。
输出MARKS坐标数组,以及估算的相机外参数。
即标定板在相机坐标系中的位姿,由3个平移量和3个旋转量构成。
7.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose : )收集算子6的标定数据,将标定数据储存在标定数据模型中。
输入控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,行列坐标,位姿。
8.calibrate_cameras( : : CalibDataID : Error) 标定一台或多台相机,依据CalibDataID中的数据。
控制输出平均误差。
HALCON20.11:深度学习笔记(9)

HALCON20.11:深度学习笔记(9)HALCON 20.11.0.0中,实现了深度学习方法。
本章解释了如何使用基于深度学习的异常检测。
通过异常检测,我们想要检测图像是否包含异常。
异常指的是偏离常规的、未知的东西。
异常检测的例子:输入图像的每个像素都被分配了一个值,该值表明该像素是异常的可能性有多大。
蠕虫不是模型在训练中看到的无虫苹果的一部分,因此它的像素得到了更高的分数。
一个异常检测模型学习没有异常的图像的共同特征。
训练后的模型将推断出输入图像只包含学习过的特征的可能性有多大,还是该图像包含不同的东西。
后一个被解释为异常。
此推理结果作为灰度图像返回。
其中的像素值表示输入图像像素中相应像素显示异常的可能性有多大。
一般工作流程在本节中,我们描述了基于深度学习的异常检测任务的一般流程。
预处理数据这一部分是关于如何预处理数据的。
1. 需要转换数据集的信息内容。
这是通过函数read_dl_dataset_anomaly来完成的。
它创建了一个字典DLDataset,它充当一个数据库,存储关于您的数据的所有必要信息。
要了解更多关于数据及其传输方式的信息,请参阅下面的“数据”一节和深度学习/模型一章。
2. 拆分字典DLDataset表示的数据集。
这可以使用函数split_dl_dataset来完成。
3. 网络对图像有几个要求。
可以使用函数get_dl_model_param检索这些需求(例如图像大小和灰度值范围)。
为此,您需要首先通过函数read_dl_model读取模型。
4. 现在可以对数据集进行预处理了。
为此,您可以使用该函数preprocess_dl_dataset。
对于自定义预处理,本函数提供了实现的指导。
要使用这个函数,请指定预处理参数,例如,图像的大小。
将所有参数及其值存储在DLPreprocessParam字典中,您可以使用该函数create_dl_preprocess_param。
我们建议保存这个字典DLPreprocessParam,以便稍后在推理阶段访问预处理参数值。
halcon学习笔记——傅里叶变换与极坐标变换

halcon学习笔记——傅⾥叶变换与极坐标变换⼀、傅⾥叶变换图像的傅⾥叶变换◆傅⾥叶变换定义:傅⾥叶变换是时域到频域的变换⽅法,通俗讲是将现在的空间变换到⼀个能够反映某些事物出现频率的空间。
◆图像傅⾥叶变换:◆⽤途:⼀般⽤于对出现频率⾼的像素点的分析以及噪声的去除。
◆频率图特点:图像中⼼为频率为 0 的原点,由内到外频率越来越⾼。
其中灰度变换激烈的地⽅对应⾼频成分,如边缘;灰度变换不⼤的地⽅对应低频。
*傅⾥叶变换fft_image (GrayImage, ImageFFT)area_center (ImageFFT, Area, Row, Column)gen_circle (Circle, Row, Column, 200)gen_circle (Circle1, Row, Column, 1000)difference (Circle1, Circle, RegionDifference)paint_region (RegionDifference, ImageFFT, ImageResult, 0, 'fill')fft_image_inv (ImageResult, ImageFFTInv)⼆、极坐标变换◆极坐标系的定义:在平⾯内取⼀个定点 O,叫极点,引⼀条射线,叫做极轴,再选定⼀个长度位和⾓度的正⽅向。
对于平⾯内任何⼀点,⽤ r 表⽰线段的长度,a 表⽰⾓度,r 叫做点的极径,a 叫做点的极⾓,有序数对 (r,a)就叫点的极坐标,这样建⽴的坐标系叫做极坐标系。
◆极坐标系的变换:选取极坐标原点,并将原坐标系变换为极坐标系的过程称为极坐标系的变换。
关键点在于极坐标系原点的选取以及起始⾓度的设置 (可以将环形拉直,直⾏变圆)read_image (Image, Selection)draw_circle (WindowHandle, Row, Column, Radius)gen_circle (Circle, Row, Column, Radius)reduce_domain (Image, Circle, ImageReduced)*极坐标变换polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, 0, 6.28319, 0.5*Radius, Radius, 6.28319*Radius, 800, 'nearest_neighbor') *极坐标逆变换polar_trans_image_inv (PolarTransImage, XYTransImage, Row, Column, 0, 6.28319, 0.5*Radius, Radius, 6.28319*Radius, 800, 'nearest_neighbor')。
工业机器视觉基础教程-halcon篇

工业机器视觉基础教程-halcon篇工业机器视觉技术是近年来广泛应用于制造业、智能制造等领域的一项先进技术。
而Halcon(halcon软件)作为机器视觉领域的一个重要工具之一,为很多工厂和企业的生产提供了有力的支持。
以下是Halcon基础教程的一些内容:一、图像的基本处理1.图像读取和显示使用 HDevelop 进行图像读取和显示,首先需要打开 Halcon 的环境。
read_image (Image,"图片路径")Using HDevelop 进行图像显示dev_close_window ()dev_open_window (0,0,800,600,"image", "no_titlebar", "") dev_display (Image)2.图像的预处理图像的预处理指对原始图像进行一系列处理,以便于后续处理。
常见的预处理有图像灰度化、平滑化、二值化等。
a.灰度化:将RGB图像转换为灰度图象。
gray_image(Image,GrayImage)b.平滑化:对于物体在图像中可能产生的噪声,需对图像进行平滑化处理。
gauss_filter(Image,GaussImage,2)c.二值化:将灰度图产生为二值图,以便于后续的分析处理。
threshold(Image,Region,20,255)二、圆形和直线的基本检测1、圆形的检测a.使用梯度方向不变性(Gradient direction invariant)方法。
1) 对图像进行预处理,平滑和边缘检测。
gauss_filter(Image,Filtered,3)sobel_amp(Filtered,DerivGaussian,3)2) 选定圆心和半径的最小值和最大值,对圆进行扫描。
find_circles(FilteredCircles,DerivGaussian,MinRadius,Max Radius)3) 对于查找到的圆形和可能的重叠,消除重叠。
Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(⼀⽂学会halcon基础操作,总结⾃超⼈视觉)此⽂根据《超⼈视觉 halcon启蒙班》写成,结合图⽚和例程,直观简单地介绍halcon的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求:1.识别定位2.符号识别:⼀⼆维码,OCR3.测量需求4.缺陷需求(最常见,难度最⼤)5.⼿眼标定和抓取(结合运动控制)图像处理⼀般思路1.采集2.预处理拉开灰度⼏何变换去噪:中值滤波,均值滤波,⾼斯滤波抠图3.图像分割⼆值化形态学特征选择ps:Halcon⾥区域和图像是不同概念4.识别显⽰5.通信三⼤数据类型图像,区域,XLD灰度直⽅图勾选“阈值”将灰度值在”绿线和红线之间”的以选定颜⾊进⾏填充将把圈定的阈值范围内的直⽅图均匀拉伸释放到整个直⽅图轴上数组语法* Simple tuple operationsTuple1 := [1,2,3,4,5]Number := |Tuple1|SingleElement := Tuple1[3]Part := Tuple1[1:3]Copy := Tuple1[0:|Tuple1| - 1]运⾏结果读取图⽚的四种⽅法1. ⽂件 -> 读取图⽚2. Image Acquisition -> ⾃动检测接⼝(刷新设备)-> Direct show,从摄像头直接读图3. Image Acquisition -> 选择⽂件,从图像⽂件中读取4. Image Acquisition -> 选择路径,结合正则表达式读取路径下的图⽚PS:⽤Image Acquisition读取时记得点击代码⽣成摄像头抓取模式:在可视化 -> 更新窗⼝中调整同步采集:实时抓取,⼀直抓取异步采集:只等图⽚处理完后,grab_image才开始抓取PS:更多信息包括双相机采集,可以在案例 -> ⽅法 -> 图像采集设备中学习ROI(感兴趣区域)特征检测PS:⼆值化之后的区域虽然不连通,但仍然认为是⼀个区域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Halcon学习笔记1、Halcon的自我描述Program LogicEach program consists of a sequence of HALCON operatorsThe program can be structured into proceduresThe sequence can be extended by using control operators like if, for, repeat, or whileThe results of the operators are passed via variablesNo implicit data passing is appliedInput parameters of operators can be variables or expressionsOutput parameters are always variablesHDevelop has no features to design a graphical user interfaceAn HDevelop program is considered as a prototypic solution of the vision part of an applicationHDevelop is typically not used for the final application由此可以看出,Halcon的定位是一个类库,有着完整、快速实现函数,同时提供了HDevelop 作为快速开发的图形化(IDE)界面;但是,Halcon程序并不是一个完整的最终应用软件,它没有用户界面,也不提供显示的数据(公用的数据格式)。
Halcon的初学者也应当从参考Halcon的程序入手,熟悉Halcon类库,也即HDevelop-Based Programming;在此基础上,进入ORClass-Oriented Programming。
这也是Halcon推荐的开发方式:The vision part is solved with HDevelop,and the application is developed with C++ or Visual Basic。
2、HDevelop界面的学习通过阅读Halcon的PPT,学到了下面一些有用的信息:文件——浏览示例,可以看到很多有用的例子;程序窗体中,可以浏览与编辑Procedues(过程),这个其实就是自定义函数咯~还可以自己修改这些过程,并添加说明文档;F4——将函数语句注释掉;F3——激活;本地过程(Local Procedue)与外部过程(Externel Procedue)3、基本语法结构Halcon的语法结构类似于Pascal 与Visual Basic,大部分的语句是Halcon提供的算子,此外也包含了少部分的控制语句;不允许单独声明变量;提供自动的内存管理(初始化、析构及OverWrite),但句柄则需要显示释放;C++(算子模式)通过代码导出,以C++为例,默认导出为算子型的语法结构,而非面向对象的;在此模式下,全部函数声明为全局类型,数据类型只需要用Hobject、HTuple两类类型进行声明;C++(面向对象)可以以面向对象的方式重写代码,也即利用类及类的成员函数;在这种模式下,控制变量的类型仍未HTuple,而图形数据可以由多种类型,如HImage等;其他语言(略)4、Halcon数据结构两类参数:图形参数Iconic (image, region, XLD)与控制参数Control (string, integer, real, handle),在Halcon算子的参数中,依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数;并且其输入参数不会被算子改变。
图形参数Iconic:ImagesMultiple channelsArbitrary region of interestMultiple pixel types(byte, (u)int1/2/4,real, complex, direction, cyclic, vector_field) byte, uint2 //灰度图像的标准编码int1, int2 //Difference of two images or derivates with integer precision(??)int4 //两幅灰度图的频谱direction //图片边缘的梯度方向real //边缘提取及特定灰度值的轮廓complex //图片频率分布cyclic //Assigning one "gray" value to each color(??)vector_field //连续图形的光学流分布RegionsEfficient data structure (runlength encoding)Extensive set of operatorsFastest morphology on the market图形编码中,需要了解row 和run 两个术语;也是Halcon Region存储的方式E x tended L ine D escription (XLD)Subpixel accurate line and edge detectionGeneric point list based data structureHandling of contours, polygons, lines, parallels, etc.此外,Halcon支持的类型还包括图形元组、控制变量元组及句柄:元组的概念,使得可以用一个变量传递数个对象,可以由重载后的函数来进行处理;图形元组的下标从1开始,控制变量元组下标从0开始;句柄则可以用来描述窗体、文件等等,句柄不能是常量。
5、Halcon语言输入控制参数可以是表达式,但图形参数、输出参数均应为变量;String类型变量由单引号’括起来;此外还有一些特殊字符;Boolean型变量包括true ( = 1 )、false ( = 0 ) ;不为零的整数将被认为true;但绝大多数的Halcon函数接受字符串型的表达:’true’‘false’,而非逻辑型表达;函数返回常量用于标识错误:H_MSG_TRUE no error 2H_MSG_FALSE l ogical false 3H_MSG_FAIL operator did not succeed 5可以放在try…catch…endtry块中,也可以用dev_error_var()与dev_set_check() 来捕获;控制语句结构:(与一般语言略有不同,它们也有输入输出变量)if ... endif / if ... else ... endif / if ... elseif ... else ... endiffor ... endforwhile ... endwhilerepeat ... until此外,也有关键字break、continue、return、exit、stop 用来控制语句的执行;赋值语句在Halcon中也被当作函数来使用:标准赋值assign(Expression, ResultVariable) //编辑形式,永远都是输入在前,输出在后 ResultVariable := Expression //代码形式元组插入赋值insert(Tuple, NewValue, Index, Tuple) //编辑形式Tuple[Index] := NewValue //代码形式控制变量元组操作[t,t] concatenation of tuples|t| number of elementst[i] selection of an elementt[i:j] selection of a part of a tuplesubset(t1,t2) selection from t1 by indices in t2图形元组操作对应函数[] gen_empty_obj ()|t| count_obj (p, num)[t1,t2] concat_obj (p1, p2, q)t[i] select_obj (p, q, i+1)t[i:j] copy_obj (p, q, i+1, j-i+1)subset(t1,t2) select_obj (p, q, t2+1)元组的数学运算,如:A * B,令m = |A|, n = |B|;若m、n不相等,且都大于1,则错误;否则返回三种情况:m=n=1,返回一个值;m=n>1,返回一个包含m个数的元组,值为两元组各对于值的操作结果;m>1,n=1,返回一个包含m个数的元组,值为第二个数与第一元组各值的操作结果;Halcon 的数学运算算术运算a / a divisiona % a rest of the integer divisiona * a m ultiplicationv + v addition and concatenation of stringsa - a subtraction-a negation位运算lsh(i,i) left shiftrsh(i,i) right shifti band i bit-wise andi bor i bit-wise ori bxor i bit-wise xorbnot i bit-wise complement字符串操作v$s conversion to string //字符串的格式化,有很丰富的参数 v + v concatenation of strings and additionstrchr(s,s) search character in stringstrstr(s,s) search substringstrrchr(s,s) search character in string (reverse)strrstr(s,s) search substring (reverse)strlen(s) length of strings{i} selection of one characters{i:i} selection of substringsplit(s,s) splitting to substrings比较操作符t < t less thant > t greater thant <= t less or equalt >= t greater or equalt = t equalt # t not equal逻辑操作符not l negationl and l logical ’and’l or l logical ’or’l xor l logical ’xor’数学函数sin(a) sine of acos(a) cosine of atan(a) tangent of aasin(a) arc sine of a in the interval [-π/2, π/ 2], a ∈ [-1, 1]acos(a) arc cosine a in the interval [-π/2, π/2], a ∈ [-1, 1]atan(a) arc tangent a in the interval [-π/2, π/2], a ∈ [-1, 1]atan2(a,b) arc tangent a/b in the interval [-π, π]sinh(a) hyperbolic sine of acosh(a) hyperbolic cosine of atanh(a) hyperbolic tangent of aexp(a) exponential functionlog(a) natural logarithm, a> 0log10(a) decade logarithm, a> 0pow(a1,a2) powerldexp(a1,a2) a1 pow(2,a2)其他操作(统计、随机数、符号函数等)min(t) minimum value of the tuplemax(t) maximum value of the tuplemin2(t1,t2) element-wise minimum of two tuplesmax2(t1,t2) element-wise maximum of two tuplesfind(t1,t2) indices of all occurrences of t1 within t2rand(i) create random values from 0..1 (number specified by i)sgn(a) element-wise sign of a tuplesum(t) sum of all elements or string concatenationcumul(t) cumulative histogram of a tuplemean(a) mean valuedeviation(a) standard deviationsqrt(a) square root of adeg(a) convert radians to degreesrad(a) convert degrees to radiansreal(a) convert integer to realint(a) convert a real to integerround(a) convert real to integernumber(v) convert string to a numberis_number(v) test if value is a numberabs(a) absolute value of a (integer or real)fabs(a) absolute value of a (always real)ceil(a) smallest integer value not smaller than afloor(a) largest integer value not greater than afmod(a1,a2) fractional part of a1/a2, with the same sign as a1sort(t) sorting in increasing orderuniq(t) eliminate duplicates of neighboring values(typically used in combination with sort)sort_index(t) return index instead of valuesmedian(t) Median value of a tuple (numbers)select_rank(t,v) Select the element (number) with the given rankinverse(t) reverse the order of the valuessubset(t1,t2) selection from t1 by indices in t2remove(t1,t2) Remove of values with the given indicesenvironment(s) value of an environment variableord(a) ASCII number of a characterchr(a) convert an ASCII number to a characterords(s) ASCII number of a tuple of stringschrt(i) convert a tuple of integers into a string6、Halcon名称解释Operator: A procedure of the HALCON library used in HDevelop or one of the language interfaces.Procedure (of HDevelop): A subroutine defined for the use inside HDevelop.Region: Result of a segmentation like threshold. In other systems called blob, area, binary image, or island. Implemented using runlength encoding.XLD: Extended Line Description. Universal data structure used to handle contour based data. Mainly used in the context of subpixel precise measurement.Domain: Part of the image which is used for processing. In other systems called ROI (region of interest).Channel: One image matrix of a multi-spectral image. One example is the red channel of an RGB image.Iconic data: Overall term for images, regions, and XLD data. In object oriented languages (C++ and COM) and in HDevelop iconic data is represented by a polymorphicdata type. In object oriented languages iconic data is also called iconic object.Control data: All non iconic data. Examples are single values (integer, real, and string), coordinates, arrays of values.Tuple: an array of values where each element can be of a different type. One can have both iconic and control tuples.HALCON object: Synonym for Iconic object / dataImage acquisition interface: Interface between the frame grabber /camera driver (SDK) and the HALCON library. The Image acquisition interface is a DLL which is dynamicallyloaded when calling open_framegrabber.Language interface: Software that enables the programmer to use the HALCON library in a given language (e.g., C++).Extension Package: A mechanism that enables the user to fully integrate user-defined procedures into the HALCON environment. The extension package concept gives fullaccess to the internal data structures of HALCON.License file: File “license.dat“ in the directory “license“. This file is used together with hardware components (dongle or Ethernet card) to check if a correct license isavailable.Help files: Files in the directory “help“ which are used to get online information about all HALCON operators. This is extensively used by HDevelop.Shape-Based Matching: Finding of an object in an image based on a predefined model.The shape based matching uses features to quickly locate objects very precisely.Variation Model: A method to do print checking by presenting multiple good patterns to the system. The variation model learns the normal variation a good pattern andbased on this information can detect real defects.Measure Tool: A set of operators to find the exact location of edges along lines or circular arcs. Other systems call the similar tool, e.g., caliper.Accuracy: The deviation from the true valuePrecision: The standard deviation of the measurement7、Halcon函数典型函数Filtering (noise, smoothing, edge, bit, arithmetic, enhancement)Segmentation (thresholding, topology, region growing, classification, comparison)Region processingMorphologyFeature extractionEdge detectionColor processing and classificationOCR / OCVBar code / data codeMeasurementRectificationGray value matching8、Halcon HDevEngineHDevEngine允许用户在应用程序中直接调用Halcon程序(*.hdvp),适用范围包括C++、COM、.NET语言。