天天看點

【數字水印】基于小波變換算法DWT實作水印嵌入提取附matlab代碼

1 簡介

數字水印技術作為一門有效的多媒體版權保護技術受到越來越多的關注.提出了一種基于小波變換的圖像數字水印算法.依據人眼視覺特性,将數字水印資訊嵌入到經過小波變換後的圖像的高頻子帶紋理區内,人眼不易察覺,再利用含水印圖像和原始圖像提取出嵌入的水印.采用多幅圖進行實驗,結果表明,該數字水印算法具有較好的隐蔽性,而且對常見的圖像處理操作攻擊具有較好的魯棒性.

【數字水印】基于小波變換算法DWT實作水印嵌入提取附matlab代碼
2 部分代碼

function exteredmark=extract(MarkedX,wrow,wcol)
%水印提取----------------------------------------
[cm,lm]=wavedec(MarkedX,2,'db4'); %用db4小波對讀入的聲音檔案進行2級小波分解 
cma2=appcoef(cm,lm,'db4',2); %提取2級小波分解的低頻系數和高頻系數 1
cmd2=detcoef(cm,lm,2); 
cmd1=detcoef(cm,lm,1); 
lcma=length(cma2);  %低頻長度
blocksize=fix(lcma/(wrow*wcol)); %每塊的大小
water_exter=zeros(1,wrow*wcol);  %建立一個一維向量存儲提取的水印資訊
a=0.25;  %量化步長
j=1;
for i=1:wrow*wcol
    Blockm=cma2(j:j+blocksize-1);
    [UM,SM,VM]=svd(double(Blockm));   %對每塊進行SVD變換
    if(mod(round(SM(1,1)/a),2)==0)  %如果為靠近步長的偶數倍,則水印信号為0
        water_exter(i)=0;
    else
        water_exter(i)=1;    %如果為靠近步長的偶數倍,則水印信号為0
    end 
    j=j+blocksize;
end
exteredmark=reshape(water_exter,wrow,wcol);      

3 仿真結果

【數字水印】基于小波變換算法DWT實作水印嵌入提取附matlab代碼

4 參考文獻

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

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

繼續閱讀