谷歌的图像颜色搜索是如何工作的?

19

这是一个关于如何判断图像是否只有一种颜色的问题。这只是一个基本的想法。 - Shoban
4个回答

32
根据由Google工程师Henry Rowley、Shumeet Baluja和Dr. Yushi Jing发表的这篇论文,你关于识别图像中颜色的问题最重要的影响似乎与Google的“安全等级”算法有关。该算法可以检测到没有任何文本的肉色调。
论文首先描述了“经典”方法,通常基于归一化颜色亮度,然后使用“高斯分布”,或者使用RGB值在像素中建立的三维直方图(每种颜色是表示像素中包含多少该颜色的8位整数值,范围从0-255)。还引入了依赖于属性(如“亮度”)的方法,该属性是从给定图像中裸眼看到的亮度密度(通常错误地称为“亮度”)。
Google的论文提到,他们需要用他们的算法处理大约10亿张图像,因此它需要尽可能高效。为了实现这一点,他们对ROI(感兴趣区域)执行大部分计算,该区域是以图像为中心,并且在所有侧面上缩进图像尺寸的1/6。一旦他们确定了ROI,他们就会应用于图像的许多不同算法,包括面部检测算法、颜色恒定性算法和其他算法,总体上找到图像着色的统计趋势,最重要的是找到统计分布中频率最高的颜色阴影。
他们使用熵、边缘检测和纹理定义等其他特征来从图像中提取线条。为了从图像中提取线条,他们使用肤色连接组件的边缘计算出的概率霍夫变换(Kiryati et al.,1991)的OpenCV实现(Bradski,2000),这允许他们找到可能不是身体部位的直线,并且还允许他们更好地确定图像中最重要的颜色,这是他们图像颜色搜索的关键因素。
有关此主题的技术细节(包括数学方程等)的更多信息,请阅读开头链接的Google论文并查看其网站的研究部分。
非常有趣的问题和主题!

6

图片只是由像素组成的。像素只是RGB值。我们知道在RGB中黑色是什么样子的,因此我们可以在图片中查找它。


2
但是谷歌如何知道哪一部分是天空呢?试试http://images.google.com.sg/images?q=car&imgcolor=red - 它明显会挑选红色的汽车,而忽略背景。 - MrTelly
不是真的,它只是在搜索“汽车”,然后倾向于那些明显是红色的。如果你能找到一个可以专注于图片中不重要区域的搜索引擎,那我会感兴趣的。 - Kent Fredric
当然,如果我在谷歌上搜索没有颜色过滤器的“red car”,我会得到90%相同的结果。 - Kent Fredric
1
http://images.google.com.sg/images?imgcolor=green&gbv=1&hl=en&sa=1&q=red+car&btnG=Search+Images
#注意它现在返回的是红色汽车,但背景大多是绿色。这是因为它正在搜索“红色汽车”字符串并过滤绿色背景。
- Kent Fredric

3

好的,一种方法是:

给定一组图像,确定给定颜色范围的高浓度(这实际上相当简单),存储此数据,然后相应地进行索引(根据从前面步骤确定的颜色对图像进行索引)。现在,您基本上拥有了查找包含特定单词的文档的类似工具。

这只是一种可能方法的非常基本的描述。


0

从图像中提取颜色有多种方法,我认为其他答案已经解决了它们(K-Means、分布等)。

假设您已经提取了颜色,有几种方法可以通过颜色搜索。一种缓慢但显而易见的方法是使用某些度量(例如Color Difference)计算搜索颜色与图像的主要颜色之间的距离,然后根据“接近程度”加权结果。

另一种更快的方法是基本上降低颜色空间的分辨率。不要处理所有可能的RGB颜色值,而是将提取限制在较小的范围内,就像Google一样(只有蓝色、绿色、黑色、黄色等)。然后用户可以使用有限的一组颜色样本进行搜索,计算颜色距离变得微不足道。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接