APP下载

基于Flash动画的数字水印研究及其Matlab实现

2014-07-28蒋文娟陆娜

电脑知识与技术 2014年16期
关键词:数字水印

蒋文娟 陆娜

摘要:该文基于Matlab实现了一个flash动画的数字水印算法,将水印图像嵌入到flash动画文件的结束标签之后,并能够成功从已嵌入水印的flash动画中提取水印图像。实验结果表明,该算法不会影响到flash动画的播放效果,提取出的水印图像也能够正确识别。

关键词:flash;swf;数字水印

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3891-02

Abstract: In this paper, a digital watermark algorithm is implemented by Matlab. The watermark image is embedded behind the end tag of flash animation file, then the water image can be extracted from watermark-embedded flash animation. The experiment results show that the watermark-embedded flash file can be played clearly and the extracted watermark can be recognized correctly

Key words:flash; swf; digital watermark

1 概述

近年来,随着多媒体技术和计算机网络的迅速普及,包括图像、音频、视频、动画等多媒体信息的传播日益频繁和广泛。但同时,也为盗版者非法占有和传播数字化制品提供了方便;为了对数字化制品提供版权保护和完整性验证,数字水印技术是常用的一种有效手段。

数字水印技术利用数字化制品(即载体)中的冗余信息,使用某些算法把水印信息嵌入到数字化制品中。水印信息可以是无意义的信息,但一般情况下会选择能够标识数字化制品版权的有意义的信息,比如作者身份信息。嵌入水印到数字化制品中,既不会影响数字化制品的正常使用,且当出现版权争议或需要验证数字化制品完整性时,数字水印能够达到有效判断数字化制品的版权归属或者判断数字化制品内容是否被非法篡改等目的。嵌入水印的数字化载体可以是任何一种多媒体类型,目前文本水印、图像水印和音频视频水印研究较受关注,而对flash动画的水印研究相对较少。该文对以flash动画为载体嵌入和提取水印的算法进行了研究和实现。

Micromedia Flash是一套专门用来设计影音动画的软件,该软件的动画源文件的扩展名是.fla,此类文件还可再次被编辑;而.swf则是由源文件进行动画发布后的flash动画的扩展名,此类文件发布后在flash工具中则不能再被编辑。这两种是flash的主要文件格式,由于flash swf动画被广泛应用于网页动画、MTV、课件制作等,因此本文研究的是对swf动画嵌入和提取水印的方法。

2 swf文件结构

Swf文件由三部分组成:文件头、文件主体和文件结束标签,这三部分顺序组成swf文件。

2.1文件头

Swf文件头定义了Swf动画文件的一些基本结构。第一个字段是三个字节的文件标识,用以表明该动画文件是否经过了压缩;紧接着的字段用一个字节标识swf动画文件的版本;文件长度字段用来标识该动画文件的大小;舞台大小字段定义了动画显示区域的大小;帧率和帧数字段分别表明了动画的播放速度和动画文件的帧数量。

2.2文件主体和结束标签

文件主体使用一系列的二进制标签来定义动画文件中的各种对象及其属性,结束标签一般是swf文件的最后一个标签,所有标签采用通用格式。使用标签定义文件可以在解析的时候跳过不能识别的标签,从而保持文件良好的兼容性,同时也利于文件的扩展。

Swf文件中的标签分为定义型标签和控制型标签。定义型标签定义了swf动画的内容,如各种形状、文字、位图、声音等;控制型标签用来对角色实例进行渲染,并且控制影片的流程。Swf文件主体部分的每一个标签都是独立的,任何一个标签都与其它标签没有数据上的关联,任何一个标签都可以被插入、移除和修改。

3 基于flash动画的数字水印设计与实现

对swf动画文件的数字水印方案,通常都是通过分析swf动画文件的文件格式,然后在swf文件的某些位置或结构中嵌入数字水印。比如,在文件主体标签中嵌入水印、在文件的帧中嵌入水印、替换动画文件的物件属性来嵌入水印、在结束标签后添加额外的标签来嵌入水印等。不管用哪种方法,不管选择将水印信息嵌入到动画文件的什么位置,前提都是嵌入水印后不能影响动画文件的正常播放。

3.1数字水印算法流程

本文的数字水印方案选择在flash动画的结束标签之后嵌入水印信息。由于播放器能够忽略结束标签之后的内容,所以在Flash动画中要嵌入的某些隐秘信息,可以放在结束标签之后,而这不会影响Flash动画的正常播放。

嵌入流程:

1)置乱水印图像;

2)按标签顺序读入swf文件;

3)判断是否结束标签,如不是结束标签则转2;

4)是结束标签,则将置乱水印添加至结束标签之后。

提取流程(提取流程是嵌入流程的逆过程):

1)按标签顺序读入嵌入水印的swf文件;

2)判断是否结束标签,如不是结束标签则转1;

3)如是结束标签,则提取结束标签后的数据;

4)恢复被置乱的数据提取水印。

3.2运行结果

本文选择基于Matlab来实现数字水印算法,首先使用Matlab GUI设计界面,再对相应控件编写callback方法。运行过程中,我们选择了一个swf动画文件作为载体,而水印图像则是一幅96*96的灰度图像。运行结果如图1所示:

从图1可以看出,嵌入水印后的flash可以正常播放,并且不影响播放质量;提取出的水印清晰,可以正确识别。

4 结论

本文用Matlab GUI实现了一个有效的基于flash动画的数字水印算法,能够在swf动画中嵌入和提取数字水印图像;能够保证嵌入水印的flash动画正常播放,也就是实现了水印的不可感知性;能够正确地识别提取出是水印图像。

但是对该flash动画的数字水印算法可以进一步改进和优化:

1)此算法虽然能够顺利嵌入和提取水印图像,但是嵌入水印的flash动画文件和原始flash动画文件的大小发生了较大的变化,如图2所示,其中video.swf是嵌入水印后的swf文件,videobk.swf是原始swf文件。

2)此算法中嵌入水印的flash动画,通过一些flash的反编译软件,较容易发现其中的隐藏的水印信息。

在进一步的研究中可以实现更隐蔽、鲁棒性更强的数字水印算法,比如嵌入水印到Flash文件的未知标签中,或者嵌入水印到Flash动画的某些非敏感属性中,可起到更好的隐藏隐藏水印的目的。

参考文献:

[1] 邓华,司瑾,王光宇.基于Flash动画的数字水印设计方法[J].电脑编程技巧与维护,2011,(14):99-100.

[2] 张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程.2010,36(1):181-183.

[3] 丁光华,刘嘉勇,孙克强.基于XML的信息隐藏方法[J].计算机工程,2008,34(6):155-157.

[4] 刘磊.Flash动画的内容分析与特征提取研究[D].济南:山东师范大学,2008:10-15.

[5] 孙圣和,陆哲明,牛夏牧,等.数字水印技术及应用[M].北京:科学出版社.2004:205-207.endprint

摘要:该文基于Matlab实现了一个flash动画的数字水印算法,将水印图像嵌入到flash动画文件的结束标签之后,并能够成功从已嵌入水印的flash动画中提取水印图像。实验结果表明,该算法不会影响到flash动画的播放效果,提取出的水印图像也能够正确识别。

关键词:flash;swf;数字水印

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3891-02

Abstract: In this paper, a digital watermark algorithm is implemented by Matlab. The watermark image is embedded behind the end tag of flash animation file, then the water image can be extracted from watermark-embedded flash animation. The experiment results show that the watermark-embedded flash file can be played clearly and the extracted watermark can be recognized correctly

Key words:flash; swf; digital watermark

1 概述

近年来,随着多媒体技术和计算机网络的迅速普及,包括图像、音频、视频、动画等多媒体信息的传播日益频繁和广泛。但同时,也为盗版者非法占有和传播数字化制品提供了方便;为了对数字化制品提供版权保护和完整性验证,数字水印技术是常用的一种有效手段。

数字水印技术利用数字化制品(即载体)中的冗余信息,使用某些算法把水印信息嵌入到数字化制品中。水印信息可以是无意义的信息,但一般情况下会选择能够标识数字化制品版权的有意义的信息,比如作者身份信息。嵌入水印到数字化制品中,既不会影响数字化制品的正常使用,且当出现版权争议或需要验证数字化制品完整性时,数字水印能够达到有效判断数字化制品的版权归属或者判断数字化制品内容是否被非法篡改等目的。嵌入水印的数字化载体可以是任何一种多媒体类型,目前文本水印、图像水印和音频视频水印研究较受关注,而对flash动画的水印研究相对较少。该文对以flash动画为载体嵌入和提取水印的算法进行了研究和实现。

Micromedia Flash是一套专门用来设计影音动画的软件,该软件的动画源文件的扩展名是.fla,此类文件还可再次被编辑;而.swf则是由源文件进行动画发布后的flash动画的扩展名,此类文件发布后在flash工具中则不能再被编辑。这两种是flash的主要文件格式,由于flash swf动画被广泛应用于网页动画、MTV、课件制作等,因此本文研究的是对swf动画嵌入和提取水印的方法。

2 swf文件结构

Swf文件由三部分组成:文件头、文件主体和文件结束标签,这三部分顺序组成swf文件。

2.1文件头

Swf文件头定义了Swf动画文件的一些基本结构。第一个字段是三个字节的文件标识,用以表明该动画文件是否经过了压缩;紧接着的字段用一个字节标识swf动画文件的版本;文件长度字段用来标识该动画文件的大小;舞台大小字段定义了动画显示区域的大小;帧率和帧数字段分别表明了动画的播放速度和动画文件的帧数量。

2.2文件主体和结束标签

文件主体使用一系列的二进制标签来定义动画文件中的各种对象及其属性,结束标签一般是swf文件的最后一个标签,所有标签采用通用格式。使用标签定义文件可以在解析的时候跳过不能识别的标签,从而保持文件良好的兼容性,同时也利于文件的扩展。

Swf文件中的标签分为定义型标签和控制型标签。定义型标签定义了swf动画的内容,如各种形状、文字、位图、声音等;控制型标签用来对角色实例进行渲染,并且控制影片的流程。Swf文件主体部分的每一个标签都是独立的,任何一个标签都与其它标签没有数据上的关联,任何一个标签都可以被插入、移除和修改。

3 基于flash动画的数字水印设计与实现

对swf动画文件的数字水印方案,通常都是通过分析swf动画文件的文件格式,然后在swf文件的某些位置或结构中嵌入数字水印。比如,在文件主体标签中嵌入水印、在文件的帧中嵌入水印、替换动画文件的物件属性来嵌入水印、在结束标签后添加额外的标签来嵌入水印等。不管用哪种方法,不管选择将水印信息嵌入到动画文件的什么位置,前提都是嵌入水印后不能影响动画文件的正常播放。

3.1数字水印算法流程

本文的数字水印方案选择在flash动画的结束标签之后嵌入水印信息。由于播放器能够忽略结束标签之后的内容,所以在Flash动画中要嵌入的某些隐秘信息,可以放在结束标签之后,而这不会影响Flash动画的正常播放。

嵌入流程:

1)置乱水印图像;

2)按标签顺序读入swf文件;

3)判断是否结束标签,如不是结束标签则转2;

4)是结束标签,则将置乱水印添加至结束标签之后。

提取流程(提取流程是嵌入流程的逆过程):

1)按标签顺序读入嵌入水印的swf文件;

2)判断是否结束标签,如不是结束标签则转1;

3)如是结束标签,则提取结束标签后的数据;

4)恢复被置乱的数据提取水印。

3.2运行结果

本文选择基于Matlab来实现数字水印算法,首先使用Matlab GUI设计界面,再对相应控件编写callback方法。运行过程中,我们选择了一个swf动画文件作为载体,而水印图像则是一幅96*96的灰度图像。运行结果如图1所示:

从图1可以看出,嵌入水印后的flash可以正常播放,并且不影响播放质量;提取出的水印清晰,可以正确识别。

4 结论

本文用Matlab GUI实现了一个有效的基于flash动画的数字水印算法,能够在swf动画中嵌入和提取数字水印图像;能够保证嵌入水印的flash动画正常播放,也就是实现了水印的不可感知性;能够正确地识别提取出是水印图像。

但是对该flash动画的数字水印算法可以进一步改进和优化:

1)此算法虽然能够顺利嵌入和提取水印图像,但是嵌入水印的flash动画文件和原始flash动画文件的大小发生了较大的变化,如图2所示,其中video.swf是嵌入水印后的swf文件,videobk.swf是原始swf文件。

2)此算法中嵌入水印的flash动画,通过一些flash的反编译软件,较容易发现其中的隐藏的水印信息。

在进一步的研究中可以实现更隐蔽、鲁棒性更强的数字水印算法,比如嵌入水印到Flash文件的未知标签中,或者嵌入水印到Flash动画的某些非敏感属性中,可起到更好的隐藏隐藏水印的目的。

参考文献:

[1] 邓华,司瑾,王光宇.基于Flash动画的数字水印设计方法[J].电脑编程技巧与维护,2011,(14):99-100.

[2] 张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程.2010,36(1):181-183.

[3] 丁光华,刘嘉勇,孙克强.基于XML的信息隐藏方法[J].计算机工程,2008,34(6):155-157.

[4] 刘磊.Flash动画的内容分析与特征提取研究[D].济南:山东师范大学,2008:10-15.

[5] 孙圣和,陆哲明,牛夏牧,等.数字水印技术及应用[M].北京:科学出版社.2004:205-207.endprint

摘要:该文基于Matlab实现了一个flash动画的数字水印算法,将水印图像嵌入到flash动画文件的结束标签之后,并能够成功从已嵌入水印的flash动画中提取水印图像。实验结果表明,该算法不会影响到flash动画的播放效果,提取出的水印图像也能够正确识别。

关键词:flash;swf;数字水印

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)16-3891-02

Abstract: In this paper, a digital watermark algorithm is implemented by Matlab. The watermark image is embedded behind the end tag of flash animation file, then the water image can be extracted from watermark-embedded flash animation. The experiment results show that the watermark-embedded flash file can be played clearly and the extracted watermark can be recognized correctly

Key words:flash; swf; digital watermark

1 概述

近年来,随着多媒体技术和计算机网络的迅速普及,包括图像、音频、视频、动画等多媒体信息的传播日益频繁和广泛。但同时,也为盗版者非法占有和传播数字化制品提供了方便;为了对数字化制品提供版权保护和完整性验证,数字水印技术是常用的一种有效手段。

数字水印技术利用数字化制品(即载体)中的冗余信息,使用某些算法把水印信息嵌入到数字化制品中。水印信息可以是无意义的信息,但一般情况下会选择能够标识数字化制品版权的有意义的信息,比如作者身份信息。嵌入水印到数字化制品中,既不会影响数字化制品的正常使用,且当出现版权争议或需要验证数字化制品完整性时,数字水印能够达到有效判断数字化制品的版权归属或者判断数字化制品内容是否被非法篡改等目的。嵌入水印的数字化载体可以是任何一种多媒体类型,目前文本水印、图像水印和音频视频水印研究较受关注,而对flash动画的水印研究相对较少。该文对以flash动画为载体嵌入和提取水印的算法进行了研究和实现。

Micromedia Flash是一套专门用来设计影音动画的软件,该软件的动画源文件的扩展名是.fla,此类文件还可再次被编辑;而.swf则是由源文件进行动画发布后的flash动画的扩展名,此类文件发布后在flash工具中则不能再被编辑。这两种是flash的主要文件格式,由于flash swf动画被广泛应用于网页动画、MTV、课件制作等,因此本文研究的是对swf动画嵌入和提取水印的方法。

2 swf文件结构

Swf文件由三部分组成:文件头、文件主体和文件结束标签,这三部分顺序组成swf文件。

2.1文件头

Swf文件头定义了Swf动画文件的一些基本结构。第一个字段是三个字节的文件标识,用以表明该动画文件是否经过了压缩;紧接着的字段用一个字节标识swf动画文件的版本;文件长度字段用来标识该动画文件的大小;舞台大小字段定义了动画显示区域的大小;帧率和帧数字段分别表明了动画的播放速度和动画文件的帧数量。

2.2文件主体和结束标签

文件主体使用一系列的二进制标签来定义动画文件中的各种对象及其属性,结束标签一般是swf文件的最后一个标签,所有标签采用通用格式。使用标签定义文件可以在解析的时候跳过不能识别的标签,从而保持文件良好的兼容性,同时也利于文件的扩展。

Swf文件中的标签分为定义型标签和控制型标签。定义型标签定义了swf动画的内容,如各种形状、文字、位图、声音等;控制型标签用来对角色实例进行渲染,并且控制影片的流程。Swf文件主体部分的每一个标签都是独立的,任何一个标签都与其它标签没有数据上的关联,任何一个标签都可以被插入、移除和修改。

3 基于flash动画的数字水印设计与实现

对swf动画文件的数字水印方案,通常都是通过分析swf动画文件的文件格式,然后在swf文件的某些位置或结构中嵌入数字水印。比如,在文件主体标签中嵌入水印、在文件的帧中嵌入水印、替换动画文件的物件属性来嵌入水印、在结束标签后添加额外的标签来嵌入水印等。不管用哪种方法,不管选择将水印信息嵌入到动画文件的什么位置,前提都是嵌入水印后不能影响动画文件的正常播放。

3.1数字水印算法流程

本文的数字水印方案选择在flash动画的结束标签之后嵌入水印信息。由于播放器能够忽略结束标签之后的内容,所以在Flash动画中要嵌入的某些隐秘信息,可以放在结束标签之后,而这不会影响Flash动画的正常播放。

嵌入流程:

1)置乱水印图像;

2)按标签顺序读入swf文件;

3)判断是否结束标签,如不是结束标签则转2;

4)是结束标签,则将置乱水印添加至结束标签之后。

提取流程(提取流程是嵌入流程的逆过程):

1)按标签顺序读入嵌入水印的swf文件;

2)判断是否结束标签,如不是结束标签则转1;

3)如是结束标签,则提取结束标签后的数据;

4)恢复被置乱的数据提取水印。

3.2运行结果

本文选择基于Matlab来实现数字水印算法,首先使用Matlab GUI设计界面,再对相应控件编写callback方法。运行过程中,我们选择了一个swf动画文件作为载体,而水印图像则是一幅96*96的灰度图像。运行结果如图1所示:

从图1可以看出,嵌入水印后的flash可以正常播放,并且不影响播放质量;提取出的水印清晰,可以正确识别。

4 结论

本文用Matlab GUI实现了一个有效的基于flash动画的数字水印算法,能够在swf动画中嵌入和提取数字水印图像;能够保证嵌入水印的flash动画正常播放,也就是实现了水印的不可感知性;能够正确地识别提取出是水印图像。

但是对该flash动画的数字水印算法可以进一步改进和优化:

1)此算法虽然能够顺利嵌入和提取水印图像,但是嵌入水印的flash动画文件和原始flash动画文件的大小发生了较大的变化,如图2所示,其中video.swf是嵌入水印后的swf文件,videobk.swf是原始swf文件。

2)此算法中嵌入水印的flash动画,通过一些flash的反编译软件,较容易发现其中的隐藏的水印信息。

在进一步的研究中可以实现更隐蔽、鲁棒性更强的数字水印算法,比如嵌入水印到Flash文件的未知标签中,或者嵌入水印到Flash动画的某些非敏感属性中,可起到更好的隐藏隐藏水印的目的。

参考文献:

[1] 邓华,司瑾,王光宇.基于Flash动画的数字水印设计方法[J].电脑编程技巧与维护,2011,(14):99-100.

[2] 张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程.2010,36(1):181-183.

[3] 丁光华,刘嘉勇,孙克强.基于XML的信息隐藏方法[J].计算机工程,2008,34(6):155-157.

[4] 刘磊.Flash动画的内容分析与特征提取研究[D].济南:山东师范大学,2008:10-15.

[5] 孙圣和,陆哲明,牛夏牧,等.数字水印技术及应用[M].北京:科学出版社.2004:205-207.endprint

猜你喜欢

数字水印
基于网屏编码的数字水印技术
基于数字水印的人脸与声纹融合识别算法
一种多传感器图像融合与数字水印技术
基于图像纹理复杂度的小波域数字水印算法
基于矩阵分解和混沌置乱的数字水印算法