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

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

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


相关文章
|
算法 搜索推荐 计算机视觉
图片相似度计算及检索调研
图片相似度计算和相似图片搜索,是图片识别领域两个常见的应用场景。例如搜索相似商品,和相似的图片,在百度、淘宝中都有应用。在某些业务中,也存在对图片相似度的计算和判断。因此,在这里简单介绍一下相关算法。
1529 0
|
域名解析 网络协议 安全
信息收集的工具你听过几种(盘点信息收集)
信息收集的工具你听过几种(盘点信息收集)
信息收集的工具你听过几种(盘点信息收集)
|
Web App开发 存储 关系型数据库
|
SQL 存储 网络协议
SQL Server详细使用教程
SQL Server详细使用教程
1950 2
|
虚拟化
vmware虚拟机使用主机代理访问谷歌
vmware虚拟机使用主机代理访问谷歌
1080 4
|
数据采集 机器学习/深度学习 数据可视化
DSPy 是什么?其工作原理、用例和资源
【8月更文挑战第13天】
1068 0
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
628 0
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
|
存储 数据挖掘 大数据
第16章 数据仓库与联机分析处理技术——复习笔记
第16章 数据仓库与联机分析处理技术——复习笔记
|
机器学习/深度学习 人工智能 Kubernetes
带你读《云原生机密计算最佳实践白皮书》——PPML: 端到端隐私保护机器学习解决方案(上)
带你读《云原生机密计算最佳实践白皮书》——PPML: 端到端隐私保护机器学习解决方案(上)
912 0