Halcon算子:灰度共生矩阵gen_cooc_matrix、cooc_feature_matrix、cooc_feature_image

时间:2024-04-02 18:36:36

1、灰度共生矩阵

         图像的纹理一般具有重复性,纹理单元往往会以一定的规律出现的图像上,因此这种图像中一定距离之内往往会有两两灰度相同的像素点对,这种特性就适合用灰度共生矩阵表示。

         取图像(N×N)中任意一点 (x,y)及偏离它的另一点 (x+a,y+b),设该点对的灰度值为(g1,g2)。令点(x,y) 在整个画面上移动,则会得到各种 (g1,g2)值,设灰度值的级数为 k,则(g1,g2) 的组合共有 k^2;种。对于整个画面,统计出每一种(g1,g2)值出现的次数,然后排列成一个方阵,在用(g1,g2) 出现的总次数将它们归一化为出现的概率P(g1,g2),这样的方阵称为灰度共生矩阵

Halcon算子:灰度共生矩阵gen_cooc_matrix、cooc_feature_matrix、cooc_feature_image

如图表示的即为角度为0°,距离为1,灰度等级为8级的灰度共生矩阵转换过程。后续还需要对其进行归一化。

2、特征表示

调用cooc_feature_image对应于操作符gen_cooc_matrix和cooc_feature_matrix的连续执行。如果要连续计算共现矩阵的多个方向矩阵,则通过gen_cooc_matrix生成矩阵,然后调用运算符cooc_feature_matrix得到的矩阵更有效。参数方向以角度或“均值”的方式传递邻域的方向。在“平均值”的情况下,平均值是在四个方向上计算的。

Halcon算子:灰度共生矩阵gen_cooc_matrix、cooc_feature_matrix、cooc_feature_image

如图为Halcon文档cooc_feature_matrix中相关的解释。 

(1)能量:表示灰度共生矩阵中的元素的平方和。能量越大,表示灰度变化比较稳定,反映了纹理变化变化的均匀程度。比如当像素值全部为1时,对应的共生矩阵中(1,1)有16个,其他为0,则能量为16*16,此时能量最大,灰度变化最稳定,因为都为0嘛。

(2)相关性:表示纹理在行或者列方向的相似程度。相关性越大,相似性越高。

(3)局部均匀性:反映图像局部纹理的变化量。值越大,表示图像局部的变化越小。

(4)反差(对比度):表示矩阵的值的差异程度,也间接表现了图像的局部灰度变化幅度。反差值越大,图像中的纹理深浅越明显,表示图像越清晰;反之,则表示图像越模糊。

根据不同的图片通过选择不同的特征类型及值,即可进行缺陷检测,筛选出我们需要的区域。

如图为过程“detect_mura_defects_texture.hdev”,执行分水岭阈值后,通过能量(Energy)筛选出来的瑕疵。

Halcon算子:灰度共生矩阵gen_cooc_matrix、cooc_feature_matrix、cooc_feature_image