我正在使用scikit-images的函数greycomatrix,我想将经过haar滤波后从小波变换获得的分量之一作为输入。

import pywt
import cv2
from skimage.feature import greycomatrix

original = cv2.imread('img.jpg', cv2.IMREAD_GRAYSCALE)
coeffs2 = pywt.dwt2(original, 'haar')
LL, (LH, HL, HH) = coeffs2
cv2.imshow('image', HH)
gCoMat = greycomatrix(HH, [2], [0], 256, symmetric=True, normed=True)

如果我将HH传递给greycomatrix,则会出现此错误:



我尝试使用以下代码转换图像:
from skimage import util

im = util.img_as_ubyte(HH)
im /= 32
gCoMat = greycomatrix(im, [2], [0], 256, symmetric=True, normed=True)

但是我得到了这个错误:

最佳答案

在将图像转换为8位无符号整数之前,需要将强度重新缩放到[0, 1]范围:

from skimage import util, exposure, data
import pywt
from skimage.feature import greycomatrix

original = data.camera()
LL, (LH, HL, HH) = pywt.dwt2(original, 'haar')
HH_scaled = exposure.rescale_intensity(HH, out_range=(0, 1))

bin_width = 32
im = util.img_as_ubyte(HH_scaled)
im_binned = im//bin_width

gCoMat = greycomatrix(im_binned, distances=[2], angles=[0],
                      levels=256//bin_width, symmetric=True, normed=True)

请注意,如果对传递给graycomatrix的图像进行了合并,则levels参数不应为256,您必须将该值除以相同的因子(代码中的32)。还必须指出,强度合并必须通过整数除法(//)进行,否则dtypeim_binned将是float。最后,需要将as_gray=True传递给函数io.imread,否则在尝试计算灰度共生矩阵时会出现以下错误:

关于python - 如何将图像的HH子带传递给greycomatrix功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55106498/

10-12 05:48