如何将颜色与已知集合进行比较?

时间:2016-10-06 09:04:08

标签: c# image-processing computer-vision

鉴于台球的形象,我希望能分辨出它是什么球。球的颜色是合理的,并且不会经常偏离一些已知的例外。但是识别特定球的最佳方法是什么?

我的方法是,如果我们知道的图片只包含台球(没有背景等),则将每个像素映射到我们对台球所期望的已知颜色。理想情况下,这种映射只会有白色(所有球都有一些白色),黑色(甚至更少的黑色,用于书写,除了8球),以及确定其数量的球的颜色。所以对于2球,我预计可能有90%的红色,7%的白色和3%的黑色,给予或采取。这种方法取得了一定的成功。

问题是如何将像素的颜色正确映射到已知颜色之一。 Hue单独适用于大多数,但对于一些(粉红色4 +红色3),色调可以是相同的,但具有不同的饱和度。

我觉得我可能会为此制定一套自己的规则,并将其调整一段时间,但我想知道是否有更好的选择。我已尝试过CIE76的实施,但结果却令人失望。我不想让我自己实现一个已知的算法,但是如果有一个很好的解释是程序员友好的话。

建议,想法或资源?

1 个答案:

答案 0 :(得分:0)

每条评论:DeltaE(CIE76和变体)在样本量较大时效果更好。我最初的想法是,我会找到球的“真实”颜色,并尝试使用它,而不是在灯光下有很多样品,但事实证明是无效的,尽管可能会考虑照明本身,可能。

最后,我确实找到了一个名为Colourful的c#库,它可以在nuget上使用,它非常易于使用,而且写得很好。 RGB - >实验室转换很昂贵,因此尽可能进行预处理。