视频帧置乱例题,使用matlab实现。
采用混沌系统对视频帧的顺序进行置乱。
分别显示了原始序列帧:数字0到9顺序播放。
帧置乱视频:数字0到9,无规律播放
逆置乱结果:数字0到9顺次播放。
代码如下:
%设计人:lilizong(at)Gmail
%设计时间:修改时间:2017.3.26
%视频帧置乱,并显示。
clc;
clear all;
aviobj=VideoWriter('myAVI\myAVI');
open(aviobj);
%%%%嵌入停顿标记,开始标记%%%%%%%%%
% for i=1:10
% b=imread('number/begin.bmp');
% writeVideo(aviobj,b);
% end
%%%%嵌入停顿标记,开始标记%%%%%%%%%
%%%%%%%%读取数字0到9,构成一个小视频%%%%%%%
for i=0:9
fname=strcat('number\',int2str(i),'.bmp'); %连接这些帧
Vdata=imread(fname);
writeVideo(aviobj,Vdata);
subplot(1,1,1);imshow(Vdata);
pause(0.01);
end
%%%%%%%%读取数字0到9,构成一个小视频%%%%%%%
close(aviobj);
%%%%%%%%%%%%%%生成混沌序列%%%%%%%%%%%%%%%%%
l=linspace(0,0,10);
l(1)=0.98;
for i=2:9
l(i)=1-2*l(i-1)*l(i-1);
end
[lsort,lindex]=sort(l);
%%%%%%%%%%%%%%生成混沌序列%%%%%%%%%%%%%%%%%
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
for i=1:10
b=imread('number/s.bmp');
% writeVideo(aviobj,b);
subplot(1,1,1);imshow(b);
pause(0.01);
end
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
mov=VideoReader('myAVI\myAVI.avi');
aviobj2=VideoWriter('myAVI\myAVI2');
open(aviobj2);
%%%%%%%%%%%%%%获取置乱后的视频%%%%%%%%%%%%%%
for i=1:10 %获得总帧数,并依次读取
k=lindex(i);
b=read(mov,k);
writeVideo(aviobj2,b);
subplot(1,1,1);imshow(b);
pause(0.01);
end
%%%%%%%%%%%%%%获取置乱后的视频%%%%%%%%%%%%%%
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
for i=1:10
b=imread('number/r.bmp');
% writeVideo(aviobj,b);
subplot(1,1,1);imshow(b);
pause(0.01);
end
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
close(aviobj2);
% close(aviobj);
% mplay('myAVI\myAVI.avi');
mov2=VideoReader('myAVI\myAVI2.avi');
aviobj3=VideoWriter('myAVI\myAVI3');
open(aviobj3);
[Vsort,Vindex]=sort(lindex);
for i=1:10 %获得总帧数,并依次读取
k=Vindex(i);
b=read(mov2,k);
writeVideo(aviobj3,b);
subplot(1,1,1);imshow(b);
pause(0.01);
end
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
% for i=1:10
% b=imread('number/r.bmp');
% writeVideo(aviobj,b);
% end
%%%%嵌入停顿标记,嵌入逆置乱标记%%%%%%%%%%%%
close(aviobj3);
% mplay('myAVI\myAVI.avi');
% mplay('myAVI\myAVI2.avi');
num1=VideoReader('myAVI\myAVI.avi');
num2=VideoReader('myAVI\myAVI2.avi');
num3=VideoReader('myAVI\myAVI3.avi');
sum=VideoWriter('myAVI\myAVIsum');
open(sum);
for i=1:1
b=imread('number/begin.bmp');
writeVideo(sum,b);
end
for i=1:num1.numberofframes %获得总帧数,并依次读取
I=read(num1,i);%读取图片;
writeVideo(sum,I);
end
for i=1:1
b=imread('number/s.bmp');
writeVideo(sum,b);
end
for i=1:num2.numberofframes %获得总帧数,并依次读取
I=read(num2,i);%读取图片;
writeVideo(sum,I);
end
for i=1:1
b=imread('number/r.bmp');
writeVideo(sum,b);
end
for i=1:num2.numberofframes %获得总帧数,并依次读取
I=read(num3,i);%读取图片;
writeVideo(sum,I);
end
for i=1:1
b=imread('number/end.bmp');
writeVideo(sum,b);
end
close(sum);
mplay('myAVI\myAVIsum.avi');