图片搜索的原理

作者:, 发表于

Google新推出了图片搜索,可直接上传图片(或者用图片链接)搜索网络上的相似图片,例子。估计还没多少人意识到,这玩意儿是人肉搜索的大杀器,以后大家还是少上传私人照片到公开网络。

阮一峰介绍了一个简单的图片搜索原理,可分为下面几步:

  1. 缩小尺寸。将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
  2. 简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
  3. 计算平均值。计算所有64个像素的灰度平均值。
  4. 比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
  5. 计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

这种方法对于寻找一模一样的图片是有效的,但并不能够去搜索「相似」的照片,也不能局部搜索,比如从一个人的单人照找到这个人与别人的合影。这些Google Images都能做到。

Google的算法,其官方描述为:

When you upload an image to Search by Image, the algorithms analyze the content of the image and break it down into smaller pieces called 「features」. These features try to capture specific, distinct characteristics of the image - like textures, colors, and shapes. Features and their geometric configuration represent the computer’s understanding of what the image looks like.

大意是说在Google眼里,图片并不是一个由像素点构成点阵,而是一些「features",包括形状、质地和颜色块。图片之间的比较,是直接去比较图片里的线条等。官方文档里有一个视频(在Youtube上)动态地描述了计算机是如何看图片的。

早在2008年,Google公布了一篇图片搜索的论文(PDF版),和文本搜索的思路是一样的:

  • 对于每张图片,抽取其特征。这和文本搜索对于网页进行分词类似。
  • 对于两张图片,其相关性定义为其特征的相似度。这和文本搜索里的文本相关性也是差不多的。
  • 图片一样有image rank。文本搜索中的page rank依靠文本之间的超链接。图片之间并不存在这样的超链接,image rank主要依靠图片之间的相似性(两张图片相似,便认为它们之间存在超链接)。具有更多相似图片的图片,其image rank更高一些。

Q.E.D.


上一篇:一个简单图的三染色算法问题2008年9月25日
注: 这个问题来自China Theory Week 2008的Open Problems Session。 我们知道在数学里证明一个东西的存在性的时候,有时候只证明了“存在性”,而且在证明过程

下一篇:最大回撤和最大短期回撤的线性算法2012年1月8日
最大回撤是一个重要的风险指标。对于对冲基金和数量化策略交易,这个指标比波动率还重要。 最大回撤 定义:对于序列\(x_1,x_2,\cdots,x_n\),定义最


  • 支持使用微薄、微信和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。