变换域隐藏

来源:互联网 发布:黑白照片的魅力 知乎 编辑:程序博客网 时间:2024/06/07 04:01

        在时空域的最低比特位替换方法,容易被噪声掩盖,在有损压缩后也容易丢失。

        于是尝试把信息隐藏在载体的重要位置,这样只要载体不被破坏到无法使用的程度,隐藏的信息都能被保留,考虑在变换域隐藏信息。

常用的变换域方法:离散余弦变换(DCT)   ,  离散小波变换(DWT)   , 离散傅里叶变换(DFT)  等。

        图像压缩标准(JPEG)的核心 其实是--------二维DCT变换

        在DCT变换域中隐藏信息,可以有效的抵抗有损压缩,通过DCT变换可以将一个矩阵(或2维数组)的能量集中在左上角的少数几个系数上。

用f表示像素值的数组,f(i,j)表示第i行第j列的值,进过DCT变换后定义一个新的数组F(u,v)表示第u行第v列的值。

                                                                                              N-1  N-1       

       二维DCT变换的公式(N x N矩阵):F(u,v)=C(u)C(v)  ∑    ∑ f(i,j) cos[(i+0.5)xπ xu /N ] cos[(j+0.5) xπx v/N]

                                                                                              i=0    j=0

                                                                                 N-1    N-1

       二维DCT逆变换的公式(N x N 矩阵) :     f(i,j)=   ∑    ∑ C(u)C(v)F(u,v)cos[(i+0.5)x π x u /N ] cos[(j+0.5) x π x v /N]

                                                                                 u=0    v=0

                            sqrt(1/N)  x=0

      其中C(x)={

                            sqrt(2/N) x!=0 


       f(i,j)经过DCT变换后得到F(u,v) ,F(0,0)为直流系数,称DC系数,其他的为交流系数,称AC系数

例    把原始数据的每一项都先减去128再进行的计算,图像的数据值必须减去128,是因为DCT公式所接受的数字范围是-128到127之间。

      把图像分为8 x 8的像素块进行计算(N=8)

     原始数据矩阵(8 x 8)                                                                         代入公式DCT变换后

139  144  149  153  155  155  155  155                                                     235.6   -1.0    -12.1   -5.2   2.1   -1.7   -2.7   1.3                                              

144  151  153  156  159  156  156  156                                                    -22.6    -18.5   -6.2    -3.2  -2.9   -0.1    0.4   -1.2                                              

150  155  160  163  158  156  156  156                                                   -10.9     -9.3    -1.6     1.5    0.2   -0.9   -0.6   -0.1                                               

159  161  162  160  160  159  159  159                                                    -7.1      -1.9     0.2     1.5    0.9   -0.1    0.0    0.3                                             

160  161  162  162  155  155  155  161                                                    -0.6      -0.8     1.5     1.6   -0.1   -0.7    0.6    1.3                                             

161  161  161  160  157  157  157  157                                                    1.8       -0.2    -1.6    -0.3   -0.8    1.5    1.0   -1.0                                              

162  162  161  163  162  157  157  157                                                   -1.3       -0.4    -0.3    -1.5   -0.5    1.7    1.1   -0.8                                              

162  162  161  161  163  158  158  158                                                   -2.6       1.6     -3.8     -1.8   1.9    1.2    -0.6  -0.4                            

       为了减少非0系数的幅度,增加0系数,我们对DCT变换后的系数进行量化,量化会造成压缩过程中的图片质量的下降,人眼对于图片的亮度的敏感程度大于对于图片色度的敏感程度。

       色度量化表         17  18  24  48  99  99  99  99                                 亮度量化表:      16  11   10  16  24  40  51  61

                                  18  21  26  66  99  99  99  99                                                             12  12  14  19  26  58  60  55  

                                  24  26  56  99  99  99  99  99                                                             14  13  16  24  40  57  69  56   

                                  47  66  99  99  99  99  99  99                                                             14  17  22  29  51  87  80  62

                                  99  99  99  99  99  99  99  99                                                             17  22  37  56  68  109 103 77

                                  99  99  99  99  99  99  99  99                                                             24  35  55  64  81  104 113 92

                                  99  99  99  99  99  99  99  99                                                             49  64  78  87  103 121 120 101

                                  99  99  99  99  99  99  99  99                                                             72  92  95  98  112 100 103 99


将经过DCT变换后的矩阵除以量化表中对应位置的值(这里使用亮度量化表)后得到量化后的矩阵:

                               

                                 15  0  -1  0  0  0  0  0

                                -2  -1  0  0   0  0  0  0

                                -1  -1  0  0  0   0  0  0

                                  0  0   0  0  0  0  0  0    

                                 0  0  0  0   0  0  0  0

                                 0  0  0  0   0  0  0  0

                                 0  0  0  0   0  0  0  0

                                0  0  0  0   0  0  0  0   

           采用Z形排列后可以更好的压缩数据,能够把一个 8 x 8 (N x N)的矩阵变换成一个 1 x 64(1 x N^2) 的矢量

                                                      Z排列:                    

                                                                                   

                排列后变成了:15  0  -2  -1  -1  -1  0  0  -1  0  0...(全是0)  数据比较集中, 左上角的低频部分在排列后靠前,高频部分排列后靠后,中间则是中频部分。能够让我们更好的叠加秘密信息。

               我们可以以一定的方式挑选一些中频系数,在这些系数中添加秘密信息。

               如果我们直接修改中频系数将系数变为秘密信息数据,是可以的,不过提取秘密信息数据时,要使用原图对照。

              我们可以伪随机的选择矩阵中的两个位置(U1,V1)和(U2,V2).  

                 如果(U1,V1)>(U2,V2) 代表隐藏了1

                 如果(U1,V1)<(U2,V2)代表隐藏了0,

如果与需求隐藏的数据不符,可以修改系数或者交换2位置的系数,使其符合。应该注意,如果2个系数相差太大,对图像影响较大,因选择比较相近的值。

提取秘密信息时,只需知道随机种子,得到相同的伪随机数,然后根据相应位置得到隐藏的值。。。。








原创粉丝点击