DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 108|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:00:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1 引言??? 随着计算机网络和数字通信技术的迅速发展,数字技术使数字多媒体(数字视频、数字音频、数字图像等)的传输与复制变得非常容易,但却增加了多媒体信息被非法盗版的机会。数字作品的版权保护成为一个急需解决的难题,已引起学术界与企业界的广泛关注。??? 数字水印技术是一种最近发展起来的新技术,用于数字产品认证和保护。大多数水印算法采用软件实现。软件实现具有易于应用、升级和适应性较好等特点,但存在速度受限、难以满足实时处理的问题。而采用硬件实现则可以克服这些问题。??? 现场可编程门阵列FPGA(Field Programmable Gate Ar-ray)是一种设计灵活、开发速度快的现场可编程逻辑器件。与DSP相比,FPGA具有以下主要优点:速度快,内置高速乘法器和加法器;高档 FPGA中含有巨量高速存储器,速度更快,电路更简单;FPGA硬件可编程,使得硬件更简单和小型化。文献[l]利用FPGA实现小波变换,文献[2- 3]利用FPGA实现一种高速DCT处理器件。在此基础上,利用FPGA设计基于DCT域的数字水印算法,DCT变换是该数字水印方案的关键单元之一。采用硬件描述语言VHDL(Very HighSpeed Integrated Circuit Hardware Description Language)有效设计和仿真DCT变换。2 图像水印算法??? 这里设计的图像水印算法是依据文献[4]算法提出的。该算法是在充分考虑人眼视觉特性的基础上,应用一种新的图像分类算法,结合Amold置乱变换,提出的一种基于图像分类的自适应水印算法。图1为图像水印算法框图。

??? 具体算法步骤如下:??? (1)设水印信号为w,对其进行n次Arnold置乱变换,记为wi,n作为密钥由水印嵌入者保管,然后将wi进行行堆叠或列堆叠变成一维水印序列wt,这里采用行堆叠。??? (2)将原始图像I分成m个互不重叠的8×8的子块fk(x,y),对每个子块进行DCT变换得Fk(u,v)。
                          
                       
                          
                                ??? (3)将图像块分成3类,即平滑区、边缘区、纹理区。依据分类结果为每一类指定一个强度因子αi(i=1,2,3),为使水印具有更好的鲁棒性和透明性,这里借鉴文献[5]的思想,利用部分DCT低频系数嵌入水印,将水印信号依次叠加到Fk(u,v)的4个低频系数中,即:??

??? 式中,4k≤t<4(k+1),k=0,1……m-1;αi为强度因子。平滑区、边缘区、纹理区的α取值均不相同。??? (4)对所得结果进行DCT逆变换,再将所有子块合并为整幅图像,得到含水印的图像。??

3 数字水印方案的设计??? 根据上述图像水印算法,设计FPGA实现的总体结构。按照自顶向下(Top-to- Down)的设计方法,将总体设计划分为一维DCT单元、外部存储单元和控制单元(由一个有限状态机FSM(finite system machine)控制)。图像数据从外部(如PC机)按行进入一维DCT单元,数据处理后存入存储单元:然后再对该中间数据按列进行一维DCT变换。得到二维处理结果并存入存储单元。控制单元按上述步骤进行图像处理,并产生地址数据、enable信号等。图2为其总体结构图。

3.1 2D-DCT结构??? 对于一个大小为N×N的像素块,假设x(i、j)为输入的像素点阵数据,其二维DCT变换公式为:??

??? 式中,C为带余弦基本函数的变换系数矩阵,CT为C的转置。??? 从式(3)和式(4)可看出,2D-DCT变换是可分离的,它可分裂为串联的2次一维变换。所以可连续进行2次一维DCT变换实现一幅图像的2D- DCT。2D-DCT的结构框图如图3所示。首先将图像数据按行输入一维DCT单元进行行变换,变换后的数据存储到转置缓冲器,以进行行列转换,转换后的数据再按列输入一维DCT单元进行列变换。变换完成后的数据输出到PC机添加水印。

3.2 控制单元??? 控制单元控制存储单元和运算单元,其主要功能:产生存储器的控制信号,控制双端口RAM的运行;产生存储器的读写地址和控制运算流程等。
                          
                       
                          
                                4 实验结果??? 在整个电路设计过程中,首先进行计算机Matlab仿真,验证算法的正确性,然后以Xilinx公司的ISE9.1i可编程逻辑器件开发系统作为开发工具,采用可综合的VHDL语言描述DCT变换设计。使用Xilinx Spartan3 XC3S200完成整个电路设计,Spartan3系列器件嵌有18 bit×18 bit补码乘法器和大量RAM块,非常适合DCT变换。在Xilinx公司集成设计环境ISE9.1i下,选用XC3S200-4FT256器件实现综合和仿真,综合后最高时钟频率达98.592 MHz。并对布局布线后的设计用Mentor Graphics公司的Modelsim SE6.1f进行仿真。表1给出2D-DCT变换时FPGA器件的使用情况。

??? 器件的功能引脚示意图,如图4所示。其中,xin(7:0)为待转换的8位数据输入端,CLK为时钟信号输入端,RST为复位端,dct_2d(11: 0)为12位的DCT转换结果,rdy_out是转换结果就绪指示。DCT变换的逻辑功能如图5所示的时序仿真波形。



5 结论??? 设计和实现一种基于DCT域的数字水印算法。DCT变换算法的实现是该设计中数字水印方案的关键算法之一。重点采用FPGA对水印算法DCT变换进行设计和仿真实验。实验结果表明该方案利用FPGA实现水印算法比用软件实现法速度更快,性能更稳定。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2026-3-18 06:31 , 耗时 0.105009 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表