天天看點

【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼

1 簡介

數字水印是一個隐藏資訊的行為,它與數字信号的類型(如;圖像,歌曲,視訊等)有關,它們的概念都是在相應的數字信号裡藏有一個資訊,然後通過解密來使它們成功分開。水印隐藏的資訊與實際的信号的内容有關。水印算法主要分兩種:空間域和變換域。空間域就是把資訊嵌入到随機選擇的圖像點中最不重要的象素位置(Least Significant Bits)LSB,這種水印是不可見的;變換域一般是采用擴充頻譜通信技術,它的主要技術有(離散傅裡葉變換)DFT,(離散餘弦變換)DCT 和 DWT,根據這些不同的變換,把數字圖像轉化成相應的頻域系數,然後根據它們隐藏的類型進行适當編碼和變形,再根據資訊量選擇頻域系數序列,最後将該數字圖像中的頻域系數的反變換轉化為空間域的資料。第二種算法隐藏的資訊量不大,但它的抗攻擊力好,是以适合版權保護方面的數字水印加密技術。

【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼
【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼
【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼

2 部分代碼

function dwtwatermarkattack(action,Iw,W,ntimes,rngseed)      
switch lower(action)      
case 'filter'      
Ia=imfilter(Iw,ones(3)/9);      
case 'resize'      
Ia=imresize(Iw,0.5);      
Ia=imresize(Ia,2);      
case 'noise'      
Ia=imnoise(Iw,'salt & pepper',0.01);      
case 'crop'      
Ia=Iw;      
Ia(50:400,50:400)=randn();      
case 'rotate'      
Ia=imrotate(Iw,45,'nearest','crop');      
Ia=imrotate(Ia,-45,'nearest','crop');      
end      
[Wg,nc]=getdwtwatermark(Ia,W,ntimes,rngseed,0);      
figure('Name',['數字水印 ',upper(action),' 攻擊試驗'],'Position',[287,108,943,557]);      
subplot(221)      
imshow(Iw)      
title('嵌入水印圖像')      
subplot(222)      
imshow(Ia)      
title(['遭受 ',upper(action), ' 攻擊'])      
subplot(223)      
imshow(W)      
title('原始水印圖像')      
subplot(224)      
imshow(Wg)      
title(['提取水印,NC=',num2str(nc)]);      

3 仿真結果

【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼
【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼
【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼
【圖像隐藏】基于DWT算法實作數字水印嵌入提取帶各類攻擊附matlab代碼

4 參考文獻

[1]李欣. "基于DWT的數字圖像水印技術及MATLAB實作." 電腦知識與技術:學術版 6.10(2010):3.

部落客簡介:擅長智能優化算法、神經網絡預測、信号處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。

繼續閱讀