抗打印水印算法
以下是余下全文
一、算法的思想
主要思想:周期图像的自相关函数,水印信息实际上是角度
1.嵌入水印思想:将一个有周期性并且有角度的随机块嵌入到图像中。
举个例子:
现有28*7的随机矩阵,之后将此矩阵不断重复知道能够覆盖图像,之后按照一个角度(实际上就是我们的水印信息)将此随机矩阵旋转,最后嵌入到原图像中。
这时候,可能有人会问,这么简单粗暴的将水印嵌入图像中,不是将原来图像的信息给覆盖了吗?不要急,我们之后会提到如何解决此问题(主要引入一个JND概念)。
2.提取水印的思想:将加水印图像的噪声提取出来,之后将“噪声”做自相关,最后通过hough直线检测就能将我们的角度提取出来。
注意点:
一开始读论文的时候,我一直不能理解为什么将嵌入水印的图像自相关之后就能得到结果,此时加水印的图像不是周期图像。
后来我才明白其实可以简单理解为加入的水印其实就是噪声,我们其实提取的是加水印图像的噪声。
二、算法的详细步骤
1.嵌入水印(随机块旋转指定角度,嵌入图像)
1) RGB图像转化为YCbCr图像,之后提取Y分量,之后都是对Y分量操作的。
2) 预处理,为了破坏原图像存在的周期性。
3) 提取图像的JND,JND可以简单理解为像素点能让人眼识别不出最大的阈值。
4) 将图像分成九块,八块嵌入水印信息,一块是参考块。
5) 随机产生26个随机{0,1}集合,之后进行汉明码编码产生32位水印信息。并且以四位计算出一个角度,一共有八个角度。
6) 随机产生28*7随机块,不断重复随机块,直到能覆盖图像块,之后按照步骤(5)产生的角度进行旋转。
7) 旋转之后的随机块,同时结合JND,嵌入到原图像块中。