Arnold变换是由Arnold提出的一种变换,也称猫变换、猫映射。目前Arnold变换主要用于图像置乱。该变换可以在其它图像处理前对图像做预处理,例如在数字盲水印嵌入前对水印进行置乱。也可以用于普通的图像加密。
( x ′ y ′ ) = [ 1 1 1 2 ] ( x y ) m o d ( N ) \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right)=\left[\begin{array}{ll} 1 & 1 \\ 1 & 2 \end{array}\right]\left(\begin{array}{l} x \\ y \end{array}\right) \bmod (N) (x′y′)=[1112](xy)mod(N)
对于规模为NXN的正方形数字图像来说,我们将图像的所有像素集合看作一个NXN的矩阵。在Arnold变换中,设该矩阵中的任意像素位置为 ( x , y ) (x,y) (x,y),将像素点 ( x , y ) (x,y) (x,y)按照某种映射变换到另一点 ( x ′ , y ′ ) (x',y') (x′,y′)。
转换过后,得到如下对应的多项式:
{ x ′ = ( x + y ) m o d ( N ) y ′ = ( x + 2 y ) m o d ( N ) \left\{\begin{array}{l} x^{\prime}=(x+y) \bmod (N) \\ y^{\prime}=(x+2 y) \bmod (N) \end{array}\right. {x′=(x+y)mod(N)y′=(x+2y)mod(N)
相当于改变变换矩阵,得到:
( x y ) = [ 2 − 1 − 1 1 ] ( x 1 y ′ ) m o d ( N ) \left(\begin{array}{l} x \\ y \end{array}\right)=\left[\begin{array}{cc} 2 & -1 \\ -1 & 1 \end{array}\right]\left(\begin{array}{l} x_{1} \\ y_{\prime} \end{array}\right) \bmod (N) (xy)=[2−1−11](x1y′)mod(N)
转换为多项式后对应关系: { x = 2 x ′ − y ′ m o d ( N ) y = − x ′ + y ′ m o d ( N ) \left\{\begin{array}{l} x=2 x^{\prime}-y^{\prime} \bmod (N) \\ y=-x^{\prime}+y^{\prime} \bmod (N) \end{array}\right. {x=2x′−y′mod(N)y=−x′+y′mod(N)
当变换矩阵为如上的两种矩阵时,变换被称为狭义的Arnold变换,若变换公式为: ( x ′ y ′ ) = [ 1 a b a b + 1 ] ( x y ) m o d ( N ) \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right)=\left[\begin{array}{cc} 1 & a \\ b & a b+1 \end{array}\right]\left(\begin{array}{l} x \\ y \end{array}\right) \bmod (N) (x′y′)=[1baab+1](xy)mod(N) 或者为: ( x y ) = [ a b + 1 − a − b 1 ] ( x ′ y ′ ) m o d ( N ) \left(\begin{array}{l} x \\ y \end{array}\right)=\left[\begin{array}{cc} a b+1 & -a \\ -b & 1 \end{array}\right]\left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right) \bmod (N) (xy)=[ab+1−b−a1](x′y′)mod(N) 那么此时变换被称为广义的Arnold变换
Arnold变换具有周期性
对于数字图像而言,我们仅仅是对图像中像素的位置进行了改变而没有改变其值,如果我们对数字图像迭代地使用Arnold变换,即,将输出作为下一次猫映射的输入,那么迭代一定轮数,图像就会出现置乱的效果。
下图是以256X256的lena灰度图像为例,经过192次迭代后,每轮为迭代,图像经过192次变换后恢复了原图像: