引言:特征提取是缺陷检测和分类器的重要基础,由于网络资料匮乏,这个系列的贴子勇哥会长期更新,以充实其内容。
在halcon中,有“特征直方图”。
其中“特征”下拉列表中有一些项目,它根据你选择的对象是region还是xld而有不同的项目。
对于region来讲,这些特征项目分为两类:
region_features和gray_features,即region特征和灰度特征。
下面的两个算子可以取这上面两类特征:
region_features(Regions : : Features : Value) gray_features(Regions, Image : : Features : Value)
region_features的全部特征是:
'anisometry', 'area', 'area_holes', 'bulkiness', 'circularity', 'column', 'column1', 'column2', 'compactness', 'connect_num', 'contlength', 'convexity', 'dist_deviation', 'dist_mean', 'euler_number', 'height', 'holes_num', 'inner_height', 'inner_radius', 'inner_width', 'max_diameter', 'moments_i1', 'moments_i2', 'moments_i3', 'moments_i4', 'moments_ia', 'moments_ib', 'moments_m02', 'moments_m02_invar', 'moments_m03', 'moments_m03_invar', 'moments_m11', 'moments_m11_invar', 'moments_m12', 'moments_m12_invar', 'moments_m20', 'moments_m20_invar', 'moments_m21', 'moments_m21_invar', 'moments_m30', 'moments_m30_invar', 'moments_phi1', 'moments_phi2', 'moments_psi1', 'moments_psi2', 'moments_psi3', 'moments_psi4', 'num_sides', 'orientation', 'outer_radius', 'phi', 'ra', 'rb', 'rect2_len1', 'rect2_len2', 'rect2_phi', 'rectangularity', 'roundness', 'row', 'row1', 'row2', 'struct_factor', 'width'
gray_features全部特征是:
'alpha', 'anisotropy', 'area', 'beta', 'column', 'deviation', 'entropy', 'fuzzy_entropy', 'fuzzy_perimeter', 'max', 'mean', 'min', 'moments_column', 'moments_row', 'phi', 'plane_deviation', 'ra', 'rb', 'row'
这些特征的解释更详细的请看下面两个贴子:
特征直方图的特征参数 http://www.skcircle.com/?id=1633
halcon算子:region_features http://www.skcircle.com/?id=1617
我们如果想使用region的两类特征特征进行过滤操作,则要使用下面两个算子:
select_shapet和select_gray。
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : ) select_gray(Regions, Image : SelectedRegions : Features, Operation, Min, Max : )
select_gray和select_shapet的区别是,前者是基于灰度值过滤region,后者是基于基本几何特征、形态学、连通区域等方式过滤region。
下面重点看几个不常见的gray_features,其它简单的特征可看下上面那两个贴子。
(1) gray_deviation
即灰度值偏差。
这个特征也可由算子intensity计算。它可以同时计算灰度平均值与灰度标准差。
intensity(Regions, Image : : : Mean, Deviation)
这个特征经常用于:通过灰度值信息过滤掉不需要的region
在下面的动图中,勇哥演示了使用gray_deviation仅保留灰度强度最高的那几个region。
演示代码:
read_image (Qq20210129193158, 'C:/Users/Administrator/Desktop/QQ图片20210129193158.jpg') rgb1_to_gray(Qq20210129193158, GrayImage) threshold (GrayImage, Regions, 18, 111) connection(Regions, ConnectedRegions) select_gray (ConnectedRegions, Qq20210129193158, SelectedRegions1, 'deviation', 'and', 12.309, 20.001)
可能有胸弟会问,上面的需求我直接一个threshold不就搞定了,为啥要再加一个select_gray过滤一下?
第一个threshold是确定了缺陷出现的最大可能范围,而后面的select_gray过滤gray_deviation特征是为了筛选出满足条件A的缺陷。
然后我可能会用select_gray综合其它的特征再过滤出其它的条件的缺陷B、C、E。
而且,gray_deviation并不是threshold,它是基于灰度值的利用统计算法过滤的特征。
所以,我没有脱裤子放屁。
(2)moments_gray_plane
计算一个平面的灰度值矩和近似值。
参数Alpha,Beta和 Mean描述了该区域上方的平面。
Alpha表示沿线轴方向(“向下”)的坡度,Beta沿线轴方向(“右侧”)的坡度。
read_image (Image, 'mreut') gen_rectangle1 (Rectangle, 50, 340, 180, 464) moments_gray_plane (Rectangle, Image, MRow, MCol, Alpha, Beta, Mean) get_image_size (Image, Width, Height) *创建一个斜坡灰度图像 gen_image_gray_ramp (ImagePlane, Alpha, Beta, Mean, MRow, MCol, Width, Height) sub_image (ImagePlane, Image, ImageSub, 1, 128)
原图
处理后。其中红色矩形处为参考平面的位置。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

