我想提取AI的特征基于颜色分类。我知道使用颜色空间直方图作为特征向量,但是使用多个颜色空间直方图会使我的神经网络输入太大。单一的RGB颜色空间会给我(3x256 = 768个特征)。为同一张图片的不同变体使用多个颜色空间实在是太多了。我避免使用直方图的平均值,因为我想知道图像的颜色分布。图像仅由颜色组成,没有边缘或物体。欢迎提供有关使用哪种算法的建议。
答案 0 :(得分:4)
如果您想仅根据颜色查看分类,颜色直方图绝对是正确的选择。您不想使用整个RGB颜色空间,因为这将产生一个巨大的特征空间,就像您已经注意到的那样。
相反,您应该首先查看直方图的 binning (如解释的here)。这样就已经可以将您的功能空间减少了一个选择。
通过排除您根本不感兴趣的颜色范围(在您的情况下可能是蓝色到红色),可以进一步改善结果并减少功能数量。您还可以根据最经常出现的颜色中心为您的垃圾箱找到正确的中心,例如通过在颜色空间中进行 k-均值。
答案 1 :(得分:0)
我看到您的问题的方式是,您想用主要色彩来表征图像,一种不使用任何神经网络的简单分类方案就是在图片中找到主要色彩。下面是如何执行此操作的MATLAB代码段。
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。 可能是您在寻找其他东西。