侵权投诉
当前位置:

OFweek电子工程网

开发工具/算法

正文

DWT域数字水印算法的FPGA实现

导读: 根据离散小波变换原理的特点,提出了一种基于DWT域的数字水印算法,并用FPGA硬件实现其中关键部分的DWT变换。详细介绍了相关模块的设计和时序,并对整个系统进行了综合仿真,验证了设计的正确性。分析与仿真结果表明,与软件实现相比,用FPGA实现水印算法具有高速实时处理的优点。

  随着计算机网络和通信技术的飞速发展,数字媒体(包括数字图像、数字视频、数字音频)已得到了广泛的应用,随之而来的数字媒体的信息安全、知识产权保护和认证等问题也变得日益突出。数字水印作为传统加密方法的有效补充手段,是一种可以在开放的网络环境下保护版权和认证来源以及完整性的新技术[1]。

  根据水印的实现过程,图像水印算法可分为空域算法和变换域算法。空域算法是通过直接改变原始图像的像素值来嵌入水印,通常具有较快的速度,但鲁棒性差,且水印容量也会受到限制;变换域算法是通过改变某些变换系数来嵌入水印,通常具有很好的鲁棒性和不可见性,其实现一般基于图像变换(如DCT、DFT、DWT等)。大多数水印算法采用软件实现,软件实现具有易于应用、升级和适应性较好等特点,但存在速度受限、难以满足实时处理的问题。而采用硬件实现则可以克服这些问题。本文基于上述考虑,利用FPGA设计了基于DWT(Discrete Wavelet Transform)域的数字水印算法,其中提升小波变换是该数字水印方案的关键单元之一,采用硬件描述语言Verilog HDL对算法进行描述,并用ModelSim完成了功能和时序仿真。

  1 离散小波变换原理

  1.1 Mallat算法及提升格式

  1987 年,Mallat将计算机视觉领域的多分辨思想引入了小波分析,提出了多分辨分析MRA(Multi-resolution Analysis)的理论,并给出了数学描述和一种子带滤波器的离散小波变换与重构算法——Mallat算法。在图像处理领域,需要处理的通常是二维图形。因此,将Mallat算法扩展到二维空间, 适当地选取一组行和列变换正交的小波系数,对图像(或分解后的低频子图)分别进行行变换和列变换。然后,根据后续的具体应用对N次分解所得的图像在不同的分辨率下进行分析、处理或数据压缩。二维Mallat算法的结构如图1所示。

  

  首先,用滤波器组g(n)和h(n)对图像的每一行信号进行滤波和2抽取,然后用相同的滤波器组对所得结果的每一列再次进行滤波和2抽取。这样,原始图像就被分解成为4个子带图像,分别表示为LL、LH、HL和HH。其中,LL为水平和垂直方向的低通信号;LH为水平方向低通,垂直方向高通;HL为水平方向高通,垂直方向低通;HH为水平和垂直方向的高通信号。

  相对于Mallat算法而言,提升算法[2]是一种更快更有效的小波变换方法,标准的提升算法包含分裂(Split)、预测(Prediction)、更新(Update)三个步骤。分裂是将输入数据分为偶数序列和奇数序列两个部分;预测是用分裂的偶数序列预测奇数序列,得到的预测误差为变换的高频分量;更新是由预测误差来更新偶数序列,得到变换的低频分量。提升算法的结构框图如图2所示,其提升实现过程由式(1)和式(2)表示,其中滤波系数α=-1/2, β=1/4。

  

  

  本文将采用5/3小波滤波器来实现小波变换。

  1.2 边界处理

  由于图像数据是有限长的,因此离散小波变换必须对图像数据进行边界延拓,在做小波提升算法时,同样需要对其边界数据进行延拓,以保证边缘数据的正确。基于资源消耗和功耗的考虑,这里采用内嵌对称延拓提升算法[3-4],将延拓的过程融合到提升变换过程中。精简后的内嵌延拓方式如图3所示,其中Xn表示图像数据,dn表示高频分量,cn表示低频分量。

  

1  2  下一页>  
声明: 本文由入驻OFweek公众平台的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

我来说两句

(共0条评论,0人参与)

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号