实验验证:鲁棒性图像感知哈希

简介: 实验验证:鲁棒性图像感知哈希

1. 实验类别


  设计型实验:设计一种鲁棒性图像感知哈希算法,并给出实验结果。




2. 实验目的


  了解鲁棒性内容感知哈希技术的基本特点,设计并实现基于DCT的鲁棒性图像感知哈希。了解鲁棒性内容感知哈希技术在数字内容保护中的作用,掌握基于鲁棒性感知哈希的内容保护方法。



3. 实验原理


3.1 原理


  数字图像的真实性完整性认证技术是多媒体安全保护的重要研究课题。图像完整性认证是不允许图像有任何丝毫的改变,在要求很严格或是非常机密的情况下就需要用到完整性认证。基于密码学意义上的认证方法均属于图像完整性认证。图像内容认证允许图像经受一些不损害图像质量的操作,只要使代表图像内容的特性得到认证即可。数字图像占据了数字化作品的很大一部分,除了数字图像本身的诸多优点外,数字图像还有如下特点:数据量大,在存储和传输的过程中会经受JPEG有损压缩、添加噪声、滤波等不会损耗图像内容质量的处理操作。这就要求我们在选择认证方法时不能选择完整性认证,而要选择内容性认证。在信息安全的发展过程中,基于图像内容认证的方法主要有数字水印和数字哈希两种方法。


  图像内容认证的两种方法里,数字水印的技术己日渐成熟,而数字哈希技术是一个新兴的课题,因此研究数字哈希技术更具有挑战性和实际意义。


  数字图像哈希是将图像数据映射到一个简短的固定长度的比特流中。根据人类视觉系统反应,使得不同内容的图像具有不同的哈希值,内容相似的图像具有相似的哈希值。


  现有的许多图像哈希方案都用以下三个步骤来产生哈希序列:


(l)产生一个关键依赖型的特征向量;

(2)量化该特征向量;

(3)压缩己经量化了的向量。


  其中最具有挑战性的一步就是第一步,产生的特征向量既要代表图像的内容,又要适应一些轻微的误差失真,如普通的过滤操作(如平均和均值滤波)、几何失真(如旋转,平移和尺度变换)、JPEG压缩和非线形亮度变化。其方法主要有:基于图像统计学特性的方法(灰度直方图、小波统计特性)、基于图像关系的方法(DCT系数对、小波系数对)、基于原始图像特征表述的方法(SVD值)、基于低层图像特征提取的方法(特征点)等等。



3.2 典型应用


图像哈希的典型应用是相似图像搜索。如Google和Tineye相似图像搜索主要利用的算法是感知哈希算法,它的作用是对每张图片生成一个“指纹”字符串,然后比较不同图片的指纹,结果越接近,就说明图片越相似。典型算法有:


(1) ahash算法


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


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


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


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


  1. 计算哈希值: 将上一步的比较结果,组合在一起,这就是这张图片的指纹。


  1. 计算“汉明距离” ,如果不相同的数据位不超过某个阈值,就说明两张图片很相似,距离为0说明完全相同;如果大于某个阈值,就说明这是两张不同的图片。


(2) phash算法


1. 图片缩放: 缩小尺寸到 32×32


2. 图像灰度化: 转化为256灰度图


3. 对图像进行DCT变换


4. 缩小DCT: DCT是3232,保留左上角的88,代表图片的低频区域


5. 计算平均值: 计算缩小DCT后的所有像素点的平均值


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


7. 计算哈希值: 将上一步的比较结果,组合在一起,这就是这张图片的指纹。


8 用汉明距离比较: 如果不相同的数据位不超过某个阈值,就说明两张图片很相似,距离为0说明完全相同;如果大于某个阈值,就说明这是两张不同的图片。


(3) dhash算法


1. 缩小图片 :收缩到8 * 9的大小,共有72个像素点


2. 转化为灰度图: 转化为256灰度图


3. 计算差异值:dHash算法工作在相邻像素之间,这样每行9个像素之间产生了8个不同的差异,一共8行,则产生了64个差异值


4. 获得指纹: 如果左边的像素比右边的更亮,则记录为1,否则为0


5. 用汉明距离比较: 如果不相同的数据位不超过某个阈值,就说明两张图片很相似,距离为0说明完全相同;如果大于某个阈值,就说明这是两张不同的图片。


(4) whash算法


1. 缩小图片:缩小尺寸到 32×32


2. 转化为灰度图: 转化为256灰度图


3. 对图像进行D WT变换, 取低频信息


4. 计算平均值: 计算低频区域的所有像素点的平均值


5. 与均值比较: 将低频区域的每个像素点的DWT值,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。


6. 计算哈希值: 将上一步的比较结果,组合在一起,这就是这张图片的指纹。


7. 用汉明距离比较: 如果不相同的数据位不超过某个阈值,就说明两张图片很相似,距离为0说明完全相同;如果大于某个阈值,就说明这是两张不同的图片。



代码实现


import imagehash
from PIL import Image   #PIL是python的图像处理库
path1= 'C://Users/kiven/Desktop/MyPIC/L.jpg'
path2= 'C://Users/kiven/Desktop/MyPIC/R.jpg'
hash1 = imagehash.average_hash(Image.open(path1))   #ahash算法
hash2 = imagehash.average_hash(Image.open(path2))
print(hash1- hash2)
hash1 = imagehash.phash(Image.open(path1))   #phash算法
hash2 = imagehash.phash(Image.open(path2))
print(hash1- hash2)
hash1 = imagehash.dhash(Image.open(path1))   #dhash算法
hash2 = imagehash.dhash(Image.open(path2))
print(hash1- hash2)
hash1=imagehash.whash(Image.open(path1))   #whash算法
hash2=imagehash.whash(Image.open(path2))
print(hash1- hash2)
复制代码


输出:


1
6
1
4
复制代码


附图

image.png


image.png


相关文章
|
机器学习/深度学习 人工智能 算法
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
283 0
|
机器学习/深度学习 传感器 算法
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
【图像加密解密】基于混沌序列实现图像加密和解密(图像相关性分析)附Matlab实现
|
存储 缓存 分布式计算
如何设计歌曲音频指纹索引系统
## 目录 * 音频指纹是什么 * 音频指纹使用场景 * 音频指纹检索主流程 * 指纹检索原理 * 索引检索方案选型 * 机器成本 * 性能考虑 * 如何增量DUMP * 指纹HASH冲突问题 * HASH冲突解决方案 ## 音频指纹是什么 音频指纹技术是指通过特定的算法将一段音频中独一无二的数字特征以标识符的形式提取出来,用于识别海量的声音样本或跟踪定
如何设计歌曲音频指纹索引系统
|
9月前
|
NoSQL IDE 开发工具
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
317 0
|
8月前
|
机器学习/深度学习 自然语言处理 数据可视化
BERT-IMDB电影评论情感分类实战:SwanLab可视化训练
这篇文章介绍了使用BERT模型进行IMDB电影评论情感分类的实战教程,涉及SwanLab、transformers和datasets库。作者提供了一键安装库的命令,并详细解释了每个库的作用。文章展示了如何加载BERT模型和IMDB数据集,以及如何利用SwanLab进行可视化训练。训练过程在SwanLab平台上进行,包括模型微调、指标记录和结果可视化。此外,还提供了完整代码、模型与数据集的下载链接,以及相关工具的GitHub仓库地址。
BERT-IMDB电影评论情感分类实战:SwanLab可视化训练
|
XML 人工智能 JSON
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
2304 0
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
|
算法 数据安全/隐私保护 Python
背包密码体制原理大白话讲解及Python实现
背包密码体制原理大白话讲解及Python实现
839 0
背包密码体制原理大白话讲解及Python实现
|
Cloud Native Linux Go
开源软件与知识产权:需要注意什么?
开源软件与知识产权:需要注意什么?
254 0
|
算法 数据可视化 索引
ML之SIFT_FLANN:对图片提取SIFT特征并利用FLANN方法判别图像的相似度并可视化
ML之SIFT_FLANN:对图片提取SIFT特征并利用FLANN方法判别图像的相似度并可视化
ML之SIFT_FLANN:对图片提取SIFT特征并利用FLANN方法判别图像的相似度并可视化

热门文章

最新文章