1 簡介
研究數字圖像版權保護問題,由於數字媒體在網上易被複製篡改.針對單純奇異值分解或小波變換水印算法均存在抵抗攻擊差的難題,為了更好的保護數字圖像版權,提了一種奇異值分解與小波變換相結合的數字水印算法.首先對水印圖像進行置亂處理並對原始圖像進行分塊,從中找到符合要求的最佳水印嵌入子塊,然後對所選擇的最佳子塊進行小波變換,對子塊的低頻係數進行奇異值分解,最後將水印嵌入各子塊的奇異值中進行仿真.結果表明,水印算法能夠很好的抵抗多種攻擊,水印具有很好的魯棒性和不可見性,克服了奇異值分解和小波變換水印算法缺陷,為設計提供了依據.
隨著網際網路普及,信息通訊技術的飛速發展,多媒體技術得到了充分的應用。但是開放的網際網路使這些多媒體信息的傳輸變得不安全,而數字水印技術恰恰能保護這些多媒體信息的傳輸。數字水印技術通過一定的嵌入算法將一些可以用來標識多媒體數據的來源、版本、作者等標誌性信息嵌入到多媒體數據中來保護多媒體數據的版權,但是不影響原始數據的使用和價值,並且不易被人察覺 。根據嵌入位置的不同,數字水印算法分為空域和變換域水印算法。一般而言,變換域水印算法穩健性較好,主要的變換域有離散餘弦變換 ( discrete cosine transform DCT)、離散小波變換 ( discrete wavelet transform DWT)和離散傅立葉變換 ( discrete fourier transform DFT)。在變換域中奇異值分解(singular value decomposition SVD) 是一種將矩陣對角化的方法。圖像的奇異值有較好的穩定性,利用這個原理可將水印信息嵌入到圖像經過奇異值變換後的係數。 1 離散餘弦變換和奇異值分解 1.1 離散餘弦變換 離散餘弦變換(Discrete Cosine Transform, DCT)是 一組不同 頻率和幅值的餘弦函數和來近似衣服圖像,實際上是傅立葉變換的實數部分。由於離散餘弦變量對於衣服圖像,其大部分可視化信息都集中在少數的變換係數上。因此,離散餘弦變量是數據壓縮常用的一個變換編碼方法,它能將高相關數據能量集中,使得它非常適用於圖像壓縮。一維離散信號f(x) 的離散餘弦正變換為: 二維離散信號 f(x) 的離散餘弦正變換為: 1.2 奇異值分解( SVD)
矩陣經過SVD 分解得到 1個奇異值矩陣 2個正交矩陣。圖像的奇異值有很強的穩定性,圖像受到輕微的擾動時不會有顯著改變。利用奇異值的這種特性,如果將水印嵌入在載體圖像 SVD 分解後的奇異值上,當攻擊者對含水印圖像進行攻擊擾亂時,我們仍能從分解的奇異值中提取出水印信息。並且,奇異值對應於圖像的亮度特性,而非視覺特性,因此,在奇異值上嵌入水印能保證水印的透明性,保障了水印算法的隱蔽性與安全性。奇異值表徵圖像矩陣元素的相互關係,在輕微擾動時不會發生變化,因此,在奇異值上嵌入水印不會損害圖像的幾何特性。SVD 分解是線性代數中一種非常重要的分解方式其定義如 下。設矩陣 A RRm×n,R表示實數域, m×n表示矩陣大小, A進行 SVD 處理的公式為 A = USVT (3) 式中: U V 都是正交矩陣,S是對角矩陣,奇異值就是矩陣 S 的對角線元素 且這些對角線元素滿足 : σ1≥σ2≥σ3≥…σr≥σr+1 =…= σm =0 (其中 ,r表示 A的秩 )。 2 列印和掃描的應用分析 圖像水印應用這種應用的挑戰包括建立一種魯棒的水印技術,以從印刷媒體中提取水印。該技術應該能夠抵抗由於列印過程而發生的數字到模擬轉應該能夠抵抗由於列印過程而發生的數字到模擬轉換,然後是掃描列印的水印圖像時發生的模擬換,然後是掃描列印的水印圖像時發生的模擬 - 數數字轉換。字轉換。在列印過程中,帶水印的圖像是模擬格式。在列印過程中,帶水印的圖像是模擬格式。為了提取水印,應使用列印掃描過程中的掃描儀或為了提取水印,應使用列印掃描過程中的掃描儀或列印凸輪過程中的相機(移動相機或數位相機)通列印凸輪過程中的相機(移動相機或數位相機)通過捕獲過程將模擬數據數位化過捕獲過程將模擬數據數位化。。由於引入的攻擊,由於引入的攻擊,包括幾何攻擊(例如旋轉,縮放,切割和剪切)以包括幾何攻擊(例如旋轉,縮放,切割和剪切)以及由設備引起的扭曲,列印和捕獲過程可能具有挑及由設備引起的扭曲,列印和捕獲過程可能具有挑戰性。戰性。這些失真通常是由在行動電話中存儲圖像時這些失真通常是由在行動電話中存儲圖像時的列印和壓縮過的列印和壓縮過程引起的。一些研究已經研究了這程引起的。一些研究已經研究了這些仍處於初期階段的應用些仍處於初期階段的應用。
function varargout = main(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @main_OpeningFcn, ...
'gui_OutputFcn', @main_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin{1})
end
end
axes(handles.axes5);
imshow(WNN);
title('提取的水印信息');
global WNN;
function pushbutton6_Callback(hObject, eventdata, handles)
global WNN;
global WWW;
watermark_ww=im2bw(WNN);
[a b c]=size(watermark_ww);
N=a*b;
key1=0.2345;
mm(1)=key1;
mu=4;
for i=1:N-1
mm(i+1)=mu*mm(i)-mu*mm(i)^2;
end
mm=mod(1000*mm,256);
mm=uint8(mm);
mm=im2bw(mm);
n=1;
for i=1:a
for j=1:b
WWW(i,j)=bitxor(mm(n),watermark_ww(i,j));
n=n+1;
end
end
axes(handles.axes7);
imshow(WWW);
title('解密水印');
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function edit1_Callback(hObject, eventdata, handles)
function axes4_ButtonDownFcn(hObject, eventdata, handles)
function axes4_CreateFcn(hObject, eventdata, handles)
function axes6_ButtonDownFcn(hObject, eventdata, handles)
function pushbutton9_Callback(hObject, eventdata, handles)
close(gcbf);
function pushbutton3_ButtonDownFcn(hObject, eventdata, handles)
3 仿真結果[1]張紅, 馬彩文, 董永英,等. 基於DWT-SVD的數字水印嵌入方法[J]. 科學技術與工程, 2005, 5(20):1540-1544.
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。部分理論引用網絡文獻,若有侵權聯繫博主刪除。