halcon基础系列之二维量测相关算子

简介: halcon基础系列之二维量测相关算子

1.create_metrology_model

创建测量几何形状所需的数据结构。

create_metrology_model( : : : MetrologyHandle)
MetrologyHandle(out_control):几何形状输出的句柄

2.set_metrology_model_image_size

设置测量模型图像的大小,主要是为了提高效率。

set_metrology_model_image_size( : : MetrologyHandle, Width, Height : )
  MeasureHandle:输入测量模型的句柄;
  Width:输出图像宽;
  Height:输出图像高

3.add_metrology_object_rectangle2_measure

将一个矩形添加到度量模型中。

MeasureHandle:输入测量模型的句柄;
    Row:输入矩形中心点行坐标;
    Column:输入矩形中心点列坐标;
    Phi:输入主轴 Phi 的方向, Phi 的输入值会自动映射到区间(-3.14 ,3.14)。;
    ColumnEnd:输入测量区域列坐标终点;
    Length1:输入矩形较长的半边长 Length1 ;
    Length2:输入矩形较短的半边长 Length2;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

4.add_metrology_object_circle_measure

添加圆形测量模型

MeasureHandle:输入测量模型的句柄;
    ** Row**:输入圆心的行;
    Column:输入圆心的列;
    Radius:输入圆的半径;
    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
    **GenParamValue **:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
    Index:输出创建测量对象的索引值;

5.set_metrology_object_param

为测量模型的测量对象设置参数。

set_metrology_object_param( : : MetrologyHandle,
         Index, GenParamName, GenParamValue : )
    MeasureHandle:输入测量模型的句柄;
    Index:指定测量对象,为all时所有计量对象的参数都被设置(‘all’);
    GenParamName:输入参数名称;默认:‘num_instances’,参考:
   GenParamValue:输入参数值;默认:1,参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, 
  ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, 
  ‘bicubic’;
'measure_length1':区域,垂直于边界的测量区域的一半长度
            'measure_length2':区域,相切于边界的测量区域的一半长度
            'measure_distance':区域,两个测量区域中心之间的距离
            'num_measures':区域,测量区域数
            'measure_sigma':测量,用于平滑的高斯函数的 Sigma
            'measure_threshold':测量,最小边缘幅度阈值
            'measure_select':测量,边缘端点的选择('last'、'first')
            'measure_transition':测量,方向('all'、'negative'、 'positive')
            'measure_interpolation':测量,插值类型
            'min_score':拟合,最小分数
            'num_instances':拟合,成功拟合实例的最大数量
            'distance_threshold':拟合,距离阈值

6.apply_metrology_model

测量并拟合测量模型中所有计量对象的几何形状。

apply_metrology_model(Image : : MetrologyHandle : )
    Image:输入的测量图像;
    MeasureHandle:输入测量模型的句柄;

7.get_metrology_object_result

获取测量模型的测量结果

get_metrology_object_result(:: MetrologyHandle,Index,Instance,GenParamName, 
    GenParamValue:Parameter)
 MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
    GenParamName:输入参数名称;默认值:‘result_type’,参考:‘angle_direction’,‘result_type’,‘used_edges’;
      (1)‘result_type’:如果GenParamName设置为’result_type’,则GenParamValue允许控制计量对象的返回方式和结果。
      (2)‘angle_direction’:该参数确定由拟合产生的角度的旋转方向。将参数’angle_direction’设置为’正’,在物体的主轴和坐标系的水平轴之间以数学正方向(逆时针方向)指定角度。将参数’angle_direction’设置为’负’,在对象的主轴和坐标系的水平轴之间沿数学负方向(顺时针)指定角度。角度的结果以弧度返回。
      默认值:‘正面’,参考:‘正面’,‘负面’;
      (3)‘used_edges’:要查询实际用于拟合度量对象的边缘点,可以选择以下GenParamValue值:
        ‘行’:返回用于拟合度量对象的边的行坐标。
        ‘列’:返回用于拟合度量对象的边的列坐标。
        ‘振幅’:返回用于拟合度量对象的边缘的边缘幅度。
    GenParamValue:输入参数值;默认值:‘all_param’,参考:‘all_param’, ‘score’, ‘true’, ‘false’, ‘row’, ‘column’, ‘amplitude’, ‘radius’, ‘phi’, ‘radius1’, ‘radius2’, ‘length1’, ‘length2’, ‘row_begin’, ‘column_begin’, ‘row_end’, ‘column_end’, ‘nrow’, ‘ncolumn’, ‘distance’, ‘x’, ‘y’, ‘x_begin’, ‘y_begin’, ‘x_end’, ‘y_end’, ‘nx’, ‘ny’, ‘positive’, ‘negative’
      如果GenParamValue设置为’all_param’,则返回计量对象的所有测量参数。
        对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或[‘x’,‘y’,‘radius’]。
        对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或[‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]。
        对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]或[‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]
        对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或[‘x’,‘y’,‘phi’,‘length1’,‘length2’]。
    Parameter:输出结果值;

8.get_metrology_object_result_contour

查询(获取)测量对象的结果轮廓

Contour:输出给定测量对象的结果轮廓;
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,参考:Resolution >= 1.192e-7;

9.get_metrology_object_measures

获取测量区域和测量模型的测量对象的边缘位置结果。

get_metrology_object_measures( : Contours : MetrologyHandle, Index, Transition : Row, Column)
    Contours:输出测量对象测量区域的矩形XLD轮廓;
    MetrologyHandle:输入测量模型的句柄;
    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
    Transition:输入选择浅色/深色或深色/浅色边缘;默认值:‘all’,可选:‘全部’,‘负面’,‘正面’;
    Row:输出测量边缘的行坐标;
    Column:输出测量边缘的列坐标;

程序实例:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'C:/Users/Maxwell/Desktop/pads.png')
get_image_size (Image, Width, Height)
dev_display (Image)
circle_center_r:=52
circle_center_c:=348
circle_radio:=23
rectangle_r:=410.268
rectanle_c:=215.597
rectangle_phi:=1.5708
rectangle_length1:=89.1328
rectangle_length2:=97.2177
*创建测量模型句柄
create_metrology_model (MetrologyHandle)
*句柄中塞入测量图像大小
set_metrology_model_image_size (MetrologyHandle, Width, Height)
*添加测量模型
*圆形
add_metrology_object_circle_measure (MetrologyHandle, circle_center_r, circle_center_c, circle_radio, 10, 5, 1.5, 2, [], [], IndexCircle)
*方形
add_metrology_object_rectangle2_measure (MetrologyHandle, rectangle_r, rectanle_c, rectangle_phi, rectangle_length1, rectangle_length2, 20, 5, 1.5, 1, [], [], IndexRectangle)
*设置测量模型相关参数
set_metrology_object_param (MetrologyHandle, IndexCircle, 'num_instances', 2)
*设置极性
set_metrology_object_param (MetrologyHandle, IndexCircle, 'measure_transition', 'negative')
set_metrology_object_param (MetrologyHandle, IndexCircle, 'min_score', .9)
*应用测量模型
apply_metrology_model (Image, MetrologyHandle)
*获取测量结果
get_metrology_object_result (MetrologyHandle, IndexCircle, 'all', 'result_type', 'all_param', Parameter)
*获取测量结果轮廓
get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
*获取边缘点位信息
get_metrology_object_model_contour (Contour1, MetrologyHandle, 'all', 1.5)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
*计算边缘点的数量
tuple_length (Row, Length)
gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)

运行结果:

 

相关文章
|
6月前
基于形状模板匹配(一)相关算子简介
基于形状模板匹配(一)相关算子简介
108 0
|
存储 算法
halcon模板匹配实践(1)算子参数说明与算子简介
halcon模板匹配实践(1)算子参数说明与算子简介
798 0
|
6月前
halcon算子模板匹配(一)基于形状的模板匹配
halcon算子模板匹配(一)基于形状的模板匹配
836 0
|
6月前
Halcon基础系列之矩阵相关算子
Halcon基础系列之矩阵相关算子
|
6月前
halcon基础系列之几何工具相关算子
halcon基础系列之几何工具相关算子
115 0
|
6月前
halcon基础系列之基于相关性模板匹配算子
halcon基础系列之基于相关性模板匹配算子
165 0
|
6月前
|
算法
halcon系列之直线拟合和圆形拟合算子
halcon系列之直线拟合和圆形拟合算子
657 0
|
6月前
|
算法 计算机视觉 C++
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
158 0
|
6月前
|
存储 传感器 算法
相机标定系列---opencv相关标定算子
相机标定系列---opencv相关标定算子
135 0
|
6月前
|
算法 计算机视觉 芯片
[Halcon&定位] 二维仿射变换原理与算子解析
[Halcon&定位] 二维仿射变换原理与算子解析
322 0