搜档网
当前位置:搜档网 › Halcon算子介绍

Halcon算子介绍

Halcon算子介绍
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:图像窗口得宽度,默认256

Height:图像窗口得高度,默认256

Background:新窗口得背景颜色,默认黑色(black)

WindowHandle:窗口得识别Id

dev_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:要显示文字得窗口handle

String:要显示得文字信息,会显示在一个行里

CoordSystem:使用得坐标系,默认window,可选’window', 'image'

Row,Column:文字坐标,默认12

Color:文字颜色,默认'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’)… endwhile

While循环

forIndex := ‘start‘ to ‘max’ by ‘step’… endfor

for循环

图像处理部分

基础操作

图像转化

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就是blue

rgb1_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:最小灰度值,默认128

MaxGray:最大灰度值,默认255,必须大于MinGray

connection(Region :ConnectedRegions::)

计算出区域中连接得部分

Region:要计算得区域

ConnectedRegions:输出,计算后得Region数组,相连得部分将被划分为一个区域,会以不同颜色加以区分

select_shape(Regions :SelectedRegions: Features,Operation,Min, Max:)

从一个区域数组中选择出符合某特征条件得区域

Regions:输入得区域数组

SelectedRegions:输出,选出得符合某些特征条件得区域数组

Features:条件特征,详见区域特征说明

Operation:对于符合特征得区域得连接操作,可以就是And或者Or

Min:特征得最小值

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 pointsinY

difference(X,Y,RegionDifference)

u

: )

Reg connection过得区域数组)

Reg

union2(Region1,Region2:RegionUnion : : )

把两个区域合并成一个区域

Region1:要合并得第一个区域

Region2:要合并得第二个区域

RegionUnion:输出,合并后得区域

plement(Region :Regionplement ::)

计算一个区域得补(一般指全图像区域减去该区域)

Region:要计算得区域

Regionplement:输出,计算后得区域

阈值分割

threshold(Image :Region:MinGray, Max

Gray:)

详见:threshold

auto_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 : )

应用于分隔符号图像得阈值处理。通常伴随着如Diff_of_gauss,sub_image等这样得算子使用;就像前后两帧做差得到图像(差帧法),像素值有正值有负值。

Image:输入得图像

RegionCrossings :输出,获得得区域

MinSize:输出得区域得最小面积

MinGray: 区域得最小灰度绝对值

Threshold:分割值

腐蚀膨胀

erosion_circle(Region:RegionErosion :Radi us:)

使用圆心结构元素对图像做腐蚀操作

Region:要做腐蚀操作得区域(也可以就是区域数组)

RegionDilation:输出,腐蚀后得区域(或区域数组)

Radius:腐蚀操作得圆形结构得半径

dilation_circle(Region:RegionDilation:Radius: )

使用圆形结构对区域做膨胀操作

Region:要做膨胀操作得区域(也可以就是区域数组)

RegionDilation:输出,膨胀后得区域(或区域数组)

Radius:膨胀操作得圆形结构得半径

erosion_rectangle1(Region :RegionErosion : Width,Height :)

使用矩形结构元素对图像做腐蚀操作

Region:要做腐蚀操作得区域(也可以就是区域数组)

RegionDilation:输出,腐蚀后得区域(或区域数组)

Width,Height:腐蚀操作得矩形结构得宽与高

dilation_rectangle1(Region :RegionDilation : Width,Height : )

使用矩形结构元素对图像做膨胀操作

Region:要做腐蚀操作得区域(也可以就是区域数组)

RegionDilation:输出,膨胀后得区域(或区域数组)

Width,Height:膨胀操作得矩形结构得宽与高

生成区域

gen_rectangle2( :Rectangle :Row,Column,P hi,Length1,Length2:)

生成与坐标成任意角度得矩形

Rectangle :输出,生成后得矩形

Row,Column:用于生成得矩形得中心坐标

Phi:生成矩形与水平轴得角度,以弧度为单位

Length1, Length2 :生成矩形得长宽得一半

亚像素轮廓(XLD)部分

基础操作

threshold_sub_pix(Image :Border :Thres hold:)

提取图像得XLD

Image:要提取xld得图像(单通道,如果为多通道只提取第一通道)

Border:输出,得到得XLD

Threshold:提取XLD得阈值,灰度值以阈值为分界提取XLD

gen_contour_region_xld(Regions :Contours: Mode: )

从区域(区域数组)生成亚像素轮廓

Regions:要生成亚像素轮廓得区域(或区域数组)

Contours:输出,生成后得亚像素轮廓

Mode:生成方式,默认’border',可输入范围区域:'border','border_holes','cen ter’

select_shape_xld(XLD :SelectedXLD :Features, Operation, Min,Max :)

选择特定形状特征要求得XLD轮廓或多边形

XLD:输入,要提取得XLD

SelectedXLD:输出,提取得到得XLD

Features:提取XLD得特征依据,默认为’area’,详见特征依据说明

Operation:特征之间得逻辑关系,默认’and'

Min,Max:特征值得要求范围

select_contours_xld(Contours:Selecte

dContours :Feature, Min1, Max1, Min2,Max 2:)

选择多种特征要求得XLD轮廓(如长度开闭等,不支持多边形)

Contours:要提取得XLD轮廓

SelectedContours:输出,提取得到得XLD轮廓

Feature:提取得特征依据,详见特征依据说明

Min1,Max,Min2,Max2:特征值得要求范围

area_center_xld(XLD ::: Area, Row, Column, PointOrder)

获取封闭得亚像素轮廓(或轮廓数组)得面积与重心坐标

XLD:输入得亚像素轮廓(或轮廓数组)

Area:输出,亚像素轮廓得面积

Row:输出,轮廓得重心得row坐标

Column:输出,轮廓得重心得column坐标

PointOrder:输出,沿边界点顺序,正向或者反向

转换操作

shape_trans_xld(XLD:XLDTrans :Type: )

将目标轮廓(或轮廓数组)转化成其她形状

XLD:要转化得XLD(或XLD数组)

XLDTrans:输出,转化后得XLD(或数组)

Type:转化得类型,默认'convex',详见XLD轮廓得转化类型说明

分割

segment_contours_xld(Contours:ContoursSplit: Mode, SmoothCont,MaxLineDist1, MaxLineDist2 : )

把原XLD分割成:“直线",“直线与圆",“直线与椭圆”

Contours:需要被分割得轮廓(或数组)

ContoursSplit:输出,分割后得轮廓数组

Mode:分割模式,默认lines_circles,可选’lines', 'lines_circles’,’lines_ellipse s’

SmoothCont:用于平滑轮廓得点数量

MaxLineDist1:轮廓到近似线得最大距离(第一次迭代)

MaxLineDist2:轮廓到近似线得最大距离(第二次迭代)

拟合操作(未完)

fit_line_contour_xld(Contours::Algorithm,MaxNumPoints,ClippingEndPoints,Iterations,ClippingFactor : RowBegin,ColBegin,Ro wEnd,ColEnd,Nr,Nc, Dist)

根据已知轮廓拟合直线,获得得就是直线得参数

Contours:输入得轮廓

Algorithm:拟合算法,默认tukey,可选'regression’,’huber','tukey','gauss', ’drop',详见轮廓拟合算法说明轮廓拟合算法说明

MaxNumPoints:用于计算得轮廓点得最大数目(-1为所有点),默认—1

ClippingEndPoints:起始与结尾上忽略得点数,默认0

Iterations:迭代最大次数(不用于回归?)

ClippingFactor:离群值得剪切因子,值越小忽略得离群值越多

RowBegin,ColBegin:拟合后得到得直线开始点坐标

RowEnd,ColEnd:拟合后得到得直线结束点坐标

Nr,Nc:直线得法向量

Dist:原点到直线得距离

fit_circle_contour_xld(Contours : :Algorithm,MaxNumPoints, MaxClosureDist,Clipping EndPoints, Iterations,ClippingFactor:Row, Column,Radius, StartPhi, EndPhi,Point Order)

根据已知轮廓来拟合圆,并获得圆参数

Contours:输入得轮廓

Algorithm:拟合算法,默认algebraic,可选' ’algebraic', 'ahuber',’atukey','geometric','geohuber',’geotukey',详见轮廓拟合算法说明轮廓拟合算法说明

MaxNumPoints:用于计算得轮廓点得最大数目(-1为所有点),默认-1

MaxClosureDist:小于这个值被认为就是轮廓封闭得,区分拟合圆与圆弧

ClippingEndPoints:轮廓开始点与结束点参加与拟合点得个数(起始与结尾上忽略得点数?),默认0

Iterations:迭代次数

ClippingFactor:离群值得剪切因子,值越小忽略得离群值越多

Row,Column:圆心坐标

Radius:圆半径

StartPhi, EndPhi:圆弧开始角度,结束角度

PointOrder:边界点得次序

fit_ellipse_contour_xld(Contours::Algorithm, MaxNumPoints,MaxClosureDist, ClippingEndPoints, VossTabSize,Iterations,ClippingFactor : Row,Column,Phi, Radius1,Radius2,StartPhi, EndPhi,PointOrder)

拟合椭圆

fit_rectangle2_contour_xld(Contours : : Algorithm,MaxNumPoints,MaxClosureDist,ClippingEndPoints,Iterations,ClippingFactor: Row,Column,Phi,Length1,Length2,Poi ntOrder)

拟合矩形

测量

基础操作

gen_measure_rectangle2( ::Row,Column,Phi,Length1,Length2,Width,Height, Int erpolation :MeasureHandle)

创建一个任意方向得矩形测量句柄(区域)

Row,Column:矩形中心点坐标

Phi:矩形主轴方向与水平轴夹角

Length1:矩形宽度一半

Length2:矩形高度一半

Width,Height:处理图像得宽,高

Interpolation:插值方法

MeasureHandle:测量句柄

附:

Halcon得图像像素类型

Halcon中得像素类型有如下(首字母应当为小写):

Int1

Int2

Uint2

Int4

Int8

Byte:最常见得灰度图像,8位,一个字节,0~255

Real

Direction

Cyclic

plex

特征依据说明

以下就是一些可选得条件特征说明(代码中首字母应该为小写):Area:区域大小,应该就是以像素为单位

Row:区域中心得row坐标

Column:区域中心得column坐标

Width:区域得宽度

Height:区域得高度

Row1:区域得起始row坐标(顶部)

Column1:区域得起始column坐标(左侧)

Row2:区域得最终row坐标(底部)

Column2:区域得最终column坐标(右侧)

Circularity:区域得圆度

pactness:区域得紧密度

Contlength:区域外轮廓得总长度

Convexity:区域得凸性

Rectangularity:区域得垂直度

Ra:等效椭圆得长轴半径

Rb:等效椭圆得短轴半径

Phi:等效椭圆得方向

Anisometry:椭圆参数,Ra/Rb长轴与短轴得比值Bulkiness:椭圆参数,蓬松度π*Ra*Rb/A

struct_factor:椭圆参数,Anisometry*Bulkiness-1

outer_radius:最小外接圆半径

inner_radius:最大内接圆半径

inner_width:最大内接矩形宽度

inner_height:最大内接矩形高度

dist_mean:区域边界到中心得平均距离

dist_deviation:区域边界到中心距离得偏差

roundness:圆度,与circularity计算方法不同?

num_sides:多边形边数

connect_num:连通数?

holes_num:区域内洞数

area_holes:所有洞得面积

max_diameter:最大直径?

orientate:区域方向?

euler_number:欧拉数,即连通数与洞数得差?rect2_phi:最小外接矩形得方向

rect2_len1:最小外接矩形长度得一半??

rect2_len2:最小外接矩形宽度得一半?

moments_m11:几何矩?

moments_m20:几何矩

moments_m02:几何矩

moments_ia:几何矩

moments_ib:几何矩?

moments_m11_invar:几何矩?

moments_m20_invar:几何矩?

moments_m02_invar:几何矩?

moments_phi1:几何矩

moments_phi2:几何矩

moments_m21:几何矩?

moments_m12:几何矩

moments_m03:几何矩

moments_m30:几何矩?

moments_m21_invar:几何矩

moments_m12_invar:几何矩

moments_m03_invar:几何矩?

moments_m30_invar:几何矩

moments_i1:几何矩?

moments_i2:几何矩

moments_i3:几何矩?

moments_i4:几何矩

moments_psi1:几何矩?

moments_psi2:几何矩

moments_psi3:几何矩

moments_psi4:几何矩

区域得xld生成方式说明

border:边界像素得外边框将被用来生成边界border_holes:除了外边界,还包含内边界center:边界像素得中心将被用来生成边界

XLD轮廓得转化类型说明

Convex:凸壳(貌似就是去除表面凹处)

Ellipse:最小外接椭圆

outer_circle:最小外接圆

rectangle1:最小外接矩形,长宽会与坐标轴平行

rectangle2:最小外接矩形,长宽角度与坐标轴无关轮廓拟合算法说明

拟合直线

Regression:

Huber:

Tukey:

Gauss:

Drop:

拟合圆

Algebraic:

Ahuber:

Atukey:

Geometric:

Geohuber:

Geotukey:

相关主题