最近在研究多个水印图像的嵌入,和大家分享学到的一个小知识点。
正交化
大家不要想的太复杂,其实就是我们初中学的两个向量内积为0,更通俗一点,就是两个向量垂直。
单位化
使得矩阵成为单位矩阵。个人认为这一步在图像处理中可以达到数据降维,减少计算复杂度的作用。
基向量
用来构成向量平面,以二维向量平面为例,可以形成一个二维坐标系。
施密特正交化
为啥要学这个?
以频域水印嵌入为例,我们在嵌入水印的时候可以通过直接修改频域系数来达到。
BUT!这种直接嵌入的方法很EASY,换言之,鲁棒性很差!很难抵抗攻击,所以提出基于块间相关性嵌入水印,这个有相关论文(2014的那篇最有代表性,其次是2016的那篇),感兴趣可以去阅读一下!
这种基于块间相关性进行水印嵌入的方法,简单来说就是计算两个相邻块之间的差值,使其在一定的差值域中,在提取的过程中,通过再次计算差值,判断差值所在区域段,直接提取出水印。
这种方法最大的好处是当带水印的图像遭受到攻击时,相邻块之间的变化不会有很大差异(简单理解,可以把两个块想象为两辆小汽车,二者都在行驶,但是由于速度几乎一样,所以可以说二者保持相对静止,车距就没有改变!回到图像块上,行驶就是受到的攻击,车距就是差值!)
那么大家会注意到,这种方法的问题在于,如果要嵌入两个及以上的水印,势必前一个水印的修改值会影响后一个,所以我们需要做的就是让这些水印的嵌入互不干扰!
(图像是一个二维矩阵,我们可以设定一个直角坐标系,原点分别指向矩阵中的每一个元素,这样就形成了很多向量。当然,这些矩阵我们要怎么比较大小呢?所以就需要将他们放在同一个向量上进行比较!简单选择!x轴就可以!而每个向量在x轴的大小就是他们在x轴上的投影!方向都是一样的,不用纠结!)帮助大家理解,下面回到施密特!
看一个简单的例子:
其中,step1是完成正交化,step2是完成单位化。
目的在于求出b1,b2,这两个向量在向量平面中是两两垂直的,也就是内积为0,互不影响。
ps: b1=a1:因为要使得a1和a2相互垂直,所以需要固定其中一个向量,就是这里的a1,然后找a2在a1上的投影。
ok, if you understand this, let me give you something harder!
刚才是两个向量,那三个向量该如何理解呢?
其实很简单,刚才是a2需要和a1垂直,那么加一个a3,就是要a3和前面的两个向量分别垂直,就可以,formula如下:
is that easy?!!
我们脑海中保持一个概念,就是通过计算,得到新的一组两两相交的向量。
欢迎大家讨论!