gpt4 book ai didi

python - 从掩模计算图像的一部分的共现矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:52 24 4
gpt4 key购买 nike

我有以下代码,我试图在其中获取与我给定的掩码相对应的图像的一部分。然后我想在该部分应用 skimage.feature.glcm 。但是我得到了错误:

glcm = greycomatrix(mancha, [2], [0], levels=None, symmetric = True, normed = True)
File "D:\WinPython-64bit-2.7.13.1ZeroNew\python-2.7.13.amd64\lib\site-packages\skimage\feature\texture.py", line 101, in greycomatrix
assert_nD(image, 2)
File "D:\WinPython-64bit-2.7.13.1ZeroNew\python-2.7.13.amd64\lib\site-packages\skimage\_shared\utils.py", line 178, in assert_nD
raise ValueError(msg_incorrect_dim % (arg_name, '-or-'.join([str(n) for n in ndim])))
ValueError: The parameter `image` must be a 2-dimensional array

代码是:

mask = cv2.imread(pathMask, 0)
cruda = cv2.imread(pathCruda, 0)
imaskc = mask > 0
mancha = cruda[imaskc]

glcm = greycomatrix(mancha, [2], [0], levels=None, symmetric = True, normed = True)
energy = greycoprops(glcm, 'energy')
homogeneity = greycoprops(glcm, 'homogeneity')

我也尝试过失败:

labeled_image, nb_labels = ndimage.label(mascara)
blobs = ndimage.find_objects(labeled_image)

glcm = greycomatrix(cruda[blobs[0]]

有什么想法可以完成吗?

谢谢!

最佳答案

您不能直接将蒙版图像传递给 greycomatrix。好消息是,您可以通过在代码中引入小的更改来计算从图像的感兴趣区域提取的 Haralick 特征的近似值。

基本思想在于保存灰度级,例如 0,以标记那些落在感兴趣区域 (ROI) 之外的图像像素。为了使这种方法正常工作,您需要将原始强度为 0 的 ROI 内那些像素的强度更改为不同(但相似)的值,例如 1 .请注意,以这种方式修改图像不可避免地会在共现矩阵中引入不准确,但只要您的图像足够大并且具有平滑的直方图,您就可以放心地假设所获得的特征与精确值非常接近.同样重要的是要注意,您必须摆脱共生矩阵的第 0th 行和第 0th 列,以便不考虑用于标记非 ROI 像素的灰度级。

要实现上述解决方法,您只需更改以下两行:

mancha = cruda[imaskc]
glcm = greycomatrix(mancha, [2], [0], levels=None, symmetric=True, normed=True)

到:

mancha = cruda.copy()
mancha[mancha == 0] = 1
mancha[~imaskc] = 0
glcm = greycomatrix(mancha, [2], [0], levels=None, symmetric=True, normed=True)[1:, 1:, :, :]

关于python - 从掩模计算图像的一部分的共现矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47591359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com