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

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

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


相关文章
|
8月前
|
PyTorch 算法框架/工具
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
118 0
【IOU实验】即插即用!对bubbliiiing的yolo系列代码替换iou计算函数做比对实验(G_C_D_S-IOU)
|
8月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
1029 0
|
2月前
|
算法 调度
多级反馈队列算法的具体实现过程是怎样的?
【10月更文挑战第25天】多级反馈队列算法通过动态调整进程的优先级和在不同优先级队列之间的转移,能够较好地适应不同类型进程的需求,兼顾了短作业优先、I/O密集型作业优先等多种调度策略的优点,提高了系统的整体性能和资源利用率,同时也能保证对实时性要求较高的进程能够及时得到响应。
68 4
|
5月前
|
SQL 自然语言处理 算法
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
评估数据集CGoDial问题之计算伪OOD样本的软标签的问题如何解决
|
5月前
|
UED
评估数据集CGoDial问题之主流生成伪OOD样本的问题如何解决
评估数据集CGoDial问题之主流生成伪OOD样本的问题如何解决
|
8月前
|
存储 监控 算法
R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据
R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据
|
机器学习/深度学习 决策智能 C++
强化学习中值迭代收敛性推理证明
强化学习中值迭代收敛性推理证明
129 0
|
数据采集 存储 机器学习/深度学习
秒懂算法 | 基于朴素贝叶斯算法的垃圾信息的识别
本文将带领大家亲手实现一个垃圾信息过滤的算法。 在正式讲解算法之前,最重要的是对整个任务有一个全面的认识,包括算法的输入和输出、可能会用到的技术,以及技术大致的流程。 本任务的目标是去识别一条短信是否为垃圾信息,即输入为一条文本信息,输出为二分类的分类结果。2002年,Paul Graham提出使用“贝叶斯推断”过滤垃圾邮件。1000封垃圾邮件可以过滤掉995封,且没有一个误判。另外,这种过滤器还具有自我学习的功能,会根据新收到的邮件,不断调整。收到的垃圾邮件越多,它的准确率就越高。 朴素贝叶斯算法是一种有监督的机器学习算法,即算法的实现包含了构建训练集、数据预处理、训练、在测试集上验证
514 0
秒懂算法 | 基于朴素贝叶斯算法的垃圾信息的识别
|
计算机视觉
FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(二)
FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(二)
479 0