首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不同光照条件下检测颜色

如何在不同光照条件下检测颜色
EN

Stack Overflow用户
提问于 2015-03-17 02:39:32
回答 1查看 2.3K关注 0票数 6

我有许多颜色的衣服图像,我想检测每一张图像的颜色。假设我有一个在日光条件下的蓝色裙子图像,我可以通过RGB发行版获得正确的颜色。然而,在晚上,很难分辨颜色和蓝色被认为是“黑色”。很难通过RGB发行版制定统一的标准来指定颜色。

因此,我想知道是否有一种方法或算法来检测不同光照下的颜色?

顺便说一句:我也尝试了HSV的颜色空间,结果并不好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 02:52:59

这是一个非常困难的问题,至今仍在努力解决。它的主旨是找到一个色彩量化使用一组代表性的基本颜色的图像,是稳健的不同的外部刺激。照明、遮阳、光照差等。

不幸的是,我不能建议任何一种算法来完成所有情况下的工作。然而,过去对我有用的一种算法是在我做图像检索工作的时候。具体来说,柯达研究实验室的罗洁波和大卫·克兰德尔的工作:http://vision.soic.indiana.edu/papers/compoundcolor2004cvpr.pdf

基本算法是查看ISCC-NBS调色板。而且,这个链接更有成效:nbs.asp。这是一套267种颜色,代表了我们今天在现代社会所看到的颜色。通常,当我们描述颜色时,我们有一组或多个形容词,后面跟着主要色调。例如,这件衬衫是深色浅蓝色,或浅黄色等等。这个算法的优点是,当所讨论的颜色受到不同的外部刺激时,我们有所有这些形容词赋予颜色的意义,但在一天结束时,颜色的最后一部分--主导色调--正是我们所追求的。

每种颜色都有一个相关的RGB值。这些颜色被转换成CIE实验室颜色空间,构成一个267 CIE实验室查找表。

要对特定的输入颜色进行分类,您可以将输入的RGB值转换为CIE Lab颜色空间,然后确定与此查找表最接近的颜色。在CIE实验室颜色空间中,两种颜色之间的欧几里德距离最好地代表了人类对颜色的感知差异。一旦我们确定了查找表中颜色最接近的位置,我们就去掉所有的形容词,看什么是主导色调,从而对该颜色进行相应的分类。

例如,如果我们有一个RGB像素,然后我们把它转换成Lab,然后发现最近的颜色是亮黄色,我们将删除“明亮”,而代表该RGB像素的最后一个颜色将是黄色。

因此,最后的算法是:

  1. 查找ISCC颜色集的RGB值,并转换到CIE并创建一个查找表,我称之为LUT1。例如,在Python中,您可以简单地将它变成一个2D列表或2D NumPy数组。
  2. 创建另一个查找,为ISCC颜色集中的每种颜色存储主导色调,因此去掉所有的形容词并保留主导色调,我称之为LUT2。例如,在Python中,您可以创建一个字典,其中键是对应的LUT1行,其值将是实际的基本颜色本身。无论是字符串表示还是代表基本颜色的RGB三重奏都取决于您。
  3. 对于有问题的像素,通过该像素的CIE组件与LUT1中的颜色之间的欧几里得距离,找到最接近ISCC颜色的颜色。
  4. 一旦我们在LUT1中找到这个位置,使用相同的索引到LUT2中,并得到最终的颜色来对输入像素的颜色进行分类。

希望这能有所帮助!

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29090432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档