我编写了一个计算机程序,可以使用一些计算机视觉标准技术(高斯模糊,阈值,霍夫变换等)来检测静态图像(.jpeg,.png等)中的硬币。使用从给定图像中拾取的硬币的比率,我可以确定地确定哪些硬币。但是,我希望增加我的置信度,并确定我推断出的A型硬币(根据半径比)是否也具有正确的颜色。问题是对于英国硬币等。(铜,银,金),各自的颜色(尤其是铜到金)非常相似。
我有一个例程根据RedGreenBlue(RGB)“颜色空间”提取给定硬币的平均颜色,并将该颜色转换为HueSaturationBrightness(HSB或HSV)“颜色空间”的例程。
在尝试区分三种硬币颜色时,RGB并不是很好用(示例请参见所附的[基本]图像)。对于不同硬币类型的颜色,我具有以下范围和典型值:
注意:此处的典型值是使用实际图像的“像素级”平均值选择的一个。
**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).
**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).
**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86)
我首先尝试使用给定的平均硬币颜色(使用RGB)与上面给定的每种硬币类型的典型值之间的“欧氏距离”,将RGB值视为矢量;对于铜,我们将有:
差异的最小值()会告诉我们给定硬币最有可能是哪种类型。这种方法表明自己非常不准确。
我还尝试过将硬币的色相与上述类型的典型值进行比较。尽管从理论上讲,这提供了更好的“色彩空间”来处理图像的亮度和饱和度变化,但它也不够准确。
问题:基于颜色(从静态图像)确定硬币类型的最佳方法是什么?
非常感谢你花时间陪伴。
编辑1
注意:我已经尝试了下面讨论的所有想法,但几乎没有实现。光照条件的差异(即使在同一图像内)也使此问题变得非常棘手,应予以考虑。
编辑2(结果汇总)
谢谢您的回答。我自己的进一步研究(包括您的回答和评论)突出表明,在任意照明,任意摄像头(移动设备),硬币颜色波动(即使是相同物种/类型)的一般情况下,解决该问题的难度如何我首先以肤色识别(一个非常活跃的研究领域)为起点,即使仅白种人的肤色识别仍然存在许多问题(有关当前技术的综述,请参阅本文),而且这个问题包含三个不同的颜色对象,所有这些对象都可以具有连续且变化的色度,这一事实使计算机视觉这一主题非常难以分类和相应地处理(实际上,您可以在其中获得出色的博士学位) !)。
我从下面DW 的非常有用的帖子中研究了色域约束方法。乍一看,这是将图像和单独的硬币对象转换为与照明条件无关的颜色的预处理步骤,非常有前途。但是,即使是这项技术也无法完美运行(并且涉及用于映射的图像/直方图库–我不想进入),更复杂的神经网络体系结构方法也不可行。实际上,本文抽象地指出:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
这并不是说那里没有关于该主题的最新论文,但是我找不到它们,并且目前看来它还不是一个非常活跃的研究领域。
AVB 的回答也很有帮助,我已经简要研究了L A B *。
"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative
perceptual differences between any two colours in L*a*b* can be approximated by
treating each colour as a point in a three dimensional space."
从我所读的内容中,将依赖于设备的图像转换到该色彩空间将非常棘手-但是,当我有更多时间时,我将详细研究(以某种实现为目的)。
我没有屏住呼吸寻求这个问题的具体解决方案,在尝试使用L A B *之后,我将忽略硬币的颜色,并希望确定当前的几何检测算法(准确的椭圆霍夫变换等)。
谢谢大家 作为对此问题的结尾说明,以下是具有新几何检测算法的同一幅图像,该算法没有颜色识别: