我有一堆许多颜色的衣服的图像,我想检测每个图像的颜色。假设我在日光条件下有蓝色的裙子图像,并且可以通过RGB分布获得正确的颜色。但是,在晚上很难分辨出颜色,“蓝色”被识别为“黑色”。很难制定统一的标准来通过RGB分布指定颜色。
因此,我想知道是否有一种方法或算法可以检测不同光照下的颜色?
顺便说一句:我也尝试了HSV色彩空间,但效果不佳。
这是一个非常棘手的问题,并且今天仍在努力解决。其要旨是使用具有代表性的图像基本颜色集来找到颜色量化,该基本颜色可以抵抗不同的外部刺激,例如照明,阴影,不良照明等。
不幸的是,我无法建议任何一种算法在所有情况下都能为您完成工作。但是,过去对我有用的一种算法是在进行图像检索时。具体来说,柯达研究实验室的罗洁波和戴维·克兰德尔的作品:http : //vision.soic.indiana.edu/papers/compoundcolor2004cvpr.pdf
基本算法是查看ISCC- NBS调色板集。另外,此链接更加有用:https : //www.w3schools.com/colors/colors_nbs.asp。它是一组267种颜色的代表,代表了当今我们在现代社会中看到的颜色。通常,当我们描述颜色时,我们会有一组一个或多个形容词,然后是主要色相。例如,衬衫是暗淡的浅蓝色或浅亮的黄色等。此算法的优点在于,当所讨论的颜色受到不同的外部刺激时,我们拥有所有这些赋予颜色含义的形容词,但最终,颜色是我们所追求的。
这些颜色均具有关联的RGB值。这些颜色将转换为CIE Lab颜色空间,形成267 CIE Lab查找表。
要对特定的输入颜色进行分类,您可以将该输入的RGB值转换为CIE Lab颜色空间,然后确定与该查找表最接近的颜色。已经显示,CIE Lab颜色空间中两种颜色之间的欧几里得距离最能代表人类对颜色的感知差异。确定颜色最接近查找表中的位置后,我们便会去除所有形容词并查看主要色相,从而对颜色进行相应分类。
例如,如果我们有一个RGB像素并将其转换为Lab,然后发现最接近的颜色是亮黄色,则将删除“亮”,代表该RGB像素的最终颜色将是黄色。
因此,最终的算法是这样的:
希望这可以帮助!