下载此文档

感知哈希.doc


文档分类:论文 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
这种技术的原理是什么?计算机怎么知道两张图片相似呢? 针对这个问题,请教了算法组的同事,他分享了基本的思路: 对于这种图像搜索的算法,一般是三个步骤: ,描述图像的算法很多,用的比较多的是: SIF T 描述子, 指纹算法函数, bundling features 算法, hash function( 散列函数) 等。也可以根据不同的图像,设计不同的算法,比如图像局部 N 阶矩的方法提取图像特征。 ,并将海量图像编码做查找表。对于目标图像, 可以对分辨率较大的图像进行降采样,减少运算量后在进行图像特征提取和编码处理。 :利用目标图像的编码值,在图像搜索引擎中的图像数据库进行全局或是局部的相似度计算; 根据所需要的鲁棒性,设定阈值,然后将相似度高的图片预保留下来; 最后应该还有一步筛选最佳匹配图片,这个应该还是用到特征检测算法。其中每个步骤都有很多算法研究,围绕数学,统计学,图像编码,信号处理等理论进行研究。根据 Neal Krawetz 博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。这里的关键技术叫做" 感知哈希算法"( Perceptual hash algorithm ),它的作用是对每张图片生成一个" 指纹"( fingerprint )字符串,然后比较不同图片的指纹。结果越接近, 就说明图片越相似。下面是一个最简单的实现: 第一步,缩小尺寸。将图片缩小到 8x8 的尺寸,总共 64 个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。第二步,简化色彩。将缩小后的图片,转为 64 级灰度。也就是说,所有像素点总共只有 64 种颜色。第三步,计算平均值。计算所有 64 个像素的灰度平均值。第四步,比较像素的灰度。将每个像素的灰度, 与平均值进行比较。大于或等于平均值, 记为 1; 小于平均值, 记为 0。第五步,计算哈希值。将上一步的比较结果,组合在一起,就构成了一个 64 位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。== 8f373714acfcf4d0 得到指纹以后,就可以对比不同的图片,看看 64 位中有多少位是不一样的。在理论上,这等同于计算" 汉明距离"( Hamming distance )。如果不相同的数据位不超过 5 ,就说明两张图片很相似;如果大于 10 ,就说明这是两张不同的图片。具体的代码实现, 可以参见 Wote 用 python 语言写的 。代码很短, 只有 53 行。使用的时候,第一个参数是基准图片,第二个参数是用来比较的其他图片所在的目录, 返回结果是两张图片之间不相同的数据位数量(汉明距离)。这种算法的优点是简单快速, 不受图片大小缩放的影响, 缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。实际应用中,往往采用更强大的 pHash 算法和 SIFT 算法,它们能够识别图片的变形。只要变形程度不超过 25% ,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成 Hash 字符串,然后再进行比较。感知哈希算法(

感知哈希 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-03-15