嵌入噪声帧:
%在一些特定的位置添加一些噪声帧。 %由混沌序列控制加入帧所在位置,并由其控制删除位置。 %这里用的是随机噪声,可以使用自定义形式的图片等。 %程序开发: lilizong@gmail.com %2013-9-19 clc; 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和1 for i=1:m*nShort if l(i)>0 l(i)=1; else l(i)=0; end end cs1=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和1 for i=1:m*nShort if l(i)>0 l(i)=1; else l(i)=0; end end cs2=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和1 for i=1:m*nShort if l(i)>0 l(i)=1; else l(i)=0; end end cs3=reshape(l,m,nShort); %chaotic system3 cs(:,:,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); end for i=1:mov.numberofframes loc(i)=mod(location(i)*10000,20)+20; %产生[20 40]之间的随机数,帧数在这个范围内 end loc=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-1 for 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); end end %flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定 aviobj=close(aviobj); mplay('aviVideo\myAddFrame.avi');
剔除噪声帧:
%在一些特定的位置删除一些噪声帧。 %由混沌序列控制加入帧所在位置,并由其控制删除位置。 %程序开发: lilizong@gmail.com %2013-9-19 clc; 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); end for i=1:mov.numberofframes loc(i)=mod(location(i)*10000,20)+20; %产生[20 40]之间的随机数,帧数在这个范围内 end loc=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); end end %flag3用来保持当前嵌入帧,与上一个嵌入帧之间的距离,由loc决定 aviobj=close(aviobj); mplay('myAVI\myRemoveFrame.avi');
作者:superdont 发表于2013-9-19 14:15:18 原文链接
阅读:0 评论:0 查看评论