一、定义
二维测量指的是测量二维几何图形的参数,例如圆、椭圆、圆弧、矩形的相关参数。这里的参数对圆来说可以是半径;椭圆可以是长半轴、短半轴;矩形则包括宽和高。
二、基本步骤
1.创建测量模型
使用算子 create_metrology_model
2.设置测量图像的宽高到模型中
set_metrology_model_image_size
3.指出被测对象在图像中的大致位置
对于圆,可以设置圆心点和半径
CircleParam:=[x,y,r]
对于线,需要一个矩形,这个矩形需要包含被测直线且垂直于被测直线
对于矩形需要指定矩形的宽高和旋转角度
4.将计量对象添加到模型中
下面添加计量对象的算子分别为:圆,椭圆,矩形,线
最后一个算子add_metrology_object_generic可以由用户自己指定shape,取值 ('circle', 'ellipse', 'line', 'rectangle2')
add_metrology_object_circle_measure for circles
add_metrology_object_ellipse_measure for ellipses
add_metrology_object_rectangle2_measure for rectangles
add_metrology_object_line_measure for lines
add_metrology_object_generic
5.设置模型参数
set_metrology_model_param
6.设置对象参数
set_metrology_object_param
7.对齐计量模型
align_metrology_model
8.应用测量
apply_metrology_model
9.可视化测量结果
get_metrology_object_result 查询对象的适应几何形状的参数(获取拟合结果的几何参数)
get_metrology_object_measures 访问所有定位边的行和列坐标
get_metrology_object_result_contour 提供了作为XLD轮廓的适应几何形状的可视化(获取测量结果的轮廓)
三、案例
dev_close_window ()
read_image (Image, './2.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
rgb1_to_gray (Image, GrayImage)
*创建几何测量句柄
create_metrology_model (MetrologyHandle)
*设置句柄与图像的像素关系
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
*自定义椭圆模型
draw_ellipse (WindowHandle, Row, Column, Phi, Radius1, Radius2)
*添加椭圆模型
*卡边尺长
MeasureLength1:=15
*卡边尺宽
MeasureLength2:=1
add_metrology_object_ellipse_measure (MetrologyHandle, Row, Column, Phi, Radius1, Radius2, MeasureLength1, MeasureLength2, 1, 30, [], [], Index)
*显示卡边尺模型
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
*开始测量
apply_metrology_model (GrayImage, MetrologyHandle)
*显示提取到的轮廓线
get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
*拟合,计算轮廓结果
fit_ellipse_contour_xld (Contour, 'fitzgibbon', -1, 0, 0, 200, 3, 2, Row1, Column1, Phi1, Radius1, Radius2, StartPhi, EndPhi, PointOrder)
*显示结果
*椭圆的中心点
gen_cross_contour_xld (Cross, Row1, Column1, Radius1*2, Phi1)
set_display_font (WindowHandle, 30, 'mono', 'true', 'false')
disp_message (WindowHandle, ['椭圆中心坐标:('+Row1+','+Column1+')','椭圆斜率:'+Phi1,'椭圆最大半长:'+Radius1,'椭圆最小半长:'+Radius2], 'window', 12, 112, 'green', 'false')
*清除句柄
clear_metrology_model (MetrologyHandle)