?? main.m
字號:
function main()
%主要思想是從兩幅圖像中選取信息,然后置亂成一幅圖像。
%這樣可以從要加密的多幅(2*n幅)圖像中,按照上述思想,得到一半數目(n幅)的圖像。
%對得到的圖像進行自適應算法的隱藏,又可以得到(n-1)幅的圖像。
%對(n-1)幅的圖像進行Arnold變換,得到(n-1)幅的圖像作為密鑰,此外,密鑰還有迭代次數,置亂規則,Arnold加密規則
%主要缺點是Arnold的周期較大,程序的運行的時間長些,我的電腦需要8分鐘,另外,Arnold只能處理方陣
%圖像的置亂加密算法很多,本程序中用到的置亂加密算法只是其中一種方法,僅僅提出一個多幅圖像加密的思想,后期還有許多的工作要做。
%讀入四幅圖像
F1 = imread('lena.gif');
F2 = imread('monkey.gif');
F3 = imread('house.gif');
F4 = imread('cameraman.gif');
%對圖像的置亂
pic1_zhiluan = zhiluan(F1,F2);
pic2_zhiluan = zhiluan(F3,F4);
%顯示置亂后的圖像
pic1_zhiluan = uint8(pic1_zhiluan);
figure,imshow(pic1_zhiluan),title('pic1 zhiluan')
pic2_zhiluan = uint8(pic2_zhiluan);
figure,imshow(pic2_zhiluan),title('pic2 zhiluan')
%將兩幅置亂圖像進行隱藏
X1 = input('請輸入一個混合迭代參數:');
pic1_hide = hide(pic1_zhiluan,X1,pic2_zhiluan);
%對隱藏后的圖像進行Arnold置亂加密
diedai1 = input('請輸入一個迭代的參數:')
pic1_jiami = Arnold(pic1_hide,diedai1,0);
%顯示加密后的圖像
pic1_jiami = uint8(pic1_jiami);
figure,imshow(pic1_jiami),title('pic1 jiami')
diedai2 = input('請輸入一個迭代的參數:')
pic2_jiami = Arnold(pic2_zhiluan,diedai2,0);
pic2_jiami = uint8(pic2_jiami);
figure,imshow(pic2_jiami),title('pic2 jiami')
%解密圖像
pic1_jiemi = Arnold(pic1_jiami,diedai1,1);
pic2_jiemi = Arnold(pic2_jiami,diedai2,1);
%恢復隱藏后的圖像
pic1_huifu = huifu(pic1_jiemi,X1,pic2_jiemi);
%置亂的逆處理,得到恢復后的圖像
[image1,image2] = ni_zhiluan(pic1_huifu);
[image3,image4] = ni_zhiluan(pic2_jiemi);
%顯示各個圖像
F1 = uint8(F1);
figure,imshow(F1),title('F1');
figure,imhist(F1),title('F1的直方圖');
image1 = uint8(image1);
figure,imshow(image1),title('image1');
figure,imhist(image1),title('image1的直方圖');
F2 = uint8(F2);
figure,imshow(F2),title('F2');
figure,imhist(F2),title('F2的直方圖');
image2 = uint8(image2);
figure,imshow(image2),title('image2');
figure,imhist(image2),title('image2的直方圖');
F3 = uint8(F3);
figure,imshow(F3),title('F3');
figure,imhist(F3),title('F3的直方圖');
image3 = uint8(image3);
figure,imshow(image3),title('image3');
figure,imhist(image3),title('image3的直方圖');
F4 = uint8(F4);
figure,imshow(F4),title('F4');
figure,imhist(F4),title('F4的直方圖');
image4 = uint8(image4);
figure,imshow(image4),title('image4');
figure,imhist(image4),title('image4的直方圖');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -