如何在 python 中使用 scikit-image greycomatrix() 函数?
How to use the scikit-image greycomatrix() -function in python?
我正在尝试从图像中计算灰度共生矩阵以进行特征提取。我正在使用 greycomatrix
来完成任务,但我似乎对这个过程有些不理解,因为我收到以下错误:
ValueError: buffer source array is read-only
(完整的跟踪可以在下面找到)
所以这是我所做的:
将 (PIL) 图像转换为具有 8 个量化级别的灰度:
greyImg = img.convert('L', colors=8)
然后计算 glcm 矩阵:
glcm = greycomatrix(greyImg, distances=[1], angles=[0, np.pi/4, np.pi/2],
symmetric=True, normed=True)
这会导致一个相当神秘的错误:
glcm = greycomatrix(img, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256, symmetric=True, normed=True)
_glcm_loop(image, distances, angles, levels, P)
File "skimage/feature/_texture.pyx", line 18, in skimage.feature._texture._glcm_loop
File "stringsource", line 654, in View.MemoryView.memoryview_cwrapper
File "stringsource", line 349, in View.MemoryView.memoryview._cinit__
ValueError: buffer source array is read-only
我一直在尝试调整参数但我似乎无法弄清楚为什么会这样。计算 glcm 矩阵的正确方法是什么?
更新
问题出在灰度转换上。
需要进行以下更改:
import numpy as np
greyImg = np.array(img.convert('L', colors=8))
函数 greycomatrix
需要 NumPy ndarray
而不是 PIL Image
对象。您需要像这样转换 greyImg
:
import numpy as np
greyImg = np.asarray(img.convert('L', colors=8))
我正在尝试从图像中计算灰度共生矩阵以进行特征提取。我正在使用 greycomatrix
来完成任务,但我似乎对这个过程有些不理解,因为我收到以下错误:
ValueError: buffer source array is read-only
(完整的跟踪可以在下面找到)
所以这是我所做的:
将 (PIL) 图像转换为具有 8 个量化级别的灰度:
greyImg = img.convert('L', colors=8)
然后计算 glcm 矩阵:
glcm = greycomatrix(greyImg, distances=[1], angles=[0, np.pi/4, np.pi/2],
symmetric=True, normed=True)
这会导致一个相当神秘的错误:
glcm = greycomatrix(img, distances=[1], angles=[0, np.pi/4, np.pi/2], levels=256, symmetric=True, normed=True)
_glcm_loop(image, distances, angles, levels, P)
File "skimage/feature/_texture.pyx", line 18, in skimage.feature._texture._glcm_loop
File "stringsource", line 654, in View.MemoryView.memoryview_cwrapper
File "stringsource", line 349, in View.MemoryView.memoryview._cinit__ ValueError: buffer source array is read-only
我一直在尝试调整参数但我似乎无法弄清楚为什么会这样。计算 glcm 矩阵的正确方法是什么?
更新
问题出在灰度转换上。 需要进行以下更改:
import numpy as np
greyImg = np.array(img.convert('L', colors=8))
函数 greycomatrix
需要 NumPy ndarray
而不是 PIL Image
对象。您需要像这样转换 greyImg
:
import numpy as np
greyImg = np.asarray(img.convert('L', colors=8))