HALCON算子函数Chapter 6:Graphics
- 格式:doc
- 大小:81.50 KB
- 文档页数:15
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) 计算矩形区域( 平行输入坐标轴) 。
1. Halcon算子概述Halcon是一种强大的机器视觉软件,它由MVTec开发,可用于各种工业和非工业应用。
在Halcon中,算子是至关重要的组成部分,它们可以实现图像处理中的各种功能,如滤波、边缘检测、特征提取等。
本文将以算子作为主题,深入探讨Halcon算子的各种特性和用法。
2. Halcon算子的分类Halcon算子可以分为预处理算子、过滤算子、分割算子、匹配算子、测量算子等多个类别。
每个类别都包含了众多的算子,它们可以根据图像处理任务的不同需求进行灵活组合和调用。
3. Halcon算子的特性Halcon算子具有许多独特的特性,如多样的输入输出形式、灵活的参数设置、高效的运算速度等。
这些特性使得Halcon算子在图像处理领域得到广泛应用,并受到了众多工程师和科研人员的喜爱。
4. Halcon算子的使用技巧在使用Halcon算子时,熟练掌握一些技巧和经验是非常重要的。
合理设置算子的参数、选择适当的算法、理解算子的内部原理等,都可以帮助我们更好地使用Halcon算子,提高图像处理的效率和准确性。
通过一些典型的应用案例,我们可以深入了解Halcon算子的实际应用。
这些案例涵盖了工业质检、医疗影像、无人驾驶、智能制造等多个领域,展示了Halcon算子的强大功能和广泛适用性。
6. 我对Halcon算子的个人理解作为一名Halcon用户,我对Halcon算子有着深刻的认识和体会。
我认为Halcon算子不仅仅是图像处理的工具,更是一种思维方式和解决问题的哲学。
通过深入学习和使用Halcon算子,我对图像处理和机器视觉有了全新的认识和理解。
总结与回顾通过本文的全面介绍和深度探讨,我们对Halcon算子有了更加全面和深入的了解。
从算子的分类到使用技巧,再到实际案例分析,我们逐步领略了Halcon算子的强大功能和潜力。
我相信,在今后的工作和研究中,我们可以更好地运用Halcon算子,为图像处理和机器视觉领域的发展做出更大的贡献。
文章标题:深度解析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算子函数(六)GraphicsHALCON 算子函数——Chapter 6 : Graphics 6.1 Drawing1. drag_region1功能:一个区域的交互运动。
2. drag_region2功能:一个带有定点规格区域的交互运动。
3. drag_region3功能:一个带有限制位置区域的交互运动。
4. draw_circle功能:一个圆的交互绘图。
5. draw_circle_mod功能:一个圆的交互绘图。
6. draw_ellipse功能:一个椭圆的交互绘图。
7. draw_ellipse_mod_功能:一个椭圆的交互绘图。
8. draw_line功能:画一根线。
9. draw_line_mod功能:画一根线。
10. draw_nurbs功能:一个NURBS曲线的交互绘图。
11. draw_nurbs_interp功能:使用插值的一个NURBS曲线的交互绘图。
12. draw_nurbs_interp_mod功能:使用插值的一个NURBS曲线的交互修正。
13. draw_nurbs_mod功能:一个NURBS曲线的交互修正。
14. draw_point功能:画一个点。
15. draw_point_mod功能:画一个点。
16.draw_polygon功能:一个多边形的交互绘图。
17. draw_rectangle1功能:画一个与坐标轴平行的矩形。
18. draw_rectangle1_mod功能:画一个与坐标轴平行的矩形。
19. draw_rectangle2功能:任意定向矩形的交互绘图。
20. draw_rectangle2_mod功能:任意定向矩形的交互绘图。
21. draw_region功能:一个闭区域的交互绘图。
22. draw_xld功能:一个轮廓的交互绘图。
23. draw_xld_mod功能:一个轮廓的交互修正。
6.2 Gnuplot1. gnuplot_close功能:关闭所有打开的gnuplot文件或者终止一个活动的gnuplot子流程。
halcon常用算子原理Halcon是一款常用的机器视觉编程软件,拥有丰富的算子库。
算子是Halcon中用于实现图像处理和分析的基本操作单元,通过对图像进行各种算子操作,可以提取出感兴趣的特征信息,实现目标检测、图像匹配、测量等功能。
本文将介绍Halcon常用算子的原理和使用方法。
一、算子的基本概念算子是Halcon中的一个核心概念,它是一种用于对图像进行操作和处理的函数。
算子可以接受一个或多个输入参数,并根据这些参数对输入图像进行处理,生成输出结果。
Halcon提供了丰富的算子库,包括图像预处理、特征提取、形状分析、匹配等各个方面的算子,用户可以根据需要选择合适的算子进行组合使用。
二、算子的分类根据功能和用途的不同,Halcon中的算子可以分为以下几类:1. 图像预处理算子:用于对输入图像进行去噪、平滑、增强等预处理操作,以提高后续处理的效果。
2. 特征提取算子:用于从输入图像中提取出感兴趣的特征信息,如边缘、角点、直线、圆等。
3. 形状分析算子:用于对输入图像中的目标进行形状分析,如面积、周长、矩形度等。
4. 目标检测算子:用于在输入图像中检测目标的位置和姿态,如模板匹配、形状匹配、边缘匹配等。
5. 图像匹配算子:用于对输入图像进行模板匹配,找出与模板相似的目标。
6. 测量算子:用于对输入图像中的目标进行测量,如距离、角度、直径等。
三、算子的使用方法在Halcon中使用算子非常简单,只需按照以下步骤进行操作:1. 加载图像:使用read_image算子加载输入图像。
2. 预处理图像:根据需要使用不同的预处理算子对图像进行预处理,如smooth_image、reduce_noise等。
3. 提取特征:根据需要使用不同的特征提取算子对图像进行特征提取,如edges_image、threshold等。
4. 分析形状:根据需要使用不同的形状分析算子对目标进行形状分析,如area_center、orientation等。
图像、窗口基础操作部分基础操作dev_close_window()关闭当前激活的窗口read_image( : Image : FileName : )读取图像,可以支持多种格式,比如TIFF,PNG,JPEG-XR,JPEG-2000等,还支持一次性读取多个图像。
Image:输出,读取完后在halcon所存放的变量名FileName:图片路径,可以是多个路径,可以是绝对路径或者相对路径,还可以省略扩展名示例:* Reading an image:read_image(Image,'mreut')* Reading 3 images into an image array:read_image(Images,['ic0','ic1','ic2'])stop()停止程序(等待用户继续运行)get_image_size(Image : : : Width, Height)获取图像的尺寸Image:要获取尺寸的图像Width:输出,图像的宽度Height:输出,图像的高度dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)打开一个新的图像窗口Row:图像窗口左上角的起始行,默认0。
(好像没什么用)Column:图像窗口左上角的起始列,默认0.(好像没什么用)Width:图像窗口的宽度,默认256Height:图像窗口的高度,默认256Background:新窗口的背景颜色,默认黑色(black)WindowHandle:窗口的识别Iddev_display(Object : : : )将图像显示到当前的图像窗口上Object:要显示的图像对象dev_set_draw( : : DrawMode : )设置Region的显示形式DrawMode:区域的显示形式,默认'fill',可选'fill', 'margin',fill表示显示实心区域,margin 表示只显示区域的外边界dev_set_color( : : ColorName : )设置输出颜色ColorName:颜色名称,默认’white’,可选值(格式):'white', 'black', 'gray', 'red', 'green', 'blue', '#003075', '#e53019', '#ffb529'disp_message( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : )输出一段文字信息WindowHandle:要显示文字的窗口handleString:要显示的文字信息,会显示在一个行里CoordSystem:使用的坐标系,默认window,可选'window', 'image'Row,Column:文字坐标,默认12Color:文字颜色,默认'black',可选'', 'black', 'blue', 'yellow', 'red', 'green', 'cyan', 'magenta', 'forest green', 'lime green', 'coral', 'slate blue'Box:是否包含在一个背景框内,默认'true',可选'true', 'false'基础语法If(‘condition’) … else … endif条件判断While(‘condition’) … endwhileWhile循环for Index := ‘start‘ to ‘max’ by ‘step’ … endforfor循环图像处理部分基础操作图像转化convert_image_type(Image : ImageConverted : NewType : )转换图像类型Image : 要转化的图像ImageConverted : 输出,转化后的图像NewType :要转化的图像类型,详见Halcon的图像像素类型decompose3(MultiChannelImage : Image1, Image2, Image3 : : )把一个RGB图像转化为3个单通道的图像MultiChannelImage:输入的多通道图像(应该是3通道?)Image1, Image2, Image3:输出,转化后的单通道图像,1是red,2是green,3是bluergb1_to_gray(RGBImage : GrayImage : : )把一张RGB图像转化为灰度图像RGBImage:输入的RGB图像GrayImage:输出,得到的灰度图像腐蚀膨胀gen_disc_se( : SE : Type, Width, Height, Smax : )创建一个椭圆形结构元素,用于图像的腐蚀膨胀SE:输出,生成后的结构元素,图像类型Type:结构元素的图像像素类型,默认是’byte’,可选:’byte’,’uint2’,’real’,详见Halcon 的图像像素类型gray_erosion(Image, SE : ImageErosion : : )使用结构元素对图像做腐蚀操作(结构元素可以是gen_disc_se的输出)Image:要做腐蚀操作的图像SE:结构元素ImageErosion:输出,腐蚀后的图像gray_dilation(Image, SE : ImageDilation : : )使用结构元素对图像做膨胀操作(结构元素可以是gen_disc_se的输出)Image:要做膨胀操作的图像SE:结构元素ImageDilation:输出,膨胀后的图像区域处理部分基础操作threshold(Image : Region : MinGray, MaxGray : )将图像根据灰度值二值化Image:需要进行二值化的图像Region:输出,二值化后的结果区域MinGray:最小灰度值,默认128MaxGray:最大灰度值,默认255,必须大于MinGrayconnection(Region : ConnectedRegions : : )计算出区域中连接的部分Region:要计算的区域ConnectedRegions:输出,计算后的Region数组,相连的部分将被划分为一个区域,会以不同颜色加以区分select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )从一个区域数组中选择出符合某特征条件的区域Regions:输入的区域数组SelectedRegions:输出,选出的符合某些特征条件的区域数组Features:条件特征,详见区域特征说明Operation:对于符合特征的区域的连接操作,可以是And 或者OrMin:特征的最小值Max:特征的最大值示例:read_image(Image,'monkey')threshold(Image,S1,160,255)connection(S1,S2)select_shape(S2,Eyes,['area','anisometry'],'and',[500,1.0],[50000,1.7])disp_region(Eyes,WindowHandle)difference(Region, Sub : RegionDifference : : )计算两个区域的差Region :需要处理的区域Sub :被减去的区域RegionDifference :输出,计算后的结果。
Halcon形态学算子是用于图像处理的一种数学方法,主要用于提取和分析图像中的特定形状。
在Halcon中,形态学算子主要包括以下几种:1. 二值化(Binary Image):将图像转换为二值图像,即黑白图像。
常用的二值化方法有阈值法、自适应阈值法等。
2. 膨胀(Dilation):对二值图像进行膨胀操作,可以扩大图像中的白色区域。
膨胀操作可以通过结构元素来实现,结构元素的形状和大小决定了膨胀的效果。
3. 腐蚀(Erosion):对二值图像进行腐蚀操作,可以缩小图像中的白色区域。
腐蚀操作同样可以通过结构元素来实现,结构元素的形状和大小决定了腐蚀的效果。
4. 开运算(Opening):先进行腐蚀操作,再进行膨胀操作。
开运算可以消除小的白色区域,同时保持大的白色区域不变。
5. 闭运算(Closing):先进行膨胀操作,再进行腐蚀操作。
闭运算可以消除小的黑色区域,同时保持大的黑色区域不变。
6. 形态学梯度(Morphological Gradient):计算图像的灰度梯度信息,用于提取图像的边缘信息。
7. 顶帽变换(Top Hat Transformation):先进行腐蚀操作,再进行膨胀操作。
顶帽变换可以提取图像中的局部最大值信息。
8. 黑帽变换(Black Hat Transformation):先进行膨胀操作,再进行腐蚀操作。
黑帽变换可以提取图像中的局部最小值信息。
9. 形态学重建(Morphological Reconstruction):根据原始图像和形态学操作的结果,恢复原始图像的信息。
10. 形态学滤波器(Morphological Filters):通过形态学操作实现的滤波器,如平滑滤波器、边缘检测滤波器等。
在Halcon中,可以使用morphology模块中的函数来实现这些形态学算子。
HALCON算子函数(七)ImageHALCON 算子函数——Chapter 7 : Image7.1 Access1. get_grayval功能:获取一个图像目标的灰度值。
2. get_image_pointer1功能:获取一个通道的指针。
3. get_image_pointer1_rect功能:获取图像数据指针和输入图像区域内最小矩形内部的图像数据。
4. get_image_pointer3功能:获取一个彩色图像的指针。
5. get_image_time功能:查找图像被创建的时间。
7.2 Acquisition1. close_all_framegrabbers功能:关闭所有图像获取设备。
2. close_framegrabber功能:关闭指定的图像获取设备。
3. get_framegrabber_lut功能:查找图像获取设备的查询表。
4. get_framegrabber_param功能:查找一个图像获取设备的指定参数。
5. grab_data功能:从指定的图像获取设备获取图像和预处理图像数据。
6. grab_data_async功能:从指定的图像获取设备获取图像和预处理图像数据并且开始下一个异步获取。
7. grab_image功能:从指定的图像获取设备获取一个图像。
8. grab_image_async功能:从指定的图像获取设备获取一个图像并且开始下一个异步获取。
9. grab_image_start功能:从指定的图像获取设备开始下一个异步获取。
10. info_framegrabber功能:从指定的图像获取设备查找信息。
11. open_framegrabber功能:打开并配置一个图像获取设备。
12. set_framegrabber_lut功能:设置图像获取设备查询表。
13. set_framegrabber_param功能:设置一个图像获取设备的指定参数。
7.3 Channel1. access_channel功能:获取一个多通道图像的一个通道。
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 反光优化算子English Answer:Halcon's reflection optimization operator is a powerful tool for enhancing the quality of images with specular reflections. It works by modeling the reflection process as a combination of a diffuse reflection and a specular reflection. The diffuse reflection is assumed to be uniform over the surface of the object, while the specular reflection is assumed to be concentrated in a single direction. The operator then uses this model to estimate the parameters of the reflection process, and to remove the specular reflection from the image.The reflection optimization operator can be used to improve the quality of images in a variety of applications, including:Machine vision: The operator can be used to remove reflections from objects in order to improve the accuracyof object recognition and inspection systems.Photography: The operator can be used to remove reflections from images in order to improve the overall quality of the image.Computer graphics: The operator can be used to create realistic reflections in computer-generated images.The reflection optimization operator is a versatiletool that can be used to improve the quality of images in a variety of applications. It is easy to use and can be applied to images of any size or resolution.中文回答:halcon 反光优化算子。
sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0)一幅图减另一幅图。
用一幅图的灰度减另一幅的灰度成新的一幅图。
mult_image (Image, ImagePart, ImageResult, 0.015, 0)一幅图加一幅成的一幅图convert_image_type (Traffic2, ImageConverted2, 'int2')转换图像的格式crop_part (ImageNoise, ImagePart, 0, 0, Width, Height)取出一幅图的中部分dots_image (ImageResult, DotImage, 5, 'dark', 2)取出图像中圆点partition_dynamic (SelectedRegions, Partitioned, 25, 20)根据各个区域的特征将各个区域分割开。
intersection (Partitioned, Region, Characters)取出两个区域中重叠的部分,如果Region有两个区域在Partitioned中,则这两个区域合并成一区域。
difference (RegionDilation, RegionErosion, RegionDifference) 取出两个区域中不重叠的部分。
critical_points_sub_pix (FilterResponse, 'facet', 1.5, 0.7, RowMin, ColMin, RowMax, ColMax, RowSaddle, ColSaddle)取出图像中的关键点。
corner_response (Image, FilterResponse, 3, 0.04)auto_threshold (Image, Regions, 10)自动阈值分割,根据灰度直方图中两波峰中的波谷取出阈值。
Halcon导出C#代码结构学习// File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0// 这个文件是 Halcon 10.0 版本导出的 C# 代码// 函数体// 变量声明// 主要的处理函数// 异常捕获与处理// 内存释放// 主函数////// 添加对HalconDotNet的引用using HalconDotNet;// 导出的类名: HDevelopExportpublic partial class HDevelopExport{#if !NO_EXPORT_APP_MAIN//构造函数public HDevelopExport(){// Default settings used in HDevelopHOperatorSet.SetSystem("do_low_error", "false");action();}#endif// Procedures 函数体// External procedures 外部函数体// Chapter: Matching / Shape-Based 匹配// Short Description: Display the results of Shape-Based Matching.简述函数功能:显示形状匹配的结果public void dev_display_shape_matching_results (HTuple hv_ModelID, HTuple hv_Color,HTuple hv_Row, HTuple hv_Column, HTuple hv_Angle, HTuple hv_ScaleR, HTuple hv_ScaleC,HTuple hv_Model){// Local iconic variables// 局部图像变量HObject ho_ModelContours=null, ho_ContoursAffinTrans=null;// Local control variables// 局部控制变量HTuple hv_NumMatches, hv_Index=new HTuple();HTuple hv_Match=new HTuple(), hv_HomMat2DIdentity=new HTuple();HTuple hv_HomMat2DScale=new HTuple(), hv_HomMat2DRotate=new HTuple();HTuple hv_HomMat2DTranslate=new HTuple();HTuple hv_Model_COPY_INP_TMP = hv_Model.Clone();HTuple hv_ScaleC_COPY_INP_TMP = hv_ScaleC.Clone();HTuple hv_ScaleR_COPY_INP_TMP = hv_ScaleR.Clone();// Initialize local and output iconic variablesHOperatorSet.GenEmptyObj(out ho_ModelContours);HOperatorSet.GenEmptyObj(out ho_ContoursAffinTrans);try{//This procedure displays the results of Shape-Based Matching.//这个函数处理过程的作用是显示匹配的结果hv_NumMatches = new HTuple(hv_Row.TupleLength());if ((int)(new HTuple(hv_NumMatches.TupleGreater(0))) != 0) {if ((int)(new HTuple((new HTuple(hv_ScaleR_COPY_INP_TMP.TupleLength())).TupleEqual(1))) != 0){HOperatorSet.TupleGenConst(hv_NumMatches,hv_ScaleR_COPY_INP_TMP, out hv_ScaleR_COPY_INP_TMP);}if ((int)(new HTuple((new HTuple(hv_ScaleC_COPY_INP_TMP.TupleLength())).TupleEqual(1))) != 0){HOperatorSet.TupleGenConst(hv_NumMatches,hv_ScaleC_COPY_INP_TMP, out hv_ScaleC_COPY_INP_TMP);}if ((int)(new HTuple((new HTuple(hv_Model_COPY_INP_TMP.TupleLength())).TupleEqual(0))) != 0){HOperatorSet.TupleGenConst(hv_NumMatches, 0, out hv_Model_COPY_INP_TMP);}else if ((int)(new HTuple((new HTuple(hv_Model_COPY_INP_TMP.TupleLength())).TupleEqual(1))) != 0){HOperatorSet.TupleGenConst(hv_NumMatches,hv_Model_COPY_INP_TMP, out hv_Model_COPY_INP_TMP);}for (hv_Index=0; (int)hv_Index<=(int)((new HTuple(hv_ModelID.TupleLength()))-1); hv_Index = (int)hv_Index + 1){ho_ModelContours.Dispose();HOperatorSet.GetShapeModelContours(outho_ModelContours, hv_ModelID.TupleSelect(hv_Index), 1);if (HDevWindowStack.IsOpen()){HOperatorSet.SetColor(HDevWindowStack.GetActive(),hv_Color.TupleSelect(hv_Index%(new HTuple(hv_Color.TupleLength()))));}for (hv_Match=0; hv_Match.Continue(hv_NumMatches-1, 1); hv_Match = hv_Match.TupleAdd(1)){if ((int)(new HTuple(hv_Index.TupleEqual(hv_Model_COPY_INP_TMP.TupleSel ect(hv_Match)))) != 0){HOperatorSet.HomMat2dIdentity(outhv_HomMat2DIdentity);HOperatorSet.HomMat2dScale(hv_HomMat2DIdentity,hv_ScaleR_COPY_INP_TMP.TupleSelect(hv_Match),hv_ScaleC_COPY_INP_TMP.TupleSelect(hv_Match), 0, 0, out hv_HomMat2DScale);HOperatorSet.HomMat2dRotate(hv_HomMat2DScale,hv_Angle.TupleSelect(hv_Match), 0, 0, out hv_HomMat2DRotate);HOperatorSet.HomMat2dTranslate(hv_HomMat2DRotate, hv_Row.TupleSelect(hv_Match), hv_Column.TupleSelect(hv_Match), out hv_HomMat2DTranslate);ho_ContoursAffinTrans.Dispose();HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ContoursAffinTrans,hv_HomMat2DTranslate);if (HDevWindowStack.IsOpen()){HOperatorSet.DispObj(ho_ContoursAffinTrans, HDevWindowStack.GetActive());}}}}}// 内存释放ho_ModelContours.Dispose();ho_ContoursAffinTrans.Dispose();return;}//捕获异常catch (HalconException HDevExpDefaultException){ho_ModelContours.Dispose();ho_ContoursAffinTrans.Dispose();//处理异常throw HDevExpDefaultException;}}// Chapter: Develop// Short Description: Switch dev_update_pc, dev_update_var and dev_update_window to 'off'.public void dev_update_off (){// Initialize local and output iconic variables//This procedure sets different update settings to 'off'.//This is useful to get the best performance and reduce overhead.//// dev_update_pc(...); only in hdevelop// dev_update_var(...); only in hdevelop// dev_update_window(...); only in hdevelopreturn;}// Chapter: Graphics / Text// Short Description: This procedure writes a text message.public void disp_message (HTuple hv_WindowHandle, HTuple hv_String, HTuple hv_CoordSystem,HTuple hv_Row, HTuplehv_Column, HTuple hv_Color, HTuple hv_Box){// Local control variablesHTuple hv_Red, hv_Green, hv_Blue, hv_Row1Part;HTuple hv_Column1Part, hv_Row2Part, hv_Column2Part, hv_RowWin;HTuple hv_ColumnWin, hv_WidthWin, hv_HeightWin, hv_MaxAscent;HTuple hv_MaxDescent, hv_MaxWidth, hv_MaxHeight, hv_R1=new HTuple();HTuple hv_C1=new HTuple(), hv_FactorRow=new HTuple(), hv_FactorColumn=new HTuple();HTuple hv_Width=new HTuple(), hv_Index=new HTuple(), hv_Ascent=new HTuple();HTuple hv_Descent=new HTuple(), hv_W=new HTuple(), hv_H=new HTuple();HTuple hv_FrameHeight=new HTuple(), hv_FrameWidth=new HTuple();HTuple hv_R2=new HTuple(), hv_C2=new HTuple(), hv_DrawMode=new HTuple();HTuple hv_Exception=new HTuple(), hv_CurrentColor=new HTuple();HTuple hv_Color_COPY_INP_TMP = hv_Color.Clone();HTuple hv_Column_COPY_INP_TMP = hv_Column.Clone();HTuple hv_Row_COPY_INP_TMP = hv_Row.Clone();HTuple hv_String_COPY_INP_TMP = hv_String.Clone();// Initialize local and output iconic variables//This procedure displays text in a graphics window.////Input parameters://WindowHandle: The WindowHandle of the graphicswindow, where// the message should be displayed//String: A tuple of strings containing the text message to be displayed//CoordSystem: If set to 'window', the text position is given // with respect to the window coordinate system.// If set to 'image', image coordinates are used.// (This may be useful in zoomed images.)//Row: The row coordinate of the desired text position// If set to -1, a default value of 12 is used.//Column: The column coordinate of the desired text position// If set to -1, a default value of 12 is used.//Color: defines the color of the text as string.// If set to [], '' or 'auto' the currently set color is used.// If a tuple of strings is passed, the colors are used cyclically // for each new textline.//Box: If set to 'true', the text is written within a white box.////prepare windowHOperatorSet.GetRgb(hv_WindowHandle, out hv_Red, out hv_Green, out hv_Blue);HOperatorSet.GetPart(hv_WindowHandle, out hv_Row1Part, out hv_Column1Part, out hv_Row2Part,out hv_Column2Part);HOperatorSet.GetWindowExtents(hv_WindowHandle, out hv_RowWin, out hv_ColumnWin,out hv_WidthWin, out hv_HeightWin);HOperatorSet.SetPart(hv_WindowHandle, 0, 0, hv_HeightWin-1, hv_WidthWin-1);////default settingsif ((int)(new HTuple(hv_Row_COPY_INP_TMP.TupleEqual(-1))) != 0){hv_Row_COPY_INP_TMP = 12;}if ((int)(new HTuple(hv_Column_COPY_INP_TMP.TupleEqual(-1))) != 0){hv_Column_COPY_INP_TMP = 12;}if ((int)(new HTuple(hv_Color_COPY_INP_TMP.TupleEqual(new HTuple()))) != 0) {hv_Color_COPY_INP_TMP = "";}//hv_String_COPY_INP_TMP = (((""+hv_String_COPY_INP_TMP)+"")).TupleSplit("\n");////Estimate extentions of text depending on font size.HOperatorSet.GetFontExtents(hv_WindowHandle, out hv_MaxAscent, out hv_MaxDescent,out hv_MaxWidth, out hv_MaxHeight);if ((int)(new HTuple(hv_CoordSystem.TupleEqual("window"))) != 0) {hv_R1 = hv_Row_COPY_INP_TMP.Clone();hv_C1 = hv_Column_COPY_INP_TMP.Clone();}else{//transform image to window coordinateshv_FactorRow = (1.0*hv_HeightWin)/((hv_Row2Part-hv_Row1Part)+1);hv_FactorColumn = (1.0*hv_WidthWin)/((hv_Column2Part-hv_Column1Part)+1);hv_R1 = ((hv_Row_COPY_INP_TMP-hv_Row1Part)+0.5)*hv_FactorRow;hv_C1 = ((hv_Column_COPY_INP_TMP-hv_Column1Part)+0.5)*hv_FactorColumn;}////display text box depending on text sizeif ((int)(new HTuple(hv_Box.TupleEqual("true"))) != 0){//calculate box extentshv_String_COPY_INP_TMP = (" "+hv_String_COPY_INP_TMP)+" ";hv_Width = new HTuple();for (hv_Index=0; (int)hv_Index<=(int)((new HTuple(hv_String_COPY_INP_TMP.TupleLength()))-1); hv_Index = (int)hv_Index + 1){HOperatorSet.GetStringExtents(hv_WindowHandle,hv_String_COPY_INP_TMP.TupleSelect(hv_Index), out hv_Ascent, out hv_Descent, out hv_W, out hv_H);hv_Width = hv_Width.TupleConcat(hv_W);}hv_FrameHeight = hv_MaxHeight*(new HTuple(hv_String_COPY_INP_TMP.TupleLength()));hv_FrameWidth = (((new HTuple(0)).TupleConcat(hv_Width))).TupleMax();hv_R2 = hv_R1+hv_FrameHeight;hv_C2 = hv_C1+hv_FrameWidth;//display rectanglesHOperatorSet.GetDraw(hv_WindowHandle, out hv_DrawMode);HOperatorSet.SetDraw(hv_WindowHandle, "fill");HOperatorSet.SetColor(hv_WindowHandle, "light gray");HOperatorSet.DispRectangle1(hv_WindowHandle, hv_R1+3, hv_C1+3, hv_R2+3, hv_C2+3);HOperatorSet.SetColor(hv_WindowHandle, "white");HOperatorSet.DispRectangle1(hv_WindowHandle, hv_R1, hv_C1, hv_R2, hv_C2);HOperatorSet.SetDraw(hv_WindowHandle, hv_DrawMode);}else if ((int)(new HTuple(hv_Box.TupleNotEqual("false"))) != 0) {hv_Exception = "Wrong value of control parameter Box";throw new HalconException(hv_Exception);}//Write text.for (hv_Index=0; (int)hv_Index<=(int)((new HTuple(hv_String_COPY_INP_TMP.TupleLength()))-1); hv_Index = (int)hv_Index + 1){hv_CurrentColor = hv_Color_COPY_INP_TMP.TupleSelect(hv_Index%(newHTuple(hv_Color_COPY_INP_TMP.TupleLength())));if ((int)((new HTuple(hv_CurrentColor.TupleNotEqual(""))).TupleAnd(new HTuple(hv_CurrentColor.TupleNotEqual("auto")))) != 0){HOperatorSet.SetColor(hv_WindowHandle,hv_CurrentColor);}else{HOperatorSet.SetRgb(hv_WindowHandle, hv_Red, hv_Green, hv_Blue);}hv_Row_COPY_INP_TMP = hv_R1+(hv_MaxHeight*hv_Index);HOperatorSet.SetTposition(hv_WindowHandle,hv_Row_COPY_INP_TMP, hv_C1);HOperatorSet.WriteString(hv_WindowHandle,hv_String_COPY_INP_TMP.TupleSelect(hv_Index));}//reset changed window settingsHOperatorSet.SetRgb(hv_WindowHandle, hv_Red, hv_Green, hv_Blue);HOperatorSet.SetPart(hv_WindowHandle, hv_Row1Part,hv_Column1Part, hv_Row2Part,hv_Column2Part);return;}// Chapter: Graphics / Text// Short Description: Set font independent of OSpublic void set_display_font (HTuple hv_WindowHandle, HTuple hv_Size, HTuple hv_Font,HTuple hv_Bold, HTuple hv_Slant){// Local control variablesHTuple hv_OS, hv_Exception=new HTuple();HTuple hv_AllowedFontSizes=new HTuple(), hv_Distances=new HTuple();HTuple hv_Indices=new HTuple();HTuple hv_Bold_COPY_INP_TMP = hv_Bold.Clone();HTuple hv_Font_COPY_INP_TMP = hv_Font.Clone();HTuple hv_Size_COPY_INP_TMP = hv_Size.Clone();HTuple hv_Slant_COPY_INP_TMP = hv_Slant.Clone();// Initialize local and output iconic variables//This procedure sets the text font of the current window with//the specified attributes.//It is assumed that following fonts are installed on the system://Windows: Courier New, Arial Times New Roman//Linux: courier, helvetica, times//Because fonts are displayed smaller on Linux than on Windows,//a scaling factor of 1.25 is used the get comparable results.//For Linux, only a limited number of font sizes is supported, //to get comparable results, it is recommended to use one of the//following sizes: 9, 11, 14, 16, 20, 27//(which will be mapped internally on Linux systems to 11, 14, 17, 20, 25, 34)////input parameters://WindowHandle: The graphics window for which the font will be set//Size: The font size. If Size=-1, the default of 16 is used.//Bold: If set to 'true', a bold font is used//Slant: If set to 'true', a slanted font is used//HOperatorSet.GetSystem("operating_system", out hv_OS);if ((int)((new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(new HTuple()))).TupleOr(new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(-1)))) != 0) {hv_Size_COPY_INP_TMP = 16;}if ((int)(new HTuple((((hv_OS.TupleStrFirstN(2)).TupleStrLastN(0))).TupleEqual( "Win"))) != 0){//set font on Windows systemsif ((int)((new HTuple((new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("mono"))).TupleOr( newHTuple(hv_Font_COPY_INP_TMP.TupleEqual("Courier"))))).TupleOr(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("courier")))) != 0){hv_Font_COPY_INP_TMP = "Courier New";}else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("sans"))) != 0) {hv_Font_COPY_INP_TMP = "Arial";}else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("serif"))) != 0) {hv_Font_COPY_INP_TMP = "Times New Roman";}if ((int)(new HTuple(hv_Bold_COPY_INP_TMP.TupleEqual("true"))) != 0) {hv_Bold_COPY_INP_TMP = 1;}else if ((int)(new HTuple(hv_Bold_COPY_INP_TMP.TupleEqual("false"))) != 0) {hv_Bold_COPY_INP_TMP = 0;}else{hv_Exception = "Wrong value of control parameter Bold";throw new HalconException(hv_Exception);if ((int)(new HTuple(hv_Slant_COPY_INP_TMP.TupleEqual("true"))) != 0) {hv_Slant_COPY_INP_TMP = 1;}else if ((int)(new HTuple(hv_Slant_COPY_INP_TMP.TupleEqual("false"))) != 0) {hv_Slant_COPY_INP_TMP = 0;}else{hv_Exception = "Wrong value of control parameter Slant";throw new HalconException(hv_Exception);}try{HOperatorSet.SetFont(hv_WindowHandle, ((((((("-"+hv_Font_COPY_INP_TMP)+"-")+hv_Size_COPY_INP_TMP)+"-*-")+hv_Slant_COPY_INP_TMP)+"-*-*-")+hv_Bold_COPY_INP_TMP)+"-");}// 捕获异常catch (HalconException HDevExpDefaultException1){//异常处理HDevExpDefaultException1.T oHTuple(out hv_Exception);throw new HalconException(hv_Exception);}else{//set font for UNIX systemshv_Size_COPY_INP_TMP = hv_Size_COPY_INP_TMP*1.25;hv_AllowedFontSizes = new HTuple();hv_AllowedFontSizes[0] = 11;hv_AllowedFontSizes[1] = 14;hv_AllowedFontSizes[2] = 17;hv_AllowedFontSizes[3] = 20;hv_AllowedFontSizes[4] = 25;hv_AllowedFontSizes[5] = 34;if ((int)(new HTuple(((hv_AllowedFontSizes.TupleFind(hv_Size_COPY_INP_TM P))).TupleEqual(-1))) != 0){hv_Distances = ((hv_AllowedFontSizes-hv_Size_COPY_INP_TMP)).TupleAbs();HOperatorSet.TupleSortIndex(hv_Distances, out hv_Indices);hv_Size_COPY_INP_TMP = hv_AllowedFontSizes.TupleSelect(hv_Indices.TupleSelect(0));}if ((int)((new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("mono"))).TupleOr(n ew HTuple(hv_Font_COPY_INP_TMP.TupleEqual("Courier")))) != 0){hv_Font_COPY_INP_TMP = "courier";else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("sans"))) != 0) {hv_Font_COPY_INP_TMP = "helvetica";}else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("serif"))) != 0) {hv_Font_COPY_INP_TMP = "times";}if ((int)(new HTuple(hv_Bold_COPY_INP_TMP.TupleEqual("true"))) != 0) {hv_Bold_COPY_INP_TMP = "bold";}else if ((int)(new HTuple(hv_Bold_COPY_INP_TMP.TupleEqual("false"))) != 0) {hv_Bold_COPY_INP_TMP = "medium";}else{hv_Exception = "Wrong value of control parameter Bold";throw new HalconException(hv_Exception);}if ((int)(new HTuple(hv_Slant_COPY_INP_TMP.TupleEqual("true"))) != 0) {if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("times"))) != 0) {hv_Slant_COPY_INP_TMP = "i";}else{hv_Slant_COPY_INP_TMP = "o";}}else if ((int)(new HTuple(hv_Slant_COPY_INP_TMP.TupleEqual("false"))) != 0) {hv_Slant_COPY_INP_TMP = "r";}else{hv_Exception = "Wrong value of control parameter Slant";throw new HalconException(hv_Exception);}try{HOperatorSet.SetFont(hv_WindowHandle, ((((((("-adobe-"+hv_Font_COPY_INP_TMP)+"-")+hv_Bold_COPY_INP_TMP)+"-")+hv_Slant_COPY_INP_TMP)+"-normal-*-")+hv_Size_COPY_INP_TMP)+"-*-*-*-*-*-*-*");}// 捕获异常catch (HalconException HDevExpDefaultException1){HDevExpDefaultException1.T oHTuple(out hv_Exception);throw new HalconException(hv_Exception);}}return;}// Main procedure 主要的函数// 访问修饰符返回值类型函数名称// 类中的私有方法要被外部引用要修改访问修饰符,我们主要用的就是这个函数// 思考:如何把action()拆分成若个个处理步骤(函数)private void action(){// Local iconic variables// 局部图像变量HObject ho_Image=null, ho_Rectangle, ho_ImageReduced;HObject ho_ModelContours;// Local control variables//局部控制变量HTuple hv_Read_Path, hv_FileExists, hv_Width=new HTuple();HTuple hv_Height=new HTuple(), hv_WindowHandle=new HTuple();HTuple hv_Row, hv_Column, hv_Phi, hv_Length1, hv_Length2;HTuple hv_ModelID, hv_Row1, hv_Column1, hv_Angle, hv_Score;HTuple hv_Number;// Initialize local and output iconic variables//内部和外部图像变量初始化HOperatorSet.GenEmptyObj(out ho_Image);HOperatorSet.GenEmptyObj(out ho_Rectangle);HOperatorSet.GenEmptyObj(out ho_ImageReduced);HOperatorSet.GenEmptyObj(out ho_ModelContours);try{// dev_update_off(...); only in hdevelopif (HDevWindowStack.IsOpen()){HOperatorSet.CloseWindow(HDevWindowStack.Pop());}//文件路径,Htuple 类型的控制变量,在此相当于C#中的Stringhv_Read_Path = "C:/Users/Administrator/Desktop/1.BMP";HOperatorSet.FileExists(hv_Read_Path, out hv_FileExists);if ((int)(hv_FileExists) != 0){ho_Image.Dispose();HOperatorSet.ReadImage(out ho_Image, hv_Read_Path);HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);if (HDevWindowStack.IsOpen()){HOperatorSet.CloseWindow(HDevWindowStack.Pop());}HOperatorSet.SetWindowAttr("background_color","black");HOperatorSet.OpenWindow(0,0,hv_Width,hv_Height,0,"","", out hv_WindowHandle);HDevWindowStack.Push(hv_WindowHandle);set_display_font(hv_WindowHandle, 14, "mono", "true", "false");if (HDevWindowStack.IsOpen()){HOperatorSet.SetDraw(HDevWindowStack.GetActive(), "margin");}if (HDevWindowStack.IsOpen()){HOperatorSet.SetLineWidth(HDevWindowStack.GetActive(), 3);}if (HDevWindowStack.IsOpen()){HOperatorSet.SetColor(HDevWindowStack.GetActive(), "red");}if (HDevWindowStack.IsOpen()){HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());}}else{disp_message(3600, "未找到该文件!", "window", 12, 12, "black", "true");}//设置ROI区域if (HDevWindowStack.IsOpen()){HOperatorSet.SetDraw(HDevWindowStack.GetActive(), "margin");}HOperatorSet.DrawRectangle2(3600, out hv_Row, out hv_Column, out hv_Phi, out hv_Length1,out hv_Length2);ho_Rectangle.Dispose();HOperatorSet.GenRectangle2(out ho_Rectangle, hv_Row, hv_Column, hv_Phi, hv_Length1,hv_Length2);//创建模版ho_ImageReduced.Dispose();HOperatorSet.ReduceDomain(ho_Image, ho_Rectangle, out ho_ImageReduced);HOperatorSet.CreateShapeModel(ho_ImageReduced, "auto", (new HTuple(-180)).TupleRad(), (new HTuple(360)).TupleRad(), "auto", "auto", "use_polarity", "auto","auto", out hv_ModelID);ho_ModelContours.Dispose();HOperatorSet.GetShapeModelContours(outho_ModelContours, hv_ModelID, 1);//模版匹配HOperatorSet.FindShapeModel(ho_Image, hv_ModelID, (new HTuple(-180)).TupleRad(), (new HTuple(360)).TupleRad(), 0.5, 30, 0.5, "least_squares", 0, 0.9,out hv_Row1, out hv_Column1, out hv_Angle, out hv_Score);if ((int)(new HTuple((newHTuple(hv_Row1.TupleLength())).TupleGreater(0))) != 0) {dev_display_shape_matching_results(hv_ModelID, "red", hv_Row1, hv_Column1,hv_Angle, 1, 1, 0);}hv_Number = new HTuple(hv_Row1.TupleLength());//用完清除模版HOperatorSet.ClearShapeModel(hv_ModelID);}//捕获异常catch (HalconException HDevExpDefaultException){//异常处理ho_Image.Dispose();ho_Rectangle.Dispose();ho_ImageReduced.Dispose();ho_ModelContours.Dispose();throw HDevExpDefaultException;}//处理完要内存释放ho_Image.Dispose();ho_Rectangle.Dispose();ho_ImageReduced.Dispose();ho_ModelContours.Dispose();}}//主函数#if !NO_EXPORT_APP_MAINpublic class HDevelopExportApp {static void Main(string[] args) {new HDevelopExport();}}#endif。
halconcreate_class_gmm 算子参数解析Halconcreate_class_gmm 是 Halcon 中用于创建高斯混合模型 (GMM) 的算子。
GMM 是一种常用的概率模型,可用于对复杂数据分布进行建模和分类。
算子的参数设置将直接影响模型的准确性和运行效率。
本文将解析 Halconcreate_class_gmm 算子的参数,以便更好地理解和应用该算子。
1. 输入图像参数 (Image)输入图像是 Halconcreate_class_gmm 算子处理的主要数据源。
该参数接受一个灰度图像或彩色图像。
对于多通道的彩色图像,算子将自动将其转换为灰度图像进行处理。
2. 特征参数 (Feature)特征参数是用于训练 GMM 模型的特征向量。
根据应用需求,可以选择不同的特征参数。
常见的特征参数包括像素的灰度值、颜色特征、纹理特征等。
选择适合问题的特征参数对模型的准确性至关重要。
3. 类别数目 (NumClass)类别数目是 GMM 模型中高斯分量的数目。
它定义了模型所分割数据的类别数目。
该参数的选择需要根据具体问题进行调试。
若类别数目设置过多,模型可能过度拟合,导致训练集的准确性提高,但对未知数据的分类准确率下降。
相反,若类别数目设置过少,模型可能出现欠拟合的现象,分类效果不理想。
4. 数据权重 (Weights)数据权重参数用于指定每个数据点在模型训练中的重要性。
权重可以设为全局常数或根据输入图像的特点进行自适应调整。
对于特别重要的数据点,可以设置较大的权重,以增加它们在模型训练中的影响力。
数据权重的合理设置有助于提高模型的准确性。
5. 迭代次数 (MaxIterations)迭代次数参数定义训练 GMM 模型所使用的最大迭代次数。
GMM 是通过迭代优化来训练的,该参数决定了模型训练的时间和精度。
一般来说,增加迭代次数可以提高模型的准确性,但也会增加计算时间。
对于大规模数据集,可以适当增加迭代次数,以获得更准确的模型。
halcon加减乘除运算Halcon 是一款由德国MVTec公司开发的机器视觉软件,广泛应用于工业自动化、质量检测、医疗影像处理等领域。
在Halcon中,加减乘除运算是基本的数学运算,用于处理图像数据和数值计算。
加减乘除运算在Halcon中的实现主要依赖于Halcon库中的算术函数。
这些函数可以用于对图像、矩阵和数值进行各种算术运算。
以下是一些常用的加减乘除函数:1. add_image():将两个图像相加,用于图像增强和组合。
2. subtract_image():从第一个图像中减去第二个图像,用于消除背景或突出特定区域。
3. multiply_image():将一个图像与一个常数相乘,用于调整图像的对比度和亮度。
4. divide_image():将一个图像除以另一个图像,用于消除噪声和异常值。
5. add_gen_proc():将一个通用过程(gen_proc)与另一个通用过程相加,用于组合多个处理步骤。
6. subtract_gen_proc():从一个通用过程中减去另一个通用过程,用于优化处理流程。
7. multiply_gen_proc():将一个通用过程与一个常数相乘,用于调整处理参数。
8. divide_gen_proc():将一个通用过程除以另一个通用过程,用于消除冗余步骤。
这些函数的使用方法如下:1. 调用函数时需要传入相应的参数,如两个图像或两个通用过程。
2. 参数可以是图像、矩阵或数值类型。
3. 函数执行后返回计算结果,可以根据需要将其存储在变量中或直接用于后续处理。
下面是一个简单的示例代码,展示了如何使用Halcon中的加减乘除函数对图像进行基本运算:```csharp// 读取两个灰度图像img1 := read_image(gray, 'gray', 'uint8');img2 := read_image(gray, 'gray', 'uint8');// 将第一个图像乘以2img1 := multiply_image(img1, 2);// 将第二个图像加100img2 := add_image(img2, 100);// 将两个图像相加得到结果图像result := add_image(img1, img2);// 显示结果图像disp_obj(result);```上述代码中,首先读取了两个灰度图像img1和img2,然后分别对它们进行了乘以2和加100的运算。
halcon两点生成直线的算子(最新版)目录1.引言:介绍 Halcon 图像处理软件及其应用领域2.Halcon 两点生成直线的算子:详细说明如何使用 Halcon 软件生成直线3.应用实例:展示 Halcon 两点生成直线算子在实际应用中的效果4.结论:总结 Halcon 两点生成直线算子的优点及适用场景正文1.引言Halcon 是由德国 Mentor Graphics 公司开发的一款图像处理软件,广泛应用于工业自动化、机器视觉、医疗影像处理等领域。
通过 Halcon,用户可以方便地对图像进行处理、分析和控制,提高生产效率和产品质量。
在 Halcon 中,有一个实用的功能是两点生成直线的算子,可以帮助用户快速地绘制直线。
2.Halcon 两点生成直线的算子在 Halcon 中,生成直线的算子为“linear_equation”,该算子接受两个点坐标作为输入参数,并根据这两个点生成一条直线。
具体的语法如下:```linear_equation (x1, y1, x2, y2)```其中,(x1, y1) 和 (x2, y2) 分别为两个点的坐标。
例如,如果我们有两个点 A(1, 2) 和 B(3, 4),可以使用以下语句生成直线:```linear_equation (1, 2, 3, 4)```3.应用实例假设我们在 Halcon 中处理一幅图像,需要找到图像中两个特征点 A 和 B,并绘制连接这两个特征点的直线。
可以使用以下步骤实现:1) 读取图像并进行预处理,如平滑、边缘检测等,以便找到特征点 A 和 B;2) 使用“threshold”算子将图像中特征点 A 和 B 的坐标保存到一个数组中;3) 调用“linear_equation”算子,传入特征点 A 和 B 的坐标,生成直线;4) 将生成的直线显示在图像上,以便观察。
4.结论Halcon 两点生成直线算子为图像处理提供了便捷的工具,用户只需提供两个点的坐标即可快速生成直线。
halcon的paint_region 算子说明Halcon 是一个机器视觉库,提供了一系列算子(函数)来处理和分析图像。
`paint_region` 是其中的一个算子,用于在给定的区域内填充颜色。
以下是 `paint_region` 算子的基本说明:算子名称: `paint_region`描述:在指定的区域内填充颜色。
输入:1. `Image`:要进行操作的图像。
2. `Region`:要填充颜色的区域。
3. `Type`:填充类型,可以是以下之一:`'solid'`:使用一个单一的颜色填充区域。
`'gradient'`:使用从中心到边缘的渐变颜色填充区域。
`'checkerboard'`:使用棋盘格模式填充区域。
4. `Color`(可选):对于 `'solid'` 类型,指定要使用的颜色。
通常以 `(R, G,B)` 的形式提供,其中 R、G 和 B 是 0 到 255 之间的整数。
输出:填充后的图像。
示例:```halcon假设 'Image' 是输入的图像,'Region' 是要填充的区域Image := read_image('')Region := region_grow(Image, 50, 50, 10) % 创建一个从 (50,50) 开始,宽度为 10 的区域PaintedImage := paint_region(Image, Region, 'solid', (255, 0, 0)) %使用红色填充该区域```注意:在使用 `paint_region` 时,确保你已正确地定义了要填充的区域,否则可能得不到预期的结果。
此外,确保你使用的颜色值在正确的范围内(通常是 0 到 255)。
Chapter 1 :Classification (4)1.1 Gaussian-Mixture-Models (4)1.2 Hyperboxes (4)1.3 Neural-Nets (5)1.4 Support-Vector-Machines (6)Chapter 2 Control (7)Chapter3 :Develop (8)Chapter 4 :File (10)4.1 Images (10)4.2 Misc (10)4.3 Region (10)4.4 Text (10)4.5 Tuple (11)Chapter 5:Filter (12)5.1 Arithmetic (12)5.2 Bit (12)5.3 Color (13)5.4 Edges (13)5.5 Enhancement (14)5.6 FFT (15)5.7 Geometric-Transformations (16)5.8 Inpainting (17)5.9 Lines (17)5.10 Match (18)5.11 Misc (18)5.12 Noise (18)5.13 Optical-Flow (19)5.14 Points (19)5.15 Smoothing (19)5.16 Texture (20)5.17 Wiener-Filter (20)Chapter 6 :Graphics (21)6.1 Drawing (21)6.2 Gnuplot (22)6.3 LUT (22)6.4 Mouse (23)6.5 Output (23)6.6 Parameters (24)6.7 Text (26)6.8 Window (27)Chapter 7 :Image (28)7.1 Access (28)7.2 Acquisition (28)7.3 Channel (29)7.5 Domain (31)7.6 Features (31)7.7 Format (32)7.8 Manipulation (33)7.9 Type-Conversion (33)Chapter 8 :Lines (33)8.1 Access (33)8.2 Features (34)Chapter 9 :Matching (34)9.1 Component-Based (34)9.2 Correlation-Based (35)9.3 Gray-Value-Based (36)9.4 Shape-Based (36)Chapter 10 :Matching-3D (37)Chapter 11 :Morphology (38)11.1 Gray-Values (38)11.2 Region (39)Chapter 12:OCR(光字符识别) (42)12.1 Hyperboxes (42)12.2 Lexica (42)12.3 Neural-Nets(神经网络) (43)12.4 Support-Vector-Machines (支持矢量机) (44)12.5 Tools (44)12.6 Training-Files (45)Chapter 13:Object (45)13.1 Information (45)13.2 Manipulation (45)Chapter 14:Regions (46)14.1 Access (46)14.2 Creation (46)14.3 Features (47)14.4 Geometric-Transformations (49)14.5 Sets (50)14.6 Tests (50)14.7 Transformation (50)Chapter 15:Segmentation (51)15.1 Classification (51)15.2 Edges (52)15.3 Regiongrowing (52)15.4 Threshold (53)15.5 Topography (53)Chapter 16:System (54)16.1 Database (54)16.3 Information (55)16.4 Operating-System (55)16.5 Parallelization (56)16.6 Parameters (56)16.7 Serial (56)16.8 Sockets (56)Chapter 17:Tools (57)17.1 2D-Transformations (57)17.2 3D-Transformations (59)17.3 Background-Estimator (60)17.4 Barcode (60)17.5 Calibration (61)17.6 Datacode (62)17.7 Fourier-Descriptor (63)17.8 Function (63)17.9 Geometry (64)17.10 Grid-Rectification (65)17.11 Hough (66)17.12 Image-Comparison (66)17.13 Kalman-Filter (67)17.14 Measure (67)17.15 OCV(Open Circuit Voltage | 光学字符校验) (68)17.16 Shape-from (68)17.17 Stereo (69)17.18 Tools-Legacy (70)Chapter 18:Tuple (71)18.1 Arithmetic (71)18.2 Bit-Operations (72)18.3 Comparison (73)18.4 Conversion (73)18.5 Creation (74)18.6 Element-Order (74)18.7 Features (74)18.8 Logical-Operations (74)18.9 Selection (75)18.10 String-Operators (75)Chapter 19:XLD (76)19.1 Access (76)19.2 Creation (76)19.3 Features (77)19.4 Geometric-Transformations (79)19.5 Sets (79)19.6 Transformation (80)Chapter 1 :Classification1.1 Gaussian-Mixture-Models1.add_sample_class_gmm功能:把一个训练样本添加到一个高斯混合模型的训练数据上。
halcon 函数中文说明
Halcon 是一种计算机视觉库,提供了丰富的函数来进行图像处理和分析。
以下是一些常见的 Halcon 函数及其中文说明:
1. read_image:读取图像文件。
2. write_image:将图像数据写入文件。
3. rgb_to_gray:将 RGB 图像转换为灰度图像。
4. threshold:进行图像二值化处理。
5. reduce_domain:将图像限制在指定的区域内。
6. crop_rectangle:裁剪图像的矩形区域。
7. find_shape_model:在图像中查找指定形状的模板。
8. affine_trans_image:对图像进行仿射变换。
9. gen_circle_contour_xld:生成圆形轮廓。
10. intersection_lines:计算两条直线的交点。
以上只是 Halcon 库中的一小部分函数,它还提供了许多其他的函数和工具,用于各种图像处理和计算机视觉任务。
HALCON算子函數——Chapter 6 : GraphicsChapter_6 :Graphics6.1 Drawing1. drag_region1功能:一個區域的交互運動。
2. drag_region2功能:一個帶有定點規格區域的交互運動。
3. drag_region3功能:一個帶有限制位置區域的交互運動。
4. draw_circle功能:一個圓的交互繪圖。
5. draw_circle_mod功能:一個圓的交互繪圖。
6. draw_ellipse功能:一個橢圓的交互繪圖。
7. draw_ellipse_mod_功能:一個橢圓的交互繪圖。
8. draw_line功能:畫一根線。
9. draw_line_mod功能:畫一根線。
10. draw_nurbs功能:一個NURBS曲線的交互繪圖。
11. draw_nurbs_interp功能:使用插值的一個NURBS曲線的交互繪圖。
12. draw_nurbs_interp_mod功能:使用插值的一個NURBS曲線的交互修正。
13. draw_nurbs_mod功能:一個NURBS曲線的交互修正。
14. draw_point功能:畫一個點。
15. draw_point_mod功能:畫一個點。
16.draw_polygon功能:一個多邊形的交互繪圖。
17. draw_rectangle1功能:畫一個與坐標軸平行的矩形。
18. draw_rectangle1_mod功能:畫一個與坐標軸平行的矩形。
19. draw_rectangle2功能:任意定向矩形的交互繪圖。
20. draw_rectangle2_mod功能:任意定向矩形的交互繪圖。
21. draw_region功能:一個閉區域的交互繪圖。
22. draw_xld功能:一個輪廓的交互繪圖。
23. draw_xld_mod功能:一個輪廓的交互修正。
6.2 Gnuplot1. gnuplot_close功能:關閉所有打開的gnuplot文件或者終止一個活動的gnuplot子流程。
2. gnuplot_open_file功能:為圖像和控制量的可視化打開一個gnuplot文件。
3. gnuplot_open_pipe功能:為圖像和控制量的可視化打開一個通道的gnuplot流程。
4. gnuplot_plot_ctrl功能:使用gnuplot顯示控制量。
5. gnuplot_plot_funct_1d功能:使用gnuplot顯示控制量的功能。
6. gnuplot_plot_image功能:使用gnuplot使一個圖像可視化。
6.3 LUT1. disp_lut功能:查詢表的圖解。
2. draw_lut功能:交互利用查詢表。
3. get_fixed_lut功能:為實際彩色圖像獲取固定查詢表。
4. get_lut功能:獲取現在的查詢表。
5. get_lut_style功能:獲取查詢表的修正參數。
6. query_lut功能:查詢所有可得到的查詢表。
7. set_fixed_lut功能:為實際彩色圖像固定查詢表。
8. set_lut功能:設置查詢表。
9. set_lut_style功能:改變查詢表。
10. write_lut功能:把查詢表作為文件寫入。
6.4 Mouse1. get_mbutton功能:等待直到一個鼠標鍵被按下。
2. get_mposition_功能:查詢鼠標位置。
3. get_mshape功能:查詢現在鼠標指針形狀。
4. query_mshape功能:查詢所有可得到的鼠標指針形狀。
5. set_mshape功能:設置現在鼠標指針形狀。
6.5 Output1. disp_arc功能:在一個窗口中顯示圓形弧。
2. disp_arrow功能:在一個窗口中顯示箭頭。
3. disp_channel功能:用幾個通道顯示圖像。
4. disp_circle功能:在一個窗口中顯示圓。
5. disp_color功能:顯示一個彩色(RGB)圖像。
6. disp_cross功能:在一個窗口中顯示交叉。
7. disp_distribution功能:顯示一個噪聲分布。
8. disp_ellipse功能:顯示橢圓。
9. disp_image功能:顯示灰度值圖像。
10. disp_line功能:在窗口中畫一條線。
11. disp_obj功能:顯示圖像目標(圖像,區域,XLD)。
12.disp_polygon功能:顯示一個多叉線。
13. disp_rectangle1功能:顯示和坐標軸對齊的矩形。
14. disp_rectangle2功能:顯示任意方向的矩形。
15. disp_region功能:在一個窗口中顯示區域。
16. disp_xld功能:顯示一個XLD物體。
6.6 Parameters1. get_comprise功能:獲取一個圖像矩陣的輸出處理。
2. get_draw功能:獲取現在區域填充模式。
3. get_fix功能:獲取現在查詢表的固定模式。
4. get_hsi功能:獲取現在顏色的HSI編碼。
5. get_icon功能:查詢區域輸出的圖標。
6. get_insert功能:獲取現在顯示模式。
7. get_line_approx功能:獲取輪廓顯示的現在近似誤差。
8. get_line_style功能:獲取輪廓的現在圖解模式。
9. get_line_width功能:獲取輪廓顯示的現在線寬。
10. get_paint功能:獲取灰度值的現在顯示模式。
11. get_part功能:獲取圖像部分。
12. get_part_style功能:獲取灰度值顯示的現在插值模式。
13. get_pixel功能:獲取查詢表索引的現在顏色。
14. get_rgb功能:獲取RGB編碼中的現在顏色。
15. get_shape功能:獲取現在區域輸出形狀。
16. query_all_colors功能:查詢所有顏色名稱。
17. query_color功能:查詢窗口中顯示的所有顏色名稱。
18. query_colored功能:查詢顏色輸出的顏色數目。
19. query_gray功能:查詢顯示的灰度值。
20. query_insert功能:查詢可能的圖解模式。
21. query_line_width功能:查詢可能的線寬。
22. query_paint功能:查詢灰度值顯示模式。
23. query_shape功能:查詢區域顯示模式。
24. set_color功能:設置輸出顏色。
25. set_colored功能:設置多輸出顏色。
26. set_comprise功能:定義圖像矩陣輸出剪輯。
27. set_draw功能:定義區域填充模式。
28. set_fix功能:設置固定的查詢表。
29. set_gray功能:定義區域輸出的灰度值。
30. set_hsi功能:定義輸出顏色(HSI編碼)。
31. set_icon功能:區域輸出的圖標定義。
32. set_insert功能:定義圖像輸出功能。
33. set_line_approx功能:定義輸出顯示的近似誤差。
34. set_line_style功能:定義一個輪廓輸出模式。
35. set_line_width功能:定義區域輪廓輸出的線寬。
36. set_paint功能:定義灰度值輸出模式。
37. set_part功能:修正顯示圖像部分。
38. set_part_style功能:為灰度值輸出定義一個插值方法。
39. set_pixel功能:定義一個顏色查詢表索引。
40. set_rgb功能:通過RGB值設置顏色定義。
41. set_shape功能:定義區域輸出輪廓。
6.7 Text1. get_font功能:獲取現在字體。
2. get_string_extents功能:獲取一個字符串的空間大小。
3. get_tposition功能:獲取光標位置。
4. get_tshape功能:獲取文本光標的形狀。
5. new_line功能:設置下一行的開始文本光標的位置。
6. query_font功能:查詢可得到的字體。
7. query_tshape功能:查詢文本光標的所有可得到的形狀。
8. read_char功能:從一個文本窗口讀取一個字符。
9. read_string功能:從一個文本窗口讀取一個字符串。
10. set_font功能:設置文本輸出的字體。
11. set_tposition功能:設置文本光標的位置。
12. set_tshape功能:設置文本光標的形狀。
13. write_string功能:在一個窗口中打印文本。
6.8 Window1. clear_rectangle功能:在輸出窗口中刪除一個矩形。
2. clear_window功能:刪除一個輸出窗口。
3. close_window功能:關閉一個輸出窗口。
4. copy_rectangle功能:在輸出窗口間復制矩形內所有像素。
5. dump_window功能:把窗口內容寫入一個文件。
6. dump_window_image功能:在一個圖像目標中寫窗口內容。
7. get_os_window_handle功能:獲取操作系統圖像處理。
8. get_window_attr功能:獲取窗口特征。
9. get_window_extents功能:一個窗口大小和位置的信息。
10. get_window_pointer3功能:一個窗口像素數據的通道。
11. get_window_type功能:獲取窗口類型。
12. move_rectangle功能:在一個輸出窗口內部復制。
13. new_extern_window功能:在Windows_NT下創建一個虛擬圖形窗口。
14. open_textwindow功能:打開一個文本窗口。
15. open_window功能:打開一個圖形窗口。
16. query_window_type功能:查詢所有可得到的窗口類型。
17. set_window_attr功能:設置窗口特征。
18. set_window_dc功能:設置一個虛擬圖形窗口(Windows_NT)的設計背景。
19. set_window_extents功能:修正一個窗口的位置和大小。
20. set_window_type功能:指定一個窗口類型。
21. slide_image功能:兩個窗口緩沖區的交互輸出。