ahash,全称叫做average hash,应该是phash(perceptual hash, 感知哈希)算法的一种。是基于图像内容搜索最简单的一种(search image by image),因此也有很多的局限性。主要用于由图像的缩略图搜原图,对于图像的旋转、平移、对比度和微变形等都无能为力,所以很局限。此次讲解主要分为两个部分,理论部分主要参考是网上的资料,最核心的应该是自己的c++代码实现。
理论部分:
理论部分主要包括以下几个步骤:
<1> 图像缩放—将图像缩放到8*8大小
<2>灰度化—对8*8大小的图像进行灰度化
<3>计算均值—计算这8*8大小图片中64个像素的均值
<4>得到8*8图像的ahash—8*8的像素值中大于均值的则用1表示,小于的用0表示,这样就得到一个64位二进制码作为该图像的ahash值。
<5>计算两幅图像ahash值的汉明距离,距离越小,表明两幅图像越相似;距离越大,表明两幅图像距离越大。
以下来自阮一峰blog的简介:http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html?20150415102912
上个月,Google把"相似图片搜索"正式放上了首页。
你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。
一个对话框会出现。