30.4、Blob--特征提取

1select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : ) 对象为region    1

2select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : ) 对象为xld    1

3select_shape_std(Regions : SelectedRegions : Shape, Percent : )    对象为region    4

4、特征检测工具:    5

5、几个常用特征的原理:    6

6fill_up(Region : RegionFillUp : : )    对象为region    8

7fill_up_shape(Region : RegionFillUp : Feature, Min, Max : )    对象为region    8

8connect_and_holes(Regions : : : NumConnected, NumHoles)    对象为region    9

 

特征描述了区域的"特征属性"。区域特征(形状特征)描述区域的的几何特征,这些特征不受"相关的"灰度值影响。灰度值特征使用了给定图像的灰度值,通常这个图像来自分割出来的区域。特征提取应用在:

(1)、分割出来区域后,选择满足条件的区域

(2)、区域分类,比如OCR

(3)、测量

(4)、质量检测

特征提取,建议结合特征直方图。笔记《5、图像分割(阈值)》

1、select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : ) 对象为region

    功能:根据形状特征选择区域

    Regions:输入区域数组

    SelectedRegions:输出筛选后的结果

    Features:选择的特征,可以选择多个

    Operation:每个特征的链接方式(or、and)

    Min, Max:每个特征的下上限

    

    例子:

    *关闭更新

dev_update_window ('off')

*读取region

read_region (Region, 'c:/region.reg')

*计算中心

area_center (Region, Area, Row, Column)

dev_display (Region)

for Index := 1 to 2 by 1

select_obj (Region, Region1,Index)

*计算圆度

circularity (Region1, Circularity1)

*计算矩形度

rectangularity (Region1, Rectangularity1)

*显示信息

disp_message (3600, '矩形度'+Rectangularity1, 'window', Row[Index-1]-30, Column[Index-1]-20, 'yellow', 'false')

disp_message (3600, '圆形度'+Circularity1, 'window', Row[Index-1]-10, Column[Index-1]-20, 'yellow', 'false')

 

endfor

 

*矩形度中选中了矩形,圆度中筛选了圆。用或or把这两个关系链接,所以两个都选中。假如用与and来链接它们关系,两个都不被选中

select_shape (Region, SelectedRegions, ['circularity','rectangularity'], 'or', [0.80776,0.89606], [0.91279,0.97618])

    注:这个算子的特征集合:看附录《附录1:region特征全集(select_shape)》

2、select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : ) 对象为xld

功能:根据形状特征选择轮廓xld contour或多边形xld polygon

例:

 

draw_xld (ContOut, 3600, 'true', 'true', 'true', 'true')

draw_xld (ContOut1, 3600, 'true', 'true', 'true', 'true')

concat_obj (ContOut, ContOut1, ObjectsConcat)

*选择面积为7000-8000xld contours

select_shape_xld (ObjectsConcat, SelectedXLD, 'area', 'and', 7000, 8000)

 

*xld contours转换为xld polygon

gen_polygons_xld (ObjectsConcat, Polygons, 'ramer', 2)

*选择面积为7000-8000xld polygon

select_shape_xld (Polygons, Selectedpoly, 'area', 'and', 7000, 8000)

注:这个算子的特征集合:看附录《附录2:xld特征全集(select_shape_xld)》

3、select_shape_std(Regions : SelectedRegions : Shape, Percent : )    对象为region

    功能:根据指定的形状选择区域

    Shape:指定形状特征('max_area', 'rectangle1', 'rectangle2'

*创建region区域

gen_circle (ROI_0, 105.5, 41.5, 18.4391)

gen_ellipse (TMP_Region, 96.5, 114.5, rad(40.7321), 47.5079, 8)

union2 (ROI_0, TMP_Region, ROI_0)

gen_rectangle1 (TMP_Region, 85.5, 175.5, 125.5, 255.5)

union2 (ROI_0, TMP_Region, ROI_0)

gen_rectangle2 (TMP_Region, 102.5, 334.5, rad(16.1134), 46.8402, 17.8466)

union2 (ROI_0, TMP_Region, ROI_0)

connection (ROI_0, ConnectedRegions)

*筛选出矩形度在95%以上的

select_shape_std (ConnectedRegions, SelectedRegions, 'rectangle1', 95)

4、特征检测工具:

功能:用于特定区域的形状和灰度值检测。

例子(检测region的特征,自动计算出特征的大小):

例子2::检测图像(下图是用region指定图像的某部分)的相关信息如最小灰度值,最大灰度值,平均灰度值,各种异性,熵值等。

5、几个常用特征的原理:

(1)、最小外接圆

(2)、最小外接齐轴矩形

(3)、最小外接仿射矩形

(4)、凸度:Convexity = 转换后面积和转换前面积的比例

(5)、长度

(6)、紧密度

注:这个算子的特征集合:看附录《附录1:region特征全集(select_shape)》

6、fill_up(Region : RegionFillUp : : )    对象为region

    功能:填充区域的所有孔洞

7、fill_up_shape(Region : RegionFillUp : Feature, Min, Max : )    对象为region

    功能:根据指定形状特征填充区域孔洞

    Feature:输入特征,只有'area', 'compactness', 'convexity', 'anisometry', 'phi', 'ra', 'rb', 'inner_circle', 'outer_circle'

    Min, Max:输入指定特征的下上限

例子:

*生成region

gen_rectangle1 (ROI_0, 52.5, 116.5, 216.5, 566.5)

gen_circle (TMP_Region, 131.5, 194.5, 63.8122)

difference (ROI_0, TMP_Region, ROI_0)

gen_ellipse (TMP_Region, 135.5, 342.5, rad(-33.2317), 34.6699, 8)

difference (ROI_0, TMP_Region, ROI_0)

gen_circle (TMP_Region, 121.5, 427.5, 22.6274)

difference (ROI_0, TMP_Region, ROI_0)

*填充全部孔洞

fill_up (ROI_0, RegionFillUp)

*填充指定特征的孔洞---填充面积为1~1111孔洞

fill_up_shape (ROI_0, RegionFillUp1, 'area', 1, 1111)

    

8、connect_and_holes(Regions : : : NumConnected, NumHoles)    对象为region

    功能:计算连通个数和孔洞数量

    *生成区域

gen_rectangle1 (ROI_0, 69.5, 81.5, 172.5, 253.5)

gen_circle (TMP_Region, 112.5, 397.5, 40.8167)

union2 (ROI_0, TMP_Region, ROI_0)

gen_rectangle2 (TMP_Region, 105.5, 532.5, rad(-29.5115), 60.9016, 56.4189)

union2 (ROI_0, TMP_Region, ROI_0)

gen_ellipse (TMP_Region, 121.5, 138.5, rad(-38.2902), 24.2074, 8)

difference (ROI_0, TMP_Region, ROI_0)

gen_ellipse (TMP_Region, 107.5, 378.5, rad(-48.0128), 13.4536, 8)

difference (ROI_0, TMP_Region, ROI_0)

*计算可连通个数已经孔洞个数

connect_and_holes (ROI_0, NumConnected, NumHoles)

    

posted @ 2022-05-09 20:36  ihh2021  阅读(322)  评论(0编辑  收藏  举报