資源簡介
Arnold 變換的典型算法, Matlab程序。
代碼片段和文件信息
function?ZZP_Arnold(Imagekey)
%輸入參數說明:
% Image: ????????待加密的圖像文件名(注意寫格式后綴),只能為二維
% ??key: ????????? 圖像需要變換迭代的次數(密鑰)
%輸出參數說明:
%???????? M: 置亂后圖像數據矩陣
%?????zzp.bmp:?????????????輸出由M對應的圖像文件
%中間變量說明
%???????????N:??????????????圖像的階數
%???????????T:??????????????圖像的周期??
%*********************圖像數值矩陣Arnold轉換函數****************************
%輸入格式控制
if?nargin<2????????????????????????????%如果輸入參數小于2
????disp(‘請按程序的輸入參數格式輸入參數?。。 ?
????return;
end
%----------------------------Arnold?變換-----------------------------------
message=double(imread(Image));??????????%讀入文件
Size_Q?=?size(message);?????????????????%計算原始圖像的大小
Mm=size(message1);?????????????????????%計算原始圖像矩陣的行數???????????
Nm=size(message2);?????????????????????%計算原始圖像矩陣的列數???
%如果不是二維或三維數組,則不處理,返回
if?(length(Size_Q)?==?2)?
???if??Mm~=Nm??
??????disp(‘不是方陣,不能Arnold轉換‘);
??????return
???end
else
???disp(‘不是二維數組,不進行Arnold變換‘);
???return?
end
tempImg=message;???????????????????????%圖像矩陣賦給tempImg
for?n=1:key????????????????????????????%置亂次數
??for?u=1:Mm
????for?v=1:Nm
??????temp=tempImg(uv);
??????ax=mod((u-1)+(v-1)Mm)+1;????????%新像素行位置
??????ay=mod((u-1)+2*(v-1)Nm)+1;??????%新像素列位置
??????outImg(axay)=temp;
????end
??end
tempImg=outImg;
end
%?顯示原始圖像
figure(1)
subplot(121);
imshow(message[]);
title(‘原始圖像‘);
%顯示置亂后的圖像
subpl
- 上一篇:BP神經網絡matlab(簡單而經典).
- 下一篇:matlab 圖像邊緣檢測代碼
評論
共有 條評論