基于图像块分组的加密域可逆信息隐藏-实现
该方案主要关注加密域可逆信息隐藏,即内容所有者在发送前先将原始载体加密,加密后的载体经数据隐藏者获取并嵌入信息后发送给接收者,接收者根据相应密钥进行解密及信息提取. 由于在某些场合下内容所有者并不信任数据隐藏者,即内容所有者担心载体内容被数据隐藏者泄露,因此,需要一种加密域的可逆信息隐藏方案.
现有的加密域可逆信息隐藏方法
1) 加密前不做任何处理,通过简单修改部分密文数据以嵌入信息;
2) 将密文数据压缩以腾出空间容纳额外信息;
3) 加密图像前先进行预处理,预留出空间以便于信息嵌入;
4) 用公钥机制加密载体数据,利用加密技术的同态性嵌入信息.
论文实现方案 #
方案整体结构如图1 所示. 内容所有者利用加密密钥对原始图像进行加密,得到加密图像;数据隐藏者将加密图像分块,利用信息嵌入密钥将图像块分组,在每组中嵌入多比特信息,之后将含有秘密信息的加密图像发送给接收者. 接收者先利用加密密钥将密文图像解密,得到1 幅与原始图像近似的解密图像,之后根据自然图像空间相关性与信息嵌入密钥提取秘密信息并恢复原始图像.
图1 方案结构图
即:内容所有者:
-
首先,用加密密钥将原始图像加密
-
然后,将加密图像分块并分组
数据隐藏者:
-
最后,通过修改每组图像块中的1块来嵌入秘密信息
接收者:
-
将含有秘密信息的加密图像解密后,得到1幅与原始图像近似的解密图像
-
再根据自然图像的空间相关性恢复图像并提取秘密信息
图像加密 #
对于未经压缩的灰度图像,任意1 个图像像素pi,j的取值范围为[0,255],(i, j)表示像素在块中的位置. pi,j 可用8 bit 来表示,设各像素的比特位为bi,j,0,bi,j,1,…,bi,j,7,则
所得到的Bi,j,k即图像像素pi,j加密的结果,之后将加密图像传送给数据隐藏者.
信息嵌入 #
数据隐藏者获得加密图像后,在不知道原始图像内容情况下,也能执行秘密信息嵌入操作.首先将加密图像分块,再将图像块分组,修改每组图像块中1 个嵌入信息. 具体步骤如下:
-
将加密后的t 比特二进制信息转换为十进制数m (0≤m≤2t - 1≤k - 1),修改第m + 1个图像块Hm +1,即在当前组中嵌入了t 比特信息.对Hm +1的修改方式如图2 所示,将图像块按棋盘格方式划分,之后将绿色部分所代表像素的第L 位取反(1≤L≤8),即通过翻转绿色部分像素的第L 位实现秘密信息嵌入.
图2 图像块中的像素分布
-
对各组均按步骤3 嵌入信息即完成信息嵌入操作.
由于图像共分为g 组,每组嵌入t 比特信息. 因此信息嵌入容量为
图像解密 #
将密文图像像素用8 bit 表示:b’i ,j,0,b’i ,j,1,…,b’i ,j,7,利用加密密钥产生1 个伪随机比特流ri,j,k ,并与b’i ,j,k逐位进行异或运算
所得到的B’i ,j,k为像素各比特的解密结果,则解密像素灰度值为
解密图像内容与原始图像近似,由信息嵌入过程可知,包含额外信息的解密图像相对于原始图像的最小均方误差MSE (mean square error)为
则解密图像的峰值信噪比PSNR (peak signal to noise ratio)为
根据式(8)对应不同参数L、k,解密图像峰值信噪比的理论值如表1 所示. 不难看出,设置合适的参数可获得质量较高的解密图像.。在本实验中,参数选择用:k=8,L=4
信息提取及图像恢复 #
接收者用加密密钥将密文图像解密后,得到与原始图像大致相同的解密图像. 此时,可根据信息嵌入密钥恢复原始图像并提取秘密信息. 每组图像块中有且仅有1 个被修改,则接收者只需找出每组图像块中被修改的块即可恢复图像并提取信息.
由于自然图像具有空间相关性,因此,图像被修改后的平滑度小于修改前. 对于被修改的图像块,其平滑度较小,将其以相同方式再次修改后便返回到未修改状态,此时平滑度较大. 被修改的图像块经二次修改后平滑度变大,而未被修改的图像块经二次修改后平滑度变小. 据此便可找出每组图像块中被修改的块. 衡量图像块平滑度的公式为
式中:pu,v为块中对应的像素值,(u,v)为像素在块中的位置; d1 反映了中心像素与其预测值的差异;d2反映了相邻像素的差异;d3 表示边沿像素与其预测值的差异; f 为衡量当前块的平滑度,f 越大表示平滑度越小.
信息提取及图像恢复的具体步骤如下:
-
将图像按照与发送端相同方式分块并分组,对每组按步骤2 恢复图像并提取信息.
-
对当前组的k 个图像块H1,H2,…,Hk按式(9) ~ (12)分别计算f 值,记为f1, f2,…, fk .按图2 所示方式,将此k 个图像块中黑色部分所代表像素的第L 位取反,得到k 个新图像块H’1,H’2,…,H’k ,再按式(9) ~ (12)分别计算f 值,记为f’1,f’2,…, f’k .
令A = fa - f忆a (1 ≤ a ≤ k),分别计算各图像块所对应的A 值,记为A1,A2,…,Ak . 对于未经修改的图像块,fa <f’a ;而对于被修改的图像块,fa >f’a . 即被修改图像块的A 值最大. 设Aw = max{A1,A2,…,Ak },(1 ≤ w ≤ k),则认为第w 个图像块被修改,将H1,H2,…,H’w ,…,Hk 作为恢复的图像块,w -1 作为当前组提取的十进制数,转换为二进制后即为提取的秘密信息.
-
对各组均重复步骤2 即得到秘密信息与恢复图像.
原始实验结果 #
参数设置:
M*N:256*256
s*s:8*8
k:4
t:2
L:4
(1)原始图像
(2)加密图像 (3)带有水印的加密图像
(4)带有水印的解密图像(5)去除水印恢复原图
(6)嵌入的水印信息
(7)从水印提取的信息
分别计算(1)和(5)与(1)和(4)的最小均方误差和峰值信噪比,可以看出解密后带有水印的图像的峰值信噪比为40多,而去除后的图像的峰值信噪比为无穷,也就是说完美恢复为原图像。而水印信息也完美提取出来了。
方案改进 #
-
原始方案只对灰度图片有效,改进方案增加对彩色图片的支持
-
原始方案在提取图像时需要遍历所有的像素块,改进方案遍历的像素块减少,这是因为原始方案利用了一个改变参数,在每组中最大值所对应的块为隐藏信息快,而实际上根据计算公式可以得出最大值是正数而其他值是负数,所以不需要在整组中作比较只需要在计算后与0相比即可得出,而之后的也就没意义了
-
原始方案在信息嵌入时分块大小是确定的,改进方案根据需要嵌入的信息长度动态变化分块大小,以达到嵌入更多信息的目的
-
原始方案在信息嵌入时选择以一种方式改变图像,改进方案以两种方式改变,可将嵌入信息长度增加一倍
-
原始方案只改变一层像素(不管是灰度还是彩色),改进方案对于彩色图片可以在每一层嵌入不同的信息,增加嵌入信息容量改进结果
改进结果 #
参数设置:
M*N:256*256
s*s:8*8
k:8
t:3
L:4
(1)原始图像
(2)加密图像 (3)带有水印的加密图像
(4)带有水印的解密图像(5)去除水印恢复原图
(6)嵌入的水印信息
(7)从水印提取的信息
分别计算(1)和(5)与(1)和(4)的最小均方误差和峰值信噪比,可以看出解密后带有水印的图像的峰值信噪比为40多,而去除后的图像的峰值信噪比为无穷,也就是说完美恢复为原图像。而水印信息也完美提取出来了。而彩色图像的峰值信噪比要比灰度图像高,具有更好的隐藏效果。
GUI界面 #
问题 #
对于上述的改进方案还是有些问题的,上述改进只是在理论上通过,实验中还没全部验证,比如嵌入容量是否会提升很多,利用嵌入信息的长度自动设置组数k,这样做是否会提升容量;还有利用图像的平滑度去找到修改的图像块,正确性是否有待保证,是都每次能保证每次都能找到等,还需后续继续学习探索。
参考文献 #
[1]程航, 王子驰, 张新鹏. 基于图像块分组的加密域可逆信息隐藏[J]. 北京工业大学学报, 2016, 42(5):722-728.
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/15244943.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-09-08 网站远程附件存储到 OSS
2020-09-08 平滑升级mariadb
2020-09-08 在Apache服务器上安装SSL证书