MATLAB数字图像加密一、实验名称MATLAB数字图像加密二、实验目的熟悉MATLAB编译环境;掌握基本的矩阵操作;了解初级的加密算法。三、实验环境WindowsXP操作系统,MATLABR2010a编译环境四、实验原理将数字图像划分成块,对RGB矩阵进行转置、水平翻转、垂直翻转等变换,形成新的矩阵,实现对图像的加密。五、实验过程1.获取数字图像存入矩阵;2.获取矩阵大小存入变量;3.将矩阵划分成等大的4*4子矩阵;4.分别对存储图像RGB信息的矩阵进行转置、水平翻转、垂直翻转等变换;5.再次细化矩阵,将矩阵划分成等大的16*16子矩阵;6.分别对存储图像RGB信息的矩阵进行转置、水平翻转、垂直翻转等变换;7.加密完成,存储加密后的图像;8.逆推过程,完成解密,存储解密后的图像。六、源程序a=imread('C:\\DocumentsandSettings\\Owner\\×ÀÃæ\\jm\\jmtp.jpg');subplot(2,2,1);imshow(a);x=l/4;y=m/4;[l,m,n]=size(a);fori=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):forj=0:3((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));i*y+1):((i+1)*y),3));endenda((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),(subplot(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)';fori=0:15forj=0:15a((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));i*y+1):((i+1)*y),3));endenda((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),(subplot(2,2,2);imshow(a);fori=0:15imwrite(a,'jiamihou.jpg');forj=0:15a((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));i*y+1):((i+1)*y),3));endenda((j*x+1):((j+1)*x),(i*y+1):((i+1)*y),3)=fliplr(a((j*x+1):((j+1)*x),(a(:,:,1)=flipud(a(:,:,1));a(:,:,2)=fliplr(a(:,:,2));a(:,:,3)=a(:,:,3)';x=l/4;y=m/4;fori=0:3forj=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');七、实验结果原图片加密后的图片解密后的图片八、实验分析优点:该加密算法原理简单,编程易实现,加密效果较好。缺点:解密过程简便,易破解。