我正在尝试基于从 GLCM 中提取的特征构建图像分类模型。我想屏蔽一些图像以改进模型,当然我不希望 GLCM 考虑这些像素。基于以下帖子,我已经实施并进行了测试,以确保 GLCM 对蒙版图像正常工作:
1)拍摄图像并创建裁剪版本和蒙版版本(在裁剪的相同像素中)。
2) 将图像转换为 int32 类型并执行以下操作:
#adding 1 to all pixels and setting masked pixels as zero.
mask_img+=1
crop_img+=1
mask_img[:,:,2][:,int(img.shape[1]/2):int(img.shape[1])] = 0
glcm_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 pixels
glcm_masked =glcm_masked[1:, 1:, :, :]
glcm_crop = glcm_crop[1:, 1:, :, :]
所以在这个测试中,如果 GLCM 不受蒙版像素的影响,我预计蒙版和裁剪图像的矩阵将是相同的。但实际上矩阵是不同的。
我对 GLCM 工作原理的理解是否正确?从理论上讲,这两个矩阵应该相等是否有意义?