《matlab数字图像加密》由会员分享,可在线阅读,更多相关《matlab数字图像加密(5页珍藏版)》请在金锄头文库上搜索。
1、MATLAB数字图像加密一、 实验名称MATLAB数字图像加密二、 实验目的熟悉MATLAB编译环境;掌握基本的矩阵操作;了解初级的加密算法。三、 实验环境WindowsXP操作系统,MATLABR2010a编译环境四、 实验原理将数字图像划分成块,对RGB矩阵进行转置、水平翻转、垂直翻转等变换,形成新的矩阵,实现对图像的加密。五、 实验过程1.获取数字图像存入矩阵;2.获取矩阵大小存入变量;3.将矩阵划分成等大的4*4子矩阵;4.分别对存储图像RGB信息的矩阵进行转置、水平翻转、垂直翻转等变换;5.再次细化矩阵,将矩阵划分成等大的16*16子矩阵;6.分别对存储图像RGB信息的矩阵进行转置、
2、水平翻转、垂直翻转等变换;7.加密完成,存储加密后的图像;8.逆推过程,完成解密,存储解密后的图像。六、 源程序a=imread(C:Documents and SettingsOwnerjmjmtp.jpg);subplot(2,2,1);imshow(a);l,m,n=size(a);x=l/4;y=m/4;for i=0:3 for j=0:3a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1)=a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2)=flipud(a(j
3、*x+1):(j+1)*x),(i*y+1):(i+1)*y),2);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3)=fliplr(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3); endendsubplot(2,2,3);imshow(a);x=l/16;y=m/16;a(:,:,1)=flipud(a(:,:,1);a(:,:,2)=fliplr(a(:,:,2);a(:,:,3)=a(:,:,3);for i=0:15 for j=0:15a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1)=a(j*x+1):
4、(j+1)*x),(i*y+1):(i+1)*y),1);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2)=flipud(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3)=fliplr(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3); endendsubplot(2,2,2);imshow(a);imwrite(a,jiamihou.jpg);for i=0:15 for j=0:15a(j*x+1):(j+1)*x),(i*y+1):(i
5、+1)*y),1)=a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2)=flipud(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3)=fliplr(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3); endenda(:,:,1)=flipud(a(:,:,1);a(:,:,2)=fliplr(a(:,:,2);a(:,:,3)=a(:,:,3);x=l/4;y=m/4
6、;for i=0:3 for j=0:3a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1)=a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),1);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2)=flipud(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),2);a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3)=fliplr(a(j*x+1):(j+1)*x),(i*y+1):(i+1)*y),3); endendsubplot(2,2,4);imshow(a);imwrite(a,jiemihou.jpg);七、 实验结果原图片加密后的图片解密后的图片八、 实验分析优点:该加密算法原理简单,编程易实现,加密效果较好。缺点:解密过程简便,易破解。