【问题标题】:Extract features from Colour-only images从纯彩色图像中提取特征
【发布时间】:2019-03-24 07:17:13
【问题描述】:

我想为人工智能提取特征。基于颜色分类。我知道使用颜色空间的直方图作为特征向量,但是使用多个颜色空间直方图会使我的神经网络输入太大。一个 RGB 颜色空间会给我(3x256 = 768 个特征)。为同一图像的不同变体使用多个颜色空间只是太多的功能。我避免使用直方图的平均值,因为我想知道图像的颜色分布。图像仅由颜色组成,没有边缘或物体。欢迎任何关于使用什么算法的建议。

这些是我想使用的彩色图像示例

【问题讨论】:

    标签: opencv image-processing colors computer-vision feature-extraction


    【解决方案1】:

    我看到你的问题的方式是你想通过主色来表征你的图像,一个不使用任何神经网络的简单分类方案可以在你的图片中找到主色。下面是一个 MATLAB sn-p 如何做到这一点。

    image = imread('image.png');
    imshow(image);
    histR = imhist(image(:,:,1));
    histG = imhist(image(:,:,2));
    histB = imhist(image(:,:,3));
    [~, idxR] = max(histR);
    [~, idxG] = max(histG);
    [~, idxB] = max(histB);
    dominant_colour_feature = [idxR, idxG, idxB] - 1; % 1 is subtracted because of MATLAB indexing scheme
    

    我不确定,你在寻找什么样的颜色分类。您碰巧使用的图像类型可以使用这种方法简单地分类。根据您的要求,我们可以进一步修改方案。

    我在你的一张图片上试过这个: 输出是 (254,228,0),看起来很像 this。 可能是您正在寻找其他东西。

    【讨论】:

      【解决方案2】:

      如果您想仅根据颜色进行分类,颜色直方图绝对是正确的选择。您不想使用整个 RGB 颜色空间,因为这会产生您已经注意到的巨大特征空间。

      相反,您应该首先查看 binning 您的直方图(如 here 解释的那样)。这已经将您的特征空间减少了您选择的一个因素。

      您可以通过排除您根本不感兴趣的颜色范围(在您的情况下可能是蓝色~红色)来进一步改善您的结果并减少功能的数量。您还可以根据最常出现的颜色中心为您的 bin 找到正确的中心,例如通过在颜色空间中执行 k-means

      【讨论】:

        猜你喜欢
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 2016-09-12
        • 2012-09-24
        • 2019-03-12
        相关资源
        最近更新 更多