halcon sort_region详解
Halcon常见算子的用法

Halcon常见算子的用法1.threshold ( Image :Region : MinGray, MaxGray : )选取从输入图像灰度值的g满足下列条件:MinGray < = g < = MaxGray 的像素为目标。
2.bin_threshold( Image : Region : : )自动确定阈值 Region:黑暗区域为目标图像。
举例:threshold(Image,CircleRegion,200,255)bin_threshold(Image, Region)处理结果如下图:对于threshold 可用于提取任意区域,本例中白色为目标,可提取圆形。
bin_threshold只能将工件区域作为目标。
3.dyn_threshold ( OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )自适应阈值分割:主要用于光照不均匀图像的局部阈值分割,比较两个像素的图像像素RegionDynThresh(Out) 分割区域Offset: 减少噪音引起的问题LightDark 提取光明、黑暗或类似的地方常常与mean_image 函数一起用来处理背景光照分布不均匀的问题。
举例:mean_image (ParticlesRed, Mean, 31, 31) #均值滤波dyn_threshold (ParticlesRed, Mean, SmallRaw, 3, 'light')4.reduce_domain( Image, ROI : ImageReduced : : )主要用来获得选取Image图像中的ROI范围的区域。
用于提取原始图像中感兴趣的区域。
举例:read_image (Image, 'mreut')gen_circle (ROI, 256, 256, 200) * 创建一个圆reduce_domain (Image, ROI, ImageReduced) *和图像结合起来--- 选取图像中的圆范围的图像形成了ROIedges_sub_pix (ImageReduced, Edges, 'lanser2', 0.5, 20, 40) dev_display (Image)dev_display (ROI)dev_display (Edges)处理结果如下图:说明后续处理的区域都在圆的范围内。
HALCON运算符及功能-中文

HALCON运算符及功能Chapter1:Classification1.1Gaussian-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.2Hyperboxes1.clear_sampset功能:释放一个数据集的内存。
2.close_all_class_box功能:清除所有分类器。
halcon 区域的各种技巧

Halcon 区域的各种技巧Halcon 是一款强大的机器视觉软件库,广泛应用于工业自动化领域。
区域是Halcon 中的重要概念,用于表示图像中感兴趣的区域。
本文将介绍 Halcon 中区域的各种技巧,包括创建、操作和分析区域等方面。
1. 创建区域1.1 点集在 Halcon 中,可以通过点集来创建区域。
点集是由一系列二维坐标点组成的数据结构。
points := [[100, 200], [150, 250], [200, 300]]region := gen_region_points(points)上述代码创建了一个包含三个点的区域。
1.2 线段除了点集,还可以使用线段来创建区域。
线段由起始点和结束点组成。
start_x := 100start_y := 200end_x := 300end_y := 400region := gen_region_line(start_x, start_y, end_x, end_y)上述代码创建了一个起始点为 (100, 200),结束点为 (300, 400) 的线段区域。
1.3 矩形矩形是一种常见的区域类型,在 Halcon 中可以通过指定左上角和右下角坐标来创建矩形。
top := 100left := 200bottom := 300right := 400region := gen_region_rectangle1(top, left, bottom, right)上述代码创建了一个左上角坐标为 (100, 200),右下角坐标为 (300, 400) 的矩形区域。
1.4 圆形圆形也是一种常见的区域类型,在 Halcon 中可以通过指定圆心坐标和半径来创建圆形。
center_x := 200center_y := 300radius := 100region := gen_region_circle(center_x, center_y, radius)上述代码创建了一个圆心坐标为 (200, 300),半径为 100 的圆形区域。
halcon 轮廓与region的运算

Halcon是一款常用的机器视觉软件,其中的轮廓(contour)与region的运算在图像处理中起着至关重要的作用。
本文将对Halcon中轮廓与region的运算进行较为详细的介绍和分析,包括两者的概念、常见的运算操作以及在实际应用中的一些技巧和注意事项。
一、轮廓和region的概念1. 轮廓(contour):轮廓是一条由一系列相邻像素组成的路径,通常用于表示物体的边缘或者特定区域的边界。
在Halcon中,轮廓可以通过边缘检测、边缘连接等方法得到。
2. region:region是一个封闭的区域,可以是一个物体的外形或者某个特定区域的表示。
在Halcon中,region可以通过二值化、连通域分析等方法获取。
二、常见的轮廓和region的运算1. 轮廓与region的相交:在实际应用中,我们经常需要判断一个轮廓是否与一个region相交,以及它们的交集是什么。
Halcon提供了相应的运算函数,如intersect_contours_xld、intersect_region等。
2. 轮廓与region的合并:有时候,我们需要将一个轮廓与一个region进行合并,得到一个新的region。
Halcon中的union1、gen_region_contour_xld等函数可以实现这一操作。
3. 轮廓与region的差:当我们需要求一个region去除一个轮廓之后的区域,或者求两个region之间的差,Halcon的difference、difference_rr、difference_contours_xld等函数可以帮助我们实现。
4. 轮廓与region的包含关系:判断一个region是否包含某个轮廓,或者一个轮廓是否包含在某个region中,Halcon中的cont本人ns、cont本人ns_region等函数可以派上用场。
三、在实际应用中的一些技巧和注意事项1. 数据类型的转换:在进行轮廓与region的运算时,需要注意数据类型的转换,保证输入数据的一致性,避免出现错误的运算结果。
halcon中的region定义

halcon中的region定义Halcon是一种用于机器视觉应用的编程软件,它提供了丰富的图像处理和分析工具。
在Halcon中,Region是一种常用的数据类型,用于表示图像中的特定区域。
本文将介绍Halcon 中Region的定义和常见操作。
在Halcon中,Region是一种由连续的像素点组成的集合,可以用来表示图像中的物体或区域。
Region的定义可以基于像素的坐标、形状或其他特征。
Halcon提供了多种方式来定义Region,下面将介绍其中常用的几种方法。
一种常见的方式是基于像素的坐标来定义Region。
在Halcon 中,我们可以通过指定一个像素的坐标来创建一个Region,然后通过添加其他像素的坐标来扩展这个区域。
例如,我们可以使用以下代码创建一个以(100, 100)为中心,半径为50的圆形区域:```Halconcreate_ring(Ring, 100, 100, 50)```这个代码首先创建了一个空的Region对象Ring,然后使用create_ring函数将一个圆形区域添加到Ring中。
除了使用像素的坐标,我们还可以使用形状来定义Region。
Halcon中提供了多种形状,包括矩形、椭圆、多边形等。
例如,我们可以使用以下代码创建一个矩形区域:```Halconcreate_rectangle1(Rectangle, 100, 100, 200, 150)```这个代码创建了一个以(100, 100)为左上角,宽度为200,高度为150的矩形区域。
类似地,我们可以使用其他函数来创建其他形状的区域。
除了创建Region,Halcon还提供了多种操作来修改和处理Region。
例如,我们可以使用以下代码将两个Region进行并集操作:```Halconunion(Ring1, Ring2, RingUnion)```这个代码将Region Ring1和Ring2进行并集操作,并将结果保存到RingUnion中。
halcon中的常用算子的中文说明

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算子介绍

图像、窗口基础操作部分基础操作dev_close_window()关闭当前激活得窗口read_image( :Image:: )读取图像,可以支持多种格式,比如TIFF,PNG,JPEG-XR,JPEG—2000等,还支持一次性读取多个图像。
Image:输出,读取完后在halcon所存放得变量名:图片路径,可以就是多个路径,可以就是绝对路径或者相对路径,还可以省略扩展名示例:*Readingan image:read_image(Image,'mreut')*Reading 3 images into an imagearray: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', 'gr een','cyan’,’magenta’,’forest green', 'lime green’,'coral’,'slate blue' Box:就是否包含在一个背景框内,默认'true’,可选'true','false'基础语法If(‘condition’)… else … endif条件判断While(‘condition’)… endwhileWhile循环forIndex := ‘start‘ to ‘max’ by ‘step’… endforfor循环图像处理部分基础操作图像转化convert_image_type(Image:ImageConve rted: NewType:)转换图像类型Image : 要转化得图像ImageConverted: 输出,转化后得图像NewType:要转化得图像类型,详见Halcon得图像像素类型depose3(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:输出,计算后得结果.示例:* providesthe regionXwithoutthe pointsinYdifference(X,Y,RegionDifference)u: )Reg connection过得区域数组)Regunion2(Region1,Region2:RegionUnion : : )把两个区域合并成一个区域Region1:要合并得第一个区域Region2:要合并得第二个区域RegionUnion:输出,合并后得区域plement(Region :Regionplement ::)计算一个区域得补(一般指全图像区域减去该区域)Region:要计算得区域Regionplement:输出,计算后得区域阈值分割threshold(Image :Region:MinGray, MaxGray:)详见:thresholdauto_threshold(Image :Regions : Sigma:)自动阈值分割bin_threshold(Image :Region :: )用于提取背景为白色,且前后北京较为分明;自动选取sigma值进行告诉光滑处理,光滑直到只有一个最小值;例如提取白纸黑字,可以用此算子;mage :输入得图像Region:输出,分割后得区域char_threshold(Image,HistoRegion : Characte rs :Sigma, Percent:Threshold)阈值分割提取字符Image:输入得图像HistoRegion :要提取字符所在得区域Characters :输出,提取得到得字符区域Sigma:高斯光滑因子Percent:灰度直方图中得灰度值差得百分比Threshold:得到得用于阈值处理得阈值示例:read_image(Image, 'letters’)char_threshold(Image,Image,Seg,0、0,5、0, Threshold)connection (Seg,Connected)dual_threshold(Image :RegionCrossings :MinSize,MinGray,Threshold : )应用于分隔符号图像得阈值处理。
机器视觉之halcon算子区域特征

Geometric moments of the region
几何矩
moments_m20
Geometric moments of the region
几何矩
moments_m02
Geometric moments of the region
几何矩
moments_ia
Geometric moments of the region
Region特征一览:
特征
英
译
备注
area
Area of the object
对象的面积
row
Row index of the center
中心点的行坐标
column
Column index of the center
中心点的列坐标
width
Width of the region
区域的宽度
height
Height of the largest axis-parallel rectangle that fits into the region
最大内接矩形高度
dist_mean
Mean distance from the region border to the center
区域边界到中心的平均距离
最小外接圆半径
inner_radius
Radius of largest inner circle
最大内接圆半径
inner_width
Width of the largest axis-parallel rectangle that fits into the region
最大内接矩形宽度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Halcon中的sort_region函数用于对区域进行排序。
这个函数可以按照区域的不同属性对其进行排序,比如面积、周长等。
下面是对该函数的详解:
python
sorted_regions = sort_region(regions, 'attribute', 'order', 'subregion')
参数解释:
regions:待排序的区域,可以是单个区域或区域数组。
'attribute':排序所依据的属性,可以是以下之一:
'area':面积。
'row':区域中心的行坐标。
'column':区域中心的列坐标。
'height':区域的高度。
'width':区域的宽度。
'distance_to_origin':区域中心到原点的距离。
'radius':区域外接圆的半径。
'circularity':区域的圆度。
'convexity':区域的凸度。
'compactness':区域的紧密度。
'elongation':区域的伸长度。
'orientation':区域的方向。
'gray_moments':区域的灰度矩。
'order':排序的顺序,可以是以下之一:
'ascending':升序排列。
'descending':降序排列。
'subregion':一个可选参数,用于指定是否要在排序后返回排序结果的子区域。
默认为'all',表示返回所有区域。
如果设置为'first',则只返回排序后的第一个区域;如果设置为'last',则只返回排序后的最后一个区域。
函数返回排序后的区域数组。
需要注意的是,这个函数不会修改原始的区域数组,而是返回一个新的排序后的数组。
使用示例:
python
import halcon as hv
# 假设有一个名为regions的区域数组
sorted_regions = hv.sort_region(regions, 'area', 'descending')
这样,sorted_regions就是按照区域面积降序排列的新区域数组。