基于扩频技术的MPEG-2视频水印算法matlab仿真
Posted fpga和matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于扩频技术的MPEG-2视频水印算法matlab仿真相关的知识,希望对你有一定的参考价值。
目录
一、理论基础
在实际应用中,原始信息往往是由一组0 1, -1 1或者-c c组成的能代表数字产品版权信息的m序列号(这里c是正整数),他未必具有伪随机特性。为了扩展原始信息的能量谱,该窄带信息可被一个宽带伪随机噪声序列发生器所调制,调制后的ID序列就可以作为水印嵌入到数字产品之中。本文采用Hartung和Girod等提出的基于片率概念的扩频方法。该方案对原始信息按片率进行扩展后再用伪随机序列进行调制,其原理如图1
水印检测不需要原始视频。针对含水印的视频图像,在帧内利用式检测图像块中是否包含细节信息,即
将计算得到的结果与阈值进行比较,由此得到候选集:,el…,需要注意的是,这里阈值用表示。然后,对于集合中的每一个图像块先进行位面分解,接着进行相关检测。如果相关运算的结果大于等于,则表示检测到水印存在。类似地,将相应的位平面保存在集合中,用于第二步水印提取。在许多情况下,攻击者可能通过插入或去除一帧图像来改变视频序列的长度,或者通过帧重组来改变视频序列的顺序,这些都对不需要原始视频参与的水印检测算法提出更高的要求。嵌入一个同步信号将有助于检测,但是这同样增加了受到攻击的风险。这里所给出的细节信息检测机制依赖于图像的内容,而不是视频信号的三维结构,所以该算法可以抵抗沿时间轴破坏同步关系这一类攻击手段。
二、案例背景
1.问题描述
数字水印是一种有效的数字产品版权保护和数据安全维护技术,是信息隐藏技术研究领域的一个重要分支。它将具有特定意义的标记(水印),利用数字嵌入的方法隐藏在数字图像、声音、文档、图书、视频等数字产品中,用以证明作者对其作品的所有权,并作为鉴定、起诉非法侵权的证据,同时通过对水印的检测和分析来保证数字信息的完整可靠性,从而成为知识产权保护和识字多媒体防伪的有效手段。
目前为止,数字水印技术得到了快速发展,但是数字水印技术在视频水印方面仍存在一些缺陷,这是由于视频信息中包含着较多不同于图像的特殊信息,这些特殊信息大大影响了传统的数字水印技术在视频水印方面的应用。这些特殊信息主要包括视频中的运动图像部分和静止图像部分,而对于运动和静止两种状态,使用单一的水印嵌入技术无法获得较好的效果,必须采用不同的水印嵌入技术。此外,基于视频的数字水印嵌入提取技术的研究是本文重点研究问题。
2.思路流程
三、部分MATLAB仿真
MATLAB主函数:
clc;
clear;
close all;
warning off;
%加入攻击类型
%加入攻击类型
%1:先放大后缩小攻击,2倍
%2:先缩小后放大攻击,2倍
%3:滤波攻击
%4:裁剪攻击
%5:噪声攻击
SEL = 1;
%通过修改此值可以改变提取图像的精度,值越大越好,但对载体图像的改变越明显
atten = 0.002;
%读取水印
msg0 = imresize(imread('bupt.bmp'),1);
[row2,col2]= size(msg0);
msg = msg0(:);
load mpeg_toolbox\\mpeg_avi.mat
mov = MPEG2_avi1;
mov1 = imresize(mov,5);
[row,col] = size(mov1);
s_len = row*col;
%generate msg to be embedded
i=1;
while floor(s_len/(row2*col2)) > 2^i
i=i+1;
end
frag = 2^(i-1);
msg_len = floor(s_len/frag);
degree = 5;%degree为m序列的级数
pn0 = 2*pn_gen([degree,2,0],[zeros(1,degree-1),1],0)-1;
pn1 = 2*pn_gen([degree,2,0],[zeros(1,degree-1),1],1)-1;
for i = 1:20
i
%读取视频
mov = MPEG2_avii;
mov1 = imresize(mov,5);
s = mov1;
[row,col] = size(mov1);
s_len = row*col;
len = row2*col2;
%加入水印
bld = hide_ds(frag,msg,len,s,atten,pn0,pn1);
%进行攻击
out0 = vedio_attack(bld,SEL);
%提取水印
out = dh_ds(frag,out0,len,pn0,pn1)';
om = Vector2Matrix(out,col2,1);
figure(1);
subplot(221);
imshow(mov1,[]);title('原始视频');
subplot(222);
imshow(msg0);title('水印');
subplot(223);
imshow(bld,[]);title('原始视频加入水印');
subplot(224);
imshow(om);title('提取水印');
%计算提取误差
ERR(i) = abs(mean(mean(om-msg0)));
end
figure;
plot(ERR,'b-o');
grid on
xlabel('视频帧数量');
ylabel('水印提取误差');
PSNR = psnr(mov1, bld)
四、仿真结论分析
本文所提出的基于MPEG编码的水印提取算法可以获得较为清晰的水印信息,且每一帧的水印误差较小。
本文基于MPEG编码的水印提取算法可以获得较为清晰的水印信息,且每一帧的水印误差较小。
基于MPEG编码的水印提取算法可以获得较为清晰的水印信息,且每一帧的水印误差较小。
本文所提出的基于MPEG编码的水印提取算法和基于DCT域的水印提取算法性能接近。
五、参考文献
[1]Stefan Katzenbeisser, Fabien, A P Petitcolas编.信息隐藏技术[M].吴秋新等译.北京:人民邮电出版社,2011
[2]D.Kundur.Multi-resolution digital watermarking:Algorithms and implications for multimedia signals (PhD) dissertation.Graduate Department of Electrical and Computer Engineering, University of Toronto.Canada ,2009.A03-15
以上是关于基于扩频技术的MPEG-2视频水印算法matlab仿真的主要内容,如果未能解决你的问题,请参考以下文章
语音隐写基于matlab DCT扩频语音水印含Matlab源码 466期
Matlab系列基于DCT和置乱算法的视频水印Matlab实现
图像隐写基于matlab遗传算法的奇异值分解数字水印嵌入提取含Matlab源码 2115期
图像隐写基于matlab遗传算法的奇异值分解数字水印嵌入提取含Matlab源码 2115期
基于Arnold置乱的数字水印图像加密算法的设计,基于Matlab语言编程,完成Arnold置乱算法,并用Matlab GUI工