1.circularity(Regions : : : Circularity)
操作符circularity计算输入区域与圆的相似性。
若F为区域面积,max为中心到所有轮廓像素的最大距离,则形状因子C定义为:
C = min(1,C')
圆的形状因子C是1。
如果区域很长或者有洞,C小于1。
circularity特别适用于大的凸起、孔洞和不连通区域。
C的值被裁剪为1.0,因为一个区域的像素面积只能近似于一个真实圆的面积。
这种近似误差在小区域比在大区域更大。
对于空区域,操作符circularity返回值0(如果没有设置其他行为(请参见set_system))。
如果传递多个区域,则形状因子的数值存储在一个元组中,
该值在元组中的位置对应于该区域在输入元组中的位置。
2.compactness_xld(XLD : : : Compactness)
compactness_xld计算XLD中每个输入轮廓或多边形的紧度。
输入轮廓或多边形不能与自身相交,否则生成的参数没有意义。
输入轮廓或多边形是否与自身相交可以使用test_self_intersection_xld确定。
如果输入的轮廓或多边形没有闭合,它将自动闭合。
如果L为轮廓或多边形的长度,pai为圆周率
F为轮廓或多边形的封闭面积,
则形状因子Compactness 定义为
Compactness =L*L/4*F*pai
圆的形状因子紧度为1。
如果轮廓或多边形包含一个拉长的区域,
则紧度大于1。操作符compactness_xld反应轮廓或多边形的过程(粗糙度)。
如果传递了多个轮廓或多边形,
则将形状因子按与XLD中相应的轮廓或多边形相同的顺序存储在一个元组中。
3.contour_point_num_xld(Contour : : : Length)
contour_point_num_xld返回输入轮廓Contour 的长度,
即,它的点的个数,Length。
4.convexity_xld(XLD : : : Convexity)
convexity_xld计算每个输入轮廓或多边形的凸度。
输入轮廓或多边形不能与自身相交,
否则生成的参数没有意义
(输入轮廓或多边形是否与自身相交可以使用test_self_intersection_xld确定)。
如果输入的轮廓或多边形没有闭合,它将自动闭合。
若F1为凸包面积和F0为原轮廓或多边形围成的面积,
则形状因子Convexity 定义为: Convexity = F0/F1
如果轮廓或多边形是凸的(如矩形、圆形等),
则形状因子凸性为1。如果有凹痕,凸性小于1。
5.diameter_xld(XLD : : : Row1, Column1, Row2, Column2, Diameter)
操作符diameter_xld计算每个输入轮廓或多边形的两点之间的最大距离。
这两个极值的坐标和它们之间的距离将被返回。
输入轮廓或多边形不能与自身相交,否则得到的参数没有意义。
输入轮廓或多边形是否与自身相交可用test_self_intersection_xld确定。
如果输入的轮廓或多边形没有闭合,它将自动闭合。
如果传递了多个轮廓或多边形,
结果将按照与XLD中相应的轮廓或多边形相同的顺序存储在元组中。
例程:
read_image (Image, 'printer_chip/printer_chip_01')
threshold (Image, Region, 128, 255)
connection (Region, ConnectedRegions)
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
gen_contour_region_xld (SelectedRegions, Contours, 'border')
circularity (SelectedRegions, Circularity)
compactness_xld (Contours, Compactness)
contour_point_num_xld (Contours, Length)
convexity_xld (Contours, Convexity)
diameter_xld (Contours, Row1, Column1, Row2, Column2, Diameter)
gen_contour_polygon_xld (Contour, [Row1,Row2], [Column1,Column2])
dev_display (SelectedRegions)
dev_display (Contour)
|