基于混沌系统的随机位盲水印实现方法与流程

文档序号:14861588发布日期:2018-07-04 07:47阅读:231来源:国知局
基于混沌系统的随机位盲水印实现方法与流程
本发明专利涉及图像处理、计算机应用、信息安全等
技术领域

背景技术
:随机位盲水印在嵌入水印信息时,在载体图像中每个像素的二进制位上嵌入水印信息的位置都是随机的、不固定的。嵌入时,针对载体图像的每一个像素,都在其二进制值的第0个到第7个比特位上随机选取一位,在选取的比特位上嵌入水印信息。提取时,在与嵌入位置相同的比特位上提取出水印信息。随机水印通常是采用随机生成的一个值在[0,7]之间的与原始载体图像等大小的位置矩阵来决定水印信息在每个像素上的二进制值中的具体嵌入、提取比特位。本系统采用混沌系统生成随机序列,被广为应用的混沌系统是logistic混沌系统,它的改进形式为:该系统对初始值极为敏感,初始值稍微不同,就会出现完全不同的结果。根据混沌系统的特性,可以生成一个伪随机序列,将该序列进行处理即可生成一个值在[0,7]之间的序列。例如,设定一个混沌系统的初始值为0.98,则可以得到一个一维混沌序列a,该混沌数列a的前16个值如表1所示。表1数列a按照混沌序列的公式,该序列可以一直迭代下去,产生任意多个数值。将得到的一维混沌序列进行转置,即可得到与载体图像大小相等的二维矩阵。例如:某个载体图像的大小为4*4(长和宽均为4个像素大小),则可以将上述序列内的16个元素转换为与载体图像相同大小的4行4列,即4*4的矩阵形式。为了处理上的方便,将上述矩阵标记为oi,其布局如表2所示。表2矩阵oi0.98-0.9208-0.695750.0318770.997968-0.99188-0.96765-0.87269-0.523160.4525990.5903080.3030730.816293-0.332670.778662-0.21263如果需要将上述数组转换为嵌入位置,可以使用的公式为:式中,mod(·)是取模运算。根据上述运算,可以得到位置矩阵cs如表3所示。表3位置矩阵cs该位置矩阵用于确定随机位盲水印在嵌入和提取时参与运算的比特位信息。在嵌入水印、提取水印时,每个像素参与运算的比特位都由位置矩阵所决定。在嵌入过程中,原始载体图像中每一个像素在嵌入水印时选取嵌入水印的比特位,都是通过位置矩阵cs所决定。提取过程中,含水印载体图像中每一个像素在提取水印时所选取的比特位,都是通过位置矩阵cs所决定。这里以表3所示的位置矩阵cs为例。假设某个原始载体图像o和含水印图像os,其所对应的位置矩阵均为如表3所示的位置矩阵cs,则:●原始载体图像o中像素点位置为(1,1)的像素(这里位置序号从1开始,指左上角的元素),其对应的位置矩阵cs中对应位置上的值为“0”,因此,其水印嵌入位置为当前像素点二进制像素值中的第0个比特位(第0位);●原始载体图像o中像素点位置为(1,3)的像素,其对应的位置矩阵cs中对应位置上的值为“7”,因此,其水印嵌入位置为当前像素点二进制像素值中的第7位;●含水印载体图像os中像素点位置为(2,2)的像素,其对应的位置矩阵cs中对应位置上的值为“1”,因此,其水印提取位置为当前像素点二进制像素值中的第1位;●含水印载体图像os中像素点位置为(3,2)的像素,其对应的位置矩阵cs中对应位置上的值为“7”,因此,其水印提取位置为当前像素点二进制像素值中的第7位。在水印的嵌入过程和提取过程中需要使用同样的位置矩阵来确保嵌入位置和提取位置是一致的,以保证能够正确地提取出水印信息。因此,初始值0.98是密钥信息,如果在嵌入过程和提取水印过程中都使用该值作为生成位置矩阵的初始值,则他们具有相同的位置矩阵,能够确保嵌入水印和提取水印所使用的对应像素上的比特位是相同的。如果嵌入过程和提取过程使用不同的密钥,则会产生不同的位置矩阵,提取过程会在与嵌入位置不同的位置上提取水印信息,因此也就不能够提取到正确的水印信息。技术实现要素:本发明专利实现了在载体图像的随机位置上嵌入水印信息,达到信息隐藏、认证图像的目的。具体分为嵌入过程和提取过程。1嵌入过程随机位盲水印嵌入水印时,在每个像素的二进制值中所选取的嵌入水印的比特位都是根据混沌系统所生成的位置矩阵所确定的,是不固定的。(1)生成嵌入位置矩阵例如,已知混沌系统的初始值为0.98,则可以生成决定嵌入位置的位置矩阵cs为:0075010147415264(2)确定载体图像的嵌入位置例如,有灰度载体图像o的像素值为:2091971631931252471601121611372432033982154127其对应的二进制值ob为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111使用位置矩阵cs确定载体图像ob中每个像素点要嵌入水印的具体比特位的位置,将需要嵌入的比特位加下划线,具体为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(3)水印信息阈值处理例如,有二值水印图像w为:25502550255255025500002552550255对w进行阈值处理,其对应的二进制值水印图像wb为:1010110100001101(4)嵌入水印信息将原始载体图像ob中由混沌矩阵cs所指定的比特位上的信息替换为水印信息wb,即完成水印信息的嵌入。嵌入完成后,含水印信息的载体图像wo的信息为:11010001110001001010001111000001011111011111011110100000011100101010000100001001111000111100100100100111010101101001101001111111该图像所对应的十进制值为:20919616319312524716011416192272013986154127可以看到,在载体图像中嵌入水印信息后,载体图像的值会发生变化,变化的大小取决于嵌入水印的具体位置。当嵌入水印的位置处于载体图像像素二进制值的较高比特位时,其像素值变化较大;当水印嵌入的位置处于载体图像像素二进制值的较低比特位时,其像素值变化不明显。水印嵌入位置在第7位(第7个比特位,从右数,序号从0开始)时,载体图像像素值变化最大;水印嵌入位置在第0位时,载体图像的像素值变化最小。因此,可以进一步改进算法,让水印嵌入到载体图像像素二进制值的相对较低的一些位上,比如嵌入位在第0位到第3位之间随机选取。这样,嵌入水印信息后,载体图像的变化会相对较小,更不易察觉在载体图像内嵌入了水印信息,从而提高嵌入的安全性。2提取过程水印提取过程是嵌入过程的逆过程,是根据混沌系统从含水印载体图像内提取水印信息的过程。(1)生成提取位置矩阵根据混沌系统及初始值,生成提取位置矩阵。例如,已知混沌系统的初始值为0.98,则可以生成提取位置矩阵cs为:0075010147415264(2)确定载体图像的提取位置根据位置矩阵确定从含水印载体图像提取水印信息的具体位置。例如,有含水印载体图像o为:20919616319312524716011416192272013986154127载体图像的二进制值ob为:11010001110001001010001111000001011111011111011110100000011100101010000100001001111000111100100100100111010101101001101001111111根据提取位置信息矩阵cs,确定提取水印比特位如下划线所示:11010001110001001010001111000001011111011111011110100000011100101010000100001001111000111100100100100111010101101001101001111111(3)提取水印信息根据所确定的水印所在比特位信息,将水印信息从含水印载体图像内提取出来。例如,根据位置矩阵cs所确定的比特位位置,从载体图像ob内提取水印信息we为:1010110100001101根据需要,可以对水印信息进行阈值处理,将其转换为二值图像wd为:25502550255255025500002552550255附图说明附图1是嵌入过程。附图2是提取过程。具体实施方式随机位水印是指在嵌入水印时,将水印信息嵌入到载体图像像素的二进制位上的某一特定位上,针对不同的像素,其所选取进行嵌入的二进制位的位置是不固定的。提取水印时,从相同的位置上提取出水印信息。嵌入、提取时所选取的具体位置是通过混沌系统所生成的位置矩阵来确定的。这里仅将水印信息嵌入到载体图像的r通道内,水印信息则直接采用了二值图像。具体处理时,可以将水印信息嵌入到多个通道内以提高嵌入容量或水印的鲁棒性;水印信息也可以采用彩色图像或者灰度图像,但是需要事先将其进行通道、位平面分解后再完成嵌入。1嵌入过程嵌入过程完成将水印随机嵌入到载体图像中每个像素的不同二进制位上,其主要步骤为:(1)载体图像预处理载体图像预处理主要包括:读取载体图像,获取其大小,将其进行通道分解。例如,读取原始载体图像o,获取图像o的长度m和宽度n,对图像的通道进行分解,得到其r通道rgb[0],g通道rgb[1],b通道rgb[2]。原始载体图像o的r通道rgb[0]为:2091971631931252471601121611372432033982154127其对应的二进制值br为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(2)水印处理读取水印图像,对读取的二值水印图像进行阈值处理,将其转换为二进制值水印图像,即将其中的值255转换为1,以方便嵌入到载体图像内。例如,有二值水印图像wo为:2552552552552552552552552550255000255255该二值水印图像对应的二进制水印图像w为:1111111110100011(3)确定嵌入位置根据混沌系统的初始值生成嵌入位置矩阵,由嵌入位置矩阵来确定将水印信息嵌入到二进制像素值中的具体比特位。例如,确定密钥为0.98,则混沌系统采用的初始值为0.98,按照8.2.3中所介绍根据混沌系统生成位置矩阵的方法,生成决定嵌入位置信息的位置矩阵cs为:0075010147415264位置矩阵cs决定了水印信息在图像r通道br内每个像素上的具体嵌入比特位位置。根据位置矩阵cs,将br中需要嵌入水印的比特位标注下划线,具体为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(4)嵌入水印信息只需要用水印信息替换掉载体图像内原有信息即可。在具体的实现上,将水印信息w与原始载体二值图像br中指定位置的二进制位信息(比特位上的值)进行比较:●如果二者一致则不需要任何操作即将水印嵌入到了载体图像内;●如果二者不一致则将br中指定位置的值(比特位上的值)进行取反操作,即在0和1之间进行互换。例如:原来该比特位的值为1,则换为0;原来该比特位的值为0,则换为1。假设需要嵌入水印的位置在载体图像二进制像素值的第n位(这里二进制位从0开始),则:当该位的值为1时,则将该像素值减去2^n,即实现了将该位的1替换为0。当该位的值为0时,则将该像素值加上2^n,即实现了将该位的0置换为1;对上述情况进行区别,以具体的数字进行演示,如表9所示。(注意:位数序号从0开始。)表9嵌入示例根据上述归纳的结果,针对三种类型分别进行操作说明,具体为:步骤1:处理规则a在原始载体图像r通道br中和水印w中,对应位置(像素所在的行和列坐标一致)上,原始载体图像r通道br中由位置矩阵所指定的比特位上的位值和水印w的值相同,符合该规则的br和w如表10和表11中深色背景部分表格所示,表10中这部分的元素不需要任何改变即完成了水印的嵌入。表10原始载体br表11水印w可以直接将上述原始载体图像r通道br中的元素复制到含水印图像wb中,此时wb中的值为:步骤2:处理规则b在原始载体图像r通道br中和水印w中,在对应位置上,原始载体图像r通道br中由位置矩阵cs所指定的要嵌入水印信息的比特位的位值为1、水印w的值为0,这种情况符合规则b。该情况的原始载体图像r通道br和水印w如表12和表13中稍深色的背景部分所示。表12原始载体图像r通道br表13水印w针对规则b,需要将原始载体图像r通道br对应位置上的像素值减去2^n,这里n是其要嵌入水印的比特位的位置,n的值由位置矩阵cs所决定。位置矩阵cs中对应位置的值如表14中深色背景所示。表14嵌入位置矩阵cs因此,根据上述cs可以得到:●表12中原始载体图像r通道br第3行第2列(这里行和列的序号从1开始)的值“10001001”需要嵌入水印的比特位位置可以通过嵌入位置矩阵cs的得到,位置矩阵cs中对应位置的值为7,因此需要将该值减去“2^7”,得到“00001001”;●表12中原始载体图像r通道br第3行第4列的值“11001011”根据嵌入位置矩阵cs得到嵌入水印的比特位位置为第1位,因此需要将该值减去“2^1”,得到“11001001”;●表12中原始载体图像r通道br第4行第1列的值“00100111”根据嵌入位置矩阵cs得到嵌入水印的比特位位置为第5位,因此需要将该值减去“2^5”,得到“00000111”。上述过程完成后,将得到的值复制到含水印图像wb中,此时wb中的值为:步骤3:处理规则c在原始载体图像的r通道br中和水印w中,在对应位置上,图像br中由位置矩阵cs所指定的要嵌入水印的比特位上的值为0、水印w的值为1,这种情况符合处理规则c。这部分如表15和表16中白色背景部分所示。表15原始载体图像的r通道br表16水印w针对规则c,需要将原始载体图像的r通道br内对应位置上的像素值加上2^n,这里n是要嵌入水印的比特位位置,n的值由位置矩阵cs所决定。位置矩阵cs对应位置的值如表17中白色背景所示。表17嵌入位置矩阵cs因此,根据上述矩阵cs,完成操作为:●表15所示的原始载体图像的r通道br中第1行第4列的值为“11000001”,其对应的位置矩阵cs中的值为5,因此需要将该值加上“2^5”,得到“11100001”;●表15所示的原始载体图像的r通道br中第2行第3列的值为“10100000”,其对应的位置矩阵cs中的值为0,因此需要将该值加上“2^0”,得到“10100001”;●表15所示的原始载体图像的r通道br中第2行第4列的值为“01110000”,其对应的位置矩阵cs中的值为1,因此需要将该值加上“2^1”,得到“01110010”;●表15所示的原始载体图像的r通道br中第3行第1列的值为“10100001”,其对应的位置矩阵cs中的值为4,因此需要将该值加上“2^4”,得到“10110001”;●表15所示的原始载体图像的r通道br中第4行第3列的值为“10011010”,其对应的位置矩阵cs中的值为6,因此需要将该值加上“2^6”,得到“11011010”。上述过程完成后,将得到的值复制到含水印图像wb中,此时wb中的值为:将得到的含水印图像wb作为含水印载体图像result的r通道,将其与原始载体图像的g通道、b通道使用merge函数组合得到含水印彩色图像result。(5)显示图像对要显示的原始载体图像、含水印图像进行通道顺序的转换,以便于显示。分别显示原始载体图像、水印图像、含水印图像,保存含水印图像。嵌入过程的流程图如图1所示。2提取过程提取过程完成将水印信息从含水印载体图像内提取出来,具体过程如下:(1)含水印载体图像处理读取包含水印的载体图像、获取其大小、分解通道。例如,读取包含水印的载体图像wo,获取图像wo的长度m和宽度n,分解图像wo的rgb通道,分别记为bgr[0]、bgr[1]、bgr[2]。(2)生成提取位置矩阵根据混沌系统的初始值生成提取位置矩阵,用来确定提取水印信息时在二进制像素值中的具体位置。例如:设置混沌系统的初始值为0.98,按照8.2.3所介绍的方法生成提取位置矩阵cs为:0075010147415264(3)提取水印信息从含水印的载体图像内提取出水印信息,水印信息在每个像素中的具体位置由位置矩阵指定。对提取到的二进制水印信息进行阈值调整,得到二值水印图像以便显示。例如,含水印图像中像素的值为218,其对应的位置矩阵cs中的对应位上值为3,则需要从该像素的二进制位的第3位(注意:序号从0开始,即最低有效位是第0位)提取出水印信息。具体如表18所示。表18提取水印示例在程序具体实现时,通过将含水印像素的二进制右移提取位置信息矩阵cs值指定的位数来获取左边的若干位信息nleft,使得水印信息处于最低有效位。该值的最低有效位即为要提取的水印信息,可以通过将数值nleft对2取模而得到。例如,像素值216,其二进制位值为“11011000”,其对应的cs值为3,因此先将其右移3位得到nleft值为“11011”,再将该nleft值对2取模则得到要提取的水印数值“1”。计算表达式为:(11011000>>3)%2假设,从读入的wo中提取的r通道rgb[0]为:11010001110001011010001111100001011111011111011110100001011100101010000100001001111100111100100100000111010100101101101001111111根据上述步骤,已知矩阵cs为:0075010147415264则根据上述提取规则提取水印信息,需要进行的运算为:(11010001>>0)%2(11000101>>0)%2(10100011>>7)%2(11100001>>5)%2(01111101>>0)%2(11110111>>1)%2(10100001>>0)%2(01110010>>1)%2(10100001>>4)%2(00001001>>7)%2(11110011>>4)%2(11001001>>1)%2(00000111>>5)%2(01010010>>2)%2(11011010>>6)%2(01111111>>4)%2由上式,提取的二进制值水印信息we为:1111111110100011对二进制水印图像we进行阈值调整,将we中值为1的像素值调整为255。则得到二值水印图像wg,为:2552552552552552552552552550255000255255通过将含水印载体图像与一个内部值全部为2^n的mat型矩阵进行按位与操作,也可以将n所指定的位置上的水印提取出来。需要注意,计算所使用的n的值通过位置矩阵cs得到,针对不同的像素,n的值是不固定的。上述过程提取到水印后,将水印信息进行阈值调整,将其中不为0的元素调整为255,即得到只包含像素值0和255的二值水印图像。(4)显示图像对含水印的载体图像wo使用cvtcolor函数进行通道顺序调整以便于显示。显示水印图像wg、含水印图像wo,保存水印图像wg。提取过程的流程图如图2所示。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1