gpt4 book ai didi

python - 如何将图像的 HH 子带传递给 greycomatrix 函数?

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

我正在使用 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,我会收到此错误:

ValueError: Float images are not supported by greycomatrix. Convert the image to an unsigned integer type.

我尝试使用此代码转换图像:

from skimage import util

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

但是我得到了这个错误:

raise ValueError("Images of type float must be between -1 and 1.") ValueError: Images of type float must be between -1 and 1.

最佳答案

在将图像转换为 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的图像是binned,那么levels参数不应该是256,你必须除以这个值相同的因素(代码中的 32)。还需要指出的是,强度分箱必须通过整数除法(//)进行,否则im_binneddtype会成为 float 。作为最后的警告,您必须将 as_gray=True 传递给函数 io.imread,否则在尝试计算灰度级协时会出现以下错误 -出现矩阵:

ValueError: The parameter image must be a 2-dimensional array

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

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