Advertisement

感知哈希算法的Java实现

阅读量:

通过Google的图像识别技术“相似图片搜索”功能,你可以用一张图片快速找到互联网上大量与之类似的其他图片。访问Google图像搜索界面。

这里写图片描述

点击照相按钮上传一张angelbaby原图:

这里写图片描述

点击搜索后, Google 将识别与之相匹配的图片, 并根据相似度高低排列这些结果. 其中相似度越高, 则排在更靠前的位置.

这里写图片描述

这种技术的工作原理是什么?计算机是如何判断两张图片相似的? Neal Krawetz 教授对此进行了阐述。关键的技术手段被称为 perceptual hash algorithm(感知哈希算法)。该算法的作用是计算生成每张图片的一个唯一标识符(fingerprint),并比较不同图片之间的该标识符差异性。其相近程度越大,则两张图片之间的相似程度越高。

以下是一个最简单的java实现:
预处理:读取图片

复制代码
    File inputFile = newFile(filename);   
    BufferedImage sourceImage = ImageIO.read(inputFile);//读取图片文件  

首先进行尺寸缩减。对图像进行缩放处理后得到一个8×8像素的小图像。其主要目的是去除图像中的细节信息,并专注于保留基础结构和明暗变化特征。从而

全部评论 (0)

还没有任何评论哟~