logo资料库

MATLAB 实现Arnold变换.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
1. 置乱技术的特点及优点:
2. Arnold变换及其Matlab实现
图像保密通信技术之 Arnold 变换 一、作业目的 1.利用 Matlab 实现数字图像 Arnold 变换的置乱及恢复。 2.深入学习通讯保密技术,进一步了解图像保密通讯技术。 3.向大家展示实现图像保密技术的方法和技术。 二、作业介绍 近年来,随着网络带宽和速度的极大提高,多媒体数据特别是数字图像的流传和使用越 来越广。而人们对安全性和隐私的也愈发关注,图像加解密技术得到了极快地发展。在机要、 军事、政府、金融和私人通信中,数字图像所占的比例越来越大,它所承载的信息的安全成 为当前人们关心的焦点。如何确保基于网络的图像/视频信息的安全,是当前信息处理技术 领域的亟待解决的难点和研究热点之。本次作业主要研究 Matlab 实现数字图像 Arnold 变换 的置乱及恢复。 置乱技术是一种图像加密技术,它利用数字图像具有的数字阵列的特点,搅乱图像中像 素的位置或颜色使之变成一幅杂乱无章的图像,从而达到无法辨认出原图像的目的,可用于 数字图像水印的预处理和后处理过程。置乱过程不仅可以在数字图像的空间域上进行,还可 以在其频率域上进行。常见置乱方法有Arnold变换、幻方变换、Hilbert曲线、Conway游戏、 广义Gray码变换、仿射变换、正交拉丁方变换等。 1. 置乱技术的特点及优点: 置乱技术具有以下特点:置乱技术一般来说具有周期性;置乱变换之后的图像大小不 发生改变,直方图不变,只是打乱图像各像素的次序;置乱技术是可逆变换,水印在提取 后需要进行置乱变换的逆变换。 对水印进行置乱处理的优点: 1)采用置乱技术的合法使用者可以自由控制算法的选择、参数的选择以及使用随机数 技术,从而使非法使用者难以破译图像内容,即可以提高水印信息的安全性。 2)置乱技术可以分散错误比特的分布, 提高数字水印的视觉效果从而增强其鲁棒性。 2. Arnold 变换及其 Matlab 实现 Arnold变换 是Arnold在遍 历理 论研 究中提 出的 一种 变换, 俗称 猫脸 变换, 即“cat mapping”。根据所选择不同的相位空间可分为二维、三维、四维直至N维的Arnold变换。本 文针对的研究对象因为是二维图像故采用的是二维Arnold变换。其定义为: 1 1 1 2       x y     mod N     x y ' '     其中,(x, y)是原图像的像 素点,(x’,y’)是变换后新 图像的像素点,n 是图像阶数,即图像的尺寸大小,一般多为正方形图像。由于 Arnold 变 换具有周期性,因此可利用其周期性 Period 来对图像进行反变换,即在水印嵌入过程中可 将水印置乱次数作为密钥 key,再进行水印嵌入,当水印提取出来时,再将其继续置乱(Period —key)次即可使其恢复至原图。这就是利用 Arnold 的正变换来进行的置乱恢复方案。由于 这种方案用到了 Arnold 周期性,如果置乱次数 key 较小而周期较大时,就比较浪费时间。 这里,我们对二维 Arnold 的反变换进行了 Matlab 实现, 在恢复时只需根据密钥 key,置乱
相同的次数:key 次便可恢复出原水印图像,从而大大减少了置乱处理的时间,且也不像利 用正变换恢复那样需要先进行周期计算,省去麻烦的一步,提高了效率。在实际情况中,我 们应以处理时间最短为准则,根据置乱密钥来自由选择正、反变换策略恢复图像。 三、作业过程 1.Arnold 变换 打开 Matlab 软件,新建一个 M—file ,在里面打入如下代码: function Arnold(Image,key) %图像数值矩阵 Arnold 转换函数 %key: 图像需要变换迭的次数 %M:转换后图像数据矩阵 if nargin<2 disp('请按程序的输入参数格式输入参数!!!'); return; end %将 Q 赋值给 M,计算 Q 的大小 Q=imread(Image); M = Q ; Size_Q = size(Q); %Arnold 转换 n = 0; K = Size_Q(1); M1_t = Q; M2_t = Q; for s = 1:key n = n + 1; if mod(n,2) == 0 for i = 1:K for j = 1:K c = M2_t(i,j); M1_t(mod(i+j-2,K)+1,mod(i+2*j-3,K)+1) = c; end end else for i = 1:K for j = 1:K c = M1_t(i,j); M2_t(mod(i+j-2,K)+1,mod(i+2*j-3,K)+1) = c;
end end end end if mod(key,2) == 0 M = M1_t; else M = M2_t; end imwrite( double(M)/255,strcat( 'Arnold_',num2str(key),'_',Image ),'bmp' ); imshow(M); 然后保存为 Arnold.m 并运行,然后随便找一个图片,放在 D:\MATLAB7\work 文件夹里, 而 后 在 Matlab 窗 口 的 Command Window 里 按 照 格 式 Arnold(Image,key) 输 入 Arnold('001.bmp',1)回车,这是 1 次 Arnold 变换,可以改变 key 的值来改变变换次数,如 如下图: 原图: 1 次 Arnold 变换 2 次 Arnold 变换 2.Arnold 反变换 再新建一个 M—file ,在里面打入如下代码:
%文件名:FanArnold.m %函数功能:本函数将完成对按Arnold置换策略进行置乱的图像的置乱恢复 %输入格式举例:FanArnold('lena.bmp',3) %参数说明:Key为置乱控制密钥 function FanArnold(Image,key) [X,map]=imread(Image);w1=X;w0=double(w1)/255;w1=w0;subplot(2,2,3); imshow(w1,[]);title('待恢复的图像'); Size_X = size(X); n=Size_X(1); %将图像的阶数赋 值给n for k=1:key for x=1:n for y=1:n x1=2*x-y; y1=y-x; x2=2*x-y-n; y2=n+y-x; x3=n+2*x-y; y3=y-x; x4=2*x-y; y4=n+y-x; if(x1=0)&(y1=0) if x1==0 x1=n; if y1==0 y1=n; end; end; w1(x1,y1)=w0(x,y); elseif(x2=0)&(y2=0) if x2==0 x2=n; if y2==0 y2=n; end; end; w1(x2,y2)=w0(x,y); elseif(x3=0)&(y3=0) if x3==0 x3=n; if y3==0 y3=n; end; end; w1(x3,y3)=w0(x,y); if x4==0 x4=n; if y4==0 y4=n; end; end; w1(x4,y4)=w0(x,y); else end end end w0=w1; end subplot(2,2,4); imshow(w0,[]); title('置乱反变换后的原图'); 然 后 保 存 为 FanArnold.m 并 运 行 , 在 Matlab 窗 口 的 Command Window 里 按 照 格 式 FanArnold(Image,key)输入并回车, 如图:输入 FanArnold('Arnold_1_001.bmp',1)将一次 Arnold 变换所置乱的图像恢复
可以看到只要知道密钥 key 就可利用这个新程序可以将杂乱无章的图形还原出来。假如你 不知道置乱的次数 key 你就没有办法将图像还原, 如果输入 FanArnold('Arnold_1_001.bmp',5)得到如下图形: 这要你就无法恢复出原图了,这样就大大的保证了图像的保密性。
分享到:
收藏