HALCON算子函数Chapter 10: Matching-3D
- 格式:doc
- 大小:19.50 KB
- 文档页数:3
halcon 中math的用法Halcon中的math模块提供了许多数学函数和运算符,用于处理图像处理和计算机视觉应用中的数学运算。
下面是一些常用的math函数和用法的详细说明:1. abs:计算一个数的绝对值。
用法:abs(Value : double) -> double2. sin:计算一个角度的正弦值。
用法:sin(Value : double) -> double3. cos:计算一个角度的余弦值。
用法:cos(Value : double) -> double4. tan:计算一个角度的正切值。
用法:tan(Value : double) -> double5. atan2:计算两个数的反正切值。
用法:atan2(Y : double, X : double) -> double6. sqrt:计算一个数的平方根。
用法:sqrt(Value : double) -> double7. exp:计算一个数的指数值。
用法:exp(Value : double) -> double8. log:计算一个数的自然对数。
用法:log(Value : double) -> double9. pow:计算一个数的指定次幂。
用法:pow(Base : double, Exponent : double) -> double10. round:将一个数四舍五入为最接近的整数。
用法:round(Value : double) -> int11. floor:将一个数向下取整为最接近的整数。
用法:floor(Value : double) -> int12. ceil:将一个数向上取整为最接近的整数。
用法:ceil(Value : double) -> int13. min:返回两个数中的较小值。
用法:min(Value1 : double, Value2 : double) -> double14. max:返回两个数中的较大值。
halcon 数学运算【1.HALCON简介】HALCON(Hardware Abstraction Layer for Control Networks)是一款由德国不伦瑞克大学开发的开源软件,用于嵌入式系统的控制和监控。
它提供了一种硬件抽象层,使得开发者可以编写与特定硬件无关的程序。
在实际应用中,HALCON广泛应用于机器视觉、运动控制等领域。
【2.HALCON数学运算基础】在HALCON中,数学运算主要通过内置的数学函数库实现。
这些函数可以处理各种数学问题,包括算术运算、三角函数、对数、指数、逻辑运算等。
为了方便使用,HALCON将这些函数分为几个类别,如基本函数、统计函数、矩阵函数等。
【3.HALCON中的常用数学函数】以下是一些在HALCON中常用的数学函数:- 算术运算:+、-、*、/、%、^- 三角函数:sin、cos、tan、asin、acos、atan- 对数与指数函数:log、log10、exp、sqrt- 随机数生成:rand、randn- 统计函数:mean、stddev、var、sum、prod- 矩阵函数:矩阵加法、矩阵乘法、矩阵转置、行列式、逆矩阵【4.实例演示】以下是一个简单的HALCON程序,演示了如何使用数学函数:```PROGRAM exampleVARi : INT;j : INT;sum : REAL;product : REAL;matrix1 : MAT(3, 3);matrix2 : MAT(3, 3);matrix3 : MAT(3, 3);END_VARFOR i := 1 TO 3 DOFOR j := 1 TO 3 DOmatrix1(i, j) := i * j;END_FOR;END_FOR;sum := 0;FOR i := 1 TO 3 DOsum := sum + matrix1(i, 1); END_FOR;product := 1;FOR i := 1 TO 3 DOproduct := product * matrix1(1, i);END_FOR;matrix2 := matrix1 * matrix1;PRINT "矩阵1:"; matrix1;PRINT "矩阵2:"; matrix2;END_PROGRAM```【5.总结与建议】HALCON提供了丰富的数学函数,可以帮助开发者轻松实现各种数学运算。
halcon算子中文解释comment ( : : Comment : ) 注释语句exit ( : : : ) 退出函数open_file ( : : FileName, FileType : FileHandle ) 创建('output' or 'append' )或者打开(output )文本文件fwrite_string ( : : FileHandle, String : ) 写入stringdev_close_window ( : : : ) 关闭活跃的图形窗口。
read_image ( : Image : FileName : ) ;加载图片get_image_pointer1 ( Image : : : Pointer, Type, Width, Height )获得图像的数据。
如:类型(= ' 字节',' ' ',uint2 int2 等等) 和图像的尺寸( 的宽度和高度) dev_open_window( : :Row,Column,WidthHeight,Background :WindowHandle ) 打开一个图形的窗口。
dev_set_part ( : : Row1, Column1, Row2, Column2 : ) 修改图像显示的位置dev_set_draw (’fill’)填满选择的区域dev_set_draw (’margin’)显示的对象只有边缘线,dev_set_line_width (3) 线宽用Line Width 指定threshold ( Image : Region : MinGray, MaxGray : ) 选取从输入图像灰度值的g 满足下列条件:MinGray < = g < = MaxGray 的像素。
dev_set_colored (number) 显示region 是用到的颜色数目dev_set_color ( : : ColorName : ) 指定颜色connection ( Region : ConnectedRegions : : ) 合并所有选定像素触摸相互连通区fill_up ( Region : RegionFillUp : : ) 填补选择区域中空洞的部分fill_up_shape ( Region : RegionFillUp : Feature, Min, Max : )select_shape ( Regions : SelectedRegions : Features, Operation, Min, Max : ) 选择带有某些特征的区域,Operation 是运算,如“与”“或”smallest_rectangle1 ( Regions : : : Row1, Column1, Row2, Column2 ) 以矩形像素坐标的角落,Column1,Row2(Row1,Column2) 计算矩形区域( 平行输入坐标轴) 。
文章标题:深度解析Halcon函数中文速查表与手册目录一、引言二、认识Halcon函数1. 什么是Halcon函数2. Halcon函数的特点3. Halcon函数的应用领域三、Halcon函数中文速查表1. 速查表的作用2. 速查表的结构3. 速查表的使用方法四、Halcon函数手册1. 手册的重要性2. 手册的内容3. 手册的解读技巧五、我的观点和理解1. 对Halcon函数的看法2. 对速查表和手册的建议六、总结与展望一、引言Halcon是一款强大的机器视觉软件,广泛应用于工业自动化、医疗影像、智能交通等领域。
了解和掌握Halcon函数对于工程师和研究人员来说至关重要。
在本文中,我们将深入探讨Halcon函数中文速查表与手册,帮助读者更好地理解和运用Halcon函数。
二、认识Halcon函数1. 什么是Halcon函数Halcon函数是Halcon软件中提供的一系列功能模块,用于实现图像处理、模式识别、测量检测等图像分析任务。
这些函数包括图像加载、预处理、特征提取、匹配定位等多个方面,为用户提供了丰富的工具和算法。
2. Halcon函数的特点Halcon函数具有高效、稳定、精准的特点,可以处理各种复杂的图像分析问题。
无论是对图像的处理还是对算法的优化,Halcon函数都表现出了出色的性能。
3. Halcon函数的应用领域Halcon函数被广泛应用于工业质检、医疗影像诊断、智能交通、安防监控等各个领域。
其强大的功能和灵活的应用使得Halcon成为了行业中的重要工具。
三、Halcon函数中文速查表1. 速查表的作用Halcon函数中文速查表是Halcon函数的中文汇总整理,方便用户在实际应用中快速查阅各种函数的用法和参数。
2. 速查表的结构速查表通常包括函数名称、参数列表、返回值、功能描述等内容,以表格形式呈现,清晰易读。
3. 速查表的使用方法通过速查表,用户可以快速查找想要使用的函数,了解其功能和用法,以及相关的注意事项。
halcon常用的模板匹配算子
Halcon常用的模板匹配算子有以下几种:
1. match_template: 使用灰度模板进行匹配,可以匹配在亮度、尺度等方面变化的目标。
2. match_shape_model: 使用形状模板进行匹配,可以匹配在旋转、尺度、平移等方面变化的目标。
3. match_gray: 使用基于灰度变化的模板匹配算法,可以匹配在灰度、亮度等方面变化的目标。
4. match_texture: 使用基于纹理的模板匹配算法,可以匹配在纹理、颜色等方面变化的目标。
5. match_pose: 使用基于姿态的模板匹配算法,可以匹配在姿态、旋转等方面变化的目标。
这些模板匹配算子可以根据不同的应用场景选择合适的算子来进行目标匹配,能够提供高精度的匹配结果。
基于HALCON的模板匹配方法总结分类:halcon学习2013-06-26 16:02 47人阅读评论(0) 收藏举报halcon形状匹配算法德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。
HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。
这三种匹配的方法各具特点,分别适用于不同的图像特征,但都有创建模板和寻找模板的相同过程。
这三种方法里面,我主要就第三种-基于形状的匹配,做了许多的实验,因此也做了基于形状匹配的物体识别,基于形状匹配的视频对象分割和基于形状匹配的视频对象跟踪这些研究,从中取得较好的效果,简化了用其他工具,比如VC++来开发的过程。
在VC下往往针对不同的图像格式,就会弄的很头疼,更不用说编写图像特征提取、模板建立和搜寻模板的代码呢,我想其中间过程会很复杂,效果也不一定会显著。
下面我就具体地谈谈基于HALCON的形状匹配算法的研究和心得总结。
1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。
基本流程是这样的,如下所示:⑴首先确定出ROI的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即可,gen_rectangle1()这个函数就会帮助你生成一个矩形,利用area_center()找到这个矩形的中心;⑵然后需要从图像中获取这个矩形区域的图像,reduce_domain()会得到这个ROI;这之后就可以对这个矩形建立模板,而在建立模板之前,可以先对这个区域进行一些处理,方便以后的建模,比如阈值分割,数学形态学的一些处理等等;⑶接下来就可以利用create_shape_model()来创建模板了,这个函数有许多参数,其中金字塔的级数由Numlevels指定,值越大则找到物体的时间越少,AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。
HALCON算子一Classification1.1 Gaussian-Mixture-Models1.add_sample_class_gmm把一个训练样本添加到一个高斯混合模型的训练数据上。
2.classify_class_gmm通过一个高斯混合模型来计算一个特征向量的类。
3. clear_all_class_gmm清除所有高斯混合模型。
4. clear_class_gmm清除一个高斯混合模型。
5. clear_samples_class_gmm清除一个高斯混合模型的训练数据。
6. create_class_gmm为分类创建一个高斯混合模型。
7.evaluate_class_gmm通过一个高斯混合模型评价一个特征向量。
8. get_params_class_gmm返回一个高斯混合模型的参数。
9. get_prep_info_class_gmm计算一个高斯混合模型的预处理特征向量的信息内容。
10. get_sample_class_gmm从一个高斯混合模型的训练数据返回训练样本。
11. get_sample_num_class_gmm返回存储在一个高斯混合模型的训练数据中的训练样本的数量。
12. read_class_gmm从一个文件中读取一个高斯混合模型。
13. read_samples_class_gmm从一个文件中读取一个高斯混合模型的训练数据。
14. train_class_gmm训练一个高斯混合模型。
15. write_class_gmm向文件中写入一个高斯混合模型。
16. write_samples_class_gmm向文件中写入一个高斯混合模型的训练数据。
1.2 Hyperboxes1. clear_sampset释放一个数据集的内存。
2. close_all_class_box清除所有分类器。
3. close_class_box清除分类器。
4. create_class_box创建一个新的分类器。
halcon——缺陷检测常⽤⽅法总结(模板匹配(定位)+差分)引⾔机器视觉中缺陷检测分为⼀下⼏种:blob分析+特征模板匹配(定位)+差分光度⽴体:特征训练测量拟合频域+空间域结合:深度学习本篇主要总结⼀下缺陷检测中的定位+差分的⽅法。
即⽤形状匹配,局部变形匹配去定位然后⽤差异模型去检测缺陷。
模板匹配(定位)+差分整体思路(形状匹配):1. 先定位模板区域后,求得模板区域的坐标,创建物品的形状模板create_shape_model,注意把模板的旋转⾓度改为rad(0)和rad(360)。
2. 匹配模板find_shape_model时,由于物品的缺陷使形状有局部的改变,所以要把MinScore设置⼩⼀点,否则匹配不到模板。
并求得匹配项的坐标。
3. 关键的⼀步,将模板区域仿射变换到匹配成功的区域。
由于差集运算是在相同的区域内作⽤的,所以必须把模板区域转换到匹配项的区域。
4. 之后求差集,根据差集部分的⾯积判断该物品是否有缺陷。
模板匹配(定位)+差分的⽅法主要⽤来检测物品损坏,凸起,破洞,缺失,以及质量检测等。
halcon例程分析:1,印刷质量缺陷检测(print_check.hdev)该例程⽤到了差异模型,将⼀个或多个图像同⼀个理想图像做对⽐,去找到明显的不同。
进⽽鉴定出有缺陷的物体。
差异模型的优势是可以直接通过它们的灰度值做⽐较,并且通过差异图像,⽐较可以被空间地加权。
变化模型检测缺陷的整体思路:1. create_variation_model —— 创建⼀个差异模型2. get_variation_model —— 获得差异模型3. train_variation_model —— 训练差异模型4. prepare_variation_model —— 准备差异模型5. compare_variation_model —— ⽐较模型与实例6. clear_variation_model —— 清除差异模型dev_update_off ()* 选择第1张图像创建形状模板read_image (Image, 'pen/pen-01')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window (0, 0, Width, Height, 'black', WindowHandle)set_display_font (WindowHandle, 16, 'mono', 'true', 'false')dev_set_color ('red')dev_display (Image)* 把我感兴趣的区域抠出来,原则上范围越⼩越好,因为这样创建模板时⼲扰会少很多threshold (Image, Region, 100, 255)fill_up (Region, RegionFillUp)difference (RegionFillUp, Region, RegionDifference)shape_trans (RegionDifference, RegionTrans, 'convex')dilation_circle (RegionTrans, RegionDilation, 8.5)reduce_domain (Image, RegionDilation, ImageReduced)inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 1, 20)gen_contours_skeleton_xld (ModelRegions, Model, 1, 'filter')* 获得抠图区域的中⼼,这是参考点area_center (RegionDilation, Area, RowRef, ColumnRef)* 创建形状模板create_shape_model (ImageReduced, 5, rad(-10), rad(20), 'auto', 'none', 'use_polarity', 20, 10, ShapeModelID)* 创建变化模型(⽤于和缺陷⽐较)create_variation_model (Width, Height, 'byte', 'standard', VariationModelID)* ⽂件夹中前15张图⽚是质量良好的,可以⽤来训练模板for I := 1 to 15 by 1read_image (Image, 'pen/pen-' + I$'02d')* 先寻找模板的实例find_shape_model (Image, ShapeModelID, rad(-10), rad(20), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)if (|Score| == 1)if (|Score| == 1)* 使⽤仿射变换,将当前图像平移旋转到与模板图像重合,注意是当前图像转向模板图像vector_angle_to_rigid (Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D)affine_trans_image (Image, ImageTrans, HomMat2D, 'constant', 'false')* 训练差异模型train_variation_model (ImageTrans, VariationModelID)dev_display (ImageTrans)dev_display (Model)endifendfor* 获得差异模型get_variation_model (MeanImage, VarImage, VariationModelID)* 做检测之前可以先⽤下⾯这个算⼦对可变模型进⾏设参,这是⼀个经验值,需要调试者调整prepare_variation_model (VariationModelID, 20, 3)dev_set_draw ('margin')NumImages := 30* 可变模板训练完成后,我们终于可以进⼊主题,马上对所有图像进⾏缺陷检测,思想就是差分for I := 1 to 30 by 1read_image (Image, 'pen/pen-' + I$'02d')* 要注意做差分的两幅图像分辨率相同,当然也需要通过仿射变换把待检测的图像转到与模板图像重合* 先寻找模板的实例find_shape_model (Image, ShapeModelID, rad(-10), rad(20), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) if (|Score| == 1)* 使⽤仿射变换,将当前图像平移旋转到与模板图像重合,注意是当前图像转向模板图像vector_angle_to_rigid (Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D)affine_trans_image (Image, ImageTrans, HomMat2D, 'constant', 'false')* 抠图reduce_domain (ImageTrans, RegionDilation, ImageReduced)* 差分(就是检查两幅图像相减,剩下的区域就是不同的地⽅了,与模板图像不同的地⽅就是缺陷)*这⾥可不能⽤difference做差分啊,halcon为变形模板提供了专门的差分算⼦:compare_variation_modelcompare_variation_model (ImageReduced, RegionDiff, VariationModelID)connection (RegionDiff, ConnectedRegions)* 特征选择:⽤⼀些特征来判断这幅图像印刷是否有缺陷,这⾥使⽤⾯积* 其实可以考虑利⽤区域⾯积的⼤⼩来判断缺陷的严重程度,这⾥就不过多讨论了select_shape (ConnectedRegions, RegionsError, 'area', 'and', 20, 1000000)count_obj (RegionsError, NumError)dev_clear_window ()dev_display (ImageTrans)dev_set_color ('red')dev_display (RegionsError)set_tposition (WindowHandle, 20, 20)if (NumError == 0)dev_set_color ('green')write_string (WindowHandle, 'Clip OK')elsedev_set_color ('red')write_string (WindowHandle, 'Clip not OK')endifendifif (I < NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendfor* 结语:如果发现前⾯作为训练变形模板的良好图像也被判定为NG,* 可以调整prepare_variation_model参数* 或者调整select_shape特征筛选的标准相关算⼦分析:create_variation_model(创建⼀个差异模型)create_variation_model(Width, Height, Type, Mode ,ModelID)//创建⼀个ID为ModelID,宽为Width,⾼为Height,类型为Type的差异模型参数参数Mode决定了创建标准图像和相应的变化图像的⽅法。
HALCON算子函數——Chapter 10 : Matching-3D
Chapter_10_:Matching-3D
1. affine_trans_object_model_3d
功能:把一個任意有限3D變換用於一個3D目標模型。
2. clear_all_object_model_3d
功能:釋放所有3D目標模型的內存。
3. clear_all_shape_model_3d
功能:釋放所有3D輪廓模型的內存。
4. clear_object_model_3d
功能:釋放一個3D目標模型的內存。
5. clear_shape_model_3d_
功能:釋放一個3D輪廓模型的內存。
6. convert_point_3d_cart_to_spher
功能:把直角坐標系中的一個3D點轉變為極坐標。
7. convert_point_3d_spher_to_cart
功能:把極坐標中的一個3D點轉變為直角坐標。
8. create_cam_pose_look_at_point
功能:從攝像機中心和觀察方向創建一個3D攝像機位置。
9. create_shape_model_3d
功能:為匹配准備一個3D目標模型。
10. find_shape_model_3d
功能:在一個圖像中找出一個3D模型的最佳匹配。
11. get_object_model_3d_params
功能:返回一個3D目標模型的參數。
12. get_shape_model_3d_contours
功能:返回一個3D輪廓模型視圖的輪廓表示。
13. get_shape_model_3d_params
功能:返回一個3D輪廓模型的參數。
14. project_object_model_3d
功能:把一個3D目標模型的邊緣投影到圖像坐標中。
15. project_shape_model_3d
功能:把一個3D輪廓模型的邊緣投影到圖像坐標中。
16. read_object_model_3d_dxf
功能:從一個DXF文件中讀取一個3D目標模型。
17. read_shape_model_3d
功能:從一個文件中讀取一個3D輪廓模型。
18. trans_pose_shape_model_3d
功能:把一個3D目標模型的坐標系中的位置轉變為一個3D輪廓模
型的參考坐標系中的位置,反之亦然。
19. write_shape_model_3d
功能:向一個文件寫入一個3D輪廓模型。