步入Halcon新手村--0、常见算子介绍--打野基础内容--持续更新

常用算子介绍

1、简单常见算子

1、read_image( : Image : FileName : )
	作用:读取一张不同格式的图片

2、dev_clear_window( : : : )
	作用:清除活动图形窗口的内容。
	
3、dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)
	作用:打开一个新的图形窗口,用于显示图像、区域和线条等图标对象,以及执行文本输出
	
3.1、dev_open_window_fit_image(Image : : Row, Column, WidthLimit, HeightLimit : WindowHandle)
	作用:打开一个适应图像的窗口
	
4、get_image_size(Image : : : Width, Height)
	作用:获取图像的尺寸
	 
5、zoom_image_factor(Image : ImageZoomed : ScaleWidth, ScaleHeight, Interpolation : )
	作用:图像缩放

6、dev_display(Object : : : )
	作用:在打开的活动图形窗口中显示图标对象。
	
7、gen_rectangle1( : Rectangle : Row1, Column1, Row2, Column2 : )
	作用:创建一个不可旋转的矩形ROI

8、gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )
	作用:创建一个可以旋转的矩形ROI

9、gen_circle( : Circle : Row, Column, Radius : )
	作用:创建一个圆形ROI
	
9.1、gen_cross_contour_xld( : Cross : Row, Col, Size, Angle : )
	作用:在指定坐标中创建一个形状 (×,+)
	
10、rgb1_to_gray(RGBImage : GrayImage : : )
	作用:将彩色图像设置在位灰度图像

11、mult_image(Image1, Image2 : ImageResult : Mult, Add : )
	作用:图像相乘

11.1、gray_histo(Region, Image : : : AbsoluteHisto, RelativeHisto)
	作用:计算绝对灰度值或相对灰度值

12、threshold(Image : Region : MinGray, MaxGray : )
	作用:二值化
	
13、connection(Region : ConnectedRegions : : )
	作用:连通域
	
14、select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
	作用:区域选择

15、fill_up(Region : RegionFillUp : : )
	作用:区域填充

16、opening(Region, StructElement : RegionOpening : : )
	作用:开操作,需要手动输入开操作的范围

17、opening_circle(Region : RegionOpening : Radius : )
	作用:圆形开操作

18、reduce_domain(Image, Region : ImageReduced : : )
	作用:将指定的区域从图中扣出
	
18.1、rectangle1_domain(Image : ImageReduced : Row1, Column1, Row2, Column2 : )
	作用:将指定的区域按照矩形的方式扣除
	
19、select_obj(Objects : ObjectSelected : Index : )
	作用:从对象元组中选择指定下标的对象
	
20、gen_contour_region_xld(Regions : Contours : Mode : )
	作用:根据输入的区域,拟合成轮廓
	Regions:输入的区域
	Contour:输出的轮廓
	Mode: 'border', 'border_holes', 'center'
	轮廓生成的模式:边框"、"边框孔"、"中心"

21、area_center(Regions : : : Area, Row, Column)
	作用:获取区域内的面积和区域的中心点坐标
	
22、shape_trans(Region : RegionTrans : Type : )
	作用:拟合区域

23、orientation_region(Regions : : : Phi)
	作用:获取当前区域的弧度

24、query_font (WindowHandle, Font)
	作用:查询当前窗口下都有哪些字体类型
    FontWithSize := Font[0]+'-Bold-20'
    set_font (WindowHandle, FontWithSize)
    作用:设置显示字体型号、大小

25、dev_set_draw( : : DrawMode : )
	作用:设置填充模式,fill为显示填充区域,margin为显示填充的边框
	
26、smallest_circle(Regions : : : Row, Column, Radius)
	作用:寻找区域内最小的圆形,并输出圆心坐标和半径
	
27、dev_set_colored( : : NumColors : )
	作用:设置显示颜色的数量:3、6、12
	
28、dev_set_color( : : ColorName : )
	作用:设置显示的颜色
	
29、set_display_font( : : WindowHandle, Size, Font, Bold, Slant : )
	作用:显示字体的大小、型号、是否加粗、是否斜体

30、disp_message( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : )
	作用:在窗口中显示String。
	String:显示的内容
	CoordSystem:显示的坐标系类型,Window下的坐标系还是Image下的坐标系。

31、get_string_extents( : : WindowHandle, Values : Ascent, Descent, Width, Height)
	作用:获取指定值在空间中所占内容的大小
	
32、area_holes(Regions : : : Area))
	作用:获取范围内孔洞的面积
	
33、select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
	作用:区域选择
	Features:区域类型
	
34、inner_circle(Regions : : : Row, Column, Radius)
	作用:找到区域内的最大内接圆形,并输出圆心坐标和半径。
	
35、inner_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
	作用:找到区域内最大的内接矩形、并输出矩形左上角坐标和右下角坐标。

36、smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
	作用:找到区域内平行于坐标轴的最小矩形

37、smallest_rectangle2(Regions : : : Row, Column, Phi, Length1, Length2)
	作用:找到区域内可旋转的最小的外包矩形

2、常用的仿射变换算子

1、hom_mat2d_identity( : : : HomMat2DIdentity)
	作用:生成一个用于产生仿射变换矩阵的单位矩阵

2、hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
 	功能:把旋转角度添加到仿射变换矩阵
    HomMat2D :(输入参数)仿射变换矩阵
    Phi  :旋转角度(单位弧度)
   	Px   :变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换  (这里是指围绕这点进行旋转)
   	Py :  变换的固定点列坐标
  	HomMat2DRotate:输出的旋转变换的二维矩阵
	
3、hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
  //把缩放添加到仿射变换矩阵
   HomMat2D(输入参数):仿射变换矩阵
   Sx(输入参数):x轴方向的缩放倍数
   Sy(输入参数):y轴方向的缩放倍数
   Px(输入参数):变换的固定点行坐标
   Py(输入参数):  变换的固定点列坐标
   HomMat2DScale(输出参数):输出缩放变换矩阵
   
4、hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
   功能:把平移添加到防射变换矩阵
   HomMat2D:(输入参数)仿射变换矩阵
   Tx(输入参数):沿x轴方向平移的距离
   Ty:输入参数):沿y轴方向平移的距离
   HomMat2DTranslate(输出参数):输出变换矩阵
   
5、 hom_mat2d_slant( : : HomMat2D, Theta, Axis, Px, Py : HomMat2DSlant)
  功能:把斜切添加到防射变换矩阵
   HomMat2D        (输入参数):仿射变换矩阵
   Theta           (输入参数):斜切角度(单位:弧度)
   Axis            (输入参数):斜切的坐标轴。取值列表:x,y
   Px               (输入参数):变换的固定点x坐标
   Py              (输入参数):变换的固定点y坐标
   HomMat2DSlant  (输出参数):输出斜切仿射变换矩阵
   
6、vector_angle_to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D)
  功能:根据点和角度计算刚性仿射变换矩阵,支持旋转和平移。**********常用的,需要输入原始坐标和角度
  Row1(输入参数):原始点行坐标
  Column1(输入参数):原始点列坐标
  Angle1(输入参数):原始点角度
  Row2(输入参数):变换的目的点行坐标
  Column2(输入参数):变换的目的点列坐标
  Angle2(输入参数):变换的目的点角度
  HomMat2D(输出参数):输出仿射变换矩阵
  
7、 vector_to_rigid(::Px,Py,Qx,Qy:HomMat2D)
    功能:根据两个以上点对计算计算刚性仿射变换矩阵,支持旋转和平移
    Px:(输入参数)原始点组的x坐标
    Py:(输入参数)原始点组的y坐标
    Qx:(输入参数)变换的目的点组的x坐标
    Qy:输入参数)变换的目的点组的y坐标
    HomMat2D:(输出参数)输出仿射变换矩阵
    
8、vector_to_similarity(::Px,Py,Qx,Qy:HomMat2D)
    功能:根据两个以上点对计算相似仿射变换矩阵,支持旋转、平移和缩放
    Px:(输入参数)原始点组的x坐标
    Py:(输入参数)原始点组的y坐标
    Qx:(输入参数)变换的目的点组的x坐标
    Qy:(输入参数)变换的目的点组的y坐标
    HomMat2D:(输出参数)输出仿射变换矩阵

9、vector_to_hom_mat2d(::Px,Py,Qx,Qy:HomMat2D)     机器人视觉标定用
    功能:根据三个以上点对计算仿射变换矩阵,支持旋转、平移、缩放、斜切
    Px:(输入参数)原始点组的x坐标
    Py:(输入参数)原始点组的y坐标
    Qx:(输入参数)变换的目的点组的x坐标
    Qy:(输入参数)变换的目的点组的y坐标
    HomMat2D:(输出参数)输出仿射变换矩阵
    
10、hom_mat2d_to_affine_par( : : HomMat2D : Sx, Sy, Phi, Theta, Tx, Ty)   
    功能:根据仿射变换矩阵(齐次二维变换矩阵)计算仿射变换参数
        HomMat2D   (输入参数):仿射变换矩阵
        Sx          (输出参数):x方向的缩放因子(如果从图像空间变换到物理空间,就是x方向的像素单量)
        Sy          (输出参数):y方向的缩放因子(如果从图像空间变换到物理空间,就是y方向的像素单量)
        Phi         (输出参数):旋转角度
        Theta       (输出参数):斜切角度
        Tx          (输出参数):沿x方向平移的距离
        Ty          (输出参数):沿y方向平移的距离
        
11、affine_trans_contour_xld(Contours : ContoursAffinTrans : HomMat2D : )
    功能:对XLD轮廓进行二维仿射变换 (支持缩放,旋转,平移,斜切)
         Contours(输入参数):输入XLD轮廓
         ContoursAffinTrans(输出参数):输出变换的XLD轮廓
         HomMat2D(输入参数):仿射变换矩阵
         
12、affine_trans_image(Image : ImageAffinTrans : HomMat2D, Interpolation, AdaptImageSize : )
     功能:对图像轮廓进行二维仿射变换 (支持缩放、旋转、平移,斜切)
    Image          (输入参数):输入图像
    ImageAffinTrans (输出参数):变换后的图像
    HomMat2D      (输入参数):仿射变换矩阵
    Interpolation    (输入参数):插值算法。
    参数值列表nearest_neighbor,bilinear,constant,weighted
    AdaptImageSize  (输入参数):结果图像尺寸是否自适应。默认值:false
    
13、affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : ) 
    功能:对区域进行任意二维仿射变换
    Region              (输入参数):输入区域
    RegionAffineTrans   (输出参数):变换的区域
    HomMat2D            (输入参数):仿射变换矩阵
    Interpolate          (输入参数):插值算法。默认值:nearest_neighbor。
    参数值列表:constant,nearest_neighbor
    
14、affine_trans_polygon_xld(Polygon:PolygonsAffinTrans:HomMat2D:)
    功能:对XLD多边形进行任意二维仿射变换   
    Polygon(输入参数):输入XLD多边形
    PolygonsAffinTrans(输出参数):变换的XLD多边形
    HomMat2D(输入参数):仿射变换矩阵

3、投影变换(单应性变换)

1、hom_vector_to_proj_hom_mat2d( : : Px, Py, Pw, Qx, Qy, Qw, Method : HomMat2D)
    描述:使用给定的点对应关系计算同质变换矩阵。
    Px:变换前x点坐标
    py:变换前y点坐标
    pw:变换前w点坐标
    Qx:变换后x点坐标
    Qy:变换后y点坐标
    Qw:变换后w点坐标
    Method:估算的算法
        Default: 'normalized_dlt'
        List of values: 'dlt', 'normalized_dlt'
    HomMat2D:输出投影变换需要的变换矩阵,这里是齐次变换矩阵

2、projective_trans_image(Image : TransImage : HomMat2D, Interpolation, AdaptImageSize, TransformDomain : )
    描述:对图像进行投影变换。
    Image:输入的图像
    TransImage:输出变换后的图像
    HomMat2d:输入的矩阵
    Interpolation:变换的插值方法
    AdaptImageSize:是否自动调整输出图像的大小?
    TransformDomain:输入图像的域是否也应进行转换?
Demo:
dev_update_off ( )
dev_close_window ( ) 
*获得图像、打开适合图片的窗口
read_image (Image_slanted. datacode/ecc200/ecc200_to_preprocess_001') dev_open_window_fit_image (Image_slanted,0,0 ,-1 , -1, Window Handle)
*设置
设置输出颜色为'白色'
dev_set_color ('white')
定义输出线宽为3
dev_set_line_width (3)
stop ( )
*定义坐标变量
XCoordCorners : = [130, 225, 290, 63]
YCoordCorners : = [101, 96, 289, 269]
*为每个输入点生成十字形状的XLD轮廓,6代表组成十字横线的长度,0.78代表角度
gen_cross_contour_xld (Crosses, XCoordCorners, YCoordCorners, 6, 0. 78)
dev_display (Image_slanted)
dev_display (Crosses)
stop ( )
*生成投影变换需要的变换矩阵,这里是齐次变换矩阵
hom_vector_to _proj_hom_mat2d (XCoordCorners, YCoordCorners, [1, 1, 1. 1], [70, 270, 270, 70], [100, 100, 300, 300], [1, 1, 1, 1], ' normalized_dlt', HomMat2D)
*在待处理的图像上应用投影变换矩阵,并将结果输出到Image_rectified中 
projective_trans_image(Image_slanted,lmage_rectified,HomMat2D, 'bilinear','false', 'false')

*为上述2D数据代码创建模型,DataCodeHandle为数据代码模型
create_data_code_2d_model ('Data Matrix ECC 200’, [ ],[ ],DataCodeHandle)
*检测输入图像中的2D数据模型代码,并读取编码
数据,SymbolXLDs是成功解码后的符号生成的XLD轮廓
find_data_code_2d (Image_rectified, SymbolXLDs, DataCodeHandle, [ ],[],ResultHandles, DecodedDataStrings)
*显示
dev_display (Image_slanted)
dev_display (Image_rectified)
dev display (SymbolXLDs)
*在图形窗口编辑并显示文本
disp_message (WindowHandle, 'Decoding successful' , 'window' , 12, 12, 'black' , 'true' ) 
*设置当前窗口的字体属性
set_display_font (WindowHandle, 12, 'mono', 'true' , 'false' )
*在图形窗口编辑并显示文本
disp_message (WindowHandle, DecodedDataStrings, 'window', 350, 70, 'forest green' , 'true')
*创建二维码模型
clear_data_code_2d_model (DataCodeHandle)

4、形态操作常用算子

区域操作:
1、erosion_circle(Region : RegionErosion : Radius : )
	使用圆形结构对区域进行腐蚀操作
 
2、erosion_rectangle1(Region : RegionErosion : Width, Height : )
	使用矩形结构对区域进行腐蚀操作
	
3、erosion1(Region, StructElement : RegionErosion : Iterations : )
	使用生成的结构对区域进行腐蚀操作
	StructElement:生成的结构元素
	Iterations:迭代腐蚀的次数
	
4、erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
	使用生成的结构元素对区域进行腐蚀操作(可设置参考点位置)
	
5、dilation_circle(Region : RegionDilation : Radius : )
	使用圆形结构对区域进行膨胀操作
	
6、dilation_rectangle1(Region : RegionDilation : Width, Height : )
	使用矩形结构元素对区域进行膨胀操作
	
7、dilation1(Region, StructElement : RegionDilation : Iterations : )
	使用生成的结构元素对区域进行膨胀操作

8、erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
	使用生成的结构元素对区域进行膨胀操作(可设置参考点位置)

9、opening(Region, StructElement : RegionOpening : : )
	使用生成的结构元素对区域进行开运算操作,达到去除毛刺的效果
	
10、opening_circle(Region : RegionOpening : Radius : )
	用圆形结构元素对区域进行开运算操作

11、opening_rectangle1(Region : RegionOpening : Width, Height : )
	使用矩形结构元素对区域进行开运算操作
	
12、closing(Region, StructElement : RegionClosing : : )
	使用生成的结构元素对区域进行闭运算操作,达到闭合孔洞的效果

13、closing_circle(Region : RegionClosing : Radius : )
	使用圆形结构元素对图像进行闭运算操作
	
14、closing_rectangle1(Region : RegionClosing : Width, Height : )
	使用矩形结构元素对区域进行闭运算操作

15、hit_or_miss(Region, StructElement1, StructElement2 : RegionHitMiss : Row, Column : )
	击中与击不中算子,需要传入两个符合被搜索形状的结构元素。
	Region:输入的搜索区域
	StructElement1:需要输入的结构元素1
	StructElement2:需要输入的结构元素2
	RegionHitMiss:输出集中的区域
	Row, Column:输出中心坐标
	
------------------灰度操作---------------------
16、gray_erosion(Image, SE : ImageErosion : : )
	使用生成结构元素对灰度图像进行腐蚀,使暗的地方更暗
	
17、gray_erosion_rect(Image : ImageMin : MaskHeight, MaskWidth : )
	使用矩形结构元素对灰度图像进行腐蚀

18、gray_erosion_shape(Image : ImageMin : MaskHeight, MaskWidth, MaskShape : )
	使用多边形结构元素对灰度图像进行腐蚀操作

19、gray_dilation(Image, SE : ImageDilation : : )
	使用生成的结构元素对灰度图像进行膨胀操作,使亮的地方更亮
	
20、gray_dilation_rect(Image : ImageMax : MaskHeight, MaskWidth : )
	使用多边形结构元素对灰度图像进行膨胀操作
	
21、gray_dilation_shape(Image : ImageMax : MaskHeight, MaskWidth, MaskShape : )
	使用多边形结构元素对灰度图像进行膨胀操作
--------------------------------------------------

*生成结构半径为5的圆形结构
gen_disc_se (SE, 'byte', 5, 5, 0)

22、gray_opening(Image, SE : ImageOpening : : )
	使用自定义结构元素对灰度图像进行开运算操作
	
23、gray_erosion(Image, SE : ImageErosion : : )
	使用自定义结构元素对灰度图像进行闭运算操作

24、gray_erosion_shape(Image : ImageMin : MaskHeight, MaskWidth, MaskShape : )
	对灰度图像进行闭运算操作,消除暗背景下比较亮的区域
	
25、gray_opening_shape(Image : ImageOpening : MaskHeight, MaskWidth, MaskShape : )
	对灰度图像进行开操作,消除亮背景下比较暗的区域

26、gray_tophat(Image, SE : ImageTopHat : : )
	顶帽运算:原图像减去开操作的结果。
	
27、gray_bothat(Image, SE : ImageBotHat : : )
	低帽运算:原图像减去闭操作的结果。

28、boundary(Region : RegionBorder : BoundaryType : )
	边界提取
	BoundaryType:内部填充'inner', 线条填充'inner_filled', 外部填充'outer'

29、fill_up(Region : RegionFillUp : : )
	区域填充孔洞

30、skeleton(Region : Skeleton : : )
	提取区域的骨架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值