在数据码流中隐藏数据的方法及装置的制作方法

文档序号:6396098阅读:175来源:国知局
专利名称:在数据码流中隐藏数据的方法及装置的制作方法
技术领域
本发明涉及一种JPEG 2000数据码流中嵌入隐藏数据的方法以及所使用的编码和解码装置,特别是涉及在数据嵌入的同时考虑人眼视觉特性(HVS)的影响,即使在嵌入大量隐藏数据的情况下也不会引起严重的视觉失真,同时在解码端支持渐进地提取隐藏数据的方法和装置。

背景技术
随着数字技术的高速发展,人们在互联网上发布或下载数字多媒体作品越来越方便,然而,媒体的数字化也为仿造和剽窃提供了更多的机会。防止版权侵犯和恶意篡改,已经成为信息时代的迫切需求,于是数字水印技术应运而生。
与钞票水印相类似,数字水印技术是指把诸如标志版权或所有权数据之类的特制的不可见的标记,利用数字内嵌的方法隐藏在诸如数字图像、声音、文档、图书、视频等数字产品之类的宿主媒体(host media)中,同时不引起人们可以感知的失真。嵌入的数据可供提取,必要时作为法庭证据等。
在数字水印技术中,有一项分支通常被成为数据隐藏技术(datahiding),它的主要目的是在宿主媒体中嵌入大量数据。例如,作品的原创作者可以利用数字水印证明其对作品的所有权,并作为鉴定、起诉非法侵权的证据。另外,也可以通过对数字水印的探测和分析保证数字信息的完整性和可靠性,从而成为保护作者权益的有效手段。
目前,数据隐藏技术已开始应用于数字图像、数字视频、数字音频等多种媒体信息的版权保护和真伪认证系统。被隐藏的数据可以是版权信息、作品标题、时间标签、字幕等等。
由于数字媒体容易被修改,因此通常要求嵌入的数据能够抵抗一定程度的攻击,对于嵌入图像中的水印来说,最普遍的是要求它能抵抗有损压缩的攻击。JPEG(联合图像专家组)是国际标准组织(ISO)下从事静态图像压缩标准制定的委员会制定出了第一套国标静态图像压缩标准。现有的很多算法都是基于JPEG压缩标准的,因为JPEG是现在最流行的通用图像压缩算法。然而随着ISO/ITU-T的最新压缩标准JPEG 2000的出现,将来会有越来越多的图像采用JPEG 2000格式进行压缩,因此需要研究基于JPEG 2000的数据隐藏技术。
JPEG 2000标准在许多性能上优于JPEG标准。例如,JPEG 2000具有更高的编码效率,能提供分辨率和像素精度上渐进可伸缩的码流,感兴趣区域(ROI,Region Of Interest)编码等等。
下面参考图1的流程图来说明JPEG 2000的编码和解码过程。如图1所示,在JPEG 2000的编码过程中,原始图像数据首先经过诸如颜色空间变换,去直流,划分图像片等之类的前处理形成空域信号。然后对所形成的空域信号进行离散小波变换(DWT),以去除像素之间的相关性得到小波系数。如果得到的小波系数是实数,则在此后的量化过程中将小波系数变换为整数。最后需要对整型的小波系数进行熵编码,即优化截断点的嵌入式块编码(EBCOT,Embedded Block Coding with OptimalTruncation)。有关内容可参见2000年8月发表的JPEG 2000标准的第一部分Final Draft International Standard(ISO/IEC FDIS 15444-1),ISO/IECJTC1/SC29/WG 1。D.Taubman于2000年7月在IEEE trans.on ImageProcessing,Vol.9,pp.1158-1170发表的题为“High Performance ScalableImage Compression with EBCOT”的文章。可以传输或存储经过EBCOT编码的小波系数。JPEG 2000的解码基本上是编码的逆向操作。
EBCOT编码是一种基于位平面的编码方式,它将位于同一子带内的小波系数分成一定大小的系数块,称为一个编码块(code block),并对每个编码块独立进行编码。
EBCOT是一个两层式的编码器,在第一层编码(tier-1 coding)中,每个编码块中的系数比特被按照从显著到不显著的顺序,逐个位面地输出到算术编码器,打包成JPEG 2000基本码流(JPEG 2000 elementary codestream)。同时每个位平面会被分成至多三个编码过程(pass),具体来说,第一个编码过程是重要性传播过程(significance propagation pass),如果一个系数本身还未变得显著,且其周围八个邻域中有至少一个系数已经变得显著,则这个系数归入重要性传播过程,在这个位面中首先编码;第二个编码过程是幅度精练过程(magnitude refinement pass),如果一个系数在当前位面之前已经变得显著,则在此编码过程中编码;第三个编码过程是清理过程(cleanup pass),所有在前两次扫描中未被编码的比特在此编码过程中编码。
这样,经过第一层编码后,每个编码过程的结束处都提供一个截断点的选择,一个具有n个位面的编码块能提供最多3n-2个截断点选择。然后在第二层编码(tier-2 coding)中,EBCOT根据整体码率限制和每个编码过程对率失真曲线的贡献分配在编码块之上的截断点位置并丢弃截断点之后的数据。
JPEG 2000中还提供了一种惰性模式(lazy mode)的编码,鉴于若干个位面之后,每个位平面的第一个和第二个编码过程中的系数比特近似呈均匀分布,使用算术编码器难以获得更多增益,JPEG 2000规定在惰性模式编码中,除了最显著的四个位平面,其他的重要性传播过程和幅度精练过程都可以不经算术编码而直接打包,这样不会牺牲多少编码效率,又大大减少了计算量。
经过EBCOT之后的码流可以依照不同顺序打包,打包后的码流经过存储或传输,被解码端获得。解码端按照相反的顺序逆向EBCOT、逆量化、反向DWT以及后处理,得到解码后的图像。
在现有技术中,在静态图像中嵌入隐藏数据通常采用两种方法,一种方法是基于扩展谱(spread spectrum)的水印算法,在图像的空域或某种变换后的频域中嵌入数据,而不考虑具体的文件格式。I.J.Cox,M.L.Miller,和A.L.McKellips于1999年7月在有关多媒体信息的鉴定和保护问题的IEEE会议文件第7号,第87卷,第1127-1141页(Proceedings ofthe IEEE,Special Issue on Identification and Protection of MultimediaInformation,vol.87,no.7,pp.1127-1141,July 1999)上发表的题为“Watermarking as communications with side information”的文章中对此做了介绍的。另一种方法是将数据嵌入压缩域,例如JPEG或者JPEG 2000的码流中。M.Holliman,N.Memon,B.-L.Yeo和M.Yeung于1998年1月在SPIE Photonics West,(San Jose,CA)发表的题为“Adaptive PublicWatermarking of DCT-based Compressed Image”的文章对此做了说明。这两种方法各有优缺点。
JPEG 2000具有下列特性,编码端决定编码后图像的最大分辨率和最大像素精度,而解码端能够根据自己对所需要的图像的具体要求,选择码流中必要的部分进行下载和解码,这一特性对于数据隐藏技术来说既是优势也是挑战。一方面,用户不需要下载整幅图像后再进行编码和解码,这样隐藏在码流中的数据就不会遭到破坏(再一次的编码和解码可以看作是又一次的攻击),这使得在JPEG 2000码流中的数据隐藏的应用前景远远好于在JPEG码流中的应用。另一方面,用户选择的随机性也增加了隐藏数据提取的不确定性,在一次解码中,码流中的任何部分都可能被丢弃,那么相应的隐藏数据也可能被丢弃。
Po-Chyi Su和C.-C.Jay Kuo于2003年5月在Proceedings of theInternational Symposium on Circuits and Systems 2003第3卷上发表的题为“Information embedding in JPEG-2000 compressed images”的文章对JPEG2000码流中的数据隐藏做了详细的分析。他们认为一个安全的数据隐藏方案必须在EBCOT的第二层编码之后进行,因为第二层编码本身可以视作一次攻击过程。他们同时提出在编码时采用惰性模式的编码,并且只在第四个位平面之后的幅度精练过程中嵌入数据。这样可以避免了破坏编码和解码端算术编码器状态的同步,也不会影响较低位平面的系数显著性上下文。该算法的大致过程如下首先确定一个最大的码率,用这个码率对原始图像进行惰性模式的JPEG 2000压缩,然后从各个编码块在截断点之前的最不显著的位平面开始作反向的嵌入(backwardembedding)。每次比较所有编码块中最不显著的幅度精练过程,并将其中对率失真曲线贡献最小的一个编码过程替换成隐藏数据,如此进行直到所有的隐藏数据都被嵌入为止。
Po-Chyi Su和C.-C.Jay Kuo的算法中的反向嵌入的设计是为了使得在一定的数据嵌入量之下引起最小的均方意义失真。然而,它具有一些无法克服的缺点。第一如前所述,JPEG 2000的使用者可以根据自己的需要选择码流中需要的部分进行解码,如果使用者需要一些更低码率的图像产品,那么必然要丢弃一些较低位面的信息,而正是隐藏数据所在处,换言之,该算法极容易受到JPEG 2000解码器的攻击;第二,反向的嵌入无法实现渐进式的隐藏数据提取,我们知道,渐进性最重要的应用是在Internet等低码率传输的应用场景中,用户能在图像下载过程中尽可能早地逐渐提取出隐藏数据,而无需等待整幅图像完全被接收,Po-ChyiSu和C.-C.Jay Kuo的算法不能做到这一点。
因此,需要一种在数据码流中嵌入隐藏数据的方法以及所使用的编码和解码装置,以便能够克服隐藏数据易于受到JPEG 2000解码器的攻击,并且实现渐进式的隐藏数据提取。


发明内容
本发明的目的是提供一种能够进行图像压缩和数据隐藏的方法和装置,该方法和装置特别适用于在基于JPEG 2000进行压缩编码的图像中加入诸如数字水印之类的隐藏数据。
根据本发明的一个方面,提供一种在JPEG 2000数据码流中嵌入隐藏数据的方法,包括步骤对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),得到每个编码块的截断点的位置信息;计算每个编码块的每个系数,以确定嵌入隐藏数据而不对原始图像造成严重的视觉失真的系数比特的位置;和对编码块中的位平面进行自上而下的扫描,在位于截断点之前且确定的不引起严重视觉失真的系数比特的位置嵌入隐藏数据。
根据本发明的另一个方面,提供一种在JPEG 2000数据码流中嵌入隐藏数据的方法,包括步骤对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),以便给出各个编码块的截断点的位置信息;根据该编码块前四个位平面的信息计算每个系数的临近系数视觉掩模效应;从第五个最显著的位平面开始,自上而下进行基于位平面的扫描,直至遇到该编码块的截断点;在位平面扫描过程中,每个系数有一个对应的最大嵌入深度,这个嵌入深度被初始化为负无穷,并在这个系数第一次变得显著后得到更新,然后一直保持到位平面扫描结束;和在位平面扫描过程中,如果某个系数比特所处的位平面深度不大于该系数的最大嵌入深度,则可替换该系数比特为隐藏信息比特。
根据本发明的另一个方面,提供一种提取JPEG 2000数据码流中嵌入的隐藏数据的解码方法,包括步骤对接收的基本码流进行EBCOT解码,以提取编码块并产生截断点位置信息;计算提取的编码块的视觉掩模矩阵;和执行位平面扫描,提取编码块中嵌入隐藏数据。
根据本发明的再一个方面,提供一种在JPEG 2000数据码流中嵌入隐藏数据的编码装置,包括优化截断点的嵌入式块编码(EBCOT)装置,用于对编码块进行优化截断点的嵌入式块编码,以便给出各个编码块的截断点的位置信息;视觉掩模计算装置,用于计算每个编码块中的每个系数所处上下文的复杂程度;和位平面扫描装置,用于对编码块中的所述位平面进行扫描,在计算的不引起严重的视觉失真的系数比特的位置嵌入隐藏数据。
根据本发明的再一个方面,提供一种提取JPEG 2000数据码流中嵌入的隐藏数据的解码装置,包括逆优化截断点的嵌入式块解码(IEBCOT)装置,用于对接收的基本码流进行EBCOT解码,以产生编码块和截断点位置信息;视觉掩模计算装置,用于计算所述编码块的视觉掩模矩阵;和位平面扫描装置,用于提取编码块中嵌入的隐藏数据。
本发明还提供用于存储执行本发明的编码方法,和解码方法的记录介质。
本发明的方法和装置能够在Internet等低码率传输的身份验证、版权保护中得到广泛应用。



通过下面结合附图对用于解释,而不是限制本发明的优选实施例进行详细描述,将使本发明的上述及其它目的、特征和优点更加清楚,其中 图1是说明现有技术的JPEG 2000编码器和解码器的结构方框图; 图2是表示根据本发明实施例的用于嵌入隐藏数据的编码端的数据嵌入部分的方框图; 图3是表示在图2所示的位平面扫描装置中所执行的嵌入隐藏数据的操作的流程图;和 图4是表示根据本发明实施例在解码端提取嵌入隐藏数据的数据提取部分的方框图。

具体实施例方式 下面结合

根据本发明的实施例在JEPG 2000码流中嵌入数据的编码及解码方法及其装置。
下面以采用JPEG 2000压缩编码的图像为例,说明根据本发明在JPEG2000的压缩域(码流)中嵌入隐藏信息,并且隐藏数据可以在解码端被渐进地提取出来的方法。
为了避免编码和解码对隐藏在码流中的数据的破坏,本发明采用惰性模式的JPEG 2000压缩。经过EBCOT第二层编码后,在未经过算术编码的幅度精练过程中嵌入隐藏数据。数据嵌入操作是在各个编码块之间互相独立进行的。在一个编码块中,总是先传递较高位面的信息而丢弃较低位面的信息。因此,可以认为一个隐藏信息的比特,应该被尽量深地嵌入到编码块的位平面中去,或者说,应该尽可能地嵌入到更显著的位平面中去,即,对位平面进行自上而下的扫描,以此提高对JPEG 2000低码率解码攻击的鲁棒性,同时也是为了在低码率传输中,这个比特能被更早地提取出来。
但是,随着一个隐藏的数据比特在位平面中的嵌入深度的增加,它所引起的图像失真也相应严重。因此,需要解决如何合理地安排这些隐藏的数据比特的位置,使其所引起的失真难以被人眼所觉察。一般来说,改变同一个编码过程中的任何一个比特,在均方意义上引起的误差是相同的。然而,在图像的某些位置,这些误差能够被图像空域的背景很好地掩盖,这现象被称为视觉掩模效应(visual masking effect)。一般来说,图像复杂的区域有利于失真的掩模,而图像变化较平缓的区域则相反,即不太利于失真的掩模。因此,需要根据某个具体系数的上下文环境,决定当前的系数比特是否可以被替换成隐藏信息的比特。因此,不能采用Po-Chyi Su和C.-C.Jay Kuo的算法中替换整个编码过程的做法,而要对编码过程中的每个比特分别进行判断,以确定图像的哪些位置可以嵌入数据而不引起严重的视觉失真。
JPEG 2000标准的第二部分(Part II Extension)中提出了一种point-wise extended masking方法,通过按照下面公式(1)进行非线性变换(式中各项的计算将在后面描述),将小波系数xi变换成另一个域上的系数zI,并认为这个变换域上的系数在视觉上是一致的。<math> <mrow> <msub> <mi>z</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mi>sign</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>|</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>|</mo> </mrow> <mi>&alpha;</mi> </msup> </mrow> <mrow> <mn>1</mn> <mo>+</mo> <mrow> <mo>(</mo> <mi>a</mi> <msub> <mi>&Sigma;</mi> <mrow> <mi>k</mi> <mo>&Element;</mo> <mi>neighborhood</mi> </mrow> </msub> <msup> <mrow> <mo>|</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <mo>|</mo> </mrow> <mi>&beta;</mi> </msup> <mo>)</mo> </mrow> <mo>/</mo> <mo>|</mo> <msub> <mi>&Phi;</mi> <mi>i</mi> </msub> <mo>|</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </math> 就是说,将zi改变一定量后,在视觉上引起的失真是一定的,这样就可以定量地衡量失真度的大小。
在公式(1)式中,xi是一个由EBCOT编码产生的小波系数,而为了得到这个小波系数而进行小波变换的低通滤波器必须具有单位的直流增益,高通滤波器必须具有单位的奈奎斯特增益。否则,公式(1)中的xi必须经过规范化,例如,用整型的5/3滤波器组滤波后得到的小波系数,其高通滤波器的奈奎斯特增益为2,每经历一级小波变换,所有高频系数必须除以2。
参数α是一个(0,1)区间内的实数,通常可以取0.7;参数β是另一个(0,1)区间内的实数,通常取一个比较小的数,如0.2;α是一个规范化常数(10000/2bit_depth-1)β,其中bit_depth是该图像的位深,例如,8比特的灰度图像,其位深就是8;k是经过量化与反量化的一个xi的邻近系数xk,k在反量化时,仅仅保留其量化索引的几个最显著的比特;|Φi|则表示在求和号中邻近系数的集合大小,而所谓临近系数集合,可以取以xi为中心的一个方格,但这个方格不能越过编码块的边界。
要衡量一个系数在某一位被隐藏数据比特所替代时引起的视觉失真的大小,可以通过衡量该位系数zi在变换前和变换后的改变量来实现。就是说,将嵌入和未嵌入隐藏数据比特的小波系数变换到一个视觉均衡的域上,并将二者在该域上的映像相减,得到定量的视觉失真度。系数zi的改变量可通过下面的公式(2)计算得出(式中各项的计算将在后面描述)。

其中



是xi经过量化和反量化后的当前系数xi,并且只用到xi已经被编码或解码的较显著位的信息,同时将当前位平面上的比特分别替换成1和0。另外,由于各个编码块的嵌入是独立的,邻近集合Φi的选取不能越过编码块的边界。
通常,存在着

的关系,于是,可以将公式(2)进一步简化为公式(3)。

在公式(3)的右端中,

是量化和反量化后的当前系数xi,并且只使用xi最显著的一个比特;m则是当前位平面的深度;Δb是该系数所处子带的基本量化步长。
由公式(3)可以得到了改变当前系数比特后所引起的视觉失真大小Δzi。因此,可以给出一个预定的阈值,将视觉失真大小Δzi与该阈值相比较,如果Δzi不超过这个阈值,则认为这个比特是可以被替代的。应该指出的是,公式(3)的右端是一个关于m的单调递增函数,因此不必对通过xi的量化索引得到的每一位都计算公式(3),而只需要求出一个最大的m即可。也就是说,对每个系数xi存在一个最大可能嵌入的深度mi,由下面的公式(4)表示。

上式中Th是一个预定的阈值,并假定在数据嵌入端和提取端都是已知的常数。于是每个系数xi的深度mi可以由该系数本身的数量级

和其周围系数的复杂程度,即,邻近系数视觉掩模矩阵NM[i]决定的,并且可以在一个系数首次变得显著时计算求得。
下面说明如何确定阈值Th。
人眼对于不同的空间频率和方向性的敏感程度是不同的,通常对高频分量的失真容忍度比对低频分量的失真好些。因此,视觉失真度阈值的选取应该是因子带而异的,于是我们用Thb表示在不同子带b所取的不同阈值。对比度敏感函数(CSF)(Contrast Sensitive Function)表示了人眼对二维空间频率的不同敏感度,因此可以利用CSF函数作为调整子带间视觉失真阈值的权重因子,通过下面的公式(5)选取预定的阈值。<math> <mrow> <mi>&Delta;</mi> <msub> <mi>z</mi> <mi>i</mi> </msub> <mo>&le;</mo> <msub> <mi>Th</mi> <mi>b</mi> </msub> <mo>=</mo> <msub> <mi>Th</mi> <mn>0</mn> </msub> <mo>/</mo> <msqrt> <msubsup> <mi>W</mi> <mi>b</mi> <mi>csf</mi> </msubsup> </msqrt> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow> </math> 其中Th0是一个可供调整的参数,以求在嵌入数据量和图像整体失真度之间作出折衷;下标b表示不同子带;

为CSF权重因子。当人眼处于一个中等的观察距离,约为1700像素时,CSF权重因子如下表 表1 Leve 1 Y(LH HL HH)Cb(LH HL HH)Cr(LH HL HH) 10.3072,0.3072,0.10890.0978, 0.0978,0.03120.1774, 0.1774,0.0771 20.8616,0.8616,0.74230.2801, 0.2801,0.15230.3885, 0.3885,0.2486 31.0000,1.0000,1.00000.5017, 0.5017,0.36230.5985, 0.5985,0.4709 41.0000,1.0000,1.00000.6894, 0.6894,0.57920.7576, 0.7576,0.6660 51.0000,1.0000,1.00000.8188, 0.8188,0.74590.8609, 0.8609,0.8032 表1以中等观察距离为例,给出了1700像素时各子带的CSF权重因子
图2是根据本发明实施例在编码端嵌入隐藏数据的数据嵌入部分的方框图。下面参考图2说明在编码端将隐藏数据嵌入数据码流的过程。该图只给出了在数据码流中嵌入隐藏数据的部分,其余部分与图1所示的JPEG 2000的编码过程相同,为了避免混淆,在此只说明与嵌入隐藏数据有关的部分。
下面以JPEG 2000编码的图像为例进行说明,应该指出,本发明不限于此,也可以应用到以其它方式编码的图像。编码端的隐藏数据嵌入部分包括优化截断点的嵌入式块编码(EBCOT)单元21,视觉掩模计算单元22,和位平面扫描单元23。
同一子带内的小波系数排列成具有矩形结构的“编码块”,然后,这些编码块被编码成位平面,这些位平面从具有非零元素的最重要的位平面开始到最不重要的位平面为止。位平面中的每一个系数位以下列三种编码过程之一进行编码重要性传播过程、幅度精练过程和清理过程。
EBCOT单元21对图像进行有效压缩编码并产生截断点位置的数据。EBCOT单元21不仅能实现对图像的有效压缩,同时产生的码流具有分辨率可伸缩性、信噪比可伸缩性、随机访问和处理等非常好的特性。视觉掩模计算单元22计算每个编码块,确定哪些位置可以嵌入隐藏数据而不引起严重的视觉失真。位平面扫描单元23对编码块中的位平面以一种特殊的方式进行扫描,从左侧最上面的系数开始,每四个系数作为一列,直到扫遍编码块中的所有系数为止。
下面说明图2所示的数据嵌入部分的操作。经JPEG 2000编码的宿主图像,在经过如图1所示的前处理,离散小波变换以及量化之后,得到各个待编码的编码块,每个编码块为一个由整型的量化索引组成的数据块。此后基于每个编码块具体的上下文环境独立地嵌入隐藏数据。
为了简单起见,下面仅对一个单独的编码块的嵌入隐藏数据的过程进行说明,其它编码块的情况与此相同。首先,EBCOT单元21对编码块进行EBCOT编码,将编码块分成多个位平面并给出截断点位置。如果该编码块属于LL子带,则跳过这个编码块。一般来说,修改LL子带容易引起严重的失真,通常不对LL子带做数据嵌入。如果在该编码块中,截断点的位置处在前四个最显著位平面,即没有直接编码的幅度精练过程可供数据嵌入,则可跳过这个编码块。否则,该编码块可以作为嵌入隐藏数据的侯选对象。在视觉掩模计算单元22建立两个与该编码块的大小相同的缓存区(图中未示出),一个用于存储邻近系数视觉掩模矩阵NM[.],另一个用于存储最大嵌入深度矩阵ED[.]。对邻近系数视觉掩模矩阵NM[i]和最大嵌入深度矩阵ED[i]进行初始化NM[.]=0,ED[.]=-INF(负无穷)。视觉掩模计算单元22根据前四个位平面的信息,利用下面的公式(6)计算邻近系数视觉掩模效应NM[i]。<math> <mrow> <mi>NM</mi> <mo>[</mo> <mi>i</mi> <mo>]</mo> <mo>=</mo> <mrow> <mn>1</mn> <mo>+</mo> <mrow> <mo>(</mo> <mi>a</mi> <msub> <mi>&Sigma;</mi> <mrow> <mi>k</mi> <mo>&Element;</mo> <mi>neighborhood</mi> </mrow> </msub> <msup> <mrow> <mo>|</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <mo>|</mo> </mrow> <mi>&beta;</mi> </msup> <mo>)</mo> </mrow> <mo>/</mo> <mo>|</mo> <msub> <mi>&Phi;</mi> <mi>i</mi> </msub> <mo>|</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow> </math> 其中α,β和|Φi|的定义如前面的公式(1)所述,neighborhood的选取可以是以xi为中心的一个方阵。公式(6)中的k取该编码块的前四个最显著位平面的信息,可以由下面的公式(7)计算得到,即
其中num_bps是该编码块的位平面个数。
此后,将EBCOT单元21产生的编码块的数据块,截断点位置以及视觉掩模计算单元22计算的视觉掩模矩阵信息输入到位平面扫描单元23。位平面扫描单元23从编码块的第五个较显著的位平面开始,进行逐个位平面的扫描。
下面说明位平面扫描单元23的操作。位平面扫描单元23首先判断该位平面的幅度精练过程是否位于截断点之后,如果是,则结束对该编码块的操作。然后,更新最大嵌入深度矩阵ED[i]。具体地说,对于一个系数xi,如果它已经变得显著,但仍具有ED[i]=-INF的关系,则按照下面的公式(8)将其更新。

否则,最大嵌入深度ED[i]保持不变。对于所有最大嵌入深度ED[i]不小于当前位平面深度的系数xi,将其在当前位平面的系数比特替换为隐藏数据比特,从而实现隐藏数据的嵌入。如果最大嵌入深度ED[i]小于当前系数xi的位平面深度,说明该位置不适合于嵌入隐藏数据,则保持原系数比特不变。此后,转到下一个位平面,位平面扫描单元23重复上面的操作。
经过数据嵌入的编码块经过直接编码的JPEG 2000编码,连同原来的截断点位置信息,重新打包形成用于传送的输出码流。应该指出,图2中的EBCOT单元21,视觉掩模计算单元22,和位平面扫描单元23可以针对所有的编码块复用。
下面参考图3描述位平面扫描模块23的流程。在步骤S31,读入一个编码块及其邻近系数视觉掩模矩阵NM[i]和截断点位置信息。其中,截断点位置信息由EBCOT单元21对该编码块进行EBCOT编码产生。邻近系数视觉掩模矩阵NM[i]由视觉掩模计算单元22生成。在步骤S32,建立编码块的最大嵌入深度矩阵ED[.],并将其初始化为ED[.]=-INF(负无穷)。接下来,在步骤S33,从所读入的编码块的第五个最显著的位平面开始读入下一个位平面的信息。在步骤S34,判断截断点是否位于该位平面的第二个编码过程(pass)(即幅度精练过程)前。如果步骤S34的结果为肯定,流程返回步骤S31,表明该位平面中的系数比特不适合隐藏数据,读入一个新的编码块。如果步骤S34的判断结果为否定,即,截断点位于该位平面的第二个编码过程前,流程则进行到步骤S35。在步骤S35中,更新编码块的最大嵌入深度ED[i]。具体地说,对于一个小波系数xi,如果其已经变得显著,但仍存在ED[i]=-INF的关系,则用前述的公式(8)更新ED[i],以指示当前位平面的嵌入深度。接下来,在步骤S36,读入属于该位平面中第二个编码过程的系数比特。此后,在步骤S37,判断更新后的最大嵌入深度是否大于或等于该位平面的位置深度。如果判断结果为肯定,即更新后的最大嵌入深度大于或等于该位平面的位置深度,表示可以将该系数比特替换为隐藏数据,而其所引起的失真难以被人眼所觉察。此后,在步骤S38用隐藏数据比特替换该系数比特。此时,如果针对该编码块的处理未结束,流程则返回到步骤S36,重复该处理过程。如果在执行步骤S38后针对该编码块的处理已经结束,流程则返回到步骤S33,执行步骤S33至S38的处理。
图4是根据本发明实施例在解码端提取隐藏数据的数据提取部分的方框图。下面参考图4说明在解码端从码流中提取嵌入的数据的过程。同样,该图只给出了从码流中提取隐藏数据的部分,其余部分与图1所示的JPEG 2000的解码过程相同,为了避免混淆,在此只说明与嵌入隐藏数据有关的部分。
如图4所示,解码端的提取嵌入数据的部分包括逆优化截断点的嵌入式块解码(IEBCOT)单元41,视觉掩模计算单元42,和位平面扫描单元43。JPEG 2000的码流经解包后,分成各个基本码流。IEBCOT单元41对每个基本码流进行逆EBCOT操作,输出对应的编码块的数据块和截断点位置信息。然后,IEBCOT单元41将数据块送入视觉掩模计算单元42和位平面扫描单元43。同时,将截断点位置信息提供给位平面扫描单元43。视觉掩模计算单元42计算输入的编码块的视觉掩模矩阵,并将计算结果提供给位平面扫描单元43。位平面扫描单元43执行与编码端的位平面扫描单元23执行的基本相同的操作。所不同的是,在位平面扫描单元23,对所有最大嵌入深度ED[i]不小于当前系数xi的位平面深度,将其在当前位平面的系数比特替换为隐藏数据比特。而在位平面扫描单元43中,对该位平面的幅度精练过程中的每个系数比特,判断其所在位深度是否小于最大嵌入深度ED[i]。如果是,则将其作为隐藏数据比特提取出来,否则,不做操作。由此提取码流中嵌入的隐藏数据。
应该指出,对于编码和解码端的同步性,如果某个编码块的截断点位于第四个最显著的位平面之前,编码端和解码端都会直接跳过这个编码块。否则,前四个位平面的信息会完整地传到解码端。因此,编解码端得到的视觉掩模矩阵是一样的。而最大嵌入深度矩阵ED[i]除了与邻近系数视觉掩模矩阵NM[i]有关,只与系数xi的最显著的系数所在的位平面有关,这在编码端和解码端也是一致的,因为数据嵌入只会修改一个系数的较不显著的比特。编码和解码的同步说明了该数据嵌入算法支持盲提取(blind extraction),即不需要原始图像也可以提取隐藏信息。
在本发明的实施例中借鉴了JPEG 2000 Part II中的point-wise extendedmasking方法。然而,本发明不限于此。实际上,存在多种视觉掩模效应,其他实施形态可能包括对亮度掩模、边缘掩模等的考虑。
JPEG 2000编码器可能已经包括了对视觉频率相应的考虑(visualfrequency weighting),如果是,则在本算法中可以略去这一步。
JPEG 2000编码器也可能支持Part II,在量化之前就采用公式(1)中的非线性变换,那么本算法也可跳过公式(3)式。因为改变一个编码过程(pass)中任何一个比特在视觉上引起的失真都是相同的。但由于不是所有的解码器都支持JPEG 2000 Part II,更多的场合下,需要数据隐藏者和提取者自行计算视觉失真度。
根据本发明的在数据码流中嵌入隐藏数据的方法可以通过硬件实现。也可以由处理器通过执行具有相应功能的程序来实现。所述程序可记录在诸如软盘,硬盘,闪盘,CD-ROM,DVD-ROM之类的计算机可读的记录介质上。
虽然参考优选实施例对本发明进行了描述,本发明并不局限于此,而仅由所附权利要求限定,本领域技术人员在不脱离本发明精神的情况下可对本发明的实施例进行各种改变和改进。
权利要求
1.一种在JPEG 2000数据码流中嵌入隐藏数据的方法,包括步骤
对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),得到每个编码块的截断点的位置信息;
计算每个编码块的每个系数,以确定嵌入隐藏数据而不对原始图像造成严重的视觉失真的系数比特的位置;和
对编码块中的位平面进行自上而下的扫描,在位于截断点之前且确定的不引起严重视觉失真的系数比特的位置嵌入隐藏数据。
2.根据权利要求1所述的方法,其中计算所述位平面中适合于嵌入隐藏数据的位置的步骤包括将嵌入和未嵌入隐藏数据比特的小波系数变换到一个视觉均衡的域上,并将二者在该域上的映像相减,得到定量的视觉失真度的步骤。
3.根据权利要求2所述的方法,其中失真度的计算进一步包括用幂函数展开式近似原结果,并进一步简化到只用原系数的最显著比特进行计算的形式的步骤。
4.根据权利要求3所述的方法,其中进一步包括利用近似后的失真度表达式随位平面升高而单调递增的特性,将最大容许失真度的计算转化为该系数最高可嵌入隐藏数据的位平面的计算的步骤。
5.根据权利要求4所述的方法,其中计算一个系数最高可嵌入隐藏数据的位平面深度的步骤包括建立邻近系数视觉掩模矩阵NM[i]和最大嵌入深度矩阵ED[i]的步骤。
6.根据权利要求5所述的方法,其中邻近系数视觉掩模矩阵NM[i]的计算只取该编码块前4个最显著的位平面的信息。
7.根据权利要求1所述的方法,其中所述位平面扫描从按照位平面的显著性排列的第五个最显著位平面开始。
8.根据权利要求7所述的方法,其中所述位平面扫描步骤包括初始化ED[.]为负无穷,并在每个位平面扫描开始前,对每个第一次变得显著系数xi更新ED[i]。
9.根据权利要求8所述的方法,其中所述位平面扫描步骤进一步包括对于所有最大嵌入深度矩阵ED[i]不小于当前位平面深度的系数xi,将其在当前位平面的系数比特替换为隐藏数据比特。
10.一种在JPEG 2000数据码流中嵌入隐藏数据的方法,包括步骤
对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),以便给出各个编码块的截断点的位置信息;
根据该编码块前四个位平面的信息计算每个系数的临近系数视觉掩模效应;
从第五个最显著的位平面开始,自上而下进行基于位平面的扫描,直至遇到该编码块的截断点;
在位平面扫描过程中,每个系数有一个对应的最大嵌入深度,这个嵌入深度被初始化为负无穷,并在这个系数第一次变得显著后得到更新,然后一直保持到位平面扫描结束;和
在位平面扫描过程中,如果某个系数比特所处的位平面深度不大于该系数的最大嵌入深度,则可替换该系数比特为隐藏信息比特。
11.根据权利要求1至10中的任何一项所述的方法,其中嵌入隐藏数据的操作是在每个编码块之间相互独立进行的。
12.一种提取JPEG 2000数据码流中嵌入的隐藏数据的解码方法,包括步骤
对接收的基本码流进行EBCOT解码,以提取编码块并产生截断点位置信息;
计算提取的编码块的视觉掩模矩阵;和
执行位平面扫描,提取编码块中嵌入的隐藏数据。
13.根据权利要求12所述的方法,其中所述位平面扫描步骤进一步包括建立和更新最大嵌入深度矩阵ED[.],对每个位于截断点之前的系数比特,比较其所处位平面深度和该系数的最大嵌入深度ED[i],若不大于ED[i]则将该系数比特作为隐藏信息比特提取出来。
14.一种在JPEG 2000数据码流中嵌入隐藏数据的编码装置,包括
优化截断点的嵌入式块编码(EBCOT)装置(21),用于对编码块进行优化截断点的嵌入式块编码,以便给出各个编码块的截断点的位置信息;
视觉掩模计算装置(22),用于计算每个编码块中的每个系数所处上下文的复杂程度;和
位平面扫描装置(23),用于对编码块中的所述位平面进行扫描,在计算的不引起严重的视觉失真的系数比特的位置嵌入隐藏数据。
15.根据权利要求14所述的编码装置,其中所述视觉掩模计算装置(22)包括用于存储邻近系数视觉掩模矩阵NM[i]的存储器,和存储最大嵌入深度矩阵ED[i]的存储器。
16.根据权利要求15所述的编码装置,其中所述位平面扫描装置(23)根据(EBCOT)装置(21)提供的截断点的位置信息和视觉掩模计算装置(22)提供的邻近系数视觉掩模矩阵NM[i]在不引起严重的视觉失真的系数比特的位置嵌入隐藏数据。
17.一种提取JPEG 2000数据码流中嵌入的隐藏数据的解码装置,包括
逆优化截断点的嵌入式块解码(IEBCOT)装置(41),用于对接收的基本码流进行EBCOT解码,以产生编码块和截断点位置信息;
视觉掩模计算装置(42),用于计算所述编码块的视觉掩模矩阵;和
位平面扫描装置(43),用于提取编码块中嵌入的隐藏数据。
18.根据权利要求17所述的解码装置,其中所述位平面扫描装置(43)包括更新最大嵌入深度矩阵ED[i],对每个位于截断点之前的系数比特,比较其所处位平面深度和该系数的最大嵌入深度ED[i],若不大于ED[i]则将该系数比特作为隐藏信息比特提取出来。
19.一种存储用于执行在JPEG 2000数据码流中嵌入隐藏数据的方法的程序的记录介质,所述方法包括步骤
对编码块进行优化截断点的嵌入式块编码(EBCOT),以便给出各个编码块的截断点的位置信息;
计算每个编码块的位平面中的每个比特,以确定嵌入隐藏数据而不对原始数据造成严重的视觉失真的系数比特的位置;和
对编码块中的所述位平面进行扫描,在确定的不引起严重视觉失真的系数比特的位置嵌入隐藏数据。
20.一种存储用于执行在JPEG 2000数据码流中嵌入隐藏数据的方法的程序的记录介质,所述方法包括步骤
对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),以便给出各个编码块的截断点的位置信息;
根据该编码块前四个位平面的信息计算每个系数的临近系数视觉掩模效应;
从第五个最显著的位平面开始,自上而下进行基于位平面的扫描,直至遇到该编码块的截断点;
在位平面扫描过程中,每个系数有一个对应的最大嵌入深度,这个嵌入深度被初始化为负无穷,并在这个系数第一次变得显著后得到更新,然后一直保持到位平面扫描结束。
在位平面扫描过程中,如果某个系数比特所处的位平面深度不大于该系数的最大嵌入深度,则可替换该系数比特为隐藏信息比特。
21.一种存储用于执行提取JPEG 2000数据码流中嵌入的隐藏数据的解码方法,所述方法包括步骤
用于对接收的基本码流进行EBCOT解码,以提取编码块并产生截断点位置信息;
计算提取的编码块的视觉掩模矩阵;和
执行位平面扫描,提取编码块中嵌入的隐藏数据。
全文摘要
提供一种在JPEG 2000数据码流中嵌入隐藏数据的方法,包括步骤对宿主图像量化后的小波系数进行优化截断点的嵌入式块编码(EBCOT),以便给出各个编码块的截断点的位置信息;计算每个编码块的每个系数,以确定嵌入隐藏数据而不对原始图像造成严重的视觉失真的系数比特的位置;和对编码块中的位平面进行自上而下的扫描,在位于截断点之前并且确定的不引起严重视觉失真的系数比特的位置嵌入隐藏数据。另外,还提供提取数据码流中嵌入的隐藏数据的解码方法及其编码装置和解码装置。
文档编号G06T9/00GK1677438SQ20041003192
公开日2005年10月5日 申请日期2004年3月31日 优先权日2004年3月31日
发明者刘炜 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1