一.基本概念
基本流程为:获取图像---对图像进行灰度值标定(针对相机获取的图像灰度和输入能量之间的非线性关系,获得相机对输入能量的线性函数)---排列感兴趣区域或图像---校正图像---创建测量句柄---进行测量---将测量结果转换到世界坐标系---结果可视化---释放测量句柄。
二.典型相关算子:
1.gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )
创建任意方向的一个矩形,控制输入分别为矩形中心的行列坐标,矩形纵向与水平方向的夹角,长和宽的一半。
2.gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)
产生测量句柄,准备提取和矩形主轴垂直的直边缘。插值方法有:'nearest_neighbor', 'bilinear', 'bicubic'三种。
3. measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
抽取和矩形或者圆弧垂直的直线。
Transition:沿主轴方向dark-to-light定义为第一类边缘,反之为第二类边缘。
Select (input_control)
RowEdgeFirst ;ColumnEdgeFirst ;AmplitudeFirst
第一类边缘点的行列坐标和幅度值。
RowEdgeSecond ;ColumnEdgeSecond ;AmplitudeSecond
第二类边缘点的行列坐标和幅度值。
4.get_points_ellipse( : : Angle, Row, Column, Phi, Radius1, Radius2 : RowPoint, ColPoint)
返回椭圆上某一点,该点与椭圆中线连线和椭圆长轴正方向成角为参数Angle。
Row, Column, Phi, Radius1, Radius2:为椭圆的参数
5. disp_arc( : : WindowHandle, CenterRow, CenterCol, Angle, BeginRow, BeginCol : )
在窗口中显示圆弧。从(BeginRow, BeginCol)点,顺时针显示,角度为Angle
6.gen_measure_arc( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle)
产生圆弧测量句柄,提取和圆弧垂直的直线。
AnnulusRadius:为沿着半径方向测量宽度的一半。
7.count_seconds( : : : Seconds)
程序执行时间测量算子。Eg. count_seconds(Start)
* program segment to be measured
count_seconds(End)
Seconds := End - Start
8. measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)
提取和矩形或者弧垂直的边缘线。
RowEdge, ColumnEdge:提取的边缘线与测量弧线或测量矩形的交点坐标,为亚像素精度,改算子常和循环配合使用。
Distance:连续边缘线之间的距离。
9. distance_pp( : : Row1, Column1, Row2, Column2 : Distance)
计算两点之间的距离。
10. create_funct_1d_pairs( : : XValues, YValues : Function)
根据一系列的(x,y)坐标值创建一个函数。X坐标值会被升序排列。
11. set_fuzzy_measure_norm_pair( : : MeasureHandle, PairSize, SetType, Function : )
设置归一化的隶属度函数。
PairSize:优先的边缘对宽度
SetType:待选择的模糊集合
Function :隶属度函数
12. fuzzy_measure_pairs(Image : : MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, ColumnEdgeCenter, FuzzyScore, IntraDistance, InterDistance)
创建模糊测理论量句柄,提取和矩形或弧线垂直的直线。
AmpThresh:最小的边缘梯度阈值;
FuzzyThresh:最小的模糊阈值;
FuzzyScore:对所提取边缘值的模糊评价;
13.create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
为匹配准备一个形状模型。模型产生于多个图像金字塔级数,并储存在内存中。每个级数再进行多次旋转。最高的金字塔级数最少需要四个特征点进行匹配。
NumLevels: 金字塔的最大级别。
AngleStart ;AngleExtent ;AngleStep :匹配旋转开始的角度和终止的角度范围,角度步长,单位弧度。
Optimization:产生模板的优化种类和方法。
Metric :模板被识别的条件。
Contrast:模板图像物体和背景之间或物体各部分之间的灰度差异值。最小为2个元素的数组。
MinContrast :最小灰度差异。
ModelID
14.get_shape_model_contours( : ModelContours : ModelID, Level : )
返回一个形状模型的多边形轮廓表示。
15.hom_mat2d_identity( : : : HomMat2DIdentity)
创建一个2D转换的齐次变换矩阵---平移矩阵。
HomMat2DIdentity = | 0 1 0 |
\ 0 0 1 /
16.hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)增加一个平移量到其次变换矩阵HomMat2D中。
/ 1 0 Tx \
HomMat2DTranslate = | 0 1 Ty | * HomMat2D
\ 0 0 1 /
17.
对多边形轮廓进行2D映射。HomMat2D为齐次变换矩阵,应用到轮廓的每一个点。
18.wait_seconds( : : Seconds : )
推迟程序执行时间。