`
wbj0110
  • 浏览: 1571033 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java指纹识别+谷歌图片识别技术

 
阅读更多

Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。

打开Google图片搜索页面:


点击使用上传一张angelababy原图:


点击搜索后,Google将会找出与之相似的图片,图片相似度越高就越排在前面。如:


这种技术的原理是什么?计算机怎么知道两张图片相似呢?

根据Neal Krawetz博士的解释,实现相似图片搜素的关键技术叫做"感知哈希算法"(Perceptualhash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。

 

以下是一个最简单的Java实现:

 

预处理:读取图片

 

第一步,缩小尺寸。

将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。

 

第二步,简化色彩。

将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

 

第三步,计算平均值。

计算所有64个像素的灰度平均值。

 

第四步,比较像素的灰度。

将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。

 

第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

 

得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算"汉明距离"(Hammingdistance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。

 

你可以将几张图片放在一起,也计算出他们的汉明距离对比,就可以看看两张图片是否相似。

 

这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。

 

实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。

 

源码:见附件

原文链接:http://bbs.csdn.net/topics/390009562

分享到:
评论

相关推荐

    java指纹识别以及谷歌图片识别技术

    在本文中,我们将深入探讨Java指纹识别技术和谷歌图片识别技术,这两种技术在现代软件开发,尤其是信息安全和图像处理领域有着广泛的应用。首先,我们要明确Java指纹识别是指通过计算图像的特征来创建一个唯一的标识...

    Android 6.0指纹识别App开发Demo

    在Android 6.0(Marshmallow)中,Google引入了对硬件级指纹识别的支持,使得开发者可以方便地在应用程序中集成这一功能。本教程将详细讲解如何开发一个Android 6.0指纹识别App的Demo。 首先,理解Android的指纹...

    简单实现Android 6.0指纹识别Demo

    在Android 6.0(API级别23)中,谷歌引入了新的安全特性——指纹识别功能,使得开发者能够集成指纹认证到自己的应用中。本文将详细介绍如何在Android 6.0上实现一个简单的指纹识别Demo。 一、Android 6.0指纹识别...

    DEMO:简单开发Android 6.0指纹识别

    在Android 6.0(API级别23)中,谷歌引入了对指纹识别功能的支持,使得开发者能够集成此功能到他们的应用中,提供更安全的身份验证方式。本DEMO将向您展示如何在Android 6.0及以上版本的设备上实现简单的指纹识别。 ...

    AndroidM实现指纹识别

    在Android M(API级别23)及以上版本,Google引入了对指纹识别的支持,使得开发者能够集成这个安全功能到他们的应用程序中。本篇文章将深入探讨如何在Android应用中实现指纹识别,包括必要的API介绍、权限管理、设置...

    Fingerprinttest:这是一个简单的指纹识别测试代码,通过简单的API调用实现指纹识别的功能

    【指纹识别技术】 指纹识别是一种基于生物特征的身份验证方法,它是生物识别技术的一种,具有唯一性和稳定性。在Android系统中,自API Level 23(Android 6.0 Marshmallow)开始,Google提供了对硬件指纹传感器的...

    Android指纹认证Demo源码

    在Android系统中,从6.0(API级别23)开始,官方引入了对硬件指纹识别器的支持。这个功能使得开发者能够实现更加安全的身份验证方式,例如应用内的支付验证、登录验证等。本Demo源码就是针对Android指纹认证的一个...

    Android 6.0指纹识别App开发案例

    在Android 6.0(API Level 23)中,Google引入了官方的指纹识别支持,使得开发者可以方便地在应用程序中集成这一功能。本文将详细介绍如何开发一个Android 6.0指纹识别App,以及涉及的关键接口和步骤。 首先,我们...

    Android指纹识别功能

    在模拟器上测试指纹识别功能需要注意,由于安全原因,Google并未开放模拟器的指纹存储功能。因此,你需要在真实设备上录入指纹并进行测试。当使用正确的指纹时,`onAuthenticationSucceeded()`方法会被调用;反之,...

    Android指纹识别API初试

    Android指纹识别API是Android系统为应用程序提供的一种安全认证机制,自Android 6.0(API级别23)开始引入。该API允许应用利用设备的硬件指纹传感器进行用户身份验证,提高应用的安全性和便利性。在本文中,我们将...

    java开源包5

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    图片识别-感知哈希算法

    当用户上传一张图片,谷歌会使用感知哈希算法计算其指纹,然后与数据库中其他图像的指纹进行比对,找出相似或相同的图片。 8. **指纹验证**:在版权保护方面,感知哈希也被用来验证图像的原始性和完整性。通过比较...

    java开源包6

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包9

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包4

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包101

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包8

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包10

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

Global site tag (gtag.js) - Google Analytics