我想训练一个支持向量机,从skimage中提取hog描述符所提取的hog特征。图像有3个通道(RGB-图像),我想在提取hog特征之前将其转换为灰度。下面是问题所在,当我使用来自OpenCV的以下代码时
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)然后我得到了没有标准化的特征,这意味着像素值仍然在0到255之间。
当我使用Skimage的代码时
img_gray = color.rgb2gray(image)然后,这些值似乎被标准化了,因为像素值接近。在0到1之间。
我尝试了这两个版本的hog特征提取,结果是相似的,但不是相同的,当我训练SVMs时,结果也是相似的,但不是相同的。当我用归一化图像训练支持向量机时,精度等都有所提高,但不多。
当我查看skimage hog.html中的以下链接时,我假设在使用HOG描述符之前不需要对图像进行标准化,因为这个链接中的宇航员图像也没有标准化。不过,我还是觉得很困惑。您能否证实或不同意我的假设,即使用OpenCV的代码比使用skimage的代码从rgb转换为灰色更好?
完整的代码:
import cv2
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY或
from skimage import color
img_gray = color.rgb2gray(image)在此之前
from skimage import feature
feat = feature.hog(img_gray, orientations=12, pixels_per_cell=(5,5), cells_per_block=(2,2), transform_sqrt=True, visualize=False)发布于 2019-12-17 05:13:09
发布于 2019-12-17 02:24:36
这是如何在范围0 1内正常化,但确保图像具有浮动数据类型。
img_gray_normalized = cv2.normalize(img_gray , None, alpha=0, beta=1,
norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)https://stackoverflow.com/questions/59366605
复制相似问题