一种基于混沌的随机位非盲水印实现方法与流程

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

背景技术
:本系统采用混沌系统生成随机序列。被广为应用的混沌系统是logistic混沌系统,它的改进形式为:该系统对初始值极为敏感,初始值稍微不同,就会出现完全不同的结果。根据混沌系统的特性,可以生成一个伪随机序列,将该序列进行处理即可生成一个在[0,7]之间的序列。例如,设定一个混沌系统的初始值为0.98,则可以得到一个一维混沌序列,该混沌数列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如果需要将上述数组转换为嵌入位置,可以使用的公式为:resultt=mod(a(t)*1000000,8)式中,resultt∈[0.7],mod(·)是取模运算。根据上述运算,可以得到嵌入位置矩阵cs如表3所示。表3嵌入位置矩阵cs载体图像嵌入水印信息时,每个像素的嵌入位置都按照该位置矩阵cs的值来决定。例如:●载体图像中像素位置为(1,1)的像素(这里序号从1开始,指左上角的元素),其对应的嵌入位置矩阵cs的值为“0”,因此,其水印嵌入位置为当前像素二进制值的第0个比特位(第0位);●载体图像中像素位置为(1,3)的像素,其对应的嵌入位置矩阵cs的值为“7”,因此,其水印嵌入位置为当前像素二进制值的第7位;●载体图像中像素位置为(2,2)的像素,其对应的嵌入位置矩阵cs的值为“1”,因此,其水印嵌入位置为当前像素二进制值的第1位;●载体图像中像素位置为(3,2)的像素,其对应的嵌入位置矩阵cs的值为“7”,因此,其水印嵌入位置为当前像素二进制值的第7位。在水印的嵌入过程和提取过程中需要使用同样的位置矩阵来确保嵌入位置和提取位置是一致的,以保证能够正确地提取出水印信息。因此,初始值0.98是密钥信息,如果在嵌入过程和提取水印过程中都使用该值作为生成位置矩阵的初始值,则他们具有相同的位置矩阵,能够确保嵌入水印和提取水印所使用的对应像素上的比特位是相同的。如果嵌入过程和提取过程使用不同的密钥,则会产生不同的位置矩阵,提取过程会在与嵌入位置不同的位置上提取水印信息,因此也就不能够提取到正确的水印信息。技术实现要素:非盲水印中,随机位水印是指嵌入水印的操作在每个像素上所选取的参与运算的二进制位的位置是不固定的,每次的嵌入位置都通过位置矩阵的对应值来决定。嵌入时,针对载体图像的每一个像素,都在其二进制值的第0到第7位(比特位,序号从0开始,即最低有效位是第0位,最高有效位是第7位)上随机选取一位,将在所有像素上选取的不同比特位的位值构成一个位平面,将该位平面与水印信息进行异或运算,用该计算结果替换掉其原比特位上的位值以构成含水印信息的载体图像,即完成了将运算结果嵌入到原始载体图像前述随机选取的比特位上。因此,需要采用随机生成的一个值在[0,7]之间的位置矩阵来决定每个像素的具体参与比特位信息。在嵌入过程和提取过程中所使用的位置矩阵由混沌系统来生成。1嵌入过程随机位非盲水印嵌入时,每个像素中参与嵌入水印运算的二进制位都是根据混沌系统所生成的位置矩阵确定的,是不固定的。这里,仅在r通道嵌入二值水印信息为例,在实际操作中可以在多个通道内嵌入相同的或不相同的水印信息。嵌入过程为:(1)使用混沌系统生成嵌入位置矩阵。根据“
背景技术
”小节内所介绍的知识,使用混沌系统构建一个嵌入位置矩阵,例如:(2)确定载体图像中由位置矩阵确定的位平面首先,将原始载体图像进行通道分解,分为r通道、g通道、b通道。然后,以r通道作为嵌入通道,确定其中每个像素的二进制值中具体嵌入水印的比特位。最后,将每个像素中要嵌入水印信息的比特位提取出来构成一个位平面备用。例如,有载体图像o,将其进行通道分解,分为r通道rgb[0]、g通道rgb[1]、b通道rgb[2]。其r通道rgb[0]的像素值为:2091971631931252471601121611372432033982154127上述rgb[0]对应的二进制形式rgbb的值为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111根据位置信息矩阵cs,则需要嵌入的比特位信息如下划线所示:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111将指定比特位的位值提取出来,组成新的位平面bi为:1110110001111001(3)水印图像处理对水印图像进行阈值处理,将二值水印图像处理为二进制值水印图像,调整其像素值为二进制值0和1的形式。例如,有二值水印图像wt为:25502550255255025500002552550255其对应的二进制值图像wb为:1010110100001101(4)嵌入水印信息将从原始载体图像所提取的由位置矩阵所指定的位平面与水印图像进行异或运算,将异或运算结果嵌入到原始载体图像内。例如,将从原始载体图像o的r通道内提取出来的位平面bi与二进制值水印图像wb进行异或运算,得到矩阵r,即为“嵌入水印信息”,其值为:0100000101110100将原始载体图像内每个像素中由位置信息矩阵cs所指定二进制位替换为“嵌入水印信息”矩阵r内对应的值,即完成水印信息的嵌入,得到嵌入了水印信息的r通道,即为含水印载体图像ew的r通道。将其标记为ewo,则含水印载体图像ew的r通道ewo的信息为:11010000110001010010001111000001011111001111010110100000011100101010000110001001111100111100101100000111010101101001101001101111该图像ewo所对应的十进制值ewod为:20819735193124245160114161137243203786154111可以看到,在载体图像的随机比特位嵌入水印信息后,载体图像的值会发生变化,值变化的大小取决于替换的具体比特位。当像素点被替换的值在其二进制编码中处于较高的位置时,其像素点的值变化相对较大;当像素点被替换的值在其二进制编码中处于较低的位置时,其像素点的值变化不明显。因此,可以进一步改进算法,让像素值在其低位(比如第0位到第3位)之间进行随机替换,以让嵌入的水印信息对原始载体图像影响较小,从而让水印具有一定的隐蔽性。(4)图像通道组合。将嵌入了水印信息的通道与原始载体图像的其他通道组合成含水印载体图像的彩色图像。例如,将嵌入了水印信息的r通道ewod,与从原始载体图像o内提取出来的g通道rgb[1],b通道rgb[2]组合成含水印rgb彩色图像ew。至此,水印嵌入过程完成。2提取过程提取过程是嵌入过程的逆过程,根据混沌系统所确定的提取矩阵分别从含水印载体图像内和原始载体图像内提取每个像素的特定比特位所组成的位平面图,并将这两个位平面图进行异或运算,计算结果即为“识别水印信息”。提取过程的具体步骤为:(1)构建提取位置矩阵利用混沌系统及其初始值构建提取位置矩阵。例如,利用嵌入过程时所采用得混沌系统及初始值0.98构建提取位置矩阵cs,其值为:0075010147415264【注意】这里的初始值0.98是密钥信息,该值必须与嵌入过程中所使用的初始值相同,否则会得到不同的提取位置矩阵,会从与嵌入位置不同的比特位提取水印从而导致不能提取出正确的水印信息。(2)从原始载体图像提取由位置矩阵所指定的位平面首先,将原始载体图像进行通道分解,分为r通道、g通道、b通道。然后,提取r通道中由提取位置矩阵所指定的位平面。例如,有载体图像o的r通道rgb[0]的像素值为:2091971631931252471601121611372432033982154127其对应的二进制值为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111根据提取位置矩阵cs所确定的比特位信息如下划线所示:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111将上述指定比特位上的位值提取出来,则从原始载体图像所提取的位平面obi为:1110110001111001(3)从含水印载体图像提取由位置矩阵所指定的位平面首先,将含水印载体图像进行通道分解,分为r通道、g通道、b通道。然后,提取r通道中由位置矩阵所指定的位平面。例如,有含水印载体图像we,将其进行通道分解,分为r通道rgb2[0]、g通道rgb2[1]、b通道rgb2[2]。其分解出来的r通道rgb2[0]为:20819735193124245160114161137243203786154111含水印载体图像r通道rgb2[0]的二进制值为:11010000110001010010001111000001011111001111010110100000011100101010000110001001111100111100101100000111010101101001101001101111根据位置矩阵cs所确定的比特位如下划线所示:11010000110001010010001111000001011111001111010110100000011100101010000110001001111100111100101100000111010101101001101001101111将上述指定比特位上的位值提取出来,则从含水印载体图像所提取的位平面wobi为:0100000101110100(4)提取水印将从原始载体图像提取的位平面与从含水印载体图像中提取的位平面进行异或操作,得到“识别水印信息”图像。例如,将从含水印载体图像所提取的位平面wobi与从原始载体图像所提取的位平面obi进行异或运算,得到“识别水印信息”的二进制图像w为:1010110100001101将二进制水印图像进行阈值处理,将其中的1处理为255以便于显示。处理后得到其对应的二值水印图像ow为:提取水印过程完毕。附图说明附图1是嵌入过程。附图2是提取过程。具体实施方式随机位非盲水印在载体中每个像素上进行运算、嵌入水印的位置是不固定的。其具体实现步骤分为嵌入过程和提取过程。为了理解上的方便,这里的水印仅仅嵌入在载体图像的r通道内。在实际处理中,可以将水印嵌入到多个通道内,在其他通道内嵌入水印的方法与在r通道内嵌入的方法相同。1嵌入过程嵌入过程将原始水印信息与载体图像进行运算后再嵌入到载体图像内。(1)原始载体图像处理读入原始载体图像,获取图像大小,将其进行通道分解,分为r通道、g通道、b通道。例如,有原始载体图像o,其大小为4*4,将其进行通道分解,分为r通道rgb[0],g通道rgb[1],b通道rgb[2]。提取到的r通道rgb[0]为:2091971631931252471601121611372432033982154127其对应的二进制值br为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(2)水印图像处理读取二值水印图像,对二值水印图像进行阈值处理得到二进制水印图像。例如,有二值水印图像wo为:2552552552552552552552552550255000255255将二值水印图像wo中值为255的像素点处理为1,则得到该二值水印图像wo对应的二进制水印图像w为:1111111110100011(3)确定运算位置在随机位盲水印中,需要从每一个像素的二进制值中随机选取一个比特位,将该比特位的位值与水印进行异或计算,并将计算结果嵌入到所选取的比特位上,即用运算结果替换该比特位上原有的位值。本发明专利根据混沌系统确定嵌入的具体比特位位置信息。例如,已知混沌系统的初始值为0.98,则可以生成与原始载体图像4*4等大小的嵌入位置矩阵cs为:0075010147415264根据混沌系统初始值为0.98时所建立的位置矩阵cs决定在原始载体二值图像br内每个像素具体参与运算的比特位位置,则br中参与运算的比特位信息如下划线所示为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(4)嵌入水印嵌入数字水印时,先将原始水印信息与每个像素的二进制值指定比特位上的值进行异或运算得到“嵌入水印信息”,用“嵌入水印信息”替换该比特位上的原有位值信息,即完成水印嵌入。在具体的程序实现上,将水印信息w与二值原始载体图像br中指定比特位上的二进制位值进行异或的可能情况为:情况1:水印信息为0,载体图像对应位置(像素点在图像内的坐标)上像素的二进制值指定比特位上的位值为0,二者的异或结果为0,此时不需要任何操作,即将水印信息嵌入到了载体图像内。情况2:水印信息为0,载体图像对应位置上像素的二进制值指定比特位上的位值为1,二者的异或结果为1,此时不需要任何操作,即将水印信息嵌入到了载体图像内。情况3:水印信息为1,载体图像对应位置上像素的二进制值指定比特位上的位值为0,二者的异或结果为1,此时需要将载体图像对应位置上二进制像素值的指定比特位上的位值由0更改为1,完成将水印信息嵌入到载体图像内。具体实现上,假设需要嵌入水印的比特位在二进制的第n位(这里二进制位从右往左数,序号从0开始,即最低有效位是第0位,最高有效位是第7位),则将载体图像的像素值加上2^n,即实现了将该比特位的0置换为1,即完成了水印的嵌入。情况4:水印信息为1,载体图像对应位置上像素的二进制值指定比特位上的位值为1,二者的异或结果为0,此时需要将载体图像对应位置上二进制像素值的指定比特位上的位值由1更改为0,完成将水印信息嵌入到载体图像内。具体实现上,假设需要嵌入水印的比特位在二进制的第n位,则将载体图像的像素值减去2^n,即实现了将该比特位的1置换为0,即完成了水印的嵌入。上述四种情况中,情况1、情况2都不需要对原始载体图像进行改变,将其合并后统称为“规则a”,将情况2称为“规则b”,将“情况3”称为“规则c”。使用示例对其进行说明,部分嵌入示例如表7所示(注意:二进制位的序号从0开始,最低有效位是第0位,最高有效位是第7位)。表7嵌入示例根据上述归纳的结果,针对三种类型分别进行操作,具体为:步骤1:处理规则a在水印w中和原始载体图像r通道br中像素对应位置(像素点所在的坐标位置相同)上,水印w的信息为0,载体图像r通道br中需要参与运算(嵌入水印)的比特位(二进制值中的位的序号)的位值为0或1。符合该规则的br和w如表8和表9中深色背景部分表格所示,表8中这部分的元素不需要任何改变即完成了水印的嵌入。表8原始载体r通道br表9水印w可以直接将上述原始载体图像r通道br中的元素复制到含水印图像wb中,此时wb中的值为:步骤2:处理规则b在水印w中和原始载体图像br中的像素对应位置上,水印值为1,载体图像r通道br中参与运算的比特位的位值为0,这种情况符合规则b,需要将原始载体图像r通道br的对应像素加上2^n,n的值由位置矩阵cs所决定。符合该规则的水印w和原始载体图像图像r通道br如表10和表11中稍深色的背景部分所示。表10原始载体图像r通道br表11水印w对于这部分值,需要将载体图像r通道br内对应像素的值加上2^n,这里n是水印在载体图像r通道br对应像素上的二进制数中所要嵌入的比特位位置,通过嵌入位置矩阵cs得到,将cs对应位置设置为深色背景如表12所示。表12嵌入位置矩阵cs因此,按照嵌入位置矩阵,根据规则b,操作如下:●表10内原始载体图像r通道br中第1行第4列(这里行和列的序号从1开始)的值“11000001”需要嵌入水印的位置通过表12所示的嵌入位置矩阵cs而得到,cs中对应位置的值为5,因此需要将该值加上“2^5”,得到“11100001”;●表10内原始载体图像r通道br中第2行第3列的值“10100000”根据嵌入位置矩阵cs得到嵌入位置为第0位,因此需要将该值加上“2^0”,得到“10100001”;●表10内原始载体图像r通道br中第2行第4列的值“01110000”根据嵌入位置矩阵cs得到嵌入位置为第1位,因此需要将该值加上“2^1”,得到“01110010”;●表10内原始载体图像r通道br中第3行第1列的值“10100001”根据嵌入位置矩阵cs得到嵌入位置为第4位,因此需要将该值加上“2^4”,得到“10110001”;●表10内原始载体图像r通道br中第4行第3列的值“10011010”根据嵌入位置矩阵cs得到嵌入位置为第6位,因此需要将该值加上“2^6”,得到“11011010”;上述过程完成后,将得到的值复制到含水印图像wb中,此时wb中的值为:步骤3:处理规则c在水印w中和原始载体图像r通道br像素对应位置上,水印值为1、载体图像r通道br上参与运算的比特位的位值为1,符合这种情况的属于规则c,需要将原始载体图像r通道br对应像素的像素值将去2^n,n的值由位置矩阵cs决定。符合该规则的水印w和原始载体图像r通道br如表13和表14中白色背景部分所示。表13原始载体图像r通道br表14水印w对于这部分值,需要将载体图像r通道br内的值减去2^n,这里n是水印要嵌入的载体图像r通道br内对应像素的二进制数中的比特位位置,通过位置矩阵cs得到,将cs对应位置设置为白色背景如表15所示。表15嵌入位置矩阵cs因此,根据表15所示的嵌入位置矩阵cs,按照规则c,可以得到:●表13内原始载体图像r通道br中第1行第1列的值“11010001”需要减去“2^0”,得到“11010000”;●表13内原始载体图像r通道br中第1行第2列的值“11000101”需要减去“2^0”,得到“11000100”;●表13内原始载体图像r通道br中第1行第3列的值“10100011”需要减去“2^7”,得到“00100011”;●表13内原始载体图像r通道br中第2行第1列的值“01111101”需要减去“2^0”,得到“01111100”;●表13内原始载体图像r通道br中第2行第2列的值“11110111”需要减去“2^1”,得到“11110101”;●表13内原始载体图像r通道br中第3行第3列的值“11110011”需要减去“2^4”,得到“11100011”;●表13内原始载体图像r通道br中第4行第4列的值“01111111”需要减去“2^4”,得到“01101111”;上述过程完成后,将得到的值复制到含水印图像wb中,此时wb中的值为:含水印图像wb的十进制形式为:208196352251242451611141771372272033982218111用上述含水印图像wb作为含水印彩色图像的r通道,将其与从原始载体图像分离出的g通道rgb[1]、b通道rgb[2]合成含水印彩色图像。完成上述步骤后,将含水印图像保存。(5)显示图像对要显示的原始载体图像、含水印图像进行通道顺序的转换,以便于显示。分别显示原始载体图像、水印图像、含水印图像。嵌入过程的流程图如图1所示。2提取过程提取过程是完成“识别水印信息”的提取过程,具体步骤如下:(1)提取原始载体图像的r通道读入原始载体图像,获取图像大小m*n,将其进行通道分解,分为r通道、g通道、b通道。例如,有原始载体图像o,其大小为4*4,将其进行通道分解,分为r通道rgb[0],g通道rgb[1],b通道rgb[2]。提取到的r通道rgb[0]为:2091971631931252471601121611372432033982154127其对应的二进制值br为:11010001110001011010001111000001011111011111011110100000011100001010000110001001111100111100101100100111010100101001101001111111(2)提取含水印载体图像的r通道读入含水印载体图像,获取图像大小m*n,将其进行通道分解,分为r通道、g通道、b通道。例如,有含水印载体图像ow,其大小为4*4,将其进行通道分解,分为r通道owrgb[0],g通道owrgb[1],b通道owrgb[2]。提取到的r通道owrgb[0]为:208196352251242451611141771372272033982218111其对应的二进制值owbr为:11010000110001000010001111100001011111001111010110100001011100101011000110001001111000111100101100100111010100101101101001101111(3)提取位平面根据混沌系统的初始值生成大小为m*n的提取位置矩阵,根据该矩阵分别提取原始载体图像r通道和含水印载体图像r通道中每个像素的指定比特位上的二进制位值,将这些位值构成后续操作所需的位平面。如果含水印图像中像素的值为218,其对应的位置矩阵cs中的对应位置(像素具有相同的坐标)上值为3,则需要从该像素的二进制比特位的第3位(注意:序号从0开始,即最低有效位是第0位)提取出水印信息。具体如表14所示。表14提取水印示例含水印像素值二进制值对应位置的cs值提取的水印值2161101100031在程序具体实现时,通过将含水印像素的二进制值右移提取位置信息矩阵cs值指定的位数来获取左边的若干位信息nleft,使得水印信息处于最低有效位。该最低有效位即水印信息,可以通过将数值nleft对2取模而得到。例如,像素值216,其二进制位值为“11011000”,其对应的cs值为3,因此先将其右移3位得到“11011”,再将该值对2取模则得到要提取的水印数值“1”。提取规则的计算表达式为:(11011000>>3)%2例如:已知混沌系统的初始值为0.98,则可以生成4*4大小的提取位置信息矩阵cs为:0075010147415264根据cs确定的提取位,按照提取规则从原始载体图像r通道br内提取特定位平面,需要进行的运算为:(11010001>>0)%2(11000101>>0)%2(10100011>>7)%2(11000001>>5)%2(01111101>>0)%2(11110111>>1)%2(10100000>>0)%2(01110000>>1)%2(10100001>>4)%2(10001001>>7)%2(11110011>>4)%2(11001011>>1)%2(00100111>>5)%2(01010010>>2)%2(10011010>>6)%2(01111111>>4)%2由上式,可以得到从原始载体图像r通道br内提取的特定位平面brb为:1110110001111001根据cs确定的提取位,按照提取规则从含水印载体图像的r通道owbr内提取特定位平面,需要进行的运算为:(11010000>>0)%2(11000100>>0)%2(00100011>>7)%2(11100001>>5)%2(01111100>>0)%2(11110101>>1)%2(10100001>>0)%2(01110010>>1)%2(10110001>>4)%2(10001001>>7)%2(11100011>>4)%2(11001011>>1)%2(00100111>>5)%2(01010010>>2)%2(11011010>>6)%2(01101111>>4)%2由上式,按照提取规则从含水印载体图像的r通道owbr内提取的位平面owbrb为:0001001111011010【提示】通过将图像与一个内部值全部为2^n的mat型矩阵进行按位与操作,也可以将n所指定的不同位置上的信息提取出来。与提取特定位平面不同,这里计算所使用n值通过位置矩阵cs得到,针对不同的像素,n的值是不固定的。(4)提取水印信息将从原始载体图像和含水印载体图像中提取的指定比特位上的位值所组成的两个位平面进行异或操作得到“识别水印信息”。例如,将从原始载体图像r通道br内提取的位平面brb与含水印载体图像的r通道owbr内提取的位平面owbrb进行异或运算,得到“识别水印信息”的二进制值水印图像ws,具体为:1111111110100011(5)水印处理对“识别水印信息”进行阈值处理并显示。例如,将提取的二进制水印图像ws进行阈值处理,将其中的1调整为255。使用的语句为:threshold(ws,ws,0,255,thresh_binary)上述处理后,可以得到“识别水印信息”的二值水印图像wb为:2552552552552552552552552550255000255255调用自定义函数,将上述水印显示在主界面内。(6)显示含水印载体图像对含水印载体图像进行通道顺序转换,显示载体图像。提取过程的流程图如图2所示。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1