Arnold對映(貓對映)原理及 matlab原始碼

2021-10-02 23:33:09 字數 3832 閱讀 3777

貓對映(cat對映),也稱為arnold對映,由**數學家弗拉基公尺爾·阿諾德(vladimir igorevich arnold)提出,在arnold授課的時候經常使用貓的影象作為例子,故稱為「貓對映」。這是一種在有限區域內進行反覆摺疊、拉伸變換的混沌對映方法,一般應用於多**混沌加密中。

arnold也算一種比較主要的置亂演算法,演算法由以下變換公式產生:

其中xn,yn表示變換前灰度圖中畫素的位置,xn+1,yn+1表示變換之後的畫素位置,a,b為引數,n表示當前變換的次數,n為影象的長或寬(由於該演算法只適用於長寬相等的影象,所以我們不討論m不等於n的情況),mod為模運算。

有了正變換公式,我們還需要反變換公式。

公式如下:

兩個變換矩陣正好是求逆的關係。

數字影象可以看為乙個二維矩陣,經過arnold變換之後影象的畫素位置會重新排列,這樣影象會顯得雜亂無章,從而實現了對影象的置亂加密效果。

%讀取,相對路徑,影象必須是正方形,否則不具備arnold變換的條件,可進行拓延處理

imshow(img,

)[h,w]

=size(img)

;%置亂與復原的共同引數,就相當於密碼,有了這幾個引數,就可以復原

n=10

;%迭代次數a=3

;b=5

;n=h;

%n代表影象寬高,寬高要一樣

%置亂操作

imgn=zeros(h,w)

;for i=1:n

for y=1:h

for x=

1:w

xx=mod(

(x-1

)+b*

(y-1

),n)+1

;%mod(a,b)就是a除以b的餘數

yy=mod(a*

(x-1)+

(a*b+1)

*(y-1)

,n)+

1;

imgn(yy,xx)

=img(y,x)

;

endend

img=imgn;

endfigure;

imshow(imgn,

)%治亂後的

%復原img=imgn;

for i=1:n

for y=1:h

for x=

1:w

xx=mod(

(a*b+1)

*(x-1)

-b*(y-1)

,n)+1;

yy=mod(

-a*(x-1)

+(y-1)

,n)+

1;

imgn(yy,xx)

=img(y,x)

;

endend

img=imgn;

endfigure

imshow(imgn,

)%復原的

%讀取,相對路徑,影象必須是正方形,否則不具備arnold變換的條件,可進行拓延處理

mysize=

size

(img)

;%當只有乙個輸出引數時,返回乙個行向量,該行向量的第乙個元素時矩陣的行數,第二個元素是矩陣的列數。

ifnumel

(mysize)

>

2%如果是彩色影象

img=

rgb2gray

(img)

;%將彩色影象轉換為灰度影象

fprintf

("影象為彩色圖");

endimshow

(img,

)[h,w]

=size

(img)

;if h>w

img =

imresize

(img,

[w w]);

fprintf

("影象長寬不一樣,影象可能失真");

endif h

img =

imresize

(img,

[h h]);

fprintf

("影象長寬不一樣,影象可能失真");

end[h,w]

=size

(img)

;%置亂與復原的共同引數,就相當於密碼,有了這幾個引數,就可以復原

n=10

;%迭代次數a=3

;b=5

;n=h;

%n代表影象寬高,寬高要一樣

%置亂操作

imgn=

zeros

(h,w)

;for i=1:n

for y=1:h

for x=

1:w

xx=mod(

(x-1

)+b*

(y-1

),n)+1

;%mod(a,b)就是a除以b的餘數

yy=mod(a*

(x-1)+

(a*b+1)

*(y-1)

,n)+1;

imgn

(yy,xx)

=img

(y,x)

;

endend

img=imgn;

endimgn =

uint8

(imgn)

;figure

imshow

(img,

)%治亂後的

%復原img2=

%讀取for i=1:n

for y=1:h

for x=

1:w

xx=mod(

(a*b+1)

*(x-1)

-b*(y-1)

,n)+1;

yy=mod(

-a*(x-1)

+(y-1)

,n)+1;

imgn

(yy,xx)

=img2

(y,x)

;

endend

img2=imgn;

endimgn =

uint8

(imgn)

;figure

imshow

(imgn,

)%復原的

貓對映 Arnold置亂變換

512 512影象384次迭代復原 import matplotlib.pyplot as plt plt 用於顯示 import matplotlib.image as mpimg mpimg 用於讀取 import numpy as np import math img mpimg.imread...

IP對映原理

ip對映原理 由於公網ip位址有限,不少isp都採用多個內網使用者通過 和閘道器路由共用乙個公網ip上internet的方法,這樣就限制了這些使用者在自己計算機上架設個人 要實現在這些使用者端架設 最關鍵的一點是,怎樣把多使用者的內網ip和乙個他們唯一共享上網的ip進行對映!先來介紹一下nat,na...

cakePHP 對映原理

一定記住mvc原理是 先檢視,再控制器,再檢視,再控制器 cakephp的url對映原理是這樣的 http localhost news 對映的是news專案下的webroot資料夾下的index.php檔案,從 中可以發現,並沒有出現實際的前台 所做的知識一下cakephp的框架初始化工作,這項工...