Halcon算子介绍
- 格式:doc
- 大小:56.50 KB
- 文档页数:16
图像、窗口基础操作部分基础操作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 : )应用于分隔符号图像得阈值处理。
通常伴随着如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:)提取图像得XLDImage:要提取xld得图像(单通道,如果为多通道只提取第一通道)Border:输出,得到得XLDThreshold:提取XLD得阈值,灰度值以阈值为分界提取XLDgen_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:输入,要提取得XLDSelectedXLD:输出,提取得到得XLDFeatures:提取XLD得特征依据,默认为’area’,详见特征依据说明Operation:特征之间得逻辑关系,默认’and'Min,Max:特征值得要求范围select_contours_xld(Contours:SelectedContours :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为所有点),默认—1ClippingEndPoints:起始与结尾上忽略得点数,默认0Iterations:迭代最大次数(不用于回归?)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为所有点),默认-1MaxClosureDist:小于这个值被认为就是轮廓封闭得,区分拟合圆与圆弧ClippingEndPoints:轮廓开始点与结束点参加与拟合点得个数(起始与结尾上忽略得点数?),默认0Iterations:迭代次数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中得像素类型有如下(首字母应当为小写):Int1Int2Uint2Int4Int8Byte:最常见得灰度图像,8位,一个字节,0~255RealDirectionCyclicplex特征依据说明以下就是一些可选得条件特征说明(代码中首字母应该为小写):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/Astruct_factor:椭圆参数,Anisometry*Bulkiness-1outer_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:。