資源描述:
《arnold(貓臉變換)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、arnold(貓臉變換)arnold(貓臉變換)Arnold變換,俗稱貓臉變換.設(shè)像素的坐標(biāo)x?,?y?∈S?=?{0,?1,?2,??,?N-1},則Arnold變換為:???原文圖像?密??文?原文圖像?加密?解密?密鑰?密鑰?數(shù)字圖像加密算法研究與實現(xiàn)式中的N表示數(shù)字圖像的階數(shù),(x,y)為像素點的坐標(biāo)。??將二維Arnold變換應(yīng)用在圖像f(x,y)上,可以通過像素坐標(biāo)的改變而改變原始圖像灰度值的布局。原始圖像可以看作一個矩陣,經(jīng)過Arnold變換后的圖像會變的“混亂不堪”,由于Arnold變換的周期性,繼續(xù)使用Arnold變換,可以重現(xiàn)圖像[1]。利用Arnold變換
2、的這種特性,可實現(xiàn)圖像的加密與解密。n維Arnold變換同二維Arnold變換一樣具有周期性,繼續(xù)使用Arnold變換,也可以重現(xiàn)原始圖像。利用n維Arnold變換對圖像的相空間進(jìn)行置亂,也能實現(xiàn)圖像的加密。arnold(貓臉變換)Arnold變換是V.J.Arnold在遍歷理論的研究中提出的一種變換,原意為catmapping,俗稱貓臉變換。Arnold變換直觀、簡單、具有周期性,使用非常方便。Arnold變換的原理是先作x軸方向的錯切變換,再作y軸方向的錯切變換,最后的模運算相當(dāng)于切割回填操作。arnold(貓臉變換)matlab代碼functionindex=arnold
3、(row,col,s,number)%Thisfunctionistopermutatematrix%rowandcolarethecoordinatesofmatrix%sisthesizeofmatrix%numberisthenumberofpermutationpermutate=[11;12];index=mod((permutate*[row-1;col-1]),s);fori=1:number-1index=mod((permutate*index),s);end矩陣大小與置亂周期的關(guān)系clc;clear;permutation=[11;12];m=[1;1];s
4、=48;n=mod((permutation*m),s);N=1;while1n=mod((permutation*n),s);N=N+1;ifn==mbreak;endendN矩陣大小與置亂周期的關(guān)系加密圖像functiona=arnold()%讀取圖像aa=imread('C:UsersAdministratorDesktoplena.bmp');%置換次數(shù)iTimes=1;%讀取aa圖像大小[iHiW]=size(aa);ifiH~=iW%必須是正方形error('Thecovermustbeasquare!');return;end%矩陣轉(zhuǎn)換out
5、Img=uint8(zeros(iH,iW));tempImg=aa;fori=1:iTimesforu=1:iHforv=1:iWtemp=tempImg(u,v);%置亂取模運算ax=mod(3*(u-1)-(v-1),iW)+1;ay=mod((v-1)-2*(u-1),iW)+1;outImg(ax,ay)=temp;endendtempImg=outImg;endoutImg=tempImg;%圖像展示figure,imshow(outImg);%將置亂后的圖像保存為:imwrite(outImg,'C:UsersAdministratorDesk
6、topmysecret.bmp')原始圖像一次貓臉變換后解密圖像functiona=unarnold()%讀取加密圖像aa=imread('C:UsersAdministratorDesktopmysecret.bmp');%和原來一樣置換一次iTimes=1;[iHiW]=size(aa);ifiH~=iW%必須是正方形error('Thecovermustbeasquare!');return;endoutImg=uint8(zeros(iH,iW));tempImg=aa;fori=1:iTimesforu=1:iHforv=1:iWtemp=tempImg(u
7、,v);ax=mod((u-1)+(v-1),iW)+1;ay=mod(2*(u-1)+3*(v-1),iW)+1;outImg(ax,ay)=temp;endendtempImg=outImg;endoutImg=tempImg;figure,imshow(outImg);%輸出原圖imwrite(outImg,'unmysecret.bmp')解密后謝謝!