假设我查询

http://images.google.com.sg/images?q=sky&imgcolor=black

我得到了所有黑色的天空,背后的算法实际上是如何工作的?

有帮助吗?

解决方案

基于 这张纸 由 Google 工程师 Henry Rowley、Shumeet Baluja 和 Dr.Yushi Jing,您关于识别图像中的颜色的问题似乎最重要的含义与谷歌的“saferank”算法有关,该算法可以检测周围没有任何文字的肤色。

本文首先描述了“经典”方法,这些方法通常基于标准化颜色亮度,然后使用“高斯分布,”或使用以像素为单位的 RGB 值构建的三维直方图(每种颜色是 0-255 之间的 8 位整数值,表示 .该颜色包含在像素中)。还引入了依赖于“亮度”(通常错误地称为“光度”)等属性的方法,“亮度”是给定图像的肉眼发光强度的密度。

谷歌论文提到,他们需要用他们的算法处理大约 10^9 个图像,因此需要尽可能高效。为了实现这一目标,他们在 ROI(感兴趣区域)上执行大部分计算,ROI 是一个以图像为中心的矩形,并在所有边上插入图像尺寸的 1/6。一旦确定了 ROI,他们就会采用许多不同的算法应用于图像,包括人脸检测算法、颜色恒定算法等,总的来说, 统计趋势 在图像的色彩上,最重要的是 找出统计分布中出现频率最高的色调。

它们使用其他功能(例如 熵 、边缘检测和纹理定义)来 为了从图像中提取线条,他们使用在肤色连接组件的边缘计算的概率Hough变换(Kiryati et al., 1991)的OpenCV实现(Bradski,2000),这允许 他们找到直线 这些颜色可能不是身体部位,而且还可以让他们更好地确定图像中哪些颜色最重要,这是图像颜色搜索的关键因素。

有关该主题的更多技术细节,包括数学方程等,请阅读开头链接的谷歌论文,并查看其网站的研究部分。

非常有趣的问题和主题!

其他提示

图片只是像素。像素仅仅是RGB值。我们知道黑色是RGB,所以我们可以寻找它的图像。

那么,一个方法是,在非常基本的术语:

鉴于图像的语料库,确定高浓度给定颜色的范围(这实际上是相当微不足道的),存储该数据,索引相应(指数根据来自前一步骤确定的颜色的图像)。现在,你有基本相同的排序为查找包含特定单词的文档的事情。

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

从图像中提取颜色的方法有很多种,我认为其他答案也解决了这些问题(K 均值、分布等)。

假设您已经提取了颜色,有几种方法可以按颜色搜索。一种缓慢但明显的方法是使用某种度量(例如,搜索颜色和图像的主颜色)计算搜索颜色和图像主颜色之间的距离。 色差),然后根据“接近度”对结果进行加权。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top