在一些随机的位置嵌入噪声帧

来源:互联网 发布:下载淘宝app官方软件 编辑:程序博客网 时间:2024/05/17 01:54

嵌入噪声帧:

%在一些特定的位置添加一些噪声帧。%由混沌序列控制加入帧所在位置,并由其控制删除位置。%这里用的是随机噪声,可以使用自定义形式的图片等。%程序开发: lilizong@gmail.com%2013-9-19clc;clear all;aviobj=avifile('aviVideo\myAddFrame');aviobj.Quality=100;aviobj.compression='None';mov=mmreader('aviVideo\vipfly.avi');     %用mmreader读入视频文件  50帧mySize=read(mov,1);[m n]=size(mySize);nShort=n/3;    %彩色图像的其中一帧%%%%%%%产生混沌序列,用于产生噪声帧%产生第1个混沌序列l=linspace(0,0,m*nShort);l(1)=0.98;for i=2:m*nShort    l(i)=1-2*l(i-1)*l(i-1);end%转为二进制只包含0和1for i=1:m*nShort    if l(i)>0        l(i)=1;    else        l(i)=0;    endendcs1=reshape(l,m,nShort);%chaotic system1%产生第2个混沌序列l(1)=0.99;for i=2:m*nShort    l(i)=1-2*l(i-1)*l(i-1);end%转为二进制只包含0和1for i=1:m*nShort    if l(i)>0        l(i)=1;    else        l(i)=0;    endendcs2=reshape(l,m,nShort);%chaotic system2%产生第3个混沌序列l(1)=0.92;for i=2:m*nShort    l(i)=1-2*l(i-1)*l(i-1);end%转为二进制只包含0和1for i=1:m*nShort    if l(i)>0        l(i)=1;    else        l(i)=0;    endendcs3=reshape(l,m,nShort);  %chaotic system3cs(:,:,1)=cs1;cs(:,:,2)=cs2;cs(:,:,3)=cs3;%%%%%%%产生混沌序列,用于产生噪声帧%%%%%%%产生混沌序列,用于控制位置location=linspace(0,0,mov.numberofframes);loc=location;location(1)=0.98;for i=2:mov.numberofframes    location(i)=1-2*location(i-1)*location(i-1);endfor i=1:mov.numberofframes    loc(i)=mod(location(i)*10000,20)+20;   %产生[20 40]之间的随机数,帧数在这个范围内endloc=uint8(loc);  %如果不转换只能嵌入一个,整数不能等于小数。%%%%%%%产生混沌序列,用于控制位置%%%%%%%%%%嵌入,%flag1用于控制当前嵌入的帧数在原有视频内的位置。%flag2用来保存当前总共嵌入的帧数%flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定%flag1=0;flag2=1;flag3=0;% flag4=mov.numberofframes;   %需要遍历的次数,随着嵌入帧数的增加而增加% test=mov.numberofframes;  开始使用for i=1:flag4,不可以,for不支持变量%或者在 if flag3==loc(flag2)内添加i=i-1for i=1:100000    flag1=i-flag2+1;    flag3=flag3+1;    if flag3==loc(flag2)        flag2=flag2+1;        flag3=0;%         flag4=flag4+1        aviobj=addframe(aviobj,cs);    else        if flag1>mov.numberofframes            break;        else            b=read(mov,flag1);        end        aviobj=addframe(aviobj,b);    endend%flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定aviobj=close(aviobj);mplay('aviVideo\myAddFrame.avi');

剔除噪声帧:

%在一些特定的位置删除一些噪声帧。%由混沌序列控制加入帧所在位置,并由其控制删除位置。%程序开发: lilizong@gmail.com%2013-9-19clc;clear all;aviobj=avifile('myAVI\myRemoveFrame');aviobj.Quality=100;aviobj.compression='None';mov=mmreader('aviVideo\myAddFrame.avi');     %用mmreader读入视频文件  50帧mySize=read(mov,1);[m n]=size(mySize);nShort=n/3;    %彩色图像的其中一帧%%%%%%%产生混沌序列,用于控制位置location=linspace(0,0,mov.numberofframes);loc=location;location(1)=0.98;for i=2:mov.numberofframes    location(i)=1-2*location(i-1)*location(i-1);endfor i=1:mov.numberofframes    loc(i)=mod(location(i)*10000,20)+20;   %产生[20 40]之间的随机数,帧数在这个范围内endloc=uint8(loc);  %如果不转换只能嵌入一个,整数不能等于小数。%%%%%%%产生混沌序列,用于控制位置%%%%%%%%%%嵌入,%flag1用于控制当前嵌入的帧数在原有视频内的位置。%flag2用来保存当前总共嵌入的帧数%flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定%% flag1=0;flag2=1;flag3=0;for i=1:mov.numberofframes%     flag1=i-flag2+1;    flag3=flag3+1;    if flag3==loc(flag2)         flag2=flag2+1;        flag3=0;    else        b=read(mov,i);        aviobj=addframe(aviobj,b);    endend%flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定aviobj=close(aviobj);mplay('myAVI\myRemoveFrame.avi');