【发布时间】:2020-09-23 17:39:10
【问题描述】:
我正在尝试基于从 GLCM 提取的特征构建图像分类模型。 我想屏蔽一些图像以改进模型,当然我不希望 GLCM 考虑这些像素。基于以下post,我已经实现并进行了测试以确保 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 工作原理的理解是否正确?这两个矩阵应该相等在理论上有意义吗?
【问题讨论】:
-
你是如何定义
mask_img和crop_img的? -
Tonechas crop_img = img[0:img.shape[0],0:int(img.shape[1]/2)] 和 mask_img 只是 img 的一个副本。并且屏蔽是在我之前发布的代码中完成的: mask_img[:,:,2][:,int(img.shape[1]/2):int(img.shape[1])]=0
-
您是如何制作副本的?喜欢这个
mask_copy = img.copy()(深拷贝)?喜欢这个mask_copy = img[:](浅拷贝)?或者像这样mask_copy = img(只是一个新别名,根本没有副本)`? -
@Tonechas 我确实使用了 mask_copy = img.copy()
标签: python image-processing mask scikit-image glcm