matlab 實驗4《變換域隱祕算法》

實驗4《變換域隱祕算法》

4.1上機內容與要求
4.1.1寫出“DCT域隱祕信息嵌入過程“的算法、原理和步驟;實驗原始圖像和載體圖像的差別。
4.1.2 寫出“DCT域隱祕信息提取過程”原理與步驟;
4.1.3 分析DCT隱藏中,控制閥值a,在不同JPEG壓縮下,對隱藏魯棒性的影響。

4.2 實驗過程分析
4.2.1 寫出“DCT域隱祕信息嵌入過程“的算法原理和步驟;實驗原始圖像和載體圖像的差別。
①實驗原理:隱祕算法核心是將我們選取的像素點的最不重要位依次替換成祕密信息,以達到信息隱祕的目的。在DCT域隱藏的信息處於圖像的顯著區域,比在時域嵌入信息更具有魯棒性。
②實驗算法:

  1. 對載體圖像進行88分塊,並做DCT變換。
    T=dctmtx(8);%eturns the N-by-N DCT transform matrix
    %對分塊圖像做DCT變換
    DCTrgb=blkproc(data,[8 8],'P1
    xP2’,T,T’);%dct=Tx*T’
    2)隨機選取圖像塊。
    [row,col]=size(DCTrgb);
    row=floor(row/8);
    col=floor(col/8);
    a=zeros([row col]);%初始化
    [k1,k2]=randinterval(a,count,key);
    for i=1:count
    %確定圖像塊的首地址
    k1(1,i)=(k1(1,i)-1)*8+1;%塊的地址,行
    k2(1,i)=(k2(1,i)-1)*8+1;%col
    End
    3)通過調整圖像塊中兩個DCT係數的大小來對信息進行編碼。係數選擇那些亮度量化值一樣的,並且是中頻係數最好。
    if (要隱藏信息‘1’)
    make
    else
    make
    temp=0;
    for i=1:count
    if msg(i,1)==0
    if DCTrgb(k1(i)+4,k2(i)+1)>DCTrgb(k1(i)+3,k2(i)+2)
    %交換
    temp=DCTrgb(k1(i)+4,k2(i)+1);
    DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2);
    DCTrgb(k1(i)+3,k2(i)+2)=temp;
    end
    else
    if DCTrgb(k1(i)+4,k2(i)+1) < DCTrgb(k1(i)+3,k2(i)+2) %error:下標索引必須爲正整數類型或邏輯類型。原因:txt中內容太多
    temp=DCTrgb(k1(i)+4,k2(i)+1);
    DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2);
    DCTrgb(k1(i)+3,k2(i)+2)=temp;
    end
    end
    %引入控制變量,對係數差值進行放大
    if (DCTrgb(k1(i)+4,k2(i)+1)>DCTrgb(k1(i)+3,k2(i)+2))
    DCTrgb(k1(i)+3,k2(i)+2)=DCTrgb(k1(i)+3,k2(i)+2)-alpha;
    else
    DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+4,k2(i)+1)-alpha;
    End
    4)對載體圖像做DCT變換和分塊,按照隨機控制順序比較大小,進而提取祕密信息.

for i=1:count
if DCTcheck(k1(i)+4,k2(i)+1)<=DCTcheck(k1(i)+3,k2(i)+2)
fwrite(frr,0,‘bit1’);
result(i,1)=0;
else
fwrite(frr,1,‘bit1’);
result(i,1)=1;
end
End

在這裏插入圖片描述
在這裏插入圖片描述
可以發現兩個圖片之前有藍色水印的差別。

4.2.2 寫出“DCT域隱祕信息提取過程”原理與步驟;
①實驗原理:接受者只要獲得載有祕密信息的圖像,也對圖像做DCT變換和分塊,按照隨機順序直接比較 大小就可以提取祕密信息。
②實驗算法步驟:
1)實驗第一層提取
data=data0(:,:,1);
2)分塊做DCT變換
T=dctmtx(8);
DCTcheck=blkproc(data,[8 8],‘P1xP2’,T,T’);
3)產生隨機的塊選擇,確定圖像塊的首地址
[k1,k2]=randinterval(a,1982,2001);
for i=1:1982
k1(1,i)=(k1(1,i)-1)*8+1;
k2(1,i)=(k2(1,i)-1)*8+1;
End
4)準備提取並寫回信息
frr = fopen(‘2.txt’,‘a’);
for i=1:1982
if DCTcheck(k1(i)+4,k2(i)+1)>DCTcheck(k1(i)+3,k2(i)+2)
fwrite(frr,0,‘bit1’);
result(i,1)= 0 ;
else
fwrite(frr,1,‘bit1’);
result(i,1)= 1 ;
end
end

提取的隱藏信息:

4.2.3 分析DCT隱藏中,控制閥值a,在不同JPEG壓縮下,對隱藏魯棒性的影響。
α是爲了避免在圖像傳輸過程中使和的相對大小發生錯位從而導致編碼發生錯誤而引入的控制量,α越大,圖像魯棒性越強,不可感知性越差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章