为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在屏蔽图像和裁剪图像时会得到不同的 glcms

为什么在屏蔽图像和裁剪图像时会得到不同的 glcms

慕容3067478 2022-12-27 10:04:57
我正在尝试基于从 GLCM 中提取的特征构建图像分类模型。我想屏蔽一些图像以改进模型,当然我不希望 GLCM 将这些像素考虑在内。基于以下帖子,我已经实施并进行了测试,以确保 GLCM 对蒙版图像正常工作:1)拍摄图像并创建裁剪版本和遮罩版本(在裁剪的相同像素中)。2) 将图像转换为 int32 类型并执行以下操作:#adding 1 to all pixels and setting masked pixels as zero. mask_img+=1crop_img+=1mask_img[:,:,2][:,int(img.shape[1]/2):int(img.shape[1])] = 0glcm_crop = greycomatrix(crop_img[:,:,2],                 levels=257,                distances=1,                 angles=0,                symmetric=True,                normed=True)glcm_masked = greycomatrix(mask_img[:,:,2],                 levels=257,                distances=1,                 angles=0,                symmetric=True,                normed=True)#discarding the first row and column that represent zero value pixelsglcm_masked =glcm_masked[1:, 1:, :, :]glcm_crop = glcm_crop[1:, 1:, :, :]所以在这个测试中,如果 GLCM 不受蒙版像素的影响,我预计蒙版和裁剪图像的矩阵都是相同的。但实际上矩阵是不同的。我对 GLCM 工作原理的理解是否正确?这两个矩阵应该相等在理论上有意义吗?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

让我们慢慢浏览代码。首先我们导入必要的模块,加载图像类型np.int32并增加图像所有像素的像素强度1:


import numpy as np

from skimage import data

from skimage.feature import greycomatrix


img = data.astronaut().astype(np.int32) + 1

然后我们定义图像的形状和强度级别的数量:


rows, cols, _ = img.shape

levels = 256

现在我们裁剪图像的蓝色通道,这样我们只保留左半部分:


crop_img = img[:, :cols//2, 2]

图像的蓝色通道的右半边被蒙版如下:


mask_img = img[:, :, 2].copy()

mask_img[:, cols//2:] = 0

为了这个例子,包装 GLCM 计算很方便:


def glcm_wrapper(arr):

    glcm = greycomatrix(arr, levels=levels+1, distances=[1], angles=[0])

    return np.squeeze(glcm)[1:, 1:]

我们准备检查通过两种方法获得的 GLCM 是否相同:


glcm_crop = glcm_wrapper(crop_img)

glcm_mask = glcm_wrapper(mask_img)


print(np.array_equal(glcm_crop, glcm_mask))

如果您运行上面的所有代码片段,您将获得True.


重要的是要注意,如果将参数传递normed=True给greycomatrix,生成的 GLCM 是不同的。如果要对矩阵进行归一化,则必须在删除第一行和第一列后对 GLCM 进行归一化。试试这个说服自己:


glcm_crop = glcm_crop/glcm_crop.sum()

glcm_mask = glcm_mask/glcm_mask.sum()

print(np.allclose(glcm_crop, glcm_mask))


查看完整回答
反对 回复 2022-12-27
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信