第二章 离散余弦变换(DCT)算法的介绍
第二章 离散余弦变换(DCT)算法介绍
2.1 离散余弦叶变换的简介
1. DCT 变换公式
因为DCT 变换公式是这一算法的核心,有必要先了解一下DCT 正反变换公式。DCT 正反变换公式的核心是余弦变换,计算速度比较快,因图像处理所用的是二维变换,这里只给出二维的DCT 正反变换公式。设数字图像X(m,n)是具有M行、N列的一个矩阵,为同时减弱或去除空间域的相关性,将图像从空间域变换到空间域,其二维DCT 正变换公式为:
M?1N?1F(?,?)?c(u)c(v)?x?0?y?0f(x,y)cos?(2x?1)2Mcos?(2y?1)2N
?=0,1, ? ? ?, M-1;?=0,1, ? ? ?, N-1 其中:
?1u?0M? c(u)??
u?1,2???M?1?2M??1N? c(v)???2N?
v?0v?1,2???N?1
二维DCT反变换公式为:
M?1N?1f(x,y)???u?0v?0c(u)c(v)F(u,v)cos?(2x?1)u2Mcos?(2y?1)v2N
x?0,1???M?1;y?0,1???N?1
其中x,y 为空间采样值,u,v 为频域采样值。
因为数字图像多用像素方阵来标识,即M=N,此时,二维DCT 正反变换可以简
化为:
- 21 -
第二章 离散余弦变换(DCT)算法的介绍
N?1N?1F(?,?)?c(u)c(v)?x?0?y?0f(x,y)cos?(2x?1)2Ncos?(2y?1)2N
u?0,1???N?1;v?0,1???N?1
N?1N?1f(x,y)???c(u)c(v)F(u,v)cosu?0v?0?(2x?1)u2Ncos?(2y?1)v2N
x?0,1???N?1;y?0,1???N?1
2. 二维DCT的性质
离散余弦变换是图像处理技术中几种最基本的酉变换之一。酉变化是线性变化的一种特殊形式,其基本线性运算式是严格可逆的,并且满足一定的正交条件。图像的酉变换可以被理解为分解图像数据为广义的二维频谱,变换域中每一分量对应于原图频谱函数的能量。
设IM′N 为M′N 的图像矩阵则该图像的二维DCT 变换可由下式表示: FDCT= 其中
?1,m?0时??2Am,i?? 其中0?m,i?M
??cosm(2i?1),其他?2M??1,n?0时??2Bk,n??,其中0?n,k?N
??cosn(2k?1),其他?2N?2M?NAM?MIM?NBN?N
经过二维DCT 变换得到的DCT 系数矩阵GDCT 指示了一系列频率中每一
个频率所对应的变化程度,即频率的高低。其中低频分量将集中在矩阵的左上角,高频分量则集中在右下角。图像的低频分量反映图像慢变化,即图像整体部分;图像的高频分量代表图像跳变的地方,即图像细节部分,如轮廓、边缘。根据人类视觉系统,图像整体比细节部分更为重要,若一幅图像经过处理后而
- 22 -
第二章 离散余弦变换(DCT)算法的介绍
视觉改变不大,则其低频分量必定改变程度不大。此算法采用了将数字水印的灰度值植入DCT 域的低频分量中的方法。
二维离散余弦变换是一种严格可逆的酉变换。它的两个矩阵AM′M BN′N 满足以下的正交条件:
AA?TM2I BB?TN2I
由此,易得到离散余弦逆变换(IDCT): IM?N?2M?NTTAM?N?GDCT?BN?N
正因为DCT 是一种严格可逆的正交变换,才可能对基于DCT 的植入算法实现准确的数字水印滤波。 3. 二维DCT的实现
数字图像水印算法选择二值化灰度图像作为水印信息,根据水印图像的二值性选择不同的嵌入系数,并将载体图像进行8×8的分块,将数字水印的灰度值直接植入到载体灰度图像的DCT变换域中,实现水印的嵌入。具体方法如下: 设I是M×N大小的原始图像,J是水印图像大小为P×Q,M和N分别是P和Q的偶数倍,把水印J加载到图像I中,算法分以下几步进行:
1. 将I分解为(M/8)×(N/8)个8×8大小的方块B;同时,J也分解为 (M/8)×(N/8)个(8P/M)×(8Q/N)大小的方块V; 2. 对每一个B进行DFT变换:DB=DFT(B);
3. 加载水印对每一个DB和V,s(i)为从DB的中频选出的加载的位置 , 1≤i≤(8P/M)×(8Q/N), t(i)为水印V的位置坐标 , 1≤i≤(8P/M)×(8Q/N),DB’(s)=A×V,其中A是加权系数,用DB’(s)来代替DB,得到加载水印后的图像DBC;
4. 对以上得到的每一个DBC进行逆DCT变换:IDBC=IDCT(DBC)并将各方块IDBC合并为一个整图I’,即加载了水印的新图像。
2.2 离散余弦变换水印嵌入算法
数字图像水印算法选择二值化灰度图像作为水印信息,根据水印图像的二
- 23 -
第二章 离散余弦变换(DCT)算法的介绍
值性选择不同的嵌入系数,并将载体图像进行8×8的分块,将数字水印的灰度值直接植入到载体灰度图像的DCT变换域中,实现水印的嵌入。具体方法如下: 设I是M×N大小的原始图像,J是水印图像大小为P×Q,M和N分别是P和Q的偶数倍,把水印J加载到图像I中,算法分以下几步进行:
1. 将I分解为(M/8)×(N/8)个8×8大小的方块B;同时,J也分解为 (M/8)×(N/8)个(8P/M)×(8Q/N)大小的方块V; 2. 对每一个B进行DCT变换:DB=DCT(B);
3. 加载水印对每一个DB和V,s(i)为从DB的中频选出的加载的位置 , 1≤i≤(8P/M)×(8Q/N), t(i)为水印V的位置坐标 , 1≤i≤(8P/M)×(8Q/N),DB’(s)=A×V,其中A是加权系数,用DB’(s)来代替DB,得到加载水印后的图像DBC;
4. 对以上得到的每一个DBC进行逆DCT变换:IDBC=IDCT(DBC)并将各方块IDBC合并为一个整图I’,即加载了水印的新图像。
2.3 离散余弦变换水印提取算法
设图像D为已经加载了水印的载体图像,现要将所加载的水印从D中提取出来,其过程为上述加载水印算法的逆运算: 1. 将D分解为(M/8)×(N/8)个8×8大小的方块BD; 2. 对每一个BD进行二维DFT变换:DBD=DCT(BD); 3. 提取数据对每一个DBD,按照式V’=1/A×DBD得到V’; 4. 将上面得到的所有V’合并成一个水印整图J’。
2.4 离散余弦变换水印算法原理框图
I J
8×8分块处理 8×8分块处理
- 24 -
第二章 离散余弦变换(DCT)算法的介绍
选择加载位置 DCT变换 通过算法改变水印信息形式 改变嵌入水印信息的深度
水印的嵌入
IDCT变换
嵌入水印的图象D
嵌入水印的图象D
- 25 -