Python灰度共生矩阵OpenCV和scikit-image图像特征分析和K-最近邻算法

我们可以通过观察在视觉上区分图像的纹理:

  • 图案环
  • 空间分布
  • 颜色排列和强度

下图是一张图像上的纹理图,其分布为 50% 黑色和 50% 白色
平均值、中值、标准差等统计计算将无法区分上面的 3 张图像。 上面的三幅图像具有相同的颜色排列和像素强度,但具有不同的空间模式和分布,这些空间模式和分布无法通过平均值、中值或标准差等统计计算来识别,因此灰度共生矩阵 (GLCM) 为了解决这个问题而出现。

灰度共生矩阵(GLCM)是图像纹理分析技术。 GLCM表示具有灰度强度,距离和角度的2个相邻像素之间的关系。 有8个角度可以在GLCM中使用,包括0°,45°,90°,135°,180°,225°,270°或315°角。

GLCM中的距离参数是通过参考像素和相邻像素之间的像素数来计算的。

灰度共生矩阵创建步骤

  • 矩阵框架创建
  • 创建一个共生矩阵(填写框架矩阵)
  • 创建一个对称矩阵(将共生矩阵与转置矩阵相加)
  • 矩阵归一化将产生一个介于 0– 之间的矩阵值

示例&步骤

  • 假设我们有一个大小为 3x3 的灰度矩阵,灰度为 0-3,如下所示,

    0 0 1 1 2 3 2 3 2 \begin{array}{|l|l|l|}\hline 0 & 0 & 1 \\\hline 1 & 2 & 3 \\\hline 2 & 3 & 2 \\\hline\end{array} 012023132

  • 定义框架矩阵为0,维度为4x4,这个大小是从上面的量化级别矩阵中得到的,

    Quantization level = count(gray tone)
    
  • 所以对于灰度 0-3,我们得到量化级别 = 4,这样我们必须创建一个大小为 4x4 的框架矩阵

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \begin{array}{|l|l|l|l|}\hline 0 & 0 & 0 & 0 \\\hline 0 & 0 & 0 & 0 \\\hline 0 & 0 & 0 & 0 \\\hline 0 & 0 & 0 & 0 \\\hline\end{array} 0000000000000000

  • 框架矩阵中的每个位置都是3x3输入矩阵中像素值的组合。

  • 考虑到灰度在 0 -255 之间,一个 8 位数字图像将具有 256 的量化级别。

  • 接下来我们将使用 distance =1 和 angel =0° 来形成共现矩阵,

  • 从左上角开始选择成对的像素组合,一直到右下角。

Anaconda安装scikit-image

以下是它在前面的 3x3 矩阵情况下的使用示例,

from skimage.feature import greycomatrix, greycoprops

input_matrix = np.array([[0, 0, 1],
                          [1, 2, 3],
                          [2, 3, 2]])

glcm = greycomatrix(matrix, 
                    distances=[1], 
                    angles=[0], 
                    levels=4,
                    symmetric=True, 
                    normed=True)

print(glcm[:,:,0,0])

使用数字图像

Jupyter Notebook结果

相异性、相关性、同质性、对比、ASM等

源代码

项目应用:K-最近邻算法分类器预测灰度共生矩阵

源代码

详情参阅 - 亚图跨际

你可能感兴趣的:(数据科学,python,opencv,灰度共生矩阵)