摘要離散余弦變換(Discrete Cosine Transform )和奇異值分解(Singular Value Decomposition)都可以作為數字水印算法有效的工具,現提出了一種基于離散余弦變換和奇異值分解聯合的數字水印算法,實驗結果表明本算法具有很好的穩健性,嵌入的水印能被可靠地提取和檢測。
關鍵詞穩健的數字水印離散余弦變換奇異值分解
中圖分類號:TP37文獻標識碼:A
1 引言
數字水印(Digital Watermarking)是往多媒體數據(如圖像、聲音、視頻信號等)中添加某些數字信息(水印)而不影響原數據的視聽效果,運算法則一般由水印結構、水印的嵌入法則、水印的提取和檢測法則構成,可以在像素域或者是DCT和小波轉換域中嵌入水印。
2 基于離散余弦變換和奇異值分解聯合的數字水印算法
2.1 離散余弦(DCT)技術
Cox利用隨機數發生器產生標準正態序列作為水印信息對圖像進行整體DCT變換后,選取除去DC系數之外部分較低頻率系數疊加水印信息。Piva則修改整幅圖像的中頻部分,對原始信號分塊后,再作DCT的算法。有Hsu和Wu把圖像進行8*8分塊,將一個二進制序列作為水印放入DCT的中頻區。有些學者則計算整個圖像的DCT,把一個實數序列嵌入DCT的中頻系數上。選擇中頻區的好處是一方面盡量減少嵌入信息對圖像主觀視覺的影響,同時,盡量避免有損壓縮對水印信息可能帶來的損失。
2.2 數字圖像的奇異值分解
如果從線性代數的角度來看,一幅數字圖像可以看成是由許多非負標量組成的矩陣,用A∈RMxM來表示這樣一個圖像矩陣,其中R表示實數域,每個實數矩陣能分解為三個矩陣,這樣A就可以表示成:
A = U∑VT
其中,U∈RMxM,V∈RMxM,U和V都是正交矩陣,∑∈RMxM是一個對角矩陣,
€%L = diag (€%d1, €%d2, €%d3,……),∑的對角線上的元素的值€%d1, €%d2, €%d3,……就叫做圖像矩陣A的奇異值(SVs),U的列稱為矩陣A的左奇異向量,V的列稱為矩陣A的右奇異向量,這種分解A = U∑VT就稱為A的奇異值分解,A可以表示成:
這里 r 為矩陣A的秩。在基于奇異值分解的數字水印中,一般是選擇隨機序列或者是一幅數字圖像作為水印,基于塊或者是整體來嵌入水印數據。
2.3 離散余弦變換和奇異值分解聯合的數字水印算法
在這部分中,我們提出了一種將DCT和SVD聯合起來的水印方法,假定水印的長度是n x n,整個圖像的長度是2n x 2n
2.3.1 水印的嵌入方法:
(1) 對整個圖像應用DCT,按照“之”字型的順序,繪制DCT系數到四個象限:B1,B2,B3,B4;
(2) 在每個象限,運用SVD:AK = UKA∑KAVKTA,K =1,2,3,4,這里K代表這四個象限;
(3) 對整個水印W運用DCT,然后對已經運用了DCT轉換的水印W運用SVD,W = UW∑WVWT;
(4) 利用已經運用了DCT轉換的水印W的奇異值,來修改每個象限BK(K =1,2,3,4)的奇異值:€%di*K =€%d i K +a k €%d wi ,i = 1…n,€%d i K(i = 1…n)是∑KA奇異值,€%d wi(i = 1…n)是∑W的奇異值;
(5) 得到四組已經修改了的DCT系數:A*K = UKA∑*KAVKTA, K =1,2,3,4
(6) 利用修改的DCT來嵌入水印。
2.3.2 水印的提取方法:
(1) 對已嵌入了水印的整個圖像運用DCT,按照“之”字型的順序,繪制DCT系數到四個象限:B1,B2,B3,B4;
(2) 在每個象限,運用SVD,A*K = UKA∑*KAVKTA,K =1,2,3,4,這里K代表四個象限;
(3) 提取每個象限BK (K =1,2,3,4)的奇異值:€%d wiK = (€%di*K - €%d i K)/ a k,i = 1…n;
(4)使用奇異向量構造四個水印的DCT系數:WK =UKW∑KWVKTW,K=1,2,3,4;
(5) 利用DCT來提取四個水印。
3 實驗結果
實驗中,采用256級灰度圖像Lena作為要嵌入水印的圖像,256級灰度圖像Boat作為水印圖像,大小均為256 x 256。在實驗中,利用Matlab的12種操作類型,比較了基于DCT-SVD水印法則和純粹基于SVD的水印法則的不同結果來測試本水印算法穩健程度。表一中列出了在兩種不同的水印法則下進行各種操作前后水印的相關系數。
從表一的實驗結果可知,基于DCT-SVD水印法相對純粹基于SVD的水印法則,操作前后水印的相關系數要高,而相關系數越高,就表明對各種攻擊有越強的抵抗力。從實驗結果可以發現,基于DCT-SVD水印法比純粹基于SVD的水印法則可以提供更好的穩健性和可靠性。