一种低修改率的数字图像隐写方法
技术领域
本发明涉及数字图像隐写领域,尤其涉及一种低修改率的数字图像隐写方法。
背景技术
随着信息技术的飞速发展,人们开始更多地关注信息安全技术。信息隐藏作为新兴的信息安全技术,而隐写术则是信息隐藏的一种重要技术。目前,通常所说的隐写术的载体各式各样,包括各种格式的图像、声音、视频文件等等,而且传送载有秘密信息的载体的手段也是各种各样。现如今,几乎没有一个人不在使用网络,如网页新闻、移动手机传送信息、图像、邮件收发等等,网络便利了我们的生活。信息化一方面为我们带来了便利的生活,增强了世界各地的沟通与交流,但是也会使人们的生活“透明化”。由于军队、政治、经济等领域都需要信息的保密性,隐写术便是在这样的时代大背景下应运而生的。
隐写术能将秘密信息嵌入到载体信息中,只有通信双方根据特定的秘钥才能获得嵌入的秘密信息,而通信双方之外的任何人因不了解秘钥却发现不了这个秘密信息。在隐写术中,作为载体的文件可以是多种多样的:载体文件相对即将要嵌入的数据量越大,隐藏该数据就越加容易。因此,数字图像因其包含有大量数据的特性,使它在Internet和其他传媒上被广泛地用于隐藏信息。
在对时域信息进行隐藏的技术中,LSB(Least Significant Bits,最低有效位)方法是人们使用最多的方法,具有嵌入率大、操作简单的优点。LSB的隐写方法包括以下基本步骤:(1)将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;(2)用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;(3)将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。然而,当利用LSB方法将秘密信息嵌入到载体图像中时,载体图像的像素值会发生较大的改变,从而导致载体图像像素值的改变量较大。
发明内容
本发明所要解决的技术问题是针对上述现有技术提供一种既能够在数字载体图像中嵌入大量的秘密信息数据,又能保持较低修改率的一种低修改率的数字图像隐写方法。
本发明解决上述问题所采用的技术方案为:一种低修改率的数字图像隐写方法,用于将数据长度为l的秘密信息mi嵌入到像素个数为L的载体图像中,秘密信息mi={mi,1,mi,2,…,mi,l}∈{0,1},其特征在于,包括以下步骤:
步骤(1)、将像素个数为L的载体图像分成长度为l+1的[L/(l+1)]组数据g1,g2,…,g[L/(l+1)],其中,[L/(l+1)]表示对数值L/(l+1)向下取整,gi(i=1,2,…,[L/(l+1)])表示第i组分组数据,分组数据gi中的像素值分别为gi,1,gi,2,…,gi,l,gi,l+1,每个像素值对应的二进制数据的最低位分别为lsbi,1,lsbi,2,…,lsbi,l,lsbi,l+1,分组数据gi中的像素值最后一个像素值对应的二进制数据最低位lsbi,l+1作为标志位;
步骤(2)、将分组数据gi中前面l个像素值对应的二进制数据的最低位lsbi,1,lsbi,2,…,lsbi,l分别与秘密信息的二进制数据mi,1,mi,2,…,mi,l进行对应比较,并计算两组数据之间的差异值di,其中差异值di由以下公式获得:
其中,
di表示分组数据gi中前面l个像素值对应的二进制数据的最低位lsbi,1,lsbi,2,…,lsbi,l和秘密信息的二进制数据mi,1,mi,2,…,mi,l对应位置中数据不相同的个数;j表示秘密信息mi={mi,1,mi,2,…,mi,l}中二进制数据的序号,j∈[1,l];
步骤(3)、根据步骤(2)中计算的差异值di,对秘密信息的二进制数据进行判断和嵌入操作:
步骤(3-1)、当di≤(l-1)/2时,对标志位lsbi,l+1进行取0操作,并利用LSB嵌入方法将秘密信息的二进制数据mi,1,mi,2,…,mi,l插入到分组数据gi的前l个像素值gi,1,gi,2,…,gi,l中,嵌入秘密信息后的第l+1个像素值变为gi,l+1-gi,l+1%2,其中gi,i+1%2表示gi,i+1除以2后取余;
步骤(3-2)、当di>(l-1)/2时,对标志位lsbi,l+1进行取1操作,并将秘密信息的二进制数据mi,1,mi,2,…,mi,l进行取反操作,利用LSB嵌入方法将取反后的秘密信息的二进制数据插入到分组数据gi的前l个像素值gi,1,gi,2,…,gi,l中,嵌入秘密信息后的第l+1个像素值变为gi,l+1-gi,l+1%2+1,其中gi,i+1%2表示gi,i+1除以2后取余。
进一步地,上述LSB嵌入方法包括以下步骤:
步骤(a)、根据分组数据gi中前面l个像素值对应的二进制数据的最低位数据lsbi,1,lsbi,2,…,lsbi,l与秘密信息的二进制数据mi,1,mi,2,…,mi,l分别通过以下公式获取各对应位置中的δ(lsbi,j,mi,j)值:
步骤(b)、将步骤(a)中获取的δ(lsbi,j,mi,j)值与分组数据gi中对应位置的像素值按照隐写函数进行计算,获得嵌入秘密信息后的像素值。
进一步地,上述步骤(b)中的隐写函数为:
其中,f(gi,j,mi,j)表示嵌入秘密信息后的像素值,gi,j表示载体图像分组数据gi的像素值,lsbi,j表示像素值gi,j对应的二进制数据的最低位数据;是秘密信息mi,j取反运算的结果。
与现有技术相比,本发明的优点在于:首先将载体图像的像素值数据分成[L/(l+1)]组数据,并将分组数据中最后一个像素值对应的二进制数据最低位作为标志位;然后,将分组数据中像素值对应的二进制数据与秘密信息的二进制数据进行对应比较,获得两组数据的差异值di;根据获得的差异值di,对秘密信息的二进制数据进行判断和嵌入操作:当di≤(l-1)/2时,对标志位取0,利用LSB方法将秘密信息的二进制数据嵌入到分组数据中;当di>(l-1)/2时,对标志位取1,将秘密信息的二进制数据取反,利用LSB方法将秘密信息的二进制数据嵌入到分组数据中,从而获得嵌入秘密信息的载体图像。本发明中的数字图像隐写方法在保持LSB嵌入方法优点的基础上,既能够嵌入大量秘密信息到载体图像中,同时又保持了降低的修改率。
附图说明
图1为本发明实施例中低修改率的数字图像隐写方法的流程图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
实施例一:
(1)假设载体图像的像素数据经过分组处理后,其中一组分组数据gi为(2,3,6,2,9,7,3),待嵌入秘密信息的二进制数据mi,j为(0,1,0,0,0,0),秘密信息的数据长度l=6;
该分组数据gi中的十进制像素值2对应的二进制数据为10,十进制像素值3对应的二进制数据为11,…,十进制像素值7对应的二进制数据为111,十进制像素值3对应的二进制数据为11,则知,该分组数据gi对应的二进制数据的最低位数据lsbi,j为(0,1,0,0,1,1,1),其中,该分组数据gi中第7个像素值3对应的二进制数据的最低位1是该分组数据gi的标志位;
(2)将该分组数据gi(2,3,6,2,9,7,3)中前6个像素值对应的二进制数据的最低位数据lsbi,j(0,1,0,0,1,1)分别与秘密信息的二进制数据mi,j(0,1,0,0,0,0)进行对应比较,并计算两组数据之间的差异值di,其中差异值di由以下公式获得:
其中,
di表示分组数据gi(2,3,6,2,9,7,3)中前6个像素值对应的二进制数据的最低位数据lsbi,j(0,1,0,0,1,1)和秘密信息的二进制数据mi,j(0,1,0,0,0,0)对应位置中数据不相同的个数;j表示秘密信息mi={mi,1,mi,2,…,mi,l}中二进制数据的序号,j∈[1,l];
分组数据gi前6个像素值对应的二进制数据的最低位数据lsbi,j:0,1,0,0,1,1;
秘密信息的二进制数据mi,j为:0,1,0,0,0,0;
经过比较可知,差异值di为2;
(3)根据步骤(2)中计算的差异值di,对秘密信息的二进制数据进行判断和嵌入操作:
由于差异值di为2,将l=6带入公式(l-1)/2中,可得(l-1)/2=2.5。可知,此时,di≤(l-1)/2,对该分组数据gi对应的二进制数据的最低位数据lsbi,j(0,1,0,0,1,1,1)中的第7位上的标志位1取0,即经判断操作,标志位变化后该分组数据gi对应的二进制数据的最低位数据lsbi,j'为(0,1,0,0,1,1,0);然后利用LSB方法将秘密信息的二进制数据mi,j(0,1,0,0,0,0)插入到该分组数据gi的前6位(2,3,6,2,9,7)中:
(3-a)根据标志位变化后该分组数据gi对应的二进制数据的最低位数据lsbi,j'(0,1,0,0,1,1,0)与秘密信息的二进制数据mi,j(0,1,0,0,0,0)分别通过以下公式获取各对应位置中的δ(lsbi,j',mi,j)值:
其中,
标志位变化后分组数据gi对应的二进制数据的最低位数据lsbi,j':0,1,0,0,1,1,0;
秘密信息的二进制数据mi,j:0,1,0,0,0,0;
各对应位置中的δ(lsbi,j',mi,j)值:0,0,0,0,-1,-1。
(3-b)将步骤(3-a)中获取的δ(lsbi,j',mi,j)值(0,0,0,0,-1,-1)与分组数据gi中的对应像素值按照隐写函数进行计算,获得嵌入秘密信息后的像素值:
隐写函数为:f(gi,j,mi,j)=gi,j+δ(lsbi,j',mi,j)
其中,f(gi,j,mi,j)表示嵌入秘密信息后的像素值,gi,j表示载体图像分组数据gi的像素值,lsbi,j'表示标志位变化后分组数据gi对应的二进制数据的最低位数据;mi,j表示秘密信息的二进制数据。
因此,对应位置中的δ(lsbi,j',mi,j)值:0,0,0,0,-1,-1;
该分组数据gi中的对应像素值gi,j:2,3,6,2,9,7,3;
按照隐写函数f(gi,j,mi,j)对前面6个像素值进行计算:0+2=2,0+3=3,0+6=6,0+2=2,-1+9=8,-1+7=6;
而插入秘密信息后的第7位上的像素值为:3-3%2=3-1=2;
所以,嵌入秘密信息后的像素值f(gi,j,mi,j)为:2,3,6,2,8,6,2。
实施例二:
(1)假设载体图像的像素数据经过分组处理后,其中一组分组数据gi为(2,3,6,2,9,7,3),待嵌入秘密信息的二进制数据mi,j为(1,1,0,1,0,0),秘密信息的数据长度l=6;
该分组数据gi中的十进制像素值2对应的二进制数据为10,十进制像素值3对应的二进制数据为11,…,十进制像素值7对应的二进制数据为111,十进制像素值3对应的二进制数据为11,则知,该分组数据gi对应的二进制数据的最低位数据lsbi,j为(0,1,0,0,1,1,1),其中,该分组数据gi中第7个像素值3对应的二进制数据的最低位1是该分组数据gi的标志位;
(2)将该分组数据gi(2,3,6,2,9,7,3)中前6个像素值对应的二进制数据的最低位数据lsbi,j(0,1,0,0,1,1)分别与秘密信息的二进制数据mi,j(1,1,0,1,0,0)进行对应比较,并计算两组数据之间的差异值di,其中差异值di由以下公式获得:
其中,
di表示分组数据gi(2,3,6,2,9,7,3)中前6个像素值对应的二进制数据的最低位数据lsbi,j(0,1,0,0,1,1)和秘密信息的二进制数据mi,j(1,1,0,1,0,0)对应位置中数据不相同的个数;
分组数据gi前6个像素值对应的二进制数据的最低位数据lsbi,j:0,1,0,0,1,1;
秘密信息的二进制数据mi,j为:1,1,0,1,0,0;
经过比较可知,差异值di为4;
(3)根据步骤(2)中计算的差异值di,对秘密信息的二进制数据进行判断和嵌入操作:
由于差异值di为4,将l=6带入公式(l-1)/2中,可得(l-1)/2=2.5。可知,此时,di>(l-1)/2,对该分组数据gi对应的最低位数据lsbi,j(0,1,0,0,1,1,1)中的第7位上的标志位1取1,即经判断操作,标志位变化后该分组数据gi对应的二进制数据的最低位数据lsbi,j'为(0,1,0,0,1,1,1);将秘密信息的二进制数据mi,j(1,1,0,1,0,0)进行取反操作,得到取反后的秘密信息的二进制数据(0,0,1,0,1,1);然后利用LSB方法将取反后的秘密信息的二进制数据(0,0,1,0,1,1)插入到该分组数据gi的前6位(2,3,6,2,9,7)中:
(3-a)根据标志位变化后该分组数据gi对应的二进制数据的最低位数据lsbi,j'(0,1,0,0,1,1,1)与取反后的秘密信息的二进制数据(0,0,1,0,1,1)分别通过以下公式获取各对应位置中的值:
其中,
标志位变化后分组数据gi对应的二进制数据的最低位数据lsbi,j':0,1,0,0,1,1,1;
取反后的秘密信息的二进制数据0,0,1,0,1,1;
各对应位置中的值:0,-1,1,0,0,0。
(3-b)将步骤(3-a)中获取的值(0,-1,1,0,0,0)与分组数据gi中的对应像素值按照隐写函数进行计算,获得嵌入秘密信息后的像素值:
隐写函数为:
其中,f(gi,j,mi,j)表示嵌入秘密信息后的像素值,gi,j表示载体图像分组数据gi的像素值,lsbi,j'表示标志位变化后分组数据gi对应的二进制数据的最低位数据;表示取反后的秘密信息的二进制数据。
因此,对应位置中的值:0,-1,1,0,0,0;
该分组数据gi中的对应像素值gi,j:2,3,6,2,9,7,3;
按照隐写函数f(gi,j,mi,j)对前6个像素值进行计算:0+2=2,-1+3=2,1+6=7,0+2=2,0+9=9,0+7=7;
而插入秘密信息后的第7位上的像素值为:3-3%2+1=3-1+1=3;
所以,嵌入秘密信息后的像素值f(gi,j,mi,j)为:2,2,7,2,9,7,3。
以下针对图像隐写中传统的LSB嵌入方法和本发明中的隐写方法进行比较说明:
用随机函数产生的0和1比特流作为要嵌入的秘密信息,使用LSB嵌入方法把秘密信息嵌入到分组数据gi的最后一位,则分组数据gi的最后一位的修改概率是1/2;其中嵌入秘密信息的二进制数据mi,j与分组数据gi中对应的最低位数据lsbi,j相同的个数符合二项分布b(l,0.5);
假设LSB嵌入方法中的最低位数据lsbi,j修改个数为mdi,本发明中隐写方法中的最低位数据lsbi,j修改个数为mdi',其中,l+1表示分组数据gi的长度,i=1,2,…,[L/(l+1)],m=[l/2],[l/2]表示对数值l/2向下取整。
LSB嵌入方法中的最低位数据lsbi,j修改个数mdi的分布情况如下:
可知,LSB嵌入方法中最低位数据lsbi,j修改个数mdi的平均修改个数E(mdi)为:
本发明隐写方法中最低位数据lsbi,j修改个数mdi'的分布情况如下:
可知,本发明中最低位数据lsbi,j修改个数mdi'的平均修改个数E(mdi')为:
由此可知,两种嵌入方法中最低位数据lsbi,j平均修改个数的差值E(Δd)为:
当l=2m+1时,由二项展开式可计算出:
将及代入公式(1)中,可化简得:
当l=2m时,由二项展开式可计算出:
将及代入公式(1)中,可化简得:
所以对于任何l值,
其中m=[l/2];
当l较大时,使用Stiring公式将进一步化简为:
对于嵌入长度为l的秘密信息来说,使用LSB嵌入方法,载体图像像素值的平均修改量为使用本发明中的隐写方法,载体图像像素值的平均修改量减少了(即E(Δd)),那么本发明中的隐写方法的修改量的增益率η为:
根据本发明隐写方法与LSB嵌入方法的修改量比较可知,本发明中的数字图像隐写方法具有更低的修改率,从而克服了LSB嵌入方法修改量大的问题。