视频帧置乱

视频帧置乱例题,使用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');


猜你喜欢

转载自blog.csdn.net/superdont/article/details/66479379