本章主要Arnold變換是一種二維映射並且具有可逆的特點,Arnold變換是V.J.Arnold 在研究遍歷理論時提出的正方形區域的一種變換,該變換的特點是變換前后的像素位置雖然變亂,但是整個圖像的面積不變,Arnold變換具有周期性即迭代到一定的次數能夠變換為原圖。Arnold 變換只能作用在方形圖像上,在Arnold變換中和分別是變換前后的像素值,和在坐標圖像中可表示為該圖像的第行和第列。表示的是該圖像在第行和第列的像素值。迭代次數增加會加深置亂程度,繼續迭代達到周期時又可以變回原圖。周期T為置亂的新圖迭代為原圖的最少次數。 具體的各像素值位置置亂公式如公式(2-1)、(2-2)所示:
x'=(5x+2y)mod(n) (2-1)
y'=(7x+3y)mod(n) (2-2)
其中,與表示置亂后的像素值的行列位置,與表示原始圖像的像素值的行列位置,表示圖像的行數或列數
具體功能如下:經過Arnold使變的“混亂不堪”,由於Arnold變換的周期性,繼續使用Arnold變換,實現重現圖像。利用Arnold變換的這種特性,可實現圖像的加密與解密。
理想狀態經過Arnold使變的“混亂不堪”,讓人眼看不出圖像的真實內容。解密后圖像又不失真。
加密功能源碼
A=imread('11','jpg');%讀取圖像11,jpg C=imread('11','jpg'); C=rgb2gray(C); A=rgb2gray(A); imshow(A); for k=1:50 for x=1:508 for y=1:508 x1=x+y; y1=x+2*y; if(x1>508) x1=mod(x1,508); end if(y1>508) y1=mod(y1,508); end if x1==0 x1=508; end if y1==0 y1=508; end B(x1,y1)=A(x,y); end end A=B; if(A==C) d=k; end end imshow(B); imwrite(B,'111.png')
解密功能源碼
clear A=imread('111.png'); for k=1:50 for x=1:508 for y=1:508 x1=2*x-y; y1=y-x; if(x1>508) x1=mod(x1,508); end if(y1>508) y1=mod(y1,508); end if x1<0 x1=x1+508; end if y1<0 y1=y1+508; end if x1==0 x1=508; end if y1==0 y1=508; end B(x1,y1)=A(x,y); end end A=B; end imshow(B); imwrite(B,'123.png');
加密功能測試
本節為加密功能測試,輸入一個明文圖像如原圖像5-1所示,輸出一個置亂后圖像如圖像5-2所示

原圖像5-1 圖像5-2
解密功能測試
本節為加密功能測試,輸入一個加密后如圖像5-3所示,輸出一個解密圖像如圖像5-4所示

圖像5-3 圖像5-4
---恢復內容結束---
