APP下载

基于位平面改进的图像信息隐藏算法①

2021-08-02王春玲

计算机系统应用 2021年7期
关键词:人眼二进制灰度

李 笑,王春玲,陈 亮

(西安工程大学 计算机科学学院,西安710048)

随着网络的快速发展,无论是国家、企业还是个人都会在网上进行消息的传输.网络在带给我们通信便利的同时也带给我们新的问题:如何保证涉密信息的安全存储和传输[1].信息隐藏技术为了解决这个问题应运而生.最低有效位(Least Significant Bit,LSB)算法是信息隐藏技术中最常见的算法,它是将秘密信息隐藏在图像像素值的最低位,利用图像载体自身的冗余性以及人眼的不敏感性实现秘密信息的隐藏[2].

信息隐藏技术作为一个安全领域的新兴课题被很多专家学者做了深入的研究,目前国内外针对LSB算法做了很多优化,使得基于LSB 算法的图像信息隐藏技术更能满足用户的需求.徐文龙[3]根据纹理掩蔽效应中平滑区比较敏感的特征,把秘密信息分段并转换后优先藏在载体图像比较复杂的区域,使得视觉差异和鲁棒性明显降低;苏彩霞[4]根据色彩的生理学理论,利用人眼对色彩的敏感性,用待隐藏的信息替换像素RGB 分量中不同的最低比特位个数来增大秘密信息的嵌入量,马文姬等[5]针对只选最低位的LSB算法会导致隐藏信息量不够大的缺点,结合遗传算法,实现秘密信息的自适应嵌入,使得能够嵌入更大的隐藏量.

一般来说,一个信息隐藏系统有很多特性,其中最主要的是信息隐藏量[6]、不可见性[7]和鲁棒性[8],这三者相互制约,目前没有三者皆为最优的隐藏算法,我们只能根据实际需要选择不同的算法来拿满足用户的需求[9].要想达到很好的隐藏效果,基于图像的信息隐藏工具软件应该具有较大的嵌入量,隐藏过程和提取过程效率不能低,人的肉眼必须感觉不到伪装图像和原载体图像有任何区别,要具有较高的安全性等特点.本文就是在此基础上,对LSB的替换算法进行了改进,达到了较好的隐藏效果.

1 传统LSB 算法

LSB 算法是目前基于图像的信息隐藏技术最常用的算法,也叫做最低有效位替换算法.它实际上是利用图像的冗余来转换最低的信息,但人眼无法检测到这种变化.对于灰度图像,人眼无法区分全部256 级灰度,对于4个左右灰度等级的差异,人眼是无法分辨到的[10].它的原理是将秘密信息隐藏在图像载体数据的最低几位,这就相当于在一个数据相当大冗余性相当强的原始载体上叠加了一个能量微弱的信号,并不会影响原始载体的属性、格式、使用价值等,在视觉上也很难察觉到嵌入秘密信息的载体和原始载体的区别,从而保证了秘密信息的传送[11].

对于一副用多个比特表示其灰度值的图像来说,其中的每个比特可看做表示了一个二值的平面,也称位面[12].一个8 位灰度图的8个位平面分解如图1所示,一般用位面0 表示最低位面,位面7 表示最高位.

图1 8 位灰度图的位平面分解图

传统的LSB 算法,采用的是使载体图像像素的最低一位被隐藏数据所替换,隐藏效率太低,隐藏的信息量相对有限且易被破坏.

2 改进的LSB 算法

针对传统LSB 图像隐藏算法中只选取最低位导致的隐藏信息量不够大以及容易被破坏的问题,本文提出了改进算法,并且在增大信息嵌入量的同时不影响图像的失真度,安全性高.

分别将要隐藏的文本信息替换位平面0–7,主观视觉效果如图2所示:我们可以从人的主观视觉上看到位平面7 对图像影响最大,而位平面0 对图像影响最小[13].在低四位上进行隐藏几乎看不到嵌密载体与原载体的区别,说明在低四位进行信息隐藏可以达到较好的隐藏效果.

图2 将秘密信息隐藏在各平面上图片质量的变化

表1反映了在一张256×256的载体图像的各个平面上嵌入一个秘密信息后的峰值信噪比(PSNR)的变化,一般来说主观上可以容忍的PSNR值都在20 dB以上,达到35 dB 以上意味着人眼基本察觉不出图像质量的降级[14].可以从表1看到低四位具有较高的信噪比.用式(1)定义嵌有秘密信息图像的信噪比:

表1 256×256 载体各平面上隐藏信息PSNR的变化

其中,M×N是图像的尺寸,I(x,y)表示原始图像的像素,I′(x,y)表示嵌入秘密信息后图像的像素.

基于以上研究本文通过替换载体图像的低四位来实现信息隐藏.

2.1 秘密信息的嵌入过程

(1)选择原载体图像,以载体图像的一个字节信息S为例,S 可以表示为一个8 位二进制数S8S7S6S5S4S3S2S1,取出低四位S4S3S2S1 并任意取出低四位中的其中两位,记作SmSn.

(2)选择需要隐藏的秘密信息,并读取每个字节的数据X8X7X6X5X4X3X2X1,取出连续的两位XiXj

(3)将m和n按由小到大的优先规则按表2进行组合,并用XiXj去匹配SmSn,如果能够匹配成功,此时可将m和n所对应的test 提取出来,并将该test 值加到test1 集合中;如果匹配失败,则XiXj直接替换S2S1.即S2=Xi,S1=Xj.用0 标记若匹配失败将找不到对应的test 值,并将0 加到集合test1中.

表2 m、n的取值以及对应的标志

重复以上步骤直到秘密信息嵌入完毕.

(4)处理新产生的数据集test1

到第(3)步秘密信息已经完成嵌入,但是产生的新的数据集test1 仍然需要处理.新的数据集test1 集合的隐藏不能完全采用秘密信息的隐藏算法,否则会产生新的数据.为了解决这个问题并能够使test1 更安全的隐藏到载体图像中.把test1 集合中的每个数据转换为二进制按照连续2个比特位与载体图像中每个字节二进制数据的低3、4 进行异或加密,将载体图像二进制数据的低1、2 位替换为异或后所得数值,从而实现标识集test1的隐藏.

test1 集合信息的嵌入过程:

(1)确定test1 在载体图像中进行隐藏的起始位置S.在载体图像中,从位置S 开始的数据均未隐藏过秘密信息,且隐藏量应该能将test1 全部隐藏.

(2)在test1中取出连续的两位二进制数据,记为FiFj,依次与载体图像的最低三位和四位进行异或运算,将结果隐藏到载体图像的最低一位和最低二位.也就是S2=Fi⊕S4,S1=Fj⊕S3.

(3)依次取出test1和载体图像的数据,进行步骤(2)的操作,直到test1 全部隐藏完毕.

嵌入过程流程图如图3所示.

图3 改进算法的嵌入流程图

2.2 秘密信息的提取过程

提取过程是嵌入过程的反向操作,应该先提取test1 再提取秘密信息.步骤如下:

(1)从伪装了秘密信息的载体图像中找到test1 进行隐藏的起始位置S,从S 字节开始,依次读取每个字节二进制数据的最低四位S4S3S2S1,分别将S4和S2、S3和S1 进行异或运算,即Fi=S2⊕S4,Fj=S1⊕S3,将标识集test1 还原出来.

(2)通过test1 从表2中查找m和n的值.

(3)在伪装图像中依次读取出二进制信息,按照m和n的值提取对应的比特位,将原始二进制信息还原出来.

(4)重复步骤(3),直到所有秘密信息被提取出来.

3 实验分析

为验证改进算法的效果和稳定性,在Matlab 平台上选取了不同的载体图像和不同类型的隐藏文件作了试验.如图4是将一个256×256的Lena 图像作为载体图像,利用改进的LSB 算法,把一个267×107的二值图像作为秘密信息嵌入载体图像里.图4(a)为原载体图像,图4(b)为秘密图像,图4(c)为带有秘密信息的伪装载体,图4(d)为提取出来的秘密图像.

从主观结果来看,嵌入秘密信息后的载体图像与原载体图像视觉上的差别不明显,满足不可见性.且本文针对传统LSB 隐藏算法嵌入量不够大的情况做出了改进,利用本文算法将不同信息量的秘密信息嵌入图4(a)中得到PSNR值,并与文献[15,16]的算法进行比较,结果如图5所示.可以看出当PSNR相同时,本文算法可以嵌入的秘密信息量更多.

图4 图像隐藏算法实现示意图

图5 不同算法在相同嵌入量下的PSNR 比较

为了检验此方法的抗攻击能力,在Matlab 上对嵌入秘密信息后的载体进行了一系列攻击实验,图6反映了经过旋转、噪声以及滤波后的效果.由此可见虽然由于攻击提取出来的秘密信息存在一定失真,但是秘密信息仍能正确提取出来.

图6 各种攻击及其提取的隐藏信息

4 结论与展望

随着网络的快速发展,信息隐藏技术已经成为一种主流技术,本文针对传统的信息隐藏技术进行改进,通过实验证明本文算法的不可见性高,隐藏透明性好,具有较高的安全性.对比传统的LSB 算法,隐藏容量大,可以隐藏任何不超过原载体图像大小的秘密信息,且由于隐藏位置相较于传统算法更具随机性,所以鲁棒性有所增强,抗打击能力高,具有较高的实用价值,满足用户对信息隐藏的需求,可以推广到实际应用中.

猜你喜欢

人眼二进制灰度
田志强
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
天津港智慧工作平台灰度发布系统和流程设计
有用的二进制
用Scratch把十进制转为二进制
Arduino小车巡线程序的灰度阈值优化方案
有趣的进度
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼
人眼的视力为何达不到3.0?