1. 什么是一维测量
- 一维测量就是在图像中沿着某一个方向取寻找边,并且得到边与边之间的距离(像素)
2. 测量矩形
2.1 算子
生成测量矩形
gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)
- Row, Column,Phi:测量矩形中心的行列坐标和角度;
- Length1, Length2:测量矩形的板宽和半高;
- Width, Height:测量矩形所在的图像的宽和高;
- Interpolation:插值算法
- MeasureHandle:测量矩形的句柄
不带边缘对查找
measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)
- MeasureHandle:测量矩形的句柄;
- Sigma:高斯平滑系数;
- Threshold:最小边缘幅度;
- Transition:过度,亮到暗’negative’, 暗到亮’positive’,两种都要’all’
- Select :如果设置为’all’,则返回所有边缘点。 如果将其设置为’ first’,则仅返回提取的边缘点中的第一个,而将其设置为’last’时,仅返回最后一个。
- RowEdge, ColumnEdge:边缘点行列坐标
- Amplitude:返回边缘幅度
- Distance:返回连续边之间的距离
带边缘对查找
measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
- MeasureHandle:测量矩形的句柄;
- Sigma:高斯平滑系数;
- Threshold:最小边缘幅度;
- Transition:过度,亮到暗’negative’, 暗到亮’positive’,两种都要’all’
- Select :如果设置为’all’,则返回所有边缘点。 如果将其设置为’ first’,则仅返回提取的边缘点中的第一个,而将其设置为’last’时,仅返回最后一个。
- RowEdgeFirst, ColumnEdgeFirst,AmplitudeFirst:第一条边中心的行列坐标和边缘幅度
- RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond:第二条边中心的行列坐标和边缘幅度
- IntraDistance:返回边缘对中两条边之间的距离
- Distance:返回连续两个边缘对之间的距离
关闭测量矩形
close_measure (MeasureHandle)
2.2 测量案例
*1. 读入图像
read_image (Fuse, 'fuse')
get_image_size (Fuse, Width, Height)
*2. 生成测量矩形
Angle:=rad(90)
Length2:=30
gen_rectangle2 (Rectangle, 296, 543, Angle, 70, 30)
gen_measure_rectangle2 (296, 543, Angle, 70, 30, Width, Height, 'nearest_neighbor', MsrHandle)
*3. 一维测量
measure_pairs (Fuse, MsrHandle, 1.5, 15, 'all', 'all', RowFirst, ColumnFirst, AmplitudeFirst, RowSecond, ColumnSecond, AmplitudeSecond, WidthPairs, DistancePairs)
*4. 显示
dev_set_line_width (3)
dev_set_draw ('margin')
dev_get_window (WindowHandle)
gen_empty_obj (objects)
for i := 0 to |RowFirst|-1 by 1
gen_contour_polygon_xld (EdgeFirst, [-sin(Angle + rad(90)) * Length2 + RowFirst[i],-sin(Angle - rad(90)) * Length2 + RowFirst[i]], [cos(Angle + rad(90)) * Length2 + ColumnFirst[i],cos(Angle - rad(90)) * Length2 + ColumnFirst[i]])
gen_contour_polygon_xld (EdgeSecond,[RowSecond[i]-Length2*cos(Angle),RowSecond[i]+Length2*cos(Angle)],[ColumnSecond[i]-Length2*sin(Angle),ColumnSecond[i]+Length2*sin(Angle)] )
concat_obj (objects, EdgeFirst, objects)
concat_obj (objects, EdgeSecond, objects)
endfor
dev_display (Fuse)
dev_display (objects)
stop ()
dev_display (Rectangle)
disp_arrow (WindowHandle, RowFirst[0]+20, ColumnFirst[0], RowSecond[1]-20, ColumnSecond[1], 1)
*5关闭测量矩形
close_measure (MsrHandle)
3. 测量弧形
3.1 算子
生成测量弧形
gen_measure_arc( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle)
- CenterRow, CenterCol, Radius:测量弧形的中心坐标和半径
- AngleStart, AngleExtent:测量弧形的起始角度和角度范围
- AnnulusRadius:圆环(测量)的半径,半宽
- Width, Height:图像宽高
- IntraDistance:返回边缘对中两条边之间的距离
- MeasureHandle:测量弧形句柄
3.2 测量案例
*1读入图像
read_image (Zeiss1, 'zeiss1')
get_image_size (Zeiss1, Width1, Height1)
dev_get_window (WindowHandle)
*2产生测量弧形
AngleStart := 2.06229//起始角度
AngleExtent :=-3.13549//角度范围
Row := 270.722//圆心行
Column := 339.749//圆心列
Radius := 106.631//半径
get_points_ellipse (AngleStart + AngleExtent, Row, Column, 0, Radius, Radius, RowPoint, ColPoint)
disp_arc (WindowHandle, Row, Column, AngleExtent, RowPoint, ColPoint)
***生成测量弧形
gen_measure_arc (Row, Column, Radius, AngleStart, AngleExtent, 12.5,Width1, Height1, 'nearest_neighbor', MeasureHandle1)
*3测量
measure_pos (Zeiss1, MeasureHandle1, 1, 5, 'all', 'all', RowEdge1, ColumnEdge1, Amplitude1, Distance1)
distance_pp(RowEdge1[1],ColumnEdge1[1],RowEdge1[2],ColumnEdge1[2],distance)
*4显示
dev_display (Zeiss1)
disp_arc (WindowHandle, Row, Column, AngleExtent, RowPoint, ColPoint)
dev_set_color ('green')
dev_set_line_width (5)
disp_line (WindowHandle,RowEdge1[1],ColumnEdge1[1],RowEdge1[2],ColumnEdge1[2])
set_display_font (WindowHandle, 26, 'mono', 'true', 'false')
disp_message (WindowHandle, '距离'+distance+'pixel', 'window', 85, 85, 'black', 'true')
*5关闭测量弧形
close_measure (MeasureHandle1)
4. 下载地址
相关代码和图片下载:
链接:https://pan.baidu.com/s/1W_HocLmUtgLhSP1cq7VquA
提取码:omk5