发明内容
本发明“一种脆弱型水印技术应用于数字图象保真的方法”的目的在于:公开一种在图象中嵌入和提取数据的图象内容保真的计算机处理方法。这种方法通过数字摘要算法计算图象内容的数字特征值,然后把数字特征值作为数字水印信息按照易损型模式嵌入到图象本身中去,所谓易损型模式,就是指图像受到任何处理攻击后,水印信息都会改变。对于嵌入数据前后的图象,我们用肉眼不能分辨出他们的区别。用这种技术制作的数字水印,对图象非常微小的改动都敏感,可以检测出图象1bit的改动。因此可以很好的用于图象内容真实完整性的认证,用做内容保真的目的。
为了达到上述目的,本发明是这样进行的。通过数字摘要算法提取图象内容的数字特征值,然后把数字特征值作为数字水印信息按照易损型模式嵌入到图象本身中去。为了防止水印信息的嵌入影响验证时重新计算的数字特征值,我们把图象中的信息分为两部分,一部分用做生成图象内容的数字特征值,一部分用来隐藏水印信息。当图象被改动后,要么是图象的数字特征值变化了,要么是隐藏的水印信息变化了。我们比较这二者,如果它们相同,说明图象是真实没有被窜改的,反之就说明图象被改动过了。
本发明的方法包括嵌入摘要水印的方法和提取摘要水印的方法。嵌入摘要水印的方法,包括二值图象摘要水印的嵌入,8bit灰度图象摘要水印的嵌入、8bit彩色图象摘要水印的嵌入、24bit彩色图象摘要水印的嵌入四个子模块。根据要处理的图象的不同,我们经过一定的判断,将进入某一个模块进行摘要水印的嵌入操作,最后将得到含水印的图象。提取摘要水印的方法,包括二值图象摘要水印的提取,8bit灰度图象摘要水印的提取、8bit彩色图象摘要水印的提取、24bit彩色图象摘要水印的提取四个子模块。根据要处理的图象的不同,我们经过一定的判断,将进入某一个模块进行摘要水印的提取操作,最后得出判断结果,完成对图象真实完整性的验证工作。现详细说明如下:
嵌入摘要水印的方法包括下面十四个步骤:
第一步是先判断图象的格式信息:
如果图象是1bit图像,进行第二步到第六步操作;
如果图象是8bit图像,判断是否彩色图像;是,进行第十、十一步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作,再将得到的1bit含水印图像转化为8bit的图像;不是,进行第七步到第九步操作;
如果是24bit图像,判断是否彩色图像;是,进行第十二到第十四步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作,再将得到的1bit水印图像转化为24bit的图像;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作,再将得到的8bit灰度水印图像转化为24bit的图像;
得到水印图象,结束程序。
第二步是确定二值图象隐藏摘要的区域,区域是包含了所有黑点的最小矩形区域,以后的处理都是在这个区域内进行的;
第三步是将二值图像转换为一个一维数组,若图像中某个象素为黑点,则相应的数组元素值为1(或0),若为白点,则相应的数组元素值为0(或1);
第四步是统计图像中符合中心可翻模式的网格的个数。如果个数不小于欲嵌入数据的位数的话,则选择在这些点中重复的嵌入摘要数据;如果小于欲嵌入数据的位数的话,再计算除去定义的16个模板外的网格的个数。如果除去定义的16个模板外的网格的个数不小于欲嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来嵌入数据;如果小于的话,则计算除去定义的4个模板外的网格的个数。如果除去定义的4个模板外的网格的个数不小于欲嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来嵌入数据;如果小于的话,结束程序,返回错误信息;
第五步是根据上面嵌入点的选择,把选择的嵌入数据点相应的一维数组中的元素值全部置1(或0);然后把得到的一维数组用数字摘要算法进行哈希(Hash)变换,得到唯一的摘要信息;最后对得到的唯一的摘要值利用密钥进行置乱;
第六步是将置乱后的摘要值嵌入到刚才选择的嵌入信息点中。如果摘要的数据位为1,令相应的嵌入数据点为黑点(或白点),反之为白点(或黑点)。
第七步是判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;
第八步是将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后-位置0(或1)后的结果;然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后把得到的唯一的摘要值利用密钥进行置乱;
第九步是将得到的置乱后的摘要值重复的嵌入每个象素的LSB。
第十步是将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱;
第十一步是将置乱后的摘要值重复的嵌入调色板256种颜色信息中蓝色的LSB。
第十二步是判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;
第十三步是将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值;然后将一维数组中存储蓝色亮度值的元素的LSB置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱:
第十四步是将得到的置乱后的摘要值重复的嵌入每个象素蓝色亮度值的LSB。
提取摘要水印的方法,可以看成与嵌入摘要水印的步骤相反的操作,分为以下十五个步骤进行:
第一步是先判断图象的格式信息:
如果图象是1bit图像,进行第二步到第六步操作;
如果是8bit图像,判断是否彩色图像;是,进行第十到第十二步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作;不是,进行第七步到第九步操作;
如果是24bit图像,判断是否彩色图像;是,进行第十三步到第十五步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作;
得出判断结果,结束程序。
第二步是首先确定隐藏数据的区域,区域是包含了所有黑点的最小矩形区域,以后的处理都是在这个区域内进行的;如果发现图像是全白区域,即所有点都是白点的话,那么程序结束,直接返回图像被窜改的信息;
第三步是将二值图像转换为一个一维数组,若图像中为黑点,则相应的数组元素值为1(或0),若为白点,则相应的数组元素值为0(或1);
第四步是统计图像中符合中心可翻模式的网格的个数。如果个数不小于嵌入数据的位数的话,则选择在这些点中提取嵌入数据;如果个数小于嵌入数据的位数的话,再计算除去定定的16个模板外的网格的个数。如果除去定义的16个模板外的网格的个数不小于嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来提取嵌入数据;如果小于的话,则计算除去定义的4个模板外的网格的个数。如果除去定义的4个模板外的网格的个数不小于嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来提取嵌入数据;如果小于的话,结束程序,返回错误码;
第五步是根据上面提取数据点的选择,把选择的隐藏数据点相应的一维数组中的元素值全部置1(或0);然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;再对得到的摘要信息利用密钥进行置乱;
第六步是从刚才选择的提取数据点提取嵌入数据,将提取的数据和得到的置乱摘要相比较,如果相同,说明图像是真实的,否则,说明图像被窜改过。
第七步是判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;
第八步是将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后一位置0后的结果;然后提取每个象素的LSB得到水印信息;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息:再对得到的摘要信息利用密钥进行置乱;
第九步是比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。
第十步是将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息最后对得到的摘要值利用密钥进行置乱;
第十一步是从图像的调色板256种颜色信息中蓝色的LSB提取隐藏的水印信息;
第十二步是比较置乱后的128位摘要和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。
第十三步是判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;
第十四步是将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值,然后从每个象素蓝色亮度值的LSB提取隐藏的水印信息;再将一维数组中蓝色亮度值的LSB置0;最后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;并且对得到的摘要信息利用密钥进行置乱;
第十五步是比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。
本发明“一种脆弱型水印技术应用于数字图象保真的方法”的优点如下:
1.由于本发明采用数字摘要算法计算图象内容的摘要值,根据数字摘要算法的唯一性,保证了计算出的图象内容的摘要值是唯一的。我们把计算出的摘要值重新嵌入到图象中去,这就保证了图象任何微小的改动我们都能够检测出来。为图象真实完整性的认证提供了很好的保证。当验证的时候,提取图象中隐藏的水印信息并且重新计算图象内容的摘要值,比较二者,得出验证结论。
2.本发明把图象中的信息分为两部分,一部分用做生成图象内容的数字特征值,一部分用来隐藏水印信息,这就解决了水印的嵌入会影响图象内容的数字特征值的问题。当图象被改动后,要么是图象的数字特征值变化了,要么是隐藏的水印信息变化了。我们比较这二者,如果它们相同,说明图象是真实没有被窜改的,反之就说明图象被改动过了。
3.本发明在嵌入摘要数据时,根据人类的视觉特性,成功的将数据信息隐藏在图象视觉最不敏感的区域。保证嵌入水印前后的图象视觉差别最小。
4.本发明还对欲嵌入的图象内容摘要数据利用密钥进行了置乱操作,在一定程度上提高了算法的保密性和安全性。
具体实施方式
下面结合附图对本发明作进一步的详细描述,并请参阅附图。图1中嵌入摘要水印的操作可以分成十四个步骤,提取摘要水印的操作可以看成相反的过程,共十五个步骤,见表1和表2。
嵌入摘要水印方法的步骤如下:首先,通过主控程序,控制图象应进入哪一个处理模块,即,判断图象的格式信息:如果图象是1bit图像,进行第二步到第六步操作;如果图象是8bit图像,判断是否彩色图像;是,进行第十、十一步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作,再将得到的1bit含水印图像转化为8bit的图像;不是,进行第七步到第九步操作;如果是24bit图像,判断是否彩色图像;是,进行第十二到第十四步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作,再将得到的1bit水印图像转化为24bit的图像;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作,再将得到的8bit灰度水印图像转化为24bit的图像;得到水印图象,结束程序;第二步,为了防止无信息的图象白边区域影响算法的验证结果,需要确定二值图象隐藏摘要的区域,区域是包含了所有黑点的最小矩形区域,以后的处理都是在这个区域内进行的;第三步,为数字摘要算法提供输入项,以便得到图象内容的摘要值,需要将二值图像转换为一个一维数组,若图像中某个象素为黑点,则相应的数组元素值为1,若为白点,则相应的数组元素值为0;第四步,为了确定欲嵌入数据点的位置,需要根据二值图像脆弱水印的算法选取一定数目的点来嵌入数据;第五步,为了得到图象内容的摘要信息,需要根据上面嵌入点的选择,把选择的嵌入数据点相应的一维数组中的元素值全部置1;然后把得到的一维数组用数字摘要算法进行哈希(Hash)变换,得到唯一的摘要信息;最后对得到的唯一的摘要值利用密钥进行置乱;第六步,进行摘要信息的嵌入,将置乱后的摘要值嵌入到刚才选择的嵌入信息点中。如果摘要的数据位为1,令相应的嵌入数据点为黑点,反之为白点;第七步,判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码,从而判断8bit灰度图象能否隐藏摘要信息;第八步,为了得到8bit灰度图象内容的摘要信息,需要将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后一位置0后的结果;然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后把得到的唯一的摘要值利用密钥进行置乱;第九步,进行数据的嵌入,将得到的置乱后的摘要值重复的嵌入每个象素的LSB;第十步,为了得到8bit彩色图形的摘要信息,需要将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱;第十一步,为了将摘要数据嵌入到图象的调色板中,需要将置乱后的摘要值重复的嵌入调色板256种颜色信息中蓝色的LSB;第十二步,判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;从而判断24bit彩色图象能否隐藏摘要信息;第十三步,为了得到24bit彩色图象的摘要数据,需要将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值;然后将一维数组中存储蓝色亮度值的元素的LSB置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱;第十四步,通过将得到的置乱后的摘要值重复的嵌入每个象素蓝色亮度值的LSB,实现图象的摘要信息的嵌入。
提取摘要水印方法的步骤如下:第一步,执行主控程序,控制图象应该进入哪一个处理模块,即,判断图象的格式信息:如果图象是1bit图像,进行第二步到第六步操作;如果是8bit图像,判断是否彩色图像;是,进行第十步到第十二步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作;不是,进行第七步到第九步操作;如果是24bit图像,判断是否彩色图像;是,进行第十三步到第十五步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作;得出判断结果,结束程序;第二步,为了防止无信息的图象白边区域影响算法的验证结果,需要确定隐藏数据的区域,区域是包含了所有黑店的最小矩形区域,以后的处理都是在这个区域内进行的;如果发现图象是全白区域,即所有点是白点的话,那么程序结束,直接返回图象被窜改的信息;第三步,将二值图像转换为一个一维数组,若图像中为黑点,则相应的数组元素值为1,若为白点,则相应的数组元素值为0;从而为数字摘要算法提供输入项,以便得到图象内容的摘要值;第四步,根据二值图像脆弱水印的算法选取一定数目的点来提取水印信息,确定欲嵌入数据的点的位置;第五步,根据上面提取数据点的选择,把选择的隐藏数据点相应的一维数组中的元素值全部置1;然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;再对得到的摘要信息利用密钥进行置乱;从而得到二值图象内容的摘要值;第六步,为了得到隐藏在图象中的摘要值,比对二者,得出验证结论,需要从刚才选择的提取数据点提取嵌入数据,将提取的数据和得到的置乱摘要相比较,如果相同,说明图像是真实的,否则,说明图像被窜改过;第七步,判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;从而判断8bit灰度图象能否隐藏摘要信息;第八步,为了得到图象内容的摘要信息和隐藏的水印摘要信息,需要将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后一位置0后的结果;然后提取每个象素的LSB得到水印信息;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;再对得到的摘要信息利用密钥进行置乱;第九步,为了比对二者,从而得出验证结论,需要比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过;第十步,为了得到8bit彩色图象内容的摘要信息,需要将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱;第十一步,从图像的调色板256种颜色信息中蓝色的LSB提取隐藏的水印信息,从而得到隐藏在调色板中的水印信息;第十二步,为了比对二者,得出验证结论,需要比较置乱后的128位摘要和提取的水印信息;如果相同,说明图象是真实的,否则,说明图象被窜改过;第十三步,判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码;从而判断24bit彩色图象能否隐藏摘要信息;第十四步,为了得到24bit彩色图象内容的摘要信息,得到隐藏在水印中的摘要信息,需要将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值,然后从每个象素蓝色亮度值的LSB提取隐藏的水印信息;再将一维数组中蓝色亮度值的LSB置0;最后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;并且对得到的摘要信息利用密钥进行置乱;第十五步,比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过;即比对二者,得出验证结论。
具体流程,参见附表1和附表2。
表1嵌入摘要水印的操作步骤
步骤 |
操作 |
作用 |
1 |
判断图象的格式信息:如果图象是1bit图像,进行第二步到第六步操作;如果图象是8bit图像,判断是否彩色图像;是,进行第十、十一步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作,再将得到的1bit含水印图像转化为8bit的图像;不是,进行第七步到第九步操作;如果是24bit图像,判断是否彩色图像;是,进行第十二到第十四步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作,再将得到的1bit水印图像转化为24bit的图像;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作,再将得到的8bit灰度水印图像转化为24bit的图像;得到水印图象,结束程序。 |
主控程序,控制图象应进入哪一个处理模块 |
2 |
确定二值图象隐藏摘要的区域,区域是包含了所有黑点的最小矩形区域,以后的处理都是在这个区域内进行的; |
防止无信息的图象白边区域影响算法的验证结果 |
3 |
将二值图像转换为一个一维数组,若图像中某个象素为黑点,则相应的数组元素值为1,若为白点,则相应的数组元素值为0; |
为数字摘要算法提供输入项,以便得到图象内容的摘要值 |
4 |
统计图像中符合中心可翻模式的网格的个数。如果个数不小于欲嵌入数据的位数的话,则选择在这些点中重复的嵌入摘要数据;如果个数小于欲嵌入数据的位数的话,再计算除去定义的16个模板外的网格的个数。如果除去定义的16个模板外的网格的个数不小于欲嵌入 |
确定欲嵌入数据点的位置 |
|
数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来嵌入数据;如果小于的话,则计算除去定义的4个模板外的网格的个数。如果除去定义的4个模板外的网格的个数不小于欲嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来嵌入数据;如果小于的话,结束程序,返回错误信息; |
|
5 |
根据上面嵌入点的选择,把选择的嵌入数据点相应的一维数组中的元素值全部置1;然后把得到的一维数组用数字摘要算法进行哈希(Hash)变换,得到唯一的摘要信息;最后对得到的唯一的摘要值利用密钥进行置乱; |
得到图象内容的摘要信息 |
6 |
将置乱后的摘要值嵌入到刚才选择的嵌入信息点中。如果摘要的数据位为1,令相应的嵌入数据点为黑点,反之为白点。 |
嵌入摘要信息 |
7 |
判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码; |
判断8bit灰度图象能否隐藏摘要信息 |
8 |
将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后一位置0后的结果;然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后把得到的唯一的摘要值利用密钥进行置乱; |
得到8bit灰度图象内容的摘要信息 |
9 |
将得到的置乱后的摘要值重复的嵌入每个象素的LSB。 |
嵌入数据 |
10 |
将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱; |
得到8bit彩色图象的摘要信息 |
11 |
将置乱后的摘要值重复的嵌入调色板256种颜色信息中 |
将摘要数据嵌入到 |
|
蓝色的LSB。 |
图象的调色板中 |
12 |
判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码; |
判断24bit彩色图象能否隐藏摘要信息 |
13 |
将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值;然后将一维数组中存储蓝色亮度值的元素的LSB置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱; |
得到24bit彩色图象的摘要数据 |
14 |
将得到的置乱后的摘要值重复的嵌入每个象素蓝色亮度值的LSB。 |
嵌入图象的摘要信息 |
表2提取摘要水印的操作步骤
步骤 |
操作 |
作用 |
1 |
判断图象的格式信息:如果图象是1bit图像,进行第二步到第六步操作;如果是8bit图像,判断是否彩色图像;是,进行第十步到第十二步操作;不是,再判断是否是由1bit图像转换而来;是,还原为1bit图像,进行第二步到第六步操作;不是,进行第七步到第九步操作;如果是24bit图像,判断是否彩色图像;是,进行第十三步到第十五步操作;不是,判断是由1bit图像还是由8bit灰度图像转换而来;若是由1bit图像转化来的,将图像还原为1bit图像,然后进行第二步到第六步操作;若是由8bit灰度图像转化来的,将图像还原为8bit灰度图像,然后进行第七步到第九步操作;得出判断结果,结束程序。 |
主控程序,控制图象应该进入哪一个处理模块 |
2 |
确定隐藏数据的区域,区域是包含了所有黑点的最小矩形区域,以后的处理都是在这个区域内进行的; |
防止无信息的图象白边区域影响算法的验证结果 |
|
如果发现图像是全白区域,即所有点是白点的话,那么程序结束,直接返回图像被窜改的信息; |
|
3 |
将二值图像转换为一个一维数组,若图像中为黑点,则相应的数组元素值为1,若为白点,则相应的数组元素值为0; |
为数字摘要算法提供输入项,以便得到图象内容的摘要值 |
4 |
统计图像中符合中心可翻模式的网格的个数。如果个数不小于嵌入数据的位数的话,则选择在这些点中提取嵌入数据;如果个数小于嵌入数据的位数的话,再计算除去定义的16个模板外的网格的个数。如果除去定义的16个模板外的网格的个数不小于嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来提取嵌入数据;如果小于的话,则计算除去定义的4个模板外的网格的个数。如果除去定义的4个模板外的网格的个数不小于嵌入数据的位数的话,则在这些网格中按照扫描顺序以相同的间隔选取相应数目的点来提取嵌入数据;如果小于的话,结束程序,返回错误码; |
确定欲嵌入数据的点的位置 |
5 |
根据上面提取数据点的选择,把选择的隐藏数据点相应的一维数组中的元素值全部置1;然后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;再对得到的摘要信息利用密钥进行置乱; |
得到二值图象内容的摘要值 |
6 |
从刚才选择的提取数据点提取嵌入数据,将提取的数据和得到的置乱摘要相比较,如果相同,说明图像是真实的,否则,说明图像被窜改过。 |
得到隐藏在图象中的摘要值,比对二者,得出验证结论 |
7 |
判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码; |
判断8bit灰度图象能否隐藏摘要信息 |
8 |
将原图像转换为一个一维数组,每个数组元素的值是把对应的图像象素的象素值最后一位置0后的结 |
得到图象内容的摘要信息和隐藏的水印摘要信息 |
|
果;然后提取每个象素的LSB得到水印信息;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;再对得到的摘要信息利用密钥进行置乱; |
|
9 |
比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。 |
比对二者,得出验证结论 |
10 |
将原图像转换为一个一维数组,数组的前一部分每个数组元素的值是对应的图像象素的象素值,之后数组还有768个元素,存储了图像调色板256种颜色信息的RGB值,其中把B值的LSB位置0;之后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;最后对得到的摘要值利用密钥进行置乱; |
得到8bit彩色图象内容的摘要信息 |
11 |
从图像的调色板256种颜色信息中蓝色的LSB提取隐藏的水印信息; |
得到隐藏在调色板中的水印信息 |
12 |
比较置乱后的128位摘要和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。 |
比对二者,得出验证结论 |
13 |
判断图像有没有足够的象素点嵌入摘要信息,如果没有,结束程序,返回错误码; |
判断24bit彩色图象能否隐藏摘要信息 |
14 |
将图像转换为一个一维数组,每个图像的蓝色、绿色、红色的亮度值分别成为3个数组元素的元素值,然后从每个象素蓝色亮度值的LSB提取隐藏的水印信息;再将一维数组中蓝色亮度值的LSB置0;最后把得到的一维数组用数字摘要算法进行哈希变换,得到唯一的摘要信息;并且对得到的摘要信息利用密钥进行置乱; |
得到24bit彩色图象内容的摘要信息,得到隐藏在水印中的摘要信息 |
15 |
比较置乱后的摘要信息和提取的水印信息。如果相同,说明图像是真实的,否则,说明图像被窜改过。 |
比对二者,得出验证结论 |
请看附图中的图2-1和图2-2。其中图2-1是一幅1bit的二值漫画图象,内容是埃尔热的《丁丁历险记》。图2-2是图2-1中所示图象嵌入摘要水印后的图象。计算图象内容摘要的数字摘要算法选取的是MD5算法,通过MD5算法,可以得到唯一的128位摘要数据,用16进制表示,为“436740F130AA64800C4C0C735950E5BB”。我们就是把这128位摘要数据隐藏在图象中的。
图3-1和图3-2是8bit灰度图象的示例。图3-1是一幅普通的8bit灰度图象,图3-2是图3-1中所示图象嵌入摘要水印后的图象。计算图象内容摘要的数字摘要算法选取的是MD5算法,通过MD5算法,可以得到唯一的128位摘要数据,用16进制表示,为“5B71C6905978BDA59619B7F45B4F399D”。我们就是把这128位摘要数据隐藏在图象中的。
图4-1和图4-2是8bit彩色图象的示例。图4-1是一幅普通的8bit彩色图象,图4-2是图4-1中所示图象嵌入摘要水印后的图象。计算图象内容摘要的数字摘要算法选取的是MD5算法,通过MD5算法,可以得到唯一的128位摘要数据,用16进制表示,为“8EDF42F48035CD201EA4B2EF347B53A9”。我们就是把这128位摘要数据隐藏在图象的调色板中的。
图5-1和图5-2是24bit彩色图象的示例。图5-1是一幅普通的24bit彩色图象,图5-2是图5-1中所示图象嵌入摘要水印后的图象。计算图象内容摘要的数字摘要算法选取的是MD5算法,通过MD5算法,可以得到唯一的128位摘要数据,用16进制表示,为“9A975353A713BD35A49D6A30DBEFE488”。我们就是把这128位摘要数据隐藏在图象中的。
附图中图6-1到6-5是图象保真的一个应用实例。图6-1是一幅普通的24bit彩色图象。图6-2是图6-1中所示图象嵌入摘要水印后的图象。计算图象内容摘要的数字摘要算法选取的是MD5算法,通过MD5算法,可以得到唯一的128位摘要数据,用16进制表示,为“41C9E442EF33C028633576F5E2AF2830”。我们就是把这128位摘要数据隐藏在图象中的。图6-3是验证图6-2的结果,验证的时候,一方面利用MD5算法重新计算图象的内容摘要,用16进制表示,为“41C9E442EF33C028633576F5E2AF2830”,一方面提取出隐藏在图象中的水印信息,用16进制表示,为“41C9E442EF33C028633576F5E2AF2830”,比较二者,值相同,说明图象是真实没有被修改过的。图6-4是窜改图6-2以后的图象,我们把原来图片右下角的“1997630”改成了“1998530”。我们知道,数字图象的编辑修改是非常简便易行,容易实现的。所以它的真实完整性是一个人们十分关心的问题。图6-5是验证图6-4的结果。验证的时候,一方面利用MD5算法重新计算图象的内容摘要,用16进制表示,为“008015E8F2CA93D4536D0457226E2619”,一方面提取出隐藏在图象中的水印信息,用16进制表示,为“E5442CC3B4281EAAAAFBAD00BECAB7C9”,比较二者,值不相同,说明图象是已经被修改过了,从而完成了图象真实完整性的认证。
图7是二值图像中心象素可翻的合理模式集。如果图像中某个3×3的网格是这个集合中的某一个模式,那么这个网格的中心象素就是可以嵌入数据的点。
图8是16个定义的不可嵌入数据点的模板。如果符合中心象素可翻的合理模式的点的个数不够嵌入数据的话,就试图在除去这16个定义的不可嵌入数据点的模板外寻找可嵌入数据点。
图9是4个定义的不可嵌入数据点的模板。如果除去16个定义的不可嵌入数据点的模板的点的个数不够嵌入数据的话,就试图在除去这4个定义的不可嵌入数据点的模板外寻找可嵌入数据点。
至此,本发明中已经描述了用于嵌入脆弱型数字水印从而实现数字图象保真的方法,和从数字图象中提取摘要水印,以验证图象是否经过修改的方法。对本领域普通技术人员来说,在不脱离本发明所附权利要求所限定的精神和范围的情况下,可以作出各种改变和变形。