1 簡介
數字水印是一個隐藏資訊的行為,它與數字信号的類型(如;圖像,歌曲,視訊等)有關,它們的概念都是在相應的數字信号裡藏有一個資訊,然後通過解密來使它們成功分開。水印隐藏的資訊與實際的信号的内容有關。水印算法主要分兩種:空間域和變換域。空間域就是把資訊嵌入到随機選擇的圖像點中最不重要的象素位置(Least Significant Bits)LSB,這種水印是不可見的;變換域一般是采用擴充頻譜通信技術,它的主要技術有(離散傅裡葉變換)DFT,(離散餘弦變換)DCT 和 DWT,根據這些不同的變換,把數字圖像轉化成相應的頻域系數,然後根據它們隐藏的類型進行适當編碼和變形,再根據資訊量選擇頻域系數序列,最後将該數字圖像中的頻域系數的反變換轉化為空間域的資料。第二種算法隐藏的資訊量不大,但它的抗攻擊力好,是以适合版權保護方面的數字水印加密技術。
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 仿真結果
4 參考文獻
[1]李欣. "基于DWT的數字圖像水印技術及MATLAB實作." 電腦知識與技術:學術版 6.10(2010):3.