🧄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,如下所示,
012023132
定义框架矩阵为0,维度为4x4,这个大小是从上面的量化级别矩阵中得到的,
Quantization level = count(gray tone)
所以对于灰度 0-3,我们得到量化级别 = 4,这样我们必须创建一个大小为 4x4 的框架矩阵
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-最近邻算法分类器预测灰度共生矩阵
源代码
Last updated