图像哈希算法
优点:简单快速,不受图片大小缩放的影响 缺点:缺点是图片的内容不能变更。如果在图片上加几个文
字,它就认不出来了。 它的最佳用途是根据缩略图,找出原图。
二、感知哈希算法 步骤:
1、缩小尺寸到 32×32
2、图像灰度化
3、对图像进行DCT变换 4、DCT的结果是32×32大小的矩阵,但我们只要保留 左上角的8×8的矩阵,这部分呈现了图片中的最低频 率。
相比 pHash , dHash 的速度要快的多,相比 aHash , dHash 在效率几乎相同的情况下的效果要更好,它是基于渐变 实现的。
1、缩小尺寸:将图片缩小到8x8的尺寸,总共64个像素。去
除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、 比例带来的图片差异。
2、简化色彩:将缩小后的图片,转为64级灰度。也就是说,
所有像素点总共只有64种颜色。
3、计算平均值:计算所有64个像素的灰度平均值。
4、比较像素的灰度:将每个像素的灰度,与平均值进行比
较。大于或等于平均值,记为1;小于平均值,记为0。
5、计算哈希值:将上一步的比较结果,组合在一起,就构
成了一个64位的整数,这就是这张图片的指纹。组合的次序并 不重要,只要保证所有图片都采用同样次序就行了。
得到指纹以后,就可以计算“汉明距离”,如果不相同的数据 位不超过5,就说明两张图片很相似;如果大于 10,就说明这 是两张不同的图片。
ห้องสมุดไป่ตู้
5、计算平均值
6、与均值比较 7、用汉明距离比较
优点:容忍变形( 25% 的修改)只要图片的整体 结构保持不变,hash结果值就不变。能够避免伽 马校正或颜色直方图被调整带来的影响。
缺点:速度比传统慢
三、dHash
1.缩小图片:收缩到9*8的大小,一遍它有72的像素点 2.转化为灰度图 3.计算差异值:dHash算法工作在相邻像素之间,这样每 行9个像素之间产生了8个不同的差异,一共8行,则产生 了64个差异值 4.获得指纹:如果左边的像素比右边的更亮,则记录为1, 否则为0.
图像哈希算法
谷歌搜索图像结果
Google和Tineye相似图像搜索主要利用的算法是感 知哈希算法( Perceptual hash algorithm ),它 的作用是对每张图片生成一个“指纹” ( fingerprint )字符串,然后比较不同图片的指 纹,结果越接近,就说明图片越相似。
一、均值哈希算法步骤:
一种新型的图像哈希算法
图 3 利 用 BP网 络 产 生 哈 希 值
13 图像 认 证 .
输 丢 中问层 输 出层
图 1 B P神 经 网络 的 结构
认证阶段步骤 如下 :
1 )将接 收到 的 图像 P ,按 照哈希 值 的生成步
12 哈 希 值 产 生 过 程 . 骤 生 成 哈 希 值 P 。 , ) 2 )把 日 , 原 图像 P 的 哈 希 值 ) 与 () 1 ) ,记 两 者
一
种 新 型 的 图像 哈希 算法
、 陈 青 华
( 山东省 工会 干 部 管理 学 院 信 息 工程 学 院 ,济 南 2 0 0 ) 5 10
摘 要 :为 了提 高图像 哈 希方 法 的鲁 棒 性 ,提 出一 种基 于 B 神 经 网络 的新 型 图像 哈 希 算法 ,首 先 利用 图像 像 素 P
矩 阵和构 造 的 函数 来训 练 B 神 经 网络 ,再 将 图像 进 行 离散 小 波变换 ,利 用低 频分 量 来组 成 矩 阵 ,最后 利 用 已经训 P
练好 的 B P神 经 网络 来产 生哈 希 序 列 。仿 真结 果表 明 ,该 算法对 J E P G压 缩 、图像 滤波 等 内容保 持 操作 具有 较 好 的稳
Ke wo d : ma e Ha h a g rt m ; m a e a t e t a i n BP n u a e wo k y r s i g s lo i h i g u h n i to ; e r l t r c n
0 引言
互 联 网上 的 海 量 数 字 图 像 给 人 们 的 生 活 工 作 提 供 了 便 利 。与 此 同 时 , 图像 的海 量 存 储 、 快 速 检 索 和 图 像 版 权 保 护 等 问题 也 日趋 重 要 。 哈希 技 术 可 以 将 任 意 分 辨 率 的 图 像 数 据 转 化 为 几 百 或 几 千 比特 的
基本局部敏感哈希算法总结
基本局部敏感哈希算法总结在计算机视觉中,哈希函数是一种常用的工具,用于将图像、视频、音频等多媒体数据压缩到一个较短的二进制串中,以便于快速检索、匹配和分类。
局部敏感哈希是一类专门针对高维稠密数据的哈希方法,它能够高效地处理各种图像特征、文本词向量等数据,大大提高了计算速度并减小了存储空间。
本文将简要总结基本的局部敏感哈希算法及其应用。
1. Locality Sensitive Hashing(LSH)LSH是局部敏感哈希领域的经典算法之一,它通过随机投影和哈希技巧来实现相似点之间的映射,从而在低维空间中近似计算它们之间的距离。
常用的LSH包括:Random Projection LSH、MinHash LSH和Entropy LSH等。
其中Random Projection LSH是最为常用的一种方法,它将数据向量随机投影到一个低维空间,并在此空间上运用哈希函数分组,以便于快速计算两个数据向量间的余弦距离。
MinHash LSH则采用Min-Hashing技术,将数据向量的随机排列作为哈希函数,以达到高效查找相似文档的目的。
Entropy LSH则根据数据的信息熵来设置哈希函数,以更好地处理高维、稀疏数据。
2. Product Quantization(PQ)PQ是一种哈希和量化相结合的方法,将高维向量分成若干子向量,对每个子向量进行独立的量化(如K-means聚类),得到若干计算中心点后,再编码为低维二进制码。
这些码排列组合,构成最终的哈希表。
常用的PQ算法包括:Product Quantization based Hashing、Fast Similarity Search in Large Databases using PQ-Hamming Distance及Robust Product Quantization等。
PQ广泛应用于图像、视频、音频等内容检索和机器学习等任务领域。
3. Locality-Sensitive Binary Code(LSBC)LSBC是一种适用于高维稠密数据的二进制编码技术,它与LSH的区别在于数据将被量化为二进制码,而不是哈希表。
基于Zernike矩的图像哈希改进算法研究
0 引
言
由 于 采 用 D T变 换 来 进 行 特 征 的 提 取 . 以无 法 C 所 克 服 其 自身 的缺 陷 即对 旋 转 操 作 敏 感 如 何 寻 找 一 种 方 法 不 但 可 以改 进 哈 希 函数 的抗 旋 转 特 性 而 且 还 不 会 对 整 个 哈 希 函数 的提 取 过 程 造 成 影 响 . 引进 Z mie e k 矩 的概 念 . 用 Z mie 的旋 转 不 变 性 和 矩 的重 构 的特 利 e k矩 性 .对 图 像 提 取 特 征 矩 作 为 感 知 哈 希 序 列 的补 充 来 检 验 图 像 的旋 转 攻 击 这 样 不 但 提 高 了哈 希 函数 的抗 几
随着计算机与 网络技术 的普及和应用 .人们 可以 方便地通过 网络来获取信息 . 然而 . 信息 的安 全成 为人
们 关 注 的 问题 由于 绝 大 部 分 的信 息 都 是 以 多媒 体 的
形式进行传输 .传统 的加密方法 只能对信息 流进行 加 密. 无法考虑到信息的内容 。 而数字水 印技术是将水印 嵌入 到数字作 品中多少都会对 原始信 息产 生影响 . 并
实 验 验 证
用于 图像处理领域 . 并得到深入 的研究【 常见 的矩有 1 ]
几 何 矩 、 交 矩 、 转 矩 和 复 数 矩 。Z mie 是 一 种 基 正 旋 e k矩
于 Z mie e k 多项式 的正交矩 . 尽管其计算 的复杂度 比较
高 但 是 它 在 图像 旋 转 和抗 噪 声 方 面 有 较 大 的优 势 在 M E一 P G 7中 就是 采 用 Z mie 作 为一 种 主要 的方 法 e k矩
OpenCV实战(1)——图像相似度算法(比对像素方差,感知哈希算法,模板匹配(OCR数字。。。
OpenCV实战(1)——图像相似度算法(⽐对像素⽅差,感知哈希算法,模板匹配(OCR数字。
如果需要处理的原图及代码,请移步⼩编的GitHub地址 传送门: 如果点击有误:https:///LeBron-Jian/ComputerVisionPractice 最近⼀段时间学习并做的都是对图像进⾏处理,其实⾃⼰也是新⼿,各种尝试,所以我这个门外汉想总结⼀下⾃⼰学习的东西,图像处理的流程。
但是动起笔来想总结,⼀下却不知道⾃⼰要写什么,那就把⾃⼰做过的相似图⽚搜索的流程整理⼀下,想到什么说什么吧。
⼀:图⽚相似度算法(对像素求⽅差并⽐对)的学习1.1 算法逻辑1.1.1 缩放图⽚ 将需要处理的图⽚所放到指定尺⼨,缩放后图⽚⼤⼩由图⽚的信息量和复杂度决定。
譬如,⼀些简单的图标之类图像包含的信息量少,复杂度低,可以缩放⼩⼀点。
风景等复杂场景信息量⼤,复杂度⾼就不能缩放太⼩,容易丢失重要信息。
根据⾃⼰需求,弹性的缩放。
在效率和准确度之间维持平衡。
1.1.2 灰度处理 通常对⽐图像相似度和颜⾊关系不是很⼤,所以处理为灰度图,减少后期计算的复杂度。
如果有特殊需求则保留图像⾊彩。
1.1.3 计算平均值 此处开始,与传统的哈希算法不同:分别依次计算图像每⾏像素点的平均值,记录每⾏像素点的平均值。
每⼀个平均值对应着⼀⾏的特征。
1.1.4 计算⽅差 对得到的所有平均值进⾏计算⽅差,得到的⽅差就是图像的特征值。
⽅差可以很好的反应每⾏像素特征的波动,既记录了图⽚的主要信息。
1.1.5 ⽐较⽅差 经过上⾯的计算之后,每张图都会⽣成⼀个特征值(⽅差)。
到此,⽐较图像相似度就是⽐较图像⽣成⽅差的接近成程度。
⼀组数据⽅差的⼤⼩可以判断稳定性,多组数据⽅差的接近程度可以反应数据波动的接近程度。
我们不关注⽅差的⼤⼩,只关注两个⽅差的差值的⼤⼩。
⽅差差值越⼩图像越相似!1.2 代码:import cv2import matplotlib.pyplot as plt#计算⽅差def getss(list):#计算平均值avg=sum(list)/len(list)#定义⽅差变量ss,初值为0ss=0#计算⽅差for l in list:ss+=(l-avg)*(l-avg)/len(list)#返回⽅差return ss#获取每⾏像素平均值def getdiff(img):#定义边长Sidelength=30#缩放图像img=cv2.resize(img,(Sidelength,Sidelength),interpolation=cv2.INTER_CUBIC)#灰度处理gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#avglist列表保存每⾏像素平均值avglist=[]#计算每⾏均值,保存到avglist列表for i in range(Sidelength):avg=sum(gray[i])/len(gray[i])avglist.append(avg)#返回avglist平均值return avglist#读取测试图⽚img1=cv2.imread("james.jpg")diff1=getdiff(img1)print('img1:',getss(diff1))#读取测试图⽚img11=cv2.imread("durant.jpg")diff11=getdiff(img11)print('img11:',getss(diff11))ss1=getss(diff1)ss2=getss(diff11)print("两张照⽚的⽅差为:%s"%(abs(ss1-ss2))) x=range(30)plt.figure("avg")plt.plot(x,diff1,marker="*",label="$jiames$") plt.plot(x,diff11,marker="*",label="$durant$") plt.title("avg")plt.legend()plt.show()cv2.waitKey(0)cv2.destroyAllWindows() 两张原图: 图像结果如下:img1: 357.03162469135805img11: 202.56193703703704两张照⽚的⽅差为:154.469687654321 实验环境开始设置了图⽚像素值,⽽且进⾏灰度化处理,此⽅法⽐对图像相似对不同的图⽚⽅差很⼤,结果很明显,但是对⽐⽐较相似,特别相似的图⽚不适应。
基于HEVC屏幕图像编码的哈希表的优化算法
基于HEVC屏幕图像编码的哈希表的优化算法金小娟;张培君;林涛【摘要】The preudo 2-D matching algorithm has good compression performance for the discontinuous-tone content of screen content. However, the large space overhead of the hash table is not conductive to realize the hardware in this algo-rithm. This paper proposes a 3-byte hash value method to reduce the space of the hash table for optimizing the original method. The source data is treated as the data set composed of elements for YUV triples. Then the hash value of YUV triple is calculated as a unit. It not only can reduce the amount of computation of the hash values, but also can minimize the space overhead of the hash table. The experimental results show that the 3-byte hash value method makes the storage space of the hash table reduce to one-third of the original. And the BD-rate performance of some test screen images is also improved.%仿2维匹配算法对屏幕图像中的非连续色调区域有很好的压缩性能,但该算法中哈希表的空间开销较大,不利于硬件实现。
图集去重最好的方法
图集去重最好的方法图集去重是指在一个图集中去掉重复的图片。
当我们在整理图片时,会发现有些图片可能会出现重复,占用不必要的存储空间。
图集去重的目的就是为了优化存储空间和提高效率。
下面我将介绍几种常见的图集去重方法。
1. 基于哈希算法的去重方法:这是一种常见的图集去重方法。
它的基本原理是通过计算图片的哈希值,将其作为图像的唯一标识。
当两个图片的哈希值相同时,它们被认为是相同的图片。
根据这个原理,我们可以遍历图集中的所有图片,计算其哈希值,并将其放入一个集合中。
如果集合中已经存在相同的哈希值,说明这是一张重复的图片,我们可以将其删除或标记。
这种方法的优点是效率高,速度快,适用于大规模的图集去重。
但是也存在缺点,就是可能会存在哈希冲突,即不同的图片计算出的哈希值相同,误判为重复图片的情况。
2. 基于相似度匹配的去重方法:这种方法的基本原理是通过比较图片之间的相似度来判断是否是重复图片。
常见的相似度匹配算法有均值哈希算法、感知哈希算法、结构相似度算法等。
通过计算图片之间的相似度,我们可以设置一个阈值,当两张图片的相似度超过阈值时,认为它们是重复图片。
这种方法的优点是精度较高,可以识别出相似度较高的图片,并进行去重。
但是也存在缺点,就是该方法计算量较大,需要遍历图集中的所有图片进行相似度计算。
3. 基于特征提取的去重方法:这种方法的基本原理是通过提取图片的特征来判断是否是重复图片。
常见的特征提取算法有局部二值模式(LBP)、灰度共生矩阵(GLCM)、尺度不变特征变换(SIFT)等。
我们可以通过将特征向量进行比较,来判断图片是否是重复图片。
这种方法的优点是可以提取出图片的特征信息,并进行比较判断,适用于不同风格和尺度的图片。
但是也存在缺点,就是特征提取的过程可能会存在一定的误差,造成误判或漏判。
以上是几种常见的图集去重方法。
选择何种方法取决于具体的应用场景和需求。
如果对于去重的准确性要求较高,可以采用基于相似度匹配或特征提取的方法;如果对准确性要求不是特别高,但对处理速度有要求,可以选择基于哈希算法的方法。
基于压缩传感的图像哈希水印算法研究
第4 9卷 第 6期
2 0钲 01
中山大学学报 ( 自然科学 版)
ACTA S ENTI CI ARUM NATURAL UM UNI I VERS TATI S I S UNYATS ENI
Vo . N . I49 o6
NO . V
1 1月
2 O 01
基 于压 缩 传感 的图 像哈 希 水 印算 法研 究
周 燕 ,张德 丰 ,马子 龙
( .佛 山科 学技 术 学院计 算机 系,广 东 佛 山 5 8 0 ; 1 2 0 0 2 .哈 尔滨工业 大 学电子工程 系,黑龙 江 哈 尔滨 10 0 ) 5 0 1
摘 要 :现有基于图像内容的水印算法在鲁棒性和篡改检测方面存在不足,提出了一种基于压缩传感的图像哈
f m tetm ee ae a drn o r et no et ee aei cn u t .B o p r gte r prdi g , n ad m po c o nt mprdi g o d ce o h a m 3 i h a m s d ycm ai n h
相似图片搜索的两种哈希算法
(6)计算hash值:这是最主要的一步,根据8*8的DCT矩阵,设置0或1的64位 的hash值,大于等于DCT均值的设为”1”,小于DCT均值的设为“0”。组合 在一起,就构成了一个64位的整数,这就是这张图片的指纹。
少位不用来确定图片的相似度。在理论上,这一步等同于计算汉明 距离(Hamming Distance)。如果不相同的数据位不超过5,就说明 两幅图片很相似;如果不相同的数据位超过10,就说明两幅图片完 全不同。
均值哈希算法的优缺点
• 均值哈希算法的优点是简单快速,不受图片大小缩放的影响,缺点
是受均值的影响非常大。如果对图片进行伽马校正或直方图均衡, 就会影响到均值,从而影响最终的识别效果。
DCT应用
• 离散余弦变换具有很强的"能量集中"特性:大多数的自然信号(包
括声音和图像)的能量都集中在离散余弦变换后的低频部分
• 它将图像从像素域变换到频率域。然后一般图像都存在很多冗余和
相关性的,所以转换到频率域之后,只有很少的一部分频率分量的 系数才不为0,大部分系数都为0(或者说接近于0)。
相似图片搜索的两种哈希 算法
相似图片搜索的两种哈希算法
• 均值哈斯算法(Average hash algorithm) • 感知哈希算法(Perceptual hash algorithm)
均值哈希算法
• 均值哈希算法主要是利用图片的低频信息来进行相似度的识别。 • 均值哈希算法的主要原理 • 是对每幅图片生成一个“指纹”(fingerprint)字符串,然后通过
•
• •
像素域——频率域
DCT——低频 DCT:数据压缩(冗余)
基于局部性敏感哈希的图像检索研究
基于局部性敏感哈希的图像检索研究图像检索是指在图像数据库中根据用户需求检索出与之相关的图像,这在人们的生活和工作中具有广泛的应用。
通常,图像检索有两个方向:基于内容的图像检索和基于文本的图像检索。
它们的主要区别在于是否考虑图像的语义信息。
基于内容的图像检索是一种相对复杂的图像检索方式,它利用图像的特征向量进行相似度计算。
经过多年的发展,基于内容的图像检索已经成为当今研究的热点。
其中,局部特征表示是图像检索中的一个重要领域。
局部特征表示的方法多种多样,如SIFT、SURF、ORB等。
这些方法的基础是在图像中提取出关键点,并从这些关键点中提取出具有稳定性和可重复性的局部特征向量来描述图像。
但是,这些局部特征向量的计算量较大,对图像的处理效率有一定的影响。
近年来,一种新的图像检索方式——基于局部性敏感哈希(Locality Sensitive Hashing,简称LSH)逐渐受到人们的关注。
基于LSH的图像检索方法具有高效、简单、快速和可扩展性等优点,逐渐成为图像检索研究的新方向。
局部性敏感哈希是一种可以将相近的数据映射到相近位置的哈希技术。
该技术通过对局部特征进行哈希,来实现图像检索。
它通过在局部特征向量上定义一个哈希函数,将局部特征向量哈希到桶中,在哈希过程中,首先选择一组随机超平面,并将特征向量分配到与超平面距离较近的两个桶中,对于相似的数据,经过重复构造哈希表,有很大概率被哈希到同一个桶中。
可以通过比较桶中的数据来确定它们之间的相似度。
基于局部性敏感哈希的图像检索算法可以分为两个阶段:离线阶段和在线阶段。
离线阶段是指构建哈希表的过程,包括选择适当的局部特征、构造局部特征数据库和确定哈希函数等。
在线阶段是指当用户提交一个查询图片时,对查询图片进行特征提取、哈希操作,并在所有的哈希表中进行查询。
局部性敏感哈希是一种基本的哈希方法,可以用于各种类型的数据,并且它的实现和存储非常灵活。
局部哈希的局限性在于它不能检测图片的序列信息。
用Python实现通过哈希算法检测图片重复的教程
⽤Python实现通过哈希算法检测图⽚重复的教程Iconfinder 是⼀个图标搜索引擎,为设计师、开发者和其他创意⼯作者提供精美图标,⽬前托管超过 34 万枚图标,是全球最⼤的付费图标库。
⽤户也可以在 Iconfinder 的交易板块上传出售原创作品。
每个⽉都有成千上万的图标上传到Iconfinder,同时也伴随⽽来⼤量的盗版图。
Iconfinder ⼯程师 Silviu Tantos 在本⽂中提出⼀个新颖巧妙的图像查重技术,以杜绝盗版。
我们将在未来⼏周之内推出⼀个检测上传图标是否重复的功能。
例如,如果⽤户下载了⼀个图标然后⼜试图通过上传它来获利(曾发⽣过类似案例),那么通过我们的⽅法,就可以检测出该图标是否已存在,并且标记该账户欺诈。
在⼤量⽂件中检测某⽂件是否已经存在的⼀个常⽤⽅法是,通过计算数据集中每⼀个⽂件的哈希值,并将该哈希值存储在数组库中。
当想要查找某特定⽂件时,⾸先计算该⽂件哈希值,然后在数据库中查找该哈希值。
选择⼀个哈希算法加密哈希算法是⼀个常⽤的哈希算法。
类似MD5,SHA1,SHA256这种在任何⼀种语⾔都可以找到可调⽤的标准库,它们对于简单的⽤例⾮常有效。
例如,在Python中先导⼊hashlib模块,然后调⽤函数就可以⽣成某⼀个字符串或者⽂件的哈希值。
>>> import hashlib# Calculating the hash value of a string.>>> hashlib.md5('The quick brown fox jumps over the lazy dog').hexdigest()'9e107d9d372bb6826bd81d3542a419d6'# Loading an image file into memory and calculating it's hash value.>>> image_file = open('data/cat_grumpy_orig.png').read()>>> hashlib.md5(image_file).hexdigest()'3e1f6e9f2689d59b9ed28bcdab73455f'这个算法对于未被篡改的上传⽂件⾮常有效,如果输⼊数据有细微变化,加密哈希算法都会导致雪崩效应,从⽽造成新⽂件的哈希值完全不同于原始⽂件哈希值。
