科技通报

FPGA的数字水印提取系统设计

点击数:10    日期:2016-10-24 09:01:48

针对信息安全问题的日益突出,提出了基于5/3整数小波的数字水印算法,给出了两种5/3小波的硬件架构:
  

 摘 要: 针对信息安全问题的日益突出,提出了基于5/3整数小波的数字水印算法,给出了两种5/3小波的硬件架构:一种是基于RAM的流水线架构;另一种是基于行分组的行列并行架构。进而设计了基于FPGA的数字水印提取硬件系统,结果证明该算法具有很好的不可见性及鲁棒性,且复杂度低,硬件较容易实现,并将水印提取代码下载到FPGA硬件进行验证,结果证明该算法可以很好地实现水印的提取工作。
关键词: 数字水印; 5/3小波; FPGA; 水印提取
本文引用《现代电子技术
0 引 言
数字水印技术是一种有效的数据安全维护及版权保护技术[1],将某种特殊信息嵌入到数字文件中,其中数字文件可以是图像、视频等,而水印可以是可见的或者不可见的。目前数字水印技术的研究工作主要是针对静止的图像,而视频信号存在一些不同于静止图像信号的特点,目前大多数的研究者都在软件平台上进行数字视频水印算法的研究,但很难满足视频的实时性要求。因此,基于硬件的视频水印算法的研究是非常有必要的。
本文提出基于FPGA的数字水印算法,FPGA现场可编程逻辑门阵列,可重复编程、周期短、成本低,且FPGA门电路资源丰富,大大缩短了开发周期,降低了开发成本。本文选用Xilinx公司的FPGA芯片进行系统设计。
1 数字水印技术
1.1 数字水印技术基础
数字水印[2](Digital Watermark)技术是指使用某种水印算法将水印信息嵌入到多媒体数字文件中,数字水印包含两个过程:水印的嵌入过程和水印的提取或检测过程,水印嵌入过程是将水印数据嵌入到原始数字文件中,水印提取或检测过程是采用相应的水印检测或提取算法对待检测文件进行水印检测或提取操作。
数字水印技术的特殊应用要求决定了其不同于其他信息安全技术的一些特性,包括可证明性、不可见性、鲁棒性、安全性以及水印信息容量,其中鲁棒性、不可见性及信息容量最为重要又相互矛盾,应合理选择三种特性的折中点。该技术可以按照水印抗攻击的能力、感知特性、水印所附载的媒体、水印嵌入的位置、水印检测手段、水印内容等六个角度进行分类。
1.2 数字视频水印技术
数字视频水印技术就是将数字水印嵌入到数字视频产品中,以达到数字视频产品版权保护、广播监控、视频拷贝控制等目的。在视频水印系统中,应考虑实时性、可靠性、安全性、压缩编码、盲检测性以及鲁棒性等问题。
数字视频水印攻击的目的是降低水印检测的能力或破坏隐藏在载体数据中水印信息的意义。针对视频的各种攻击可以大致分为无意攻击和有意攻击,常见的攻击类型有视频处理攻击、同步攻击、拷贝攻击以及共谋攻击[3]。
1.3 水印算法
数字视频通常情况下会经过编码器压缩成码流之后再经信道进行传输,相应地,接收端要经过解码器解码还原数字视频信息。根据这个数字视频通信模型,可以将水印信息嵌入到三个不同的位置,而根据嵌入位置的不同,对应两种不同的数字视频水印算法,即压缩域视频水印算法、原始域视频水印算法。
2 小波分析
本文研究的数字视频水印算法是基于小波域的。小波变换是局部化的时频分析,即它用时域和频域共同表示信号。小波分析作为一种同时从时域和频域进行分析的局部化分析方法,现正被广泛的研究与应用[4]。
2.1 小波变换基础
连续小波变换(Continuous Wavelet Transform,CWT)或被称为积分小波变换是用一族小波基函数的加权和来表征信号,其中的一族小波基函数由基本小波经过伸缩平移得到[5]。
多分辨率分析的基本原理是:将待处理信号进行不同分辨率下的分解,然后选择某一合适分辨率分析处理该信号或者同时在多级分辨率上分析处理该信号。任何小波都能把[L2(R)]分解成子空间[Wj,j∈Z]上的某种集合。
Mallat算法是一个经典多分辨率分析方法,在小波函数和尺度函数具体结构未知的情况下,可由系数直接完成信号的分解和重构,信号每次分解需要计算的长度减半,因此该算法是一种快速算法。
利用Mallat算法同样可以实现对二维图像的离散小波变换。图1是一个两级二维分解情况,首先进行第一级分解得到LL(低频分量)、HL(垂直方向高频分量)、LH(水平方向高频分量)、HH(高频分量)。然后再对第一级分解得到的低频分量LL进行第二级变换得到LL2(第二级低频分量)、HL2(第二级垂直方向高频分量)、LH2(第二级水平方向高频分量)、HH2(第二级高频分量)。图1显示了二维图像经过两级小波变换后的各层小波系数的分布情况。
2.2 小波变换的提升算法
提升算法与传统小波变换不同,它不使用基本小波经过伸缩平移得到小波基函数,而是通过提升过程构造出小波基。相比较于传统小波变换,提升小波变换具有结构简单、计算速度快等优点[6]。其运算分为三个步骤:分裂、预测、更新。
2.3 整数小波变换
本文研究的水印算法是对图像灰度值进行小波变换,然后进行水印的嵌入。灰度值是8 b的整数,希望它经过小波变换之后系数依然是整数,因此采用整数小波变换。选用的整数提升小波是5/3小波,用于JPEG2000标准的无损压缩。
3 水印嵌入、提取算法
本算法思路是先对图像进行5/3小波变换,然后再计算二次小波系数的垂直高频系数相邻两行差值之和,剔除差值最大的几行所对应的宏块位置,禁止嵌入水印。确定嵌入行后,在一行22个宏块中选择12个均值较大的宏块,再在宏块的四个子块中选择方差相对小的子块作为嵌入水印位置。
3.1 水印嵌入算法
若拿图像的亮度分量[Y]进行小波变换,则低频LL代表图像主要能量分布,反映出原始图像的平均亮度信息。若需要更精细的分解,则只需选择上一级的LL进行下一级的小波分解即可。HL,LH和HH反映原始图像的边缘和轮廓特征。故将水印嵌入到低频区域中可以保证水印具有较好的鲁棒性,但不可见性较差,而将水印嵌入到高频区域可以保证较好的不可见性,但鲁棒性较差。综合考虑鲁棒性、不可见性及算法复杂度等,可以将水印信息嵌入到第二级的垂直高频分量上(即LH2)。
中频的大系数中嵌入水印信息,当受到有损编码压缩等因素的影响,这些系数将发生变化,水印嵌入的位置将无法找到,造成出现漏检、错检等情况。为了解决这一问题,首先对LH2进行分块,然后对分块后每行选取几个较大的能量块进行水印嵌入,这样即使前面某一个能量块出现变化也不会影响后面的水印,保证了算法的鲁棒性。
3.2 水印提取算法
水印嵌入的过程反过来就是水印提取过程。在进行水印提取的过程中,先对含水印的图像进行小波变换,然后根据上面所设计的水印嵌入算法相对应的进行水印提取工作。
3.3 性能分析
本文选用了尺寸为528×320的YUV格式的视频文件作为测试文件,对该视频按照上面的步骤进行水印嵌入及提取。
3.3.1 不可见性分析
水印嵌入后不可见性评价方法主要有两种:主观评价和定量评价。主观评价将随机产生的96位(0,1)序列嵌入到选择测试文件中,截取了其中一帧图像,如图3所示,人眼无法识别水印信息的嵌入,证明了水印嵌入算法具有较好的不可见性。
通过峰值信噪比(PSNR)对不可见性做定量评价。如果PSNR>35 dB就说明水印算法具有良好的不可见性。通过使用Matlab对该测试文件嵌入水印后的视频求其PSNR,结果如图4所示。从图4可以看出,每帧图像的PSNR都大于35 dB。该结果从定量方面再次证明了提出的水印算法的不可见性较好。
3.3.2 鲁棒性分析
选用相关系数(NC)衡量水印信息的鲁棒性,NC值越大表示它们两者越相似。为了评价水印算法的鲁棒性,对含有水印的视频进行了MPEG?2编解码、帧平均、帧删除三种常见攻击,然后使用NC评价该水印算法的鲁棒性。各种攻击下的NC参数如表1所示,证明了此算法的鲁棒性较好。
4.1 硬件部分
标清数字水印提取方案的硬件系统主要由USB数据传输模块、FPGA数据处理模块、SRAM数据存储模块三部分组成。
USB数据传输部分选用Cypress公司的cy7c68013芯片完成视频图像的传输[7]。
本系统中,用FX2作为一个可以与主机高速通信的USB 2.0接口, FPGA能够提供满足Slave FIFO要求的传输时序,且Slave FIFO方式相对比较简单,故USB选用的是Slave FIFO工作模式。Slave FIFO模式下USB与FPGA的数据流传输见图6。
FPGA数据处理模块采用低成本的Spartan?3系列的XC3S400芯片,该系列芯片性能指标虽不是最优,但非常适合低成本应用场合。Xilinx的FPGA基于SRAM工艺,断电时数据会全部丢失,故FPGA通常使用一个外部PROM将配置数据下载到FPGA中。FPGA的配置方式有从串模式、JTAG模式、主串模式、SelectMAP/从并模式。本系统采用的配置方式是主串方式。PROM芯片选用XCF02S。
本系统采用两片SRAM实现数据乒乓存储,即往一片SRAM中存储完一帧图像后,在处理该帧图像的同时接着往另一片SRAM中存储下一帧图像,一帧标清视频图像的数据量为[720×5761 024=405 ]KB,一个像素点为8 b,但是经过小波变换后结果有可能会超过8 b,故选用存储容量为512 KB数据线为16的IS64LV51216。它可以实现低成本、高速、高容量的缓存。
4.2 软件部分
USB开发包含三个部分:驱动程序开发、上位机应用程序开发、8051固件程序开发。Windows操作系统提供了多种USB设备类的驱动程序,且驱动程序开发相对复杂,故省去了这个部分的开发。上位机部分直接使用Cypress公司提供的控制面板。故重点做的是固件程序的开发。Cypress公司为了方便开发者进行开发,同样给开发者提供了固件框架。现在要做的就是在理解USB协议的基础上在该框架上进行修改或添加完成所需要的功能。
固件程序需要实现的工作有:
(1) 完成USB设备的列举与重新列举。
(2) 初始化USB,对与数据传输及USB正常工作相对应的寄存器进行配置。
(3) 使用Slave FIFO模式实现数据在上位机与FPGA之间进行传输。
FPGA软件部分中,数据流处理过程是:由于视频数据流是以奇偶场进行传输的,而进行小波变换时需要一整帧的图像数据,故首先把视频数据流存储在片外SRAM中,等到一整帧图像数据都传输完毕后,再把数据从SRAM中读出来进行小波变换及水印提取,提取出水印信息后再通过USB口传输出去。FPGA完成的工作有:
(1) 控制USB传输数据。
(2) 对要进行水印提取的视频数据的[Y]分量做两级5/3小波变换。
(3) 按照设计的算法将水印数据提取出来。
(4) 控制片外SRAM的读/写操作。
其中USB数据传输及SRAM读/写实现相对比较简单,小波变换是FPGA程序的核心部分,设计了基于RAM的流水线架构,基于RAM的二维5/3小波变换的实现结构如图7所示。5/3小波的流水线架构如图8所示。相比未加入流水线的小波变换架构,加入流水线后大大提高了小波变换的速度。
基于FPGA的水印提取算法进行ModelSim仿真,结果见图11,左边列为FPGA提取出来的水印数据,右边列为水印编号即第几个水印数据。图12为Matlab水印提取结果,通过比较后发现两者的结果是完全一致的,亦即小波变换及水印提取过程用FPGA实现是完全可行的。
5 结 论
本文通过分析数字水印的原理、分类、特征等,提出了一种基于DWT的数字水印算法,设计了数字水印提取系统。数字水印提取方案采用了USB+FPGA+SRAM的硬件结构实现载有水印的视频数据流的输入、水印提取、水印结果输出的工作。并对软件的核心部分小波变换设计了硬件架构,设计了基于RAM的流水架构,结构简单,易于FPGA实现,并能够满足视频实时处理的要求。参考文献
[1] 胡大辉,杜治国.一种改进的回声隐藏算法[J].西南师范大学学报(自然科学版),2012(9):109?114.
[2] 陈忻.数字水印技术综述[J].科技视界,2012,27(9):106?107.



王编辑
中联论文网编辑
刘编辑
中联论文网编辑
赵编辑
中联论文网编辑
孙编辑
中联论文网编辑
电话
18931176030
固话
0311-80693734
投稿邮箱
ttqikan@163.com
99期刊承诺发表不成功无条件退款!
客服系统