1.一种基于混沌的随机位非盲水印实现方法,其特征是:通过混沌系统计算不同像素位的嵌入位置来在载体图像内嵌入水印信息;在嵌入时,将水印信息与载体图像中对应位置(像素点的坐标相同)上二进制像素值的特定比特位上的位值进行异或运算,将运算结果嵌入到载体图像内参与运算的比特位上;在提取时,分别提取含水印载体图像与原始载体图像对应位置上二进制像素值相同的特定比特位上的值,并将二者进行异或运算,以提取出原始水印信息:1嵌入过程嵌入过程将原始水印信息与载体图像进行运算后再嵌入到载体图像内。(1)原始载体图像处理读入原始载体图像,获取图像大小,将其进行通道分解,分为R通道、G通道、B通道。例如,有原始载体图像O,其大小为4*4,将其进行通道分解,分为R通道rgb[0],G通道rgb[1],B通道rgb[2]。提取到的R通道rgb[0]为:
209197163193
125247160112
161137243203
3982154127
其对应的二进制值BR为:
11010001110001011010001111000001
01111101111101111010000001110000
10100001100010011111001111001011
00100111010100101001101001111111
(2)水印图像处理读取二值水印图像,对二值水印图像进行阈值处理得到二进制水印图像。例如,有二值水印图像WO为:
255255255255
255255255255
25502550
00255255
将二值水印图像WO中值为255的像素点处理为1,则得到该二值水印图像WO对应的二进制水印图像W为:
(3)确定运算位置在随机位盲水印中,需要从每一个像素的二进制值中随机选取一个比特位,将该比特位的位值与水印进行异或计算,并将计算结果嵌入到所选取的比特位上,即用运算结果替换该比特位上原有的位值。本发明专利根据混沌系统确定嵌入的具体比特位位置信息。例如,已知混沌系统的初始值为0.98,则可以生成与原始载体图像4*4等大小的嵌入位置矩阵CS为:
根据混沌系统初始值为0.98时所建立的位置矩阵CS决定在原始载体二值图像BR内每个像素具体参与运算的比特位位置,则BR中参与运算的比特位信息如下划线所示为:
![]()
![]()
(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”,得到“1110 0001”;●表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的十进制形式为:
20819635225
124245161114
177137227203
3982218111
用上述含水印图像WB作为含水印彩色图像的R通道,将其与从原始载体图像分离出的G通道rgb[1]、B通道rgb[2]合成含水印彩色图像。完成上述步骤后,将含水印图像保存。(5)显示图像对要显示的原始载体图像、含水印图像进行通道顺序的转换,以便于显示。分别显示原始载体图像、水印图像、含水印图像。2提取过程提取过程是完成“识别水印信息”的提取过程,具体步骤如下:(1)提取原始载体图像的R通道读入原始载体图像,获取图像大小M*N,将其进行通道分解,分为R通道、G通道、B通道。例如,有原始载体图像O,其大小为4*4,将其进行通道分解,分为R通道rgb[0],G通道rgb[1],B通道rgb[2]。提取到的R通道rgb[0]为:
209197163193
125247160112
161137243203
3982154127
其对应的二进制值BR为:
11010001110001011010001111000001
01111101111101111010000001110000
10100001100010011111001111001011
00100111010100101001101001111111
(2)提取含水印载体图像的R通道读入含水印载体图像,获取图像大小M*N,将其进行通道分解,分为R通道、G通道、B通道。例如,有含水印载体图像OW,其大小为4*4,将其进行通道分解,分为R通道OWrgb[0],G通道OWrgb[1],B通道OWrgb[2]。提取到的R通道OWrgb[0]为:
20819635225
124245161114
177137227203
3982218111
其对应的二进制值OWBR为:
11010000110001000010001111100001
01111100111101011010000101110010
10110001100010011110001111001011
00100111010100101101101001101111
(3)提取位平面根据混沌系统的初始值生成大小为M*N的提取位置矩阵,根据该矩阵分别提取原始载体图像R通道和含水印载体图像R通道中每个像素的指定比特位上的二进制位值,将这些位值构成后续操作所需的位平面。如果含水印图像中像素的值为218,其对应的位置矩阵CS中的对应位置(像素具有相同的坐标)上值为3,则需要从该像素的二进制比特位的第3位(注意:序号从0开始,即最低有效位是第0位)提取出水印信息。具体如表14所示。表14 提取水印示例
![]()
在程序具体实现时,通过将含水印像素的二进制值右移提取位置信息矩阵CS值指定的位数来获取左边的若干位信息Nleft,使得水印信息处于最低有效位。该最低有效位即水印信息,可以通过将数值Nleft对2取模而得到。例如,像素值216,其二进制位值为“11011000”,其对应的CS值为3,因此先将其右移3位得到“11011”,再将该值对2取模则得到要提取的水印数值“1”。提取规则的计算表达式为:(11011000>>3)%2例如:已知混沌系统的初始值为0.98,则可以生成4*4大小的提取位置信息矩阵CS为:
![]()
![]()
根据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为:
根据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为:
【提示】通过将图像与一个内部值全部为2^n的Mat型矩阵进行按位与操作,也可以将n所指定的不同位置上的信息提取出来。与提取特定位平面不同,这里计算所使用n值通过位置矩阵CS得到,针对不同的像素,n的值是不固定的。(4)提取水印信息将从原始载体图像和含水印载体图像中提取的指定比特位上的位值所组成的两个位平面进行异或操作得到“识别水印信息”。例如,将从原始载体图像R通道BR内提取的位平面BRB与含水印载体图像的R通道OWBR内提取的位平面OWBRB进行异或运算,得到“识别水印信息”的二进制值水印图像WS,具体为:
(5)水印处理对“识别水印信息”进行阈值处理并显示。例如,将提取的二进制水印图像WS进行阈值处理,将其中的1调整为255。使用的语句为:threshold(WS,WS,0,255,THRESH_BINARY)上述处理后,可以得到“识别水印信息”的二值水印图像WB为:
255255255255
255255255255
25502550
00255255
调用自定义函数,将上述水印显示在主界面内。(6)显示含水印载体图像对含水印载体图像进行通道顺序转换,显示载体图像。