相似图片搜索的hash算法

合集下载

Python图片检索之以图搜图

Python图片检索之以图搜图

Python图⽚检索之以图搜图⽬录⼀、待搜索图⼆、测试集

三、new_similarity_compare.py

四、image_similarity_function.py五、结果⼀、待搜索图⼆、测试集

三、new_similarity_compare.py

# -*- encoding=utf-8 -*-

from image_similarity_function import *

import os

import shutil

# 融合相似度阈值

threshold1 = 0.70

# 最终相似度较⾼判断阈值

threshold2 = 0.95

# 融合函数计算图⽚相似度

def calc_image_similarity(img1_path, img2_path): """

:param img1_path: filepath+filename

:param img2_path: filepath+filename

:return: 图⽚最终相似度

"""

similary_ORB = float(ORB_img_similarity(img1_path, img2_path))

similary_phash = float(phash_img_similarity(img1_path, img2_path))

similary_hist = float(calc_similar_by_path(img1_path, img2_path))

# 如果三种算法的相似度最⼤的那个⼤于0.7,则相似度取最⼤,否则,取最⼩。

max_three_similarity = max(similary_ORB, similary_phash, similary_hist)

min_three_similarity = min(similary_ORB, similary_phash, similary_hist)

if max_three_similarity > threshold1:

基于局部敏感哈希的相似查询算法研究

基于局部敏感哈希的相似查询算法研究

基于局部敏感哈希的相似查询算法研究

随着互联网时代的到来,数据的处理和使用显得越来越重要。相似查询是处理数据的一种重要方法,它可以快速地找到与某个数据相似的其他数据。局部敏感哈希是相似查询的一种方法,它可以在海量数据中快速地找到与查询数据相似的数据并返回给用户。本文将基于局部敏感哈希的相似查询算法进行研究。

1. 局部敏感哈希的基本原理

局部敏感哈希(LSH)通常用于相似查询,它的基本原理是将数据映射到哈希表中,并通过一系列哈希函数将数据分成多个桶。同一个桶中的数据与查询数据相似的概率较高。因此,查询过程即为在相应桶中查找与查询数据最接近的数据。

传统的哈希函数是将数据一一映射到哈希表中,但这种方法并不适合相似查询。为了解决这个问题,LSH使用了一系列哈希函数,每个哈希函数都将数据映射到一个“局部敏感的”空间中。不同哈希函数产生的散列值相互独立,且散列值之间的距离也尽可能远。通过这种方法,LSH的查询结果可以接近于真实结果。

2. 局部敏感哈希的应用

LSH可以广泛地应用于相似查询。例如,在音频和图像处理中,可以使用LSH来搜索相似的音频和图像。在视频推荐系统中,可以使用LSH来搜索与用户当前观看视频相似的其他视频。在搜索引擎中,可以使用LSH来搜索与用户输入的关键词相似的文章。

3. 局部敏感哈希的优势

与传统的相似查询方法相比,LSH具有以下优势:

1)效率高。 由于LSH将数据映射到哈希表中,因此可以在常量时间内搜索相似的数据,而传统方法则需要线性搜索,速度慢得多。 2)存储空间小。 LSH将数据分散在多个哈希表中,因此每个哈希表只需要存储一部分数据。同时,由于相似的数据通常都会映射到同一个桶中,因此存储空间可以进一步缩小。

3)容错性强。 LSH可以容忍数据的一定程度的扰动和噪声,因此能够处理不完全匹配的查询,而传统方法则无法处理。

4. 局部敏感哈希的改进

虽然LSH在相似查询中具有很大的优势,但它也存在一些缺点。例如,它对数据的维度敏感,并且在高维空间中容易出现“维度灾难”。因此,人们对LSH进行了改进,使其在高维空间中也能够有效地使用。

谷歌百度以图搜图感知哈希算法C#简单实现

谷歌百度以图搜图感知哈希算法C#简单实现

⾕歌百度以图搜图感知哈希算法C#简单实现

///

/// 感知哈希算法

///

public class ImageComparer

{

///

/// 获取图⽚的Hashcode

///

///

///

public static string GetImageHashCode(string imageName)

{

int width = 8;

int height = 8;

// 第⼀步

// 将图⽚缩⼩到8x8的尺⼨,总共64个像素。这⼀步的作⽤是去除图⽚的细节,

// 只保留结构、明暗等基本信息,摒弃不同尺⼨、⽐例带来的图⽚差异。

Bitmap bmp = new Bitmap(Thumb(imageName));

int[] pixels = new int[width * height];

// 第⼆步

// 将缩⼩后的图⽚,转为64级灰度。也就是说,所有像素点总共只有64种颜⾊。

for (int i = 0; i < width; i++)

{

for (int j = 0; j < height; j++)

{

Color color = bmp.GetPixel(i, j);

pixels[i * height + j] = RGBToGray(color.ToArgb());

}

}

// 第三步

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

int avgPixel = Average(pixels);

// 第四步

// 将每个像素的灰度,与平均值进⾏⽐较。⼤于或等于平均值,记为1;⼩于平均值,记为0。

int[] comps = new int[width * height];

for (int i = 0; i < comps.Length; i++)

{

if (pixels[i] >= avgPixel)

{

comps[i] = 1;

}

else

{

目标相似度算法

目标相似度算法

目标相似度算法

目标相似度算法是一种评估目标对象相似性的方法,通常用于图像识别、目标跟踪、机器视觉等领域。目标相似度算法可以根据不同的特征和度量方法来计算目标之间的相似度,常用的算法包括余弦相似度、哈希算法、直方图等。

1. 余弦相似度:余弦相似度是一种常用的衡量向量之间相似度的方法,它可以用于计算两个向量之间的夹角的余弦值。在目标相似度算法中,可以将目标对象转换为特征向量,然后使用余弦相似度来比较这些特征向量的相似程度。余弦相似度的计算公式如下:其中,A和B分别表示两个向量,·表示向量的点积,A和B表示向量的范数(即向量的长度)。余弦相似度的取值范围在-1到1之间,值越接近1表示两个向量越相似,越接近-1表示两个向量越不相似,接近0表示两个向量之间没有明显的相似性或差异。

2. 哈希算法:哈希算法可以将目标对象转换为固定长度的哈希值,从而实现目标对象的相似度比较和检索。在目标相似度算法中,哈希算法可以通过将目标对象转换为灰度图像或彩色图像,并计算图像的平均灰度值或离散余弦变换系数等方式,将目标对象转换为哈希值。然后,通过比较两个目标对象的哈希值的汉明距离,可以评估目标对象的相似度。

3. 直方图:直方图是一种常用的图像处理算法,它可以用来表示图像中不同颜色或灰度级别的像素数量。在目标相似度算法中,直方图可以用于比较两张图片的相似度。直方图算法将目标对象转换为灰度图像或彩色图像,并计算各个颜色或灰度级别的像素数量。然后,通过比较两张图片的直方图,可以评估它们之间的相似度。

此外,还有许多其他目标相似度算法,如特征匹配算法、结构相似性算法等。这些算法可以根据不同的应用场景和需求选择使用。

Opencvpython图像处理-图像相似度计算

Opencvpython图像处理-图像相似度计算

Opencvpython图像处理-图像相似度计算

⼀、相关概念

1. ⼀般我们⼈区分谁是谁,给物品分类,都是通过各种特征去辨别的,⽐如⿊长直、⼤⽩腿、樱桃唇、⽠⼦脸。王⿇⼦脸上有⿇⼦,隔壁⽼

王和⼉⼦很像,但是⼉⼦下巴涨了⼀颗痣和他妈⼀模⼀样,让你确定这是你⼉⼦。 还有其他物品、什么桌⼦带腿、镜⼦反光能在⾥⾯倒影出

东西,各种各样的特征,我们通过学习、归纳,⾃然⽽然能够很快识别分类出新物品。 ⽽没有学习训练过的机器就没办法了。

2. 但是图像是⼀个个像素点组成的,我们就可以通过不同图像之间这些差异性就判断两个图的相似度了。其中颜⾊特征是最常⽤的,

(其余常⽤的特征还有纹理特征、形状特征和空间关系特征等)

其中⼜分为

直⽅图

颜⾊集

颜⾊矩

聚合向量

相关图

1、直⽅图

在Python中利⽤opencv中的calcHist()⽅法获取其直⽅图数据,返回的结果是⼀个列表,使⽤matplotlib,画出了这两张图的直⽅图数

据图

import cv2

import numpy

from matplotlib import pyplot

if __name__ == '__main__':

imgobj1 = cv2.imread('pho.jpg')

imgobj2 = cv2.imread('ph1.jpg')

hist1 = cv2.calcHist([imgobj1], [0], None, [256], [0.0, 255.0])

hist2 = cv2.calcHist([imgobj2], [0], None, [256], [0.0, 255.0])

pyplot.plot(range(256), hist1, 'r')

pyplot.plot(range(256), hist2, 'b')

pyplot.show()

cv2.imshow('img1',imgobj1)

cv2.imshow('img2',imgobj2) cv2.waitKey(0)

相似图片搜索原理

相似图片搜索原理

相似图片搜索原理

相似图片搜索是一种基于图像内容的检索技术,旨在根据输入的查询图像找到与其相似的其他图像。其原理主要包括以下几个步骤:

1. 特征提取:通过计算图像的特征向量来描述其内容特征。这些特征可以是局部的,如SIFT、SURF等,也可以是全局的,如颜色直方图、形状描述子等。特征提取的目的是将图像从高维空间映射到低维向量空间,以便后续的相似度计算。

2. 相似度计算:通过比较查询图像的特征向量与数据库中其他图像的特征向量来计算它们之间的相似度。常用的相似度度量方法包括欧氏距离、余弦相似度等。相似度计算的目的是衡量两个图像之间在内容上的相似程度。

3. 数据库搜索:根据相似度计算的结果,将与查询图像最相似的图像从数据库中按照相似度排序进行检索。对于大规模的数据库,可能会使用索引结构(如KD-Tree、局部敏感哈希等)来加速搜索过程。

4. 结果展示:将检索得到的相似图像按照一定的规则展示给用户,通常会将这些图像以缩略图的形式呈现,并给出相似度的排名。

相似图片搜索的原理主要是通过提取图像的特征向量并比较相似度来实现的,并没有直接使用标题文字进行搜索。相似图片搜索可以在许多应用场景中发挥作用,如商品推荐、版权保护、图像鉴定等。

python之图片指纹(唯一性的)

python之图⽚指纹(唯⼀性的)

介绍

每张图⽚都有⼀个唯⼀性的指纹。就好像⼈类的指纹可以识别出这个⼈类似。

图⽚指纹是什么?(图⽚哈希)

⽤图⽚指纹进⾏相似图⽚的检测。这种技术通常被称为“感知图像hash”或是简单的“图⽚hash”。

图⽚hash是检测⼀张图⽚的内容然后根据检测的内容为图⽚建⽴⼀个唯⼀值的过程。

⽐如,给定⼀张图⽚作为输⼊,应⽤⼀个hash函数,然后基于图⽚的视觉计算出⼀个图⽚hash。相似的图⽚也应当有相似的hash值。

将会使⽤“差别Hash”或简单的DHash算法计算图⽚指纹。简单来说,DHash算法着眼于两个相邻像素之间的差值。然后,基于这样的差值,就建⽴起⼀个hash

值了。

为什么不使⽤md5,sha-1等算法?

我们不能在实现中使⽤加密hash算法。由于加密hash算法的本质使然,输⼊⽂件中⾮常微⼩的差别也能造成差异极⼤的hash值。我们实际上希望相似的输⼊可

以有相似的hash输出值。

安装相关库pip install Pillow

pip install ImageHash

pip install numpy

pip install scipy

开始使⽤

获取图⽚指纹from PIL import Image

import imagehash

# 给⼀张图⽚

img1 = Image.open('images/demo4.jpg')

res = imagehash.dhash(img1) # 4f999cc90979704c

计算汉明距离

汉明距离被⽤于计算⼀个哈希中的不同位数。因此,哈希中只有⼀位不同的两张图⽚⾃然⽐有10位不同的图⽚更相似。

全部代码from PIL import Image

import imagehash

def img(img_path):

"""

图⽚哈希(类似:4f999cc90979704c)

:param img_path: 图⽚路径

:return:

"""

img1 = Image.open(img_path)

模糊哈希算法(待详细补充)

模糊哈希算法(待详细补充)

模糊哈希算法(Perceptual Hashing Algorithm)是一种基于感知特性的图像哈希算法。它通过分析图像的特征,并将其转化为一个固定长度的哈希值,从而实现对图像进行快速的相似度比较和检索。

传统的哈希算法通常针对的是数据的完整性和唯一性进行设计,而模糊哈希算法更加关注图像的内容和感知特性。模糊哈希算法能够对图像进行一定程度的变形、旋转、尺度缩放、噪声等处理后,仍能维持相同的哈希值,即使发生了一些变化,但图像的视觉特征仍然能够保持不变。

模糊哈希算法的设计思路是基于人类视觉系统的感知机制。我们人类对于图像的感知会受到一些影响,如图像的亮度、颜色、纹理、形状等因素,但我们仍然能够通过这些特征来识别和区分不同的图像。模糊哈希算法也采用了类似的思路,通过提取图像的感知特征,将其转化为一个哈希值。

1.图像预处理:首先,对原始图像进行一些预处理操作,如将图像统一转换为灰度图像,进行尺度缩放、去噪等操作,以便更好地提取图像的感知特征。

2.特征提取:然后,从预处理后的图像中提取感知特征。常用的特征包括图像的边缘、纹理、颜色分布等。对于每个特征,可以采用不同的算法进行提取,如SIFT、SURF、HOG等。

3.特征压缩:由于原始特征可能较长,不利于后续的计算和存储,因此需要对特征进行压缩,将其转化为固定长度的哈希值。常用的方法包括局部哈希、均值哈希、差异哈希等。 4.相似度比较:最后,通过比较不同图像的哈希值,计算它们之间的相似度。一般可以采用汉明距离或海明距离等指标来衡量哈希值的差异程度,从而判断图像的相似性。

总之,模糊哈希算法是一种基于感知特性的图像哈希算法,通过提取图像的感知特征,并将其转化为固定长度的哈希值,实现对图像的快速相似度比较和检索。随着计算机视觉和图像处理领域的发展,模糊哈希算法在各个应用中的重要性将越来越大。

面向多媒体内容最近邻搜索的哈希学习方法

面向多媒体内容最近邻搜索的哈希学习方法

面向多媒体内容最近邻搜索的哈希学习方法

概述

在当前数字化时代,多媒体数据的数量与日俱增,由此带来了检索和搜索这些数据的难题。多媒体内容最近邻搜索是一种有效且常用的方法,其目标是在一个多媒体数据集中找到与查询对象最相似的数据。然而,由于多媒体数据的高维特性和数量庞大,传统的搜索方法往往效率低下。为了解决这个问题,研究人员引入了哈希学习方法。

哈希学习方法简介

哈希学习方法可以将高维数据映射到低维空间,从而大大提高搜索的效率。它主要包括两个步骤:映射和哈希编码。首先,通过映射将高维的多媒体数据转换为低维的特征向量。然后,对特征向量进行哈希编码,将其转化为二进制码。这样一来,相似的多媒体数据在低维特征空间中会拥有相近的哈希码,从而极大地方便了最近邻搜索。

面向多媒体内容的哈希学习方法

在面向多媒体内容最近邻搜索的哈希学习方法中,对于不同类型的多媒体数据,可以采用适应性哈希学习方法。具体而言,可以根据多媒体数据的特点选择不同的映射和哈希编码方式。

对于图像数据,可以使用局部和全局特征来进行映射。局部特征是指图像中的一些局部区域,比如斑点、边缘等。全局特征则是指整个图像的一些整体特征,比如色彩直方图、纹理特征等。将局部和全局特征结合起来,可以更好地准确表示图像的特点,并将其映射到低维空间。

对于音频数据,可以使用短时傅里叶变换将音频信号转换为频谱图,并提取频谱图的特征进行映射。频谱图是指将音频信号在频域中的表示,可以反映不同频率上的声音强度。通过提取频谱图的特征,可以更好地表示音频数据并进行哈希编码。

对于视频数据,可以将视频的每一帧进行特征提取,并将这些特征进行映射。视频数据通常由一系列连续的图像帧组成,因此可以将每一帧的图像特征提取出来,再将这些特征进行映射。通过这种方式,可以更好地表示视频数据并进行哈希编码。

浅析大数据搜索引擎之图片搜索技术

ComputerKnowledgeandTechnology电脑知识与技术

人工智能及识别技术本栏目责任编辑:唐一东第15卷第34期(2019年12月)

浅析大数据搜索引擎之图片搜索技术

孟庆芳

(南京交通科技学校,江苏南京210000)

摘要:随着大数据技术的发展,搜索引擎的关注度越来越高,搜索引擎技术也逐渐发展成为大数据应用最前线的领域,也

是最容易产生价值的大数据应用。图片搜索是目前搜索引擎中搜索流量仅次于网页搜索的多媒体搜索项目,为了快速精

准的实现图片搜索功能,论文从基于内容的图片搜索及基于文本的图片搜索两个方面进行分析、研究,解决了较高效精准

地以图搜图的图片搜索问题。

关键词:大数据;搜索引擎;图片搜索;算法;相似度

中图分类号:TP391文献标识码:A

文章编号:1009-3044(2019)34-0181-02开放科学(资源服务)标识码(OSID):

AnalysisofPictureSearchTechnologyofBigDataSearchEngine

MENGQing-fang

(NanjingTransportationScienceandTechnologySchool,Nanjing210000,China)

Abstract:Withthedevelopmentofbigdatatechnology,searchenginehasbecomemoreandmoreconcerned.Searchenginetechnologyhasgraduallydevelopedintothefrontierareaofbigdataapplication,andisalsothemostvaluablebigdataapplication.Picturesearchis

amultimediasearchprojectinsearchengine,whosesearchtrafficissecondonlytowebsearch.Inordertorealizethefunctionofimage

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档