(5)分别取出矩阵D的第1,2,3列的后M*N个数据。
[a ,b]=size(R); for i=1:a
A(i,1)=D(i+n-a,1);
C(i,1)=D(i+n-a,2); %取矩阵D的后103041行作为保密序列 E(i,1)=D(i+n-a,3);
end
(6)将(5)得到的数据分别与经处理过的R,G,B分量的数据做加法。 R=uint8(rem(R+A,256));
G=uint8(rem(G+C,256)); B=uint8(rem(B+E,256));
(7)将(6)得到的数据还原成三维加密像素矩阵,写入并保存图像。 R1=reshape(R,321,321); G1=reshape(G,321,321);
B1=reshape(B,321,321);
F=cat(3,R1,G1,B1); %得到加密像素矩阵 strtemp=strcat('c:\\加密的图片\\',int2str(p),'.','bmp');
imwrite(F,strtemp) %写入图像 (8)将(7)得到的图像写入视频。
im=imread(['c:\\加密的图片\\', int2str(1) '.bmp']);
[imind,map2] = rgb2ind(im,256);
imwrite(imind,map2,'c:\\jiami.gif','gif','writeMode','overwrite','delay
time',0.1,'loopcount',Inf);
pic_Num=12; %根据要制作的图片数决定 for iter=2:pic_Num
im=imread(['c:\\加密的图片\\',int2str(iter) '.bmp']); [imind,map2] = rgb2ind(im,256);
imwrite(imind,map2,'c:\\jiami.gif','gif','writeMode','append','delay
time',1);
end
6
4. 基于超混沌Lorenz系统的视频解密算法 4.1 视频解密原理图
视频的解密过程是加密过程的逆运算。很据收发两端参数达到匹配并且同步后,选取参
8数?a,b,c,r??(10,,28,?1),初始值x0?{1.2157,3.0436,1.8573,2.9458},t?1040时,可将信号
3调制出来。视频解码如图所示:
读入加密后的彩色图像 将每张彩色图片的像素矩阵分为R、G、B三个分量 采用四阶龙格库塔算法产生混沌迭代序列D与R、G、B三个分量做减法 编码后的视频图片 编码前的视频图片
图3 系统的解码模型
4.2 视频解密算法
视频的解密过程具体操作如下:
(1)读入经过加密的彩色图像,将每张彩色图像的像素矩阵分为R、G、B三个分量。相关程序如下:
M=cell(1,12);
for p=1:12
imageName=strcat('c:\\加密的图片\\',num2str(p),'.bmp'); M{p} = imread(imageName);
R=M{p}(:,:,1); G=M{p}(:,:,2);
7
B=M{p}(:,:,3);
(2)设定Lorenz超混沌系统的初值x0,步长h,及运行时间t1。由四阶龙格库塔法算法产生迭代矩阵D。
D=zeros(n,4); for i=1:n
k1=xprim(t,x);
k2=xprim(t+h/2,x+(h/2)*k1); k3=xprim(t+h/2,x+(h/2)*k2); k4=xprim(t+h,x+h*k3);
k=h/6*(k1+2*k2+2*k3+k4); %4阶龙格库塔算法 t=t+h; x=x+k; D(i,:)=x; end
(3)Q?round(D),D?D?Q,D?abs(round(rem((D*1000),256)))。取矩阵D的小数部分,这样处理后得到的非负整数矩阵的元素值在0到255(包括0和255)上均匀分布。
Q=round(D);
D=Q-D;
D=abs(round(rem(D*1000,256)));
(4)分别取出矩阵D的第1,2,3列的后M*N个数据。 [a ,b]=size(R);
for i=1:a
A(i,1)=D(i+n-a,1); C(i,1)=D(i+n-a,2); E(i,1)=D(i+n-a,3);
end
8
(5)将(4)得到的数据分别与经处理过的R,G,B分量的数据做减法。
R=uint8(rem(R+256-A,256)); G=uint8(rem(G+256-C,256)); B=uint8(rem(B+256-E,256));
(6)将(5)得到的数据还原成三维解密像素矩阵,写入并保存图像。 R1=reshape(R,321,321); G1=reshape(G,321,321);
B1=reshape(B,321,321);
F=cat(3,R1,G1,B1); %得到解密像素矩阵 (7)将(6)得到的图像写入视频。
im=imread(['c:\\解密的图片\\', int2str(1) '.bmp']); [imind,map2] = rgb2ind(im,256);
imwrite(imind,map2,'c:\\jiemi.gif','gif','writeMode','overwrite','delayt
ime',0.1,'loopcount',Inf);
pic_Num=12; for iter=1:pic_Num
im=imread(['c:\\解密的图片\\',int2str(iter) '.bmp']); [imind,map2] = rgb2ind(im,256);
imwrite(imind,map2,'c:\\jiemi.gif','gif','writeMode','append','delay
time',1);
end
4.3视频的读出
本文重点处理了将加解密的图片转化成可视的视频。在此过程中,主要是读入一帧帧彩色图像,然后转换图片的类型格式,将所有图片做成一个整体结构一帧帧连续播放出来,形成最后的avi视频文件。
9
相关推荐: