具体实施方式
以下描述仅仅示例了本发明的原理。因此将会理解,本领域的普通技术人员将能够设计实施本发明原理的各种结构,尽管这里没有明确描述或示出,但是它们却包括在本发明的精神和范围之内。而且,所有的实例和这里叙述的条件语言都旨在从原理上表示用于教导的目的,以帮助读者理解本发明的原理和发明人提出的促进技术的构思,并且不构造作为对这些具体叙述实例和条件的限制。而且,这里叙述本发明原理、各个方面、实施例、及其具体实例的所有陈述旨在包括本发明的结构性和功能性的等同物。另外,这种等同物旨在包括当前已知的等同物以及未来开发的等同物,即所开发的执行相同功能而不考虑结构的任何组件。
因此,例如,本领域的普通技术人员将会理解,这里的任何方框图都表示实施本发明原理的示意性结构的理论视图。同理,将会理解任何流程表、流程图、状态转变图、伪码等等都表示各种处理流程,这些处理可以实质上在计算机可读媒体中表示,从而可以由计算机或处理器执行处理,而不论是否明确示出了这种计算机或处理器。
图中所示的各个组件的功能,包括标记为“处理器”的任何功能性方块,也可以通过使用专门硬件以及能够执行与适当软件所相关软件的硬件来提供。当处理器提供这些功能时,可以由单个专门的处理器、或单个共享的处理器、或许多其中有些可共享的各个处理器来提供。而且,明确使用术语“处理器”或“控制器”不应该解释为排他性地指代能够执行软件的硬件,它可以隐含地包括但不限制于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器、随机访问存储器(RAM)、以及非易失性存储器。还可以包括其他传统的和/或通常的硬件。同样,图中所示的任何切换开关仅仅是概念性的。它们的功能可以通过操作编程逻辑、专门的逻辑,以及程序控制和专门逻辑的交互作用,甚至是通过实施者的人工操作所选择的特定技术来实现,如根据上下文所更加具体理解的。
在本申请的权利要求书中任何表示为装置的元件用于执行具体的功能,并且它们旨在包括任何执行该功能的方式,例如包括,a)执行该功能的电路元件的组合,或b)任何形式的软件,包括与适当的电路相组合的硬件、微码等等来运行该软件以执行该功能。这些权利要求所定义的本发明在于以下事实,以权利要求书要求的方式组合并且将各种所叙述的装置提供的功能集合在一起。因此申请人认为任何能够提供这些功能的装置都等同于这里所示的等同物。
软件所应用的软件模块、或简单的模块,在这里可以表示为流程图单元或其他单元的任何组合,这些单元表示执行处理步骤和/或本文的描述。这些模块可以通过明确表示或隐含所示的硬件来执行。
除非这里明确地规定,附图并不是按照比例绘制的。
在本说明书中,不同图中具有相同附图标记的组件表示相同的组件。
图1所示为根据本发明的原理用于给视频信号数字加水印的示意性发送机101,其中加水印是在每一帧的基础上,通过借助视频信号中每个块的色度部分平均值携带水印数据的一个或更多比特来实现。
图1中所示为a)YUV分用器和抽取器103,b)色彩选择器105,c)双刀双掷开关109,d)纹理掩蔽单元111,e)乘法器113,f)加法器115,g)多路复用器117,h)位映象器123,以及i)加法器133。如图1所示,可选项为j)信道编码器119,和k)块交织器121。
YUV分用器和抽取器103接收要加水印的视频信号,即要为视频信号增加附加信息。YUV分用器和抽取器103可以处理视频信号,例如根据串行数字接口(SDI)标准格式化的视频。正如本领域的普通技术人员将会意识到,可使用传统的技术将最初不是适当数字格式的任何视频信号转换为适当的数字格式。
YUV分用器和抽取器103分用视频的亮度分量(Y)及其色度分量。视频信号的色度分量包括两部分U和V,其中U为差分蓝色部分以及V为差分红色部分。
将附加数据嵌入到色度分量中的大量处理优选利用特别抽取的视频格式来执行,其中对于视频的每个原始的2×2亮度块,如果将原始块表示为4-4-4格式,那么只剩下一个Y值、一个U值和一个V值。为此目的,在输入视频信号实际上为所谓的4-4-4格式的情况下,通过分用器和抽取器103适当地抽取该图像,以便对于每个原始的2×2亮度块来说,都具有一个Y值、一个U值和一个V值。同理,在输入视频信号为所谓的“4-2-2”格式的情况下,即亮度为满分辨率时,当色度部分为a)垂直方向为满分辨率和b)水平方向为半分辨率时,分用器和抽取器103水平和垂直地抽取亮度分量以及只垂直抽取每个色度分量。同样地,在输入视频信号为所谓的4-2-0格式的情况下,即图像的亮度分量为满分辨率而色度分量每个都仅为垂直和水平方向的半分辨率,图像的亮度分量由分用器和抽取器103抽取,以便对于每个原始的2×2亮度块来说如果原始块已经表示为4-4-4格式,那么只剩下Y值、一个U值和一个V值。
优选的抽取视频格式可以提供作为色彩选择器105的输出。因此,优选地,不管输入视频信号的格式如何,系统的其他处理优选地可以基于抽取的视频信号,从而对于原始输入视频信号的满分辨率亮度像素的每个2×2块,具有Y值、一个U值和一个V值。本领域的普通技术人员将能够开发其各自的方法,如果它们选择这样做的话,将为亮度像素的每个2×2块开发一个Y值、一个U值和一个V值。
为了知道原始视频的格式,a)操作者可以向YUV分用器和抽取器103指示提供给发送机101的视频的特定格式,b)可以使用传统技术直接从视频检测到视频的格式,或c)可以从提供输入视频信号的高层处理器提供该信息。
YUV分用器和抽取器103还可以提供原始输入视频信号满格式的第二组YUV输出给双刀双掷开关109。
色彩选择器105为任何特定的像素确定在色度分量的哪一部分即在U部分还是V部分,如果有必要的话,可以更好地适应值的改变而不会引入可见的人为加工信号。在本发明的一个实施例中,色彩选择器105基于如下详细所述的查询表。可替换地,可能全部或部分基于各种计算,诸如在先的美国专利申请第10/342704号。
色彩选择器105的输出还用于控制双刀双掷开关109的位置。更具体而言,如此设置色彩选择器105的输出,以便双刀双掷开关109:1)为加法器115提供已经选择用于携带水印数据的色度分量部分;以及2)为YUV多路复用器117提供未被选择的色度分量部分。色彩选择器105的输出还提供给多路复用器117和以下所述使用的位映象器123。
纹理掩蔽单元111分析每个像素周围的亮度区域的纹理,这些像素以抽取格式由YUV分用和抽取器103提供作为输出,以用来确定该像素能够适应的而不引入可见的人为加工信号的最大changevalue,并提供表示该changevalue的一个加权作为输出。例如采用整数值1到5可以编码加权值。也可以使用其他值,例如经验表明在忙区域可以使用最大为20的值而不会有可见的质量下降。该加权提供给乘法器113。纹理掩蔽单元111可以产生小于能引入到像素中的最大失真的值,正如下文所述。
注意到所使用的特定值至少部分地取决于用于表示每个Y、V和V值的比特数量。例如,上述建议的加权值1到5,甚至用于Y、U、V的最大为20的加权值是8比特值。本领域的普通技术人员将容易意识到,用于8比特的值可以通过乘以4缩放到10比特,例如将该值向左移位两次。同样地,能够类似地适应Y、U、和V所使用的其他数量的比特。
乘法器113将从纹理掩蔽单元111接收的加权与作为该像素一部分发送的信息的相关值进行相乘,其中该值由位映象器123提供。例如,位映象器123所提供的值可能为-1,0或1。乘法器113产生的乘积提供给加法器115和133。
纹理掩蔽单元111响应于加法器122。有关这方面应该注意到,在它从加法器133接收一个该影响的信号时,纹理掩蔽单元111可以产生小于能够引入到像素中的changevalue的加权值。更具体而言,加法器133为每个块增加纹理掩蔽单元111所提供的值。加法器133提供一个最大值作为它的输出给纹理掩蔽单元111,纹理掩蔽单元111使用该值作为它的用于当前被处理像素的输出加权。加法器133提供的最大值小于:a)基于它周围纹理的像素所能够适应的最大加权值以及b)位映象器123提供给加法器133的用于该块的值和该块的当前和之间的差值。因此,一旦该和等于位映象器123提供给加法器133的用于该块的值,纹理掩蔽单元111就为该块的每个剩余像素输出一个零。
加法器115通过将乘法器113所提供的值增加到色度部分的值上产生修正的色度部分,色彩选择器105选择该色度部分以携带用于该像素的附加信息。正如所示,色彩选择器105所选择的用以携带附加信息的色度部分,通过双刀双掷开关109传送到加法器115。加法器115提供的修正色度部分被提供给多路复用器117。
纹理掩蔽单元111、乘法器113、位映象器123和加法器133协同工作以有效地上采样增加到特定处理分辨率的每个像素的值,以匹配原始视频信号色度的格式。为此目的,产生的上采样值可以增加到所选择的原始视频信号的每个像素的色度部分,该部分对应于用于处理的特定减少分辨率格式的像素位置。例如,如果原始视频信号为4-2-2格式,那么被确定增加到特定处理格式的块的每一个像素值在每个线基础上进行复制,以便产生要增加值的块,该块具有每线8像素以及每块16线。在该块中,非叠加的2个连续线组中的每一线具有相同的增加值。这种块在大小上对应于4-2-2格式原始视频中所选色度部分的原始块。通过加法器115将产生的上采样块的每个值增加到各个类似于原始视频信号中定位像素的选择色度部分。本领域的普通技术人员将容易地能够执行类似的对于不同格式的块转换。注意到,色彩选择器105没有确定所选色度部分的一个块的这些像素能够更好地适应增加值将为零的改变。如果原始视频信号为4-2-0格式,不需要任何上采样。
在本发明的另一个实施例中,只处理抽取的特定处理分辨率格式。然后,例如在多路复用器117中上采样产生的修正色度部分。但是,这样做可能导致原始视频信号的一定恶化,尽管这种恶化不需要为可见的。
多路复用器117接收原始亮度分量(Y)和通过双刀双掷开关109从YUV分用器和抽取器103所提供的未修正的色度部分。多路复用器117还从加法器115接收修正的色度部分。然后,多路复用器117一起多路复用原始亮度分量(Y)、未修正的色度部分以及修正的色度部分。多路复用器117依靠接收色彩选择器105的输出知道在哪一引线上接收色度分量的修正部分以及在哪一引线上接收色度部分的未修正部分。根据本发明的一个方面,产生的视频信号被提供作为加水印的输出视频信号。
本领域的普通技术人员将能够开发出本发明的实施例,其中附加数据被填加到原始色度信号部分而不是其抽取版本部分,从而将不需要上采样。
正如上所示,附加信息的二进制数据值即1和0被为每一个块发送,它可以直接提供给位映象器123用作水印数据,或者可以首先处理该值以便于在接收机处理和恢复信息。这种示意性的处理可以通过可选择的信道编码器119和块交织器121来实现。
信道编码器119接收希望嵌入到视频流中的附加数据。然后例如使用前向纠错编码方案对该数据编码。这种前向纠错方案可以为任意的传统前向纠错方案,诸如卷积编码,例如维特比编码或turbo编码,或它可能为任何新开发的编码方案。在本发明的一个示意性实施例中,使用半速率卷积编码。这种编码的结果是,为原始比特流的每个比特产生两比特。信道编码的比特流作为输出通过信道编码器119提供给块交织单元121。
块交织单元121重新编排信道编码的比特流的比特顺序以便随机地分配该数据。这种做有助于减少信道编码的比特流的相邻部分丢失的机会,例如,由噪声脉冲或其他因素引起的这种丢失,这将使得在接收机难以从剩余的、实际接收的数据中恢复这种数据。在本发明的一个示意性实施例中,交织作为一个单元的比特数量等于一帧中块的数量。块交织器可以这样实现,即从左到右顺序地写入数据到块的行中,在每行的末尾,从下一行向下的最左边的位置再次开始,然后通过在块的最左上的位置开始来读取数据,并向下读取一列,直到到达该列的末尾,在该点位置上阅读在下一列的顶部继续。已经证明45行×30列的块交织器对于720×480像素的图片大小而言是有效的。对于不同的分辨率,本领域的普通技术人员将能容易开发出可比的块编码器。交织的信道编码比特流作为输出由位交织器121提供给位映象器123。
根据本发明的一个方面,根据位映象器123的控制在原始视频信号的至少一帧的至少一个块上,将块交织器121所提供的数据比特印象为水印数据。根据本发明的原理,位映象器123控制水印数据插入到每个块的至少一个选择色度部分之平均值的其中一个比特位置,其中数据印象到该块上,从而有效地代替了该比特位置上的比特。
例如,当在块的选择色度部分的平均值整数部分的最低有效位要携带水印数据时,需要给平均值增加的值为0或1。当平均值的整数部分的最低有效位已经和被携带水印数据比特相同时增加零,而当平均值的整数部分的最低有效位为要携带的水印数据比特的补码时增加1。当在块的选择色度部分的平均值整数部分的次最低有效位要携带水印数据时,给像素增加的数据值为-1、0或1。当平均值的整数部分的次最低有效位已经和要携带的水印数据比特相同时增加零,当平均值的整数部分的次最低有效位为要携带的水印数据比特的补码时增加1或-1。是增加1还是-1这取决于谁将对平均值引起最小的改变,同时将平均值的整数部分的次最低有效位改变为其补码。使用次最低有效位被嵌入的数据更可能经得住通过MPEG或类似处理的编码。当数据被放置在块所选择色度部分的平均值整数部分的第三最低有效位中,给像素增加的数据值为-2、-1、0、1或2。当平均值的整数部分的第三最低有效位已经和要携带的水印数据比特相同时增加零,当平均值的整数部分的第三最低有效位为要携带的水印数据比特的补码时增加-2、-1、1或2。是增加-2、-1、0还是1这取决于谁将对平均值引起最小的改变,同时将平均值的整数部分的第三最低有效位改变为其补码。使用第三最低有效位被嵌入的数据甚至更可能经得住通过MPEG或类似处理的编码以获得充分的结果。从上述可以得到,本领域的普通技术人员将会容易地能够确定为更多有效位位置增加的值,这些位置由用户或系统来确定。
为此目的,位映象器123开发了一个值,该值分配增加到块的像素的所选色度部分,从而这种做改变了该块的色度部分的平均值,以便块交织器121所提供的印象比特被放置在所选色度部分的平均值的所选比特位置上。该值为增加到所选色度部分平均值的值以将水印数据比特通过与块中像素的数量相乘来放置在合适的比特位置。换言之,位映象器123开发的值被增加到色度部分的平均值上,并且被分离为较小值,并将这些值增加到块的各个像素中,以便增加到块中的通过块中像素的数量所分离的全部较小值,等于要增加到所选色度部分平均值的值。
该块色度部分的特定比特平均值,例如该色度部分的DC系数,通过位映象器123来确定,其中位映象器123所提供数据印象到该块上。在本发明的一个示意性实施例中,用于该块的DC系数的第二最低有效位代替为期望印象到该块上的特定值。在本发明的另一个实施例中,DC系数的哪一个比特被代替可能为该块纹理变化量的函数。有利的是,随着纹理变化量的增加而增加被代替位的有效性,因为MPEG编码标准为较大的纹理变化量应用较多的量化步长大小,并如果该比特位于不是足够有效的比特位置上,则使用这种较大的量化步长大小能够过滤加有水印的数据比特。当使用更多的有效位时,给DC系数增加或减少值,以便改变代替其补码值的比特可以大于1。为此目的,根据本发明的一个方面,位映象器123从纹理掩蔽单元111接收该块的亮度分量的平均变化量,并基于该平均变化量,确定要代替哪一个比特位置。变化量越大,放置水印数据的比特位置越有效。
位映象器123提供来自交织的信道编码比特流的数据比特,当像素将要包含在加水印的输出视频信号中时,该数据比特在用于原始视频信号的块的每一像素的合适时间,传送给原始视频信号的每个块。因此,位映象器123考虑到以下的事实,即视频信号的处理是基于线的,即在一个线上从左到右进行处理,然后到下一线并且再次从左到右处理,这使得一个块的相邻像素不是必须地顺序位于视频流中,所以不都在直接相邻的时间里处理。被提供作为位映象器123在任何时间输出的特定数据比特提供作为乘法器113的输入。
使用一个诸如图1所示的编码器,当视频帧大小为720×480像素时,已经为提供给信道编码器119的附加信息实现了基本上无错误的大约每秒6750比特的比特率。
本领域的普通技术人员从上述描述将会容易意识到,图1所示的各个单元需要存储器,以便首先确定这些值,例如块的原始平均值和块的平均纹理变化量,这些值必须使用来自整个块的信息来计算,然后应用这些值处理各个像素。因此,典型地存在一个片延迟,这里的片为一帧上总是水平的那些块的一条。
图2所示为根据本发明的原理用于恢复视频信号的附加数据的示意性接收机201,该视频信号包含其色度信号上的数字水印。在图2中所示为a)YUV分用器和抽取器203,b)色彩选择单元207,c)双刀双掷开关209,d)块变化量计算单元211,e)块积分器V213,f)块积分器U215,g)比特选择器217,h)去交织器219,和i)信道解码器221。
根据本发明的原理,YUV分用器和抽取器203,可以基本上和发送机101(图1)的YUV分用器和抽取器103相同,它接收已加有数字水印的视频信号,其中附加信息已经填加到该信号的色度部分中。YUV分用器和抽取器203与数字视频,例如根据串行数字接口(SDI)格式化的视频协同工作。正如本领域的普通技术人员将会意识到,初始不是适当数字格式的任何视频信号可以使用传统的技术进行转换。
YUV分用器和抽取器203分用视频的亮度(Y)分量及其色度分量并抽取它为优选的处理格式,其中对于视频的每个原始2×2亮度块,如果原始块已经表示为4-4-4格式,那么只剩余一个Y值、一个U值和一个V值。为了知道接收视频的格式,a)操作者需要给YUV分用器和抽取器203指示输入视频的特定格式,b)使用传统的技术直接从视频中可以检测到视频的格式,或c)可以从高层处理器提供信息,该处理器提供输入视频信号。分用的亮度和色度分量提供给色彩选择器207。另外,亮度分量提供给块变化量计算单元211,V色度部分提供给块积分器V213,以及U色度部分提供给块积分器U215。不象YUV分用器和抽取器103,YUV分用器和抽取器203不需要提供原始输入视频信号的完全格式的第二组YUV输出。
色彩选择单元207为每个块确定色度分量的哪一个部分即U部分还是V部分,可能嵌入附加信息。色彩选择单元207的输出用于控制双刀双掷开关209的位置。更具体而言,色彩选择单元209选择色度部分U或V,作为Y、U和V的函数,正如下文更详细所述的,在哪一个部分上可能已经为该块嵌入附加信息。在本发明的实施例中,色彩选择单元207基于一个查询表。这样可以简化处理,从而避免了需要YUV到RGB的转换,否则可能必须转换。
注意到色彩选择单元207的输入为各个像素。色彩选择单元207保持跟踪每个块中的像素并为块中的每个像素组合各个U或V选择。具有最高值即最经常选择用于块中像素的特定分量,被确定为色彩选择单元207的输出。然后将色彩选择单元207的输出如此设定,以便开关209为比特选择器217提供色度分量部分的积分版本,其中已确定了将附加数据填加到该色度分量中。
块变化量计算单元211确定用于该块的所选色度部分的平均值的特定比特,例如,用于所选色度部分的DC系数,该部分可能包含有印象数据。正如所注意到的,在本发明的示意性实施例中,位映象器123(图1)接收和应用块的像素亮度分量变化量的平均值来确定,应该用要被印象的水印数据代替哪一个比特位置。变化量越大,应该代替的比特位置越有效。块变化量计算单元211(图2)应该使其计算基于映象器123所使用的相同信息以重复它的确定。块变化量计算单元211的输出提供给比特选择器217。
块积分器V213在整个块上积分V的值,即组合例如相加用于块中的每个像素的值。块积分器U215在整个块上积分U的值,即组合例如相加用于块中的每个像素的值。
比特选择器217根据通过开关209提供给它的作为块数据的已积分的色度部分值,在块变化量计算单元211规定的比特位置提取比特。
去交织器219重新排序数据以取消发送机101的块交织器121(图1)的影响。然后将重新排序值提供给信道解码器221(图2),该解码器为经过编码的信号执行适当地解码,已使用发送机101(图1)的信道编码器119所应用的编码类型对信号编码。产生的解码值由信道解码器221(图2)提供作为附加数据信号的重构版本。为了更加健壮,信道解码器221可以为所谓的“序列解码器”,例如turbo解码器。
图3A和3B所示为当它们结合在一起为如图3所示时,根据本发明的原理在利用附加数据给其中的色度部分加水印时所使用的示意性处理流程。对于确定的比特位置已经等于将要印象值的那些块,可以未经修改发送该块。在本发明的示意性实施例中,可以在诸如图1所示的系统中执行图3的处理流程。
当块的所有像素可用时,在步骤301开始处理流程。图3的处理部分在一块一块的基础上发生,部分处理基于一个一个的像素。使用二维指针p、q对一帧的各块加以索引,这里p指的是被处理帧的特定水平片,q指的是该帧的特定列或垂直片。例如,对于720×480分辨率,p的范围在1和30之间,q的范围在1和45之间。同理,使用二维指针i、j对每个块的各像素进行索引,其中i指的是被处理块内的特定行,j指的是被处理块内的特定列。例如,在用于印象数据的特定处理模式中,原始视频的每个宏块具有唯一对应的Y、U和V的8×8块,并且i和j的范围都在0和7之间。
在步骤301开始处理之后,在步骤303初始化处理流程中所使用的一些变量,例如countU(p,q)=0,countV(p,q)=0,sumU(p,q)=0,sumV(p,q)=0以及var(p,q)=0。countU和countV为由色彩选择处理分别选择块内多少像素为适于在U和V色度部分上加水印的累计,而sumU以及sumV为块的所有像素上各个U和V的值的累计。在本发明的实施例中,只对选择用于该块的色度部分的像素执行加水印,对于sumU和sumV的其中被开发用于未选择的色度部分的一个没用。
在步骤305,计算块内的每个像素的亮度变化量的累计var(p,q),当然该累计与块的亮度平均变化量成比例。为此目的,i和j初始都设置指的是要处理的块的第一像素,例如i=0和j=0。通过块的每个像素循环、如适当地改变i和j的值以及将每个像素的亮度变化量与当前累计的var(p,q)加到一起来计算var(p,q)的值。
在本发明的一个实施例中,可以利用像素和所有它的最近邻居之间的亮度差的绝对值,来为任何特定像素计算亮度变化量。从数学上而言,所有最近邻居位于相同的块内,这可以写为:
本领域的普通技术人员将会容易能够将上述内容适用于这些像素,它们的最近邻居位于其他块内。而且,对于位于帧的边界上,因此没有最近的邻居,或最近的邻居的这些块,或不显示的这些块部分,这些邻居的值可以考虑为零。
根据本发明的另一个方面,在变化量计算中并不需要考虑所有像素的最近邻居,但是能够获得足够高质量的结果。更具体而言,有利的是,在该计算中,通过只采用该像素周围的正方形角上的4个像素和2个包含当前像素的其他形成垂直或水平线的像素之差,例如包含当前像素的水平线上的2个像素,减少了用于每个像素的时间。
之后,条件分支点307进行测试以确定哪一个特定色度部分,即U或V,将包含用于该块的水印信息。这是通过估计块中每个像素的色彩选择以及计数选择用于每一色度部分的块内像素数目而实现的。最大可能选择用于块的色度部分被选择用来加水印。注意到在本发明的一些实施例中,可以确定特定的像素完全不适合于加水印。在这种情况下,不为U或V计数像素的总数。
确定选择用于为每个像素加水印的色彩的特定方法在于实施者的判断。在本发明的一个实施例中,选择具有最小值的像素的色度部分。在本发明的另一个实施例中,应用如下所述的色彩选择安排。
接下来,确定将包含加有水印比特的所选色度部分的平均值的比特位置。如此选择比特位置,以便加水印的比特将经得住任何接下来的量化,诸如在类似MPEG编码中所发生的。
为此目的,如果在步骤307的测试结果为选择V色度部分加水印,则将控制传递到步骤309,其中变量watermarkcolor设置等于V。之后,条件分支点323进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第一预定V阈值t1v,这为最大的V阈值。t1v的一个示例值为600。
注意到,当平均Y变化率与建议的阈值相比较时,结合图3和4使用的用于U和V的特定阈值值至少部分地取决于用来表示每个Y值的数量。例如,这里建议的阈值值对于Y而言为8比特值。本领域的普通技术人员将会容易意识到,应用于8比特的值通过与4相乘可以缩放为10比特,例如向左移位该值两次。同样地,能够同理适应用于Y、U和V的其他数量的比特。
在本发明的其他实施例中,代替使用用于各个比较的块的平均Y变化量,可以计算和应用不同的平均变化量,例如整个块的平均V变化量。
如果在步骤323的测试结果为“是”,表示该变化量足够大,则附加数据应该在块的像素的V平均值的第5最低有效位上编码,例如int[sumV(p,q)/(每块的像素数量)]的值,例如int[sumV(p,q)/64],大于t1v,则将控制传递到步骤325,其中设定变量m等于5。
注意到代替使用如这里所使用的用于舍入成整数的整数函数int,可以应用能够获得整数值的舍入成整数的任何其他形式,例如总是向上舍入为整数或总是舍入为最近的整数值。
如果在步骤323的测试结果为“否”,这表示变化量不足够大以使得附加数据应该在块的像素V平均值的第5最低有效位上编码,则将控制传递到条件分支点329,该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第二预定V阈值,即t2v,它为第二大V阈值。t2v的示例值为15。
如果在步骤329的测试结果为“是”,这表示附加数据应该在块的像素V平均值的第4最低有效位上编码,则将控制传递到步骤331,其中设定变量m为4。
如果在步骤329的测试结果为“否”,这表示变化量不足够大以使得附加数据应该在块的像素V平均值的第4最低有效位上编码,则将控制传递到条件分支点333,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第三预定V阈值,即t3v,它为最小的V阈值。t3v的示例值为7。
如果在步骤333的测试结果为“是”,这表示变化量足够大,数据应该在块的像素V平均值的第3最低有效位上编码,则将控制传递到步骤335,其中变量m被设定为3。
如果在步骤333的测试结果为“否”,这表示变化量只足够大以使得数据应该在块的像素V平均值的第2最低有效位上编码,则将控制传递到步骤337,其中变量m被设定为2。
如果在步骤307的测试结果为选择U色度部分加水印,则将控制传递到步骤311,其中变量watermarkcolor设置等于U。之后,条件分支点343进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第一预定V阈值t1u,这为最大的阈值。t1u的一个示例值为600。
在本发明的其他实施例中,代替使用用于各个比较的块的平均Y变化量,可以计算和应用整个块的平均U变化量。
如果在步骤343的测试结果为“是”,这表示该变化量足够大,数据应该在块的像素的U平均值的第5最低有效位上编码,例如int[sumV(p,q)/(每块的像素数量)]的值,例如int[sumU(p,q)/64],大于t1u,则将控制传递到步骤345,其中设定变量m等于5。
注意到代替使用如这里所使用的用于舍入成整数的整数函数int,可以应用能够获得整数值的舍入成整数的任何其他形式,例如总是向上舍入为整数或总是舍入为最近的整数值。
如果在步骤343的测试结果为“否”,这表示变化量不足够大以使得数据应该在块的像素U平均值的第5最低有效位上编码,则将控制传递到条件分支点349,该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第二预定V阈值,即t2u,它为第二大U阈值。t2u的示例值为15。
如果在步骤349的测试结果为“是”,这表示数据应该在块的像素U平均值的第4最低有效位上编码,则将控制传递到步骤351,其中设定变量m等于4。
如果在步骤349的测试结果为“否”,这表示变化量不足够大以使得数据应该在块的像素U平均值的第4最低有效位上编码,则将控制传递到条件分支点353,该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第三预定阈值,即t3u,它为最小的U阈值。t3u的示例值为7。
如果在步骤353的测试结果为“是”,这表示变化量足够大,数据应该在块的像素U平均值的第3最低有效位上编码,则将控制传递到步骤355,其中设定变量m等于3。
如果在步骤353的测试结果为“否”,这表示变化量只足够大以使得数据应该在块的像素U平均值的第2最低有效位上编码,则将控制传递到步骤357,其中设定变量m等于2。
一旦确定了应用所选色度部分的整个块之平均值的特定比特以包含加有水印的数据,那么处理流程确定采用包含想要比特的比特位置。处理的目的是将所选色度部分当前平均值加上或减去最小可能值以保证,想要的比特位置将发送水印比特的值。注意到,在本发明的一个实施例中,想要的比特位置为位于平均值整数部分的比特位置。为此目的,理想上,如果想要的比特位置已经包含了要发送的水印比特的值,那么没有任何值可以增加到所选色度部分的当前平均值。另一方面,如果想要的比特位置包含了要发送的水印比特值的补码,在理想情况中,只将想要的比特位置适当地加上或减去最小可能的值,该值通过从想要的比特位置进行加或减将会翻转想要的比特位置为其补码,因此使得所选色度部分平均值的值从当前未加水印的值到其最后加上水印后的值发生最小的变化。
实际上,由于量化噪声,舍入成整数作为创造性处理的一部分,以及类似MPEG编码处理的其他因素,这可能影响想要比特的最终值,所以可能增加或减去很小的差值,如这里进一步所说明的。更具体而言,在本发明的一个实施例中,选择值的“安全”范围,该范围在想要的比特位置具有想要的比特值,以及给所选色度部分的平均值增加或减去该最小值,以便最终值在想要的比特位置具有想要的比特值,并且位于安全范围内。因此,典型地,不论何时平均值的比特需要改变为它的补码以携带水印数据,这时产生的值总是位于安全范围的边界。当想要比特位置的值已经为要发送水印数据比特的值时,如果所选色度部分的平均值已经位于安全范围内,那么不需要增加所选色度部分的平均值。但是,当所选色度部分的平均值还未位于安全范围内,那么有必要从所选色度部分的平均值增加或减去最小值来改变所选色度部分的平均值,使其为位于安全范围内的一个值,同时保持想要比特位置的值位于要发送的水印比特的值上。
概念上,上述考虑到首先增加或减去最小值以在想要的比特位置上获得想要的水印值,并然后增加或减去另一个量例如余量值来保证最终值位于安全范围之内。
图5所示为其中想要比特位置为第三有效位的一些安全范围的实例。沿着轴所示为所选色度部分的平均值。
表1示出(码)(一些值的表):
当完成步骤325、331、335、337、345、351、355和357时,将控制传递到条件分支点361,该点进行测试以确定是否在块上印象的水印数据的比特与用于色度部分平均值的当前识别比特位置相同,其中比特位置由变量watermarkcolor来识别。如果步骤361的测试结果为“是”,这表示将在块上印象的水印数据的比特与当前识别的用于色度部分平均值的比特位置相同,其中比特位置由变量watermarkcolor来识别,所以不需要将比特改变它的补码值,并将控制传递到步骤363,该步骤进行测试以确定是否该值位于当前比特位置的安全范围内。如果测试结果为“否”,这表示在接下来的处理过程中可能引入了错误,则将控制传递到步骤365,在该步骤设置变量changevalue等于需要将watermarkcolor所指示的色彩的当前平均值移到最近安全范围内的值,而不改变想要比特位置的值。注意到该值不需要为一个整数值,它还可以为负数值。如果步骤363的测试结果为“否”,这表示用于watermarkcolor所指示色彩的当前平均值已经位于安全范围内,则将控制传递到步骤367,并且将changevalue的值设定等于零。
如果步骤361的测试结果为“否”,这表示在块上印象的水印数据的比特与用于色度部分平均值的当前识别比特位置不相同,其中该位置是由变量watermarkcolor所识别的,所以比特的值必须改为其补码值以适当地携带水印数据,并将控制传递到步骤369,在该步骤进行测试以确定当前比特位置的最近安全范围是大于还是小于watermarkcolor所指示色彩的当前平均值。如果步骤369的测试结果为大于,这表示用于当前比特位置的最近安全范围的值大于watermarkcolor所指示色彩的当前平均值,则将控制传递到步骤371,在该步骤中将变量changevalue的值设定等于增加到平均值中的最小值,以便产生的值位于具有较大值的邻近安全范围内。注意到该值不需要为整数值。如果在步骤369的测试结果为小于,这表示用于当前比特位置的最近安全范围的值小于watermarkcolor所指示色彩的当前平均值,则将控制传递到步骤373,在该步骤中将变量changevalue的值设定等于最小负值,当将该值增加到平均值时,得到的值位于具有较小值的相邻安全范围内。再次,注意到该值不需要为一个整数值,并且还可以为一个负值。
当完成步骤365、367、371或373时,将控制传递到步骤375,在该步骤中将为像素增加的总计值设定等于每块像素的数量与changevalue之值的乘积。如果产生的乘积值不是整数,那么该值将被舍入。以与步骤365、371和373一致的方式执行这种舍入,如果增加的为一个负值,利用该值的整数部分向下进行舍入,如果增加的为一个正值的话,则舍入将向着下一个完整的整数值。
现在处理从每块等级改变到在块内的每像素等级。在步骤377,指向该块的第一像素。之后,条件分支点379进行测试以根据它的色彩确定是否要给当前像素加水印。通过确定是否适于加水印的该像素的色度分量与在步骤307为整个块所选择的色彩相同来完成上述处理。如果步骤379的测试结果为“是”,这表示应该给该像素加水印,则将控制传递到步骤381,在该步骤中根据像素的亮度变化量以及到目前为止为该块的像素所增加的总计值,来为当前像素增加一个值。
更具体而言,将能够给像素增加的而不引入可见的人为加工信号的最大值确定为亮度变化量的函数。亮度变化量越大,则能够增加的值就越大,最大为预定的最大值。注意到该值可正可负。然后,如果增加到像素的总值为正值,则将该值增加到像素,或者如果增加到像素的总值为负值,则从该像素减去该值。但是,随着每个像素处理的进行,增加或减去值的累计从总值中减去以增加到像素中。如果增加到当前像素的值将使得增加到像素的总值与累计之间的差值超过零,那么将调整该值以便累计正好等于零。
如果步骤379的测试结果为“否”,或在完成步骤381之后,将控制传递到条件分支点383,在该点进行测试以确定是否当前像素为块的最后一个像素。如果在步骤383的测试结果为“否”,将控制传递到步骤385,在该步骤进行测试以确定是否要给块的像素增加的总值已经被增加,即累计是否等于要为该块像素增加的总值。如果步骤385的测试结果为“否”,这表示还需要给块像素增加更多值,则将控制传递到步骤387,该步骤指向块的下一个像素。然后传送回到步骤379,处理如上所述继续进行。
如果步骤383或385的测试结果为“是”,这表示块的所有像素已经被处理或者已经增加了所需要增加的全部总值,则将控制传递到步骤389并退出处理。
图4A和4B所示为当它们结合在一起为如图4所示时,根据本发明的原理从数字加水印视频信号中提取附加信息的示意性处理流程,其中构成视频信号内的水印信号的附加信息已经印象在了色度分量上。这种处理可以通过本发明的示意性实施例,在色彩选择207、双刀双掷开关209、块变化量计算单元211、块积分器V 213、块积分器U 215和比特选择器217(图2)上来实现,诸如图2所示。
当要处理接收抽取帧的新块时,在步骤401开始处理流程(图4)。应该注意到为了教导的目的,这里假设为由块组成的图4处理流程的处理提供像素,以便在处理下一块的任何像素之前,处理块的所有像素。但是,在实际系统的设计中,本领域的普通技术人员将会容易意识到,可以以与扫描像素相同的顺序来处理这些像素,可以使用适当的存储位置和控制结构以便有效地单独地处理这些块。
图4的处理部分在一块一块的基础上发生,部分处理基于一个一个的像素。使用二维指针p、q来索引一帧的这些块,这里p指的是被处理帧的特定水平片,q指的是该帧的特定列或垂直片。例如,对于720×480分辨率,p的范围在1和30之间,q的范围在1和45之间。同理,使用二维指针i、j对每个块的像素进行索引,其中i指的是被处理块内的特定行,j指的是被处理块内的特定列。例如,在用于印象该数据的特定处理模式中,原始视频的每个宏块具有唯一对应的Y、U和V的8×8块,并且i和j的范围都在0和7之间。
在步骤401开始处理之后,在步骤403初始化处理流程中所使用的一些变量,例如countU(p,q)=0,countV(p,q)=0,sumU(p,q)=0,sumV(p,q)=0以及var(p,q)=0。countU和countV分别为由色彩选择处理选择块内多少像素作为U和V的累计,而sumU以及sumV分别为在块的所有像素上各个U和V值的累计。对于该块,i和j都设置指的是要处理的块的第一像素,例如i=0和j=0。对于每个块,var(p,q)表示块内每个像素的亮度变化量的总值,当然该总值与块的亮度平均变化量成比例。
之后,在步骤405,获得用于当前指向的当前被处理块的像素的Y、U和V值,例如获得值Y(i,j) (p,q)和U(i,j) (p,q)以及V(i,j) (p,q)。在步骤407,将U和V的当前值增加到sumU和sumV的各个当前值中。而且在步骤407中,通过将当前像素亮度的变化量增加到当前var(p,q)的总值中,更新亮度的变化量var(p,q)。在本发明的一个实施例中,可以利用当前像素和所有它的最近邻居之间的亮度差的绝对值,来为当前像素计算亮度变化量。从数学上而言,所有最近邻居位于相同的块内,这可以写为:
本领域的普通技术人员将会容易能够将上述内容适用于这些像素,它们的最近邻居位于其他块内。而且,对于靠近帧的边界因此没有最近的邻居的那些块,或最近的邻居为不显示的这些块部分,这些邻居的值可以考虑为零。
根据本发明的另一个方面,在变化量计算中并不需要考虑所有像素的最近邻居,但是能够获得足够高质量的结果。更具体而言,有利的是,在该计算中,通过只采用该像素周围的正方形角上的4个像素和2个其他包括当前像素的形成垂直或水平线的像素之差,例如具有当前像素的水平线上的2个像素,从而减少了计算时间。但是,解码器应该匹配编码器中应用的相同处理。
将控制传递到条件分支点409,在该点进行测试以确定附加数据有可能印象到U或V中的哪一个。下文将详细描述该确定的细节。如果步骤409的测试结果为U,这表示附加数据最可能印象到用于当前像素的U上,则将控制传递到递增countU的步骤411。然后将控制传递到步骤413。如果步骤409的测试结果为V,这表示附加数据最可能印象到用于当前像素的V上,则将控制传递到递增countV的步骤415。然后将控制传递到步骤413。
在本发明的一些实施例中,条件分支点409可以是三种方式的测试,附加结果表示数据有可能完全不印象到像素上,即不印象到U上也不在V上。如果这是一种结果,那么将简单地将控制直接传送到步骤413。
条件分支点413进行测试以确定是否当前像素为当前块的最后一个像素。如果步骤413的测试结果为“否”,这表示还剩余仍未处理的当前块中的其他像素,则将控制传递到步骤417,在该步骤调整i和j的值以指向下一个仍未处理的像素。然后将控制传递回到步骤405并如上所述继续进行处理。如果步骤413的测试结果为“是”,这表示已处理过当前块的所有像素,则将控制传递到步骤419,在该步骤中为该块计算抽取亮度的变化量,即计算8×8Y块的变化量。
然后将控制传递到条件分支点421,在该点进行测试以为当前块确定是否countV大于countU。如果步骤421的测试结果为countV实际上大于countU,则将控制传递到条件分支点423,在该点上进行测试以确定是否整个块上的平均Y变化量,var(p,q)大于第一预定阈值t1v,该阈值为最大的V阈值。t1v的一个示例值为600。
在本发明的其他实施例中,代替使用用于各个比较的块的平均Y变化量,可以在该块上计算和应用平均U或平均V变化量,例如不论哪一个具有较大的计数值。
如果在步骤423的测试结果为“是”,这表示该变化量足够大,数据有可能已经在块的像素的V平均值的第5最低有效位上编码,例如int[sumV(p,q)/(每块的像素数量)]的值,例如int[sumV(p,q)/64],则将控制传递到步骤425,其中设定变量m等于5。然后将控制传递到步骤427,在该步骤中将提取该块像素的V平均值的第m个最低有效位(LSB)的值,将它作为印象到该块的值。然后在步骤459退出处理。
注意到代替使用如这里所使用的舍入成整数的整数函数int,可以应用能够获得整数值的舍入成整数的任何其他形式,例如总是向上舍入为整数或总是舍入为最近的整数值。
如果在步骤423的测试结果为“否”,这表示变化量不足够大以使得数据有可能已经在块的像素V平均值的第5最低有效位上编码,则将控制传递到条件分支点429,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第二预定V阈值t2v,它为第二大V阈值。t2v的示例值为15。
如果在步骤429的测试结果为“是”,这表示变化量足够大,数据有可能已经在块的像素V平均值的第4最低有效位上编码,则将控制传递到步骤431,其中设定变量m等于4。然后将控制传递到步骤427,在该步骤中将提取该块像素的V平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步骤429的测试结果为“否”,这表示变化量不足够大以使得数据有可能已经在块的像素V平均值的第4最低有效位上编码,则将控制传递到条件分支点433,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第三预定V阈值t3v,它为最小的V阈值。t3v的示例值为7。
如果在步骤433的测试结果为“是”,这表示变化量足够大,数据有可能已经在块的像素V平均值的第3最低有效位上编码,则将控制传递到步骤435,其中设定变量m等于3。然后将控制传递到步骤427,在该步骤中将提取该块像素的V平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步433的测试结果为“否”,这表示变化量仅足够大以使得数据有可能已经在块的像素V平均值的第2最低有效位上编码,则将控制传递到步骤437,其中设定变量m等于2。然后将控制传递到步骤427,在该步骤中将提取该块像素的V平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步骤421的测试结果为countU大于countV,则将控制传递到条件分支点443,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第一预定阈值t1u,它为最大的U阈值。t1u的示例值为600。
如果在步骤443的测试结果为“是”,表示该变化量足够大,数据应该在块的像素的U平均值的第5最低有效位上编码,例如int[sumU(p,q)/(每块的像素数量)]的值,例如int[sumU(p,q)/64],则将控制传递到步骤445,其中设定变量m等于5。然后将控制传递到步骤447,在该步骤中将提取该块像素的U平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步骤443的测试结果为“否”,这表示变化量不足够大以使得数据有可能已经在块的像素U平均值的第5最低有效位上编码,则将控制传递到条件分支点449,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第二预定阈值t2u,它为第二大U阈值。t2u的示例值为15。
如果在步骤449的测试结果为“是”,这表示变化量足够大,数据有可能数据已经在块的像素U平均值的第4最低有效位上编码,则将控制传递到步骤451,其中设定变量m等于4。然后将控制传递到步骤447,在该步骤中将提取该块像素的U平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步骤449的测试结果为“否”,这表示变化量不足够大以使得数据有可能已经在块的像素U平均值的第4最低有效位上编码,则将控制传递到条件分支点453,在该点进行测试以确定是否整个块的平均Y变化量,var(p,q)大于第三预定U阈值t3u,它为最小的U阈值。t3u的示例值为7。
如果在步骤453的测试结果为“是”,这表示变化量仅足够大以使得数据有可能已经在块的像素U平均值的第3最低有效位上编码,则将控制传递到步骤455,其中设定变量m等于3。然后将控制传递到步骤447,在该步骤中将提取该块像素的U平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
如果在步453的测试结果为“否”,这表示变化量足够大,数据有可能已经在块的像素U平均值的第2最低有效位上编码,则将控制传递到步骤457,其中设定变量m等于2。然后将控制传递到步骤447,在该步骤中将提取该块像素的U平均值的第m个最低有效位的值,将它作为印象到该块的值。然后在步骤459退出处理。
注意到尽管在图3和图4中已经所示为使用3个阈值和4比特位置,但是本领域的普通技术人员将容易地能够将所指示的方法适于其他数量的阈值和编码值。
同理,并不是视频信号每一帧或场的所有块需要印象附加的信息。
图6所示为用于确定哪一特定色度部分更加合适因此应该被选择以包含用于像素的加水印信息的示意性处理流程。当有必要选自一个色度部分以包含水印信息时,处理流程在步骤601开始。为了讨论图6的目的,假设以YUV格式表示像素。而且,应该注意到优选地,对于原始视频的每个原始2×2亮度块,如果原始视频已经表示为4-4-4格式,应该只剩余一个Y值用于每个亮度分量,即每一对各个对应的U和V值。为此目的,可以下采样原始块的Y值,以便和U和V具有相同的分辨率。可替换地,可以计算与特定U和V值关联的Y值平均值或一些其他组合,并将它们用作图6处理流程的Y值。
概念上,对应于可能像素位置的三维YUV色彩空间的每个位置,假定像素Y、U和V值能够采取完整范围,则根据实验观察为每个位置分配一个更适合的色度部分,因此应该为一个具有这种Y、U和V值的像素选择该位置。如果要应用用于Y、U和V值的每个可能集合的整个表的版本,其中每个Y、U和V值具有8比特的完整范围,需要存储至少16M比特的信息,假定为每个位置只存储一个比特来表示所选择的色度部分。注意到使用单个比特仅仅允许选择U或V,但是不能指示不U和V两者都不被应用。如果想要能够选择U和V两者都不,32M比特的信息是必须的。
图7所示为示意性分配色度部分的一部分的剖视图,该色度部分要被选择用于三维YUV色彩空间内每个可能的像素。应该注意到仅仅为了教导的目的提供图7,正如概念化可视辅助一样,不代表实际的数据。
为了减少存储要求,可以考虑YUV色彩空间作为一组区域,每个区域定义为包括对应于至少一个集合的位置,典型地,Y、U和V值的多个集合,即对应于至少一个像素、可能许多像素以及每个区域的色彩空间中的位置,然后,例如根据实验观察为映象到区域的每个像素分配一个色度部分,即为Y、U和V值的集合落入该区域内的任何像素选择色度部分。一种查看这种集合到区域中的方式为量化,这种量化可能为线性或非线性的。
表1所列为示意性的色彩空间选择表,其中每个区域对应于4个Y值、4个U值和4个V值,然后对应于用于任何像素的8比特值的64种可能的组合。使用这种表将要存储的所需信息减少到256K比特,这里假定为每个位置只存储一个比特,或减少到512K比特,这里假定期望能够选择Y、V以及U和V两者都不。表1可以存储在任何计算机可读媒体中,例如ROM、RAM,诸如硬盘或磁带驱动器的磁存储器,诸如CD-ROM或DVD-ROM等等的光存储器。
本领域的普通技术人员将容易意识到,表1所应用的值用于每个Y、U和V,它们具有8比特的完整范围,并可以通过除以4,例如将每个10比特值右移两次,被缩放以用于10比特Y、U和V值。同样,能够类似适应用于Y、U和V的其他数量的比特。
为了有效地安排和访问表1的数据,如此进行安排以便用于8个相邻区域的具体U或V选择集合在一起形成一个字节,这里1表示选择U而0表示选择V,以及这些相邻区域具有相同的U和V量化值但是具有不同的顺序量化Y值。因此,对于每个U和V值有8个字节,每一个字节对应一个具有相同U和V量化值但具有不同量化Y值的区域。
表1被安排通过使用一个地址来寻址,该地址具有对应于U值的最高有效位,对应于V值的下一个最低有效值,对应于Y值的最低有效值。换言之,字节的地址可以如下构成:
U7|U6|U5|U4|U3|U2|V7|V6|V5|V4|V3|V2|Y7|Y6|Y5
这里U7、U6、U5、U4、U3和U2为像素U值的第8到第3最低有效位的值,V7、V6、V5、V4、V3和V2为像素V值的第8到第3最低有效位的值,以及Y7、Y6和Y5为像素Y值的第8到第6最低有效位的值。然后,通过使用Y分量的第5到第2最低有效位例如Y4、Y3和Y2来规定字节内的特定比特。
诸如表1的表格反映了以下事实,即人类的视觉系统a)对蓝色的敏感性较小,和b)对较低的亮度值更敏感。这样的一个表可通过通常如下所述的试凑来开发。
在这些部分中检验色彩空间,其中每个部分通过亮度值来定义以及范围在对应于第一色度部分的第一维内,该维从最小值到最大值进行变化,并且在对应于第二色度部分的第二维内,该维从最小值到最大值进行变化。例如,可以使用8比特值的6个最高有效位来量化任何或全部的亮度和色度部分。这样做可建立一组平面,该平面具有色度部分值的棋盘,并当显示为不同色彩的块时出现,并建立了用于每个亮度值的一个平面。例如,通过量化以便使用用于亮度的8比特值的6个最高有效位,色度部分产生对应于每个可能的量化亮度值的64个平面,每个平面具有一个色彩格的检验板模式,对于每个平面总共有4096个格,垂直方向具有64个格以及水平方向具有64个格。
单独地检查每个平面。为大量足够确信随机数据在帧的相同定位块中在时间上具有不同的值的帧开发随机数据,并用于观察者检测所出现的闪烁。已经证实三十秒或更长是有效的。随机数据印象在包含该平面的帧上,例如只在第一色度部分上不仅使用图1的系统和图3的处理流程完成水印,而且还迫使色彩选择为第一色度部分。显示并观察帧产生的加有水印的版本。
如果在该表中指示观察到没有闪烁的任何块,则亮度和色度部分的组合应该应用当前携带水印数据的色度部分作为该组合的所选色度部分。如果在该表中指示观察到有闪烁的任何块,则亮度和色度部分的组合应该应用当前未携带水印数据的色度部分作为该组合的所选色度部分。为该平面重复这种处理,但是要改变加水印的色度部分。
对于平面的任何块,正如能发生的对于两个色度部分产生闪烁,实施者可以选择应该选择哪一色度部分。例如,可以选择U,因为人类的视觉系统通常对蓝色不敏感。可替换地,可以应用会提供所产生表的更好数据压缩的色度部分。同理,在任何一个块上不出现闪烁时,应用色度部分的选择在于实施者的判断。
为每个平面重复这种处理流程直到填充整个表。
表1
步骤603开始处理访问如此安排的信息。更具体而言,在步骤603中计算,和
和
其中,类似于以上所述,p指的是被处理帧的特定水平片,q指的是该帧的特定列或垂直片,i指的是被处理块内的特定行,j指的是被处理块内的特定列,以及“>>”为右移运算。这样做只剩下了像素U值的想要的第8到第3最低有效位,像素V值的第8到第3最低有效位,以及像素Y值的第8到第6最低有效位。之后,在步骤605中,如下计算用于当前像素的查询表地址:
,这里“<<”为左移运算。
这样做将提取的比特组合在组合地址中并且指向对应于该像素的一个字节。之后,在步骤607,通过将由Y分量的第2到第5最低有效位构成的值用作字节的索引,来确定对应于该像素的字节内的特定比特。为此目的,步骤607计算 ,这里mod为求模函数。
在步骤609中,提取在计算的查询表地址的字节的第b个比特位置的值,并将其分配为变量m的值,并且提供作为输出。再次,在该示意性的实施例中,如果提取的比特为1,则U为选择的色度部分,而如果提取的比特为0时,则V为所选择的色度部分。
然后处理流程在步骤611退出。
本领域的普通技术人员将容易意识到,如何将上述内容适于其他格式的像素,例如RGB或YIQ。
应该注意到如果期望对表格Huffman编码,可能有利的是,应该颠倒上述为1选择U和为0选择V的对应关系,假设如实验已经得出的,为大部分的像素组合选择U。
图8所示为特定色度部分选择以包含用于像素的加水印信息所采用的另一示意性处理流程。当必须选择一个适于包含水印信息的色度部分时,在步骤801开始处理流程。如图6所示,为了讨论图8,假定像素以YUV格式表示。而且,应该注意到,优选地,对于原始视频的每个原始2×2亮度块,如果原始视频已表示为4-4-4格式,那么应该只有用于每个色度分量的一个Y值,即每对各自对应的U和V值。为此目的,可以下采样原始块的Y值以便与U和V具有相同的分辨率。可替换地,计算与特定U和V值关联的Y值的平均值或一些其他组合,并将其用作用于图8处理的Y值。
与图6的实施例相比,根据本发明的一个方面为了进一步减少图8实施例中的存储要求,不仅YUV色彩空间划分为一些区域,每个区域包括对应于Y、U和V值的至少一个集合的位置,并且例如基于实验观察,为每个区域分配一个色度部分,其中选择这些色度部分用于任何像素,这些像素的Y、U和V值落入区域内,如结合图6所示的,但是U值小于预定值例如最大值的一半的任何像素将具有选择用于加水印的U色度部分。因此,对于8比特Y、u和V值,如果U值小于128,则总是选择U色度部分加水印,而不管V或Y值如何。这是因为人类的视觉系统对蓝色分量U较V分量而言不那么敏感。
通过让色度部分选择表的最高有效地址位对应于地址的U值导出比特,有利地,能够将表的大小减小达一半。这将通过在形成表地址之前,增加一个测试以确定是否U值小于最大值的一半来实现,如果测试结果为“是”,这简单地表示选择U色度部分并跳过访问表的剩余处理,而且还通过在计算地址的U值导出比特之前,将实际U值减去最大值U的一半来实现。因此,取消对应最高有效U位为0的应用于图6的表部分,并且只保留最高有效U位为1的表部分。但是,在形成U值导出比特之前,通过将U值减去最大U值的一半来移位表剩余部分的索引。
从而,使用具有对应于U值的最高有效位的地址,对应于V值的下一个最低有效值,以及对应于Y值的最低有效值来寻址安排的表格。换言之,可以如下形成字节的地址:
U6|U5|U4|U3|U2|V7|V6|V5|V4|V3|V2|Y7|Y6|Y5
这里U6、U5、U4、U3和U2为像素U值的第7到第3最低有效位的值,V7、V6、V5、V4、V3和V2为像素V值的第8到第3最低有效位的值,以及Y7、Y6和Y5为像素Y值的第8到第6最低有效位的值。然后,通过使用Y分量的第5到第2最低有效位例如Y4、Y3和Y2来规定字节内的特定比特。
为此目的,条件分支点802进行测试以确定是否
该值例如为最大U值的一半。应该注意到为了节约一个比特,以及一半的表大小,优选地预定值应该为2的幂。如果步骤802的测试结果为“否”,这表示U值不小于预定值,例如U最大值的一半,例如128,因此要被选择的色度部分将作为Y、u和V的函数,因此必须访问该表,并将控制传递到步骤803以开始访问该表的处理。在步骤803中计算
例如
以及
其中,类似于以上所述,这里,p指的是被处理帧的特定水平片,q指的是该帧的特定列或垂直片,i指的是被处理块内的特定行,j指的是被处理块内的特定列,以及“>>”为右移运算。这样做只剩下了像素U值的想要的第7到第3最低有效位,像素V值的第8到第3最低有效位,以及像素Y值的第8到第6最低有效位。之后,在步骤805中,如下计算用于当前像素的查询表地址:
,这里“<<”为左移运算。
这样做将提取的比特组合在组合地址中并且指向对应于该像素的一个字节。之后,在步骤807,通过将由Y分量的第5到第2最低有效位构成的值用作字节的索引,来确定对应于该像素的字节内的特定比特。为此目的,步骤807计算 ,这里mod为求模函数。
在步骤809中,在计算的查询表地址提取字节的第b个比特位置的值,并将其存储在变量m中。在步骤811中变量m的值提供作为输出。再次,如果输出比特为1,则U为选择的色度部分,而如果提取的比特为0时,则V为所选择的色度部分。然后处理流程在步骤813退出。
如果步骤802的测试结果为“是”,这表示应该选择U色度部分,因为像素颜色不主要为蓝色,因而人类的视觉系统将不会检测到像素蓝色的改变,将控制传递到步骤815,在步骤中将变量m设定等于1。这样做保证了选择U。然后将控制传递到步骤811,并且如上所述继续进行处理。
尽管在色彩选择中的上述改进利用了像素的一定的Y、U和V值,不利的是,仍有可能显现出轻微可检测的闪烁。这是因为为了经得住类似MPEG编码,可能需要为所选色度部分的平均值增加大值。
图9所示为根据本发明的原理构造的示意性发送机,其中在数据印象到块的色度部分的平均值之前,通过复制印象数据至少一次,优选为两次或更多次,从而可以减少闪烁。在单独的连续帧的相同块位置中发送原始的以及每个复制的数据。优选地,具有携带相同数据的相同位置块的这些帧在显示顺序上是连续的。而且,帧的具体块可以嵌入一个特定的已知数据序列,例如巴克序列,而不是编码的用户数据。
图9中所示的本发明的实施例类似于图1所示的本发明的实施例。图9中所有具有相同标记的组件基本上和图1所示的组件操作相同。除了在图9中所示的图1的这些组件以外还有转发器925和可选的序列附加器927。另外,图1的位映象器123可选地在图9中代替为位映象器923。只有在想要以下结合位映象器923描述附加功能时,才有必要用位映象器923代替位映象器123。
转发器925从块交织器121或可选的序列附加器927接收比特,转发器925存储接收的比特并为至少两个帧的相同位置的块输出这些比特。在本发明的一个实施例中,已经发现当转发器925存储接收的比特并为三个帧的相同位置的块输出它们时可以获得好的结果。本领域的普通技术人员通过为转发的数据选择帧数量,将能够权衡任何感知的闪烁与水印数据的期望吞吐量。
可选的序列附加器927将特定已知的数据序列,例如巴克序列嵌入到帧的特定块中,数据序列代替了编码的用户数据。将数据序列编码的特定块可以分布于一帧的整个块中。每组初始和转发的数据帧可以应用不同的已知序列。这样做将使得接收机能够检测帧的集合。可替换地,可以为每一组应用相同的序列,但是用于序列的这些特定块对于连续的组来说是不同的。
图10所示为根据本发明的原理构造的接收机的示意性实施例,该接收机用于接收诸如图9的发送机所产生的加有水印的视频信号。图10所示的本发明的实施例类似于图2所示的实施例。图10中所有具有相同附图标记的组件与图2所示的组件基本上操作相同。除了图10所示的图2的这些组件以外,还有序列处理器1025和帧加权单元1027。而且,图2的信道解码器221可选地代替为图10中的信道解码器1021。
例如如图10所示的接收机可以使用序列处理器1025检测组同步。这可以通过以下来实现,将来自组长度数量的连续帧中每一帧的组所识别序列的值进行相加,从而将其应用为同步模式,并确定是否结果超出了预定阈值。如果超出了该阈值,假定增加期望同步模式值的第一帧为该组中的第一帧。如果没有超出该阈值,假定增加值的第一帧为不是一组中的第一帧。这类似于在同步模式上执行自相关。本领域的普通技术人员将意识到可以使用其他传统的技术来避免错误匹配,并处理由于错误而丢失第一帧,诸如在宣布组同步之前搜寻最大值。
有利地,一旦接收机检测到规则的组模式,在存在模式偏差的任何时候,接收机将能够意识到已经移除了原始视频序列的一个帧。这种信息可由序列处理器1025提供作为一个输出。
例如,可以监视视频信号内的经销商的各种广告片。可以为该经销商分配一个唯一的代码,该代码嵌入到到广告片的每一帧中。并使接收机知道该特定的唯一代码和加有水印的帧的哪些块应该包含该代码。通过检测加水印帧内的代码出现,接收机能够识别一帧为属于经销商其中一个广告片的帧。一旦检测到包含该代码的帧,能够对包含该代码的序列帧数量进行计数,以确定广告片的长度。如果基于原始加水印的广告片的已知长度,所计数的帧数小于期望的帧数,那么可以假定广告片不适合于通过移除对应于期望帧数和所计数帧数之差的该帧数来缩短。本领域的普通技术人员将会意识到可以应用其他的传统技术来避免错误的匹配,和处理由于错误而丢失第一帧。
广告片的每一帧或广告片内帧的组,可以利用唯一的标识符,例如一个帧或组编号来加水印,该标识符为帧上的不同序列的一部分。当由于一个或更多帧丢失而检测到期望序列中的间隙时,当每个帧具有唯一的标识符时可以具体地识别这些丢失帧。当标识符只分配给组以及在每组中已知帧的数量时,只能识别任何丢失帧所属的特定组,以及计数丢失了多少帧。
尽管可以应用数据复制来减少闪烁,正如如上所述,但是这样做可能限制检测丢失帧的能力为只识别丢失帧的组,而不是能够识别该特定的帧。所以,尽管通常复制水印数据,至少可以不复制一个单独的帧标识符。包含这种非复制帧的这些块,如果它们引起闪烁,则位于将最不可能引起注意的位置,例如帧的角上。这样做提供了减少可检测闪烁的大部分好处,同时还允许检测丢失的特定的各个帧。
如果经销商有不同的广告片,每个广告片可以具有其他嵌入到至少一个帧中的序列,以识别正在接收的该经销商的特定广告片。
如果多个经销商具有加水印的广告片,只要给每个经销商分配一个唯一的代码,监视具有第一唯一代码的第一经销商广告片出现的系统,将忽略具有第二唯一代码的第二经销商的广告片。可替换地,单个系统可能监视用于来自不同经销商的广告片出现的视频信号,其中每个经销商具有一个唯一代码,并且根据其代码由经销商来分离结果。
当多个经销商具有加水印的广告片时,每个经销商应用相同的代码,并且代码甚至位于用于每个经销商的帧内的相同块位置上。但是,使用一个用于每个经销商的唯一密钥,加密包括在该帧内的所有接下来的数据,并且每个经销商具有一个接收机,该接收机仅知道用于该经销商的密钥。所以,每个经销商能够仅仅解密和接收来自其自己广告片的数据。可替换地,通过在一帧的块上加扰数据,可以加密用于每个经销商的数据。每个接收机应该只知道用于它的相关经销商的加扰模式。
可以连续执行、或在期望广播广告片的时间窗内监视代码的初始出现,该出现表示一个广告片的开始。
代替简单地在一组的许多帧上重复数据,然后使用位映象器123(图1),为一个块的色度部分的平均值增加的量,取决于块的复杂度及期望的量化等级,并可能在一个组上一帧一帧地轻微变化,甚至在相应的一帧一帧的位置上块的复杂度相同时。根据本发明的一个方面,与增加到平均值的值相比所做的改变较小,以将水印比特置于平均值内。这些改变可由位映象器923(图9)来执行,借此提供附加的编码增益,这可能有利地应用于在接收机提高数据的可靠性。但是,这样做可能导致低纹理区域可见质量的稍微减小,因为块内的一些像素可能具有比位于相同位置的以前像素所不同的值。但是,由于这种减小处于像素级,因此典型地它不会引起注意。
在本发明的一个示意性实施例中,利用印象到其上的相同水印数据发送三个时间连续帧的组。该组的中间帧加有如上结合图3所述的水印,而不会根据在图3中所确定值来改变增加到块所选择色度部分之平均值的量。
该组在时间上的第一帧还具有一个通过位映象器923(图9)要增加到块所选色度部分之平均值上的计算值,即偏差,其中如结合图3所示来开发该增加值。但是,偏差,例如增加到平均值以将水印比特放置在平均值内的该值绝对值的四分之一或优选地为一半,另外被增加到所选用于携带水印数据的色度部分的计算平均值上。因此,例如,如果将平均值增加1以将水印比特放置在平均值内,那么其一半将增加到平均值中。当一个块中有64个像素时,这转换为增加32到该块所有像素的所选色度部分的求和值。因此,加法器133将接收一个比假如未增加偏差的值更高的值。同理,作为另一个实例,如果增加-4到平均值中以将水印比特放置于平均值内,以及如果应用增加到平均值的该值绝对值的一半,当一个块中有64个像素时,这将转换为给该块所有像素所选色度部分的求和值增加128。
注意到该附加的偏差量,例如32,将根据其亮度变化量分布于各个像素中。而且,附加偏差不依赖于任何增加到平均值的以使其位于一个安全范围的值。因此,平均值可能落入安全范围之外。但是,移出安全范围造成的错误概率的增加大于根据应用该偏差产生的编码增益所带来的偏移。
该组在时间上的最后一帧具有一个通过位映象器923(图9)计算的值,即从该块所选色度部分的平均值中减去一个偏差,该值如结合图3所述那样开发。但是,根据本发明的一个方面,偏差,例如增加到平均值以将水印比特放置在平均值内的该值绝对值的四分之一或优选为一半,另外应该从所选用于携带水印数据的色度部分的计算平均值中减去。因此,例如,如果-3被增加到平均值中以将水印比特放置于平均值内,那么将从平均值减去-3绝对值的一半即1.5。当在一个块中有64个像素时,这转换为从该块所有像素所选色度部分的求和值中减去96。因此,加法器133将接收一个比假如未增加偏差的值更低的值。同理,作为另一个实例,如果为平均值增加2以将水印比特放置于平均值内,那么从该平均值中减去2的绝对值的一半即1。当在一个块中有64个像素时,这转换为从该块所有像素所选色度部分的求和值中减去64。
应该注意到丢失减去的偏差量,例如32,将根据其亮度变化量分布于各个像素中。而且还应该注意到减去该偏差不依赖于给平均值增加的以使其位于一个安全范围内的任何值。因此,平均值可能落入安全范围之外。但是,移出安全范围造成的错误概率的增加大于所产生的编码增益所带来的偏移。
一种考虑这样如何有效的方式请参见图5。如上所述,为了达到安全范围外部边界的一个值,没有考虑到通常正好足够用于给块所选色度部分的平均值增加或减去偏差量。因此,在任何偏差之前,许多帧在安全范围上或靠近其边界。未增加或减少任何值的中间帧还位于边界的右边。增加一个极小偏差的帧可以稍微一定到安全范围内的更好位置上,或者它可能轻微移出安全范围。减去一个极小偏差的帧移动到如增加偏差的帧的正确方向。因此,在最坏情况下,对于三帧的一个组而言,一个将位于安全范围的边界上,一个将稍微位于安全范围之外。这产生了独立扩展的值。
由于类似MPEG编码所执行的量化以及在MPEG去量化过程中增加的各个MPEG偏差,可以进一步扩大偏差的影响。当在这些连续帧上发送相同的比特时,这能够导致位于连续帧内用于相同位置块的接收数据值之间产生显著的差别。
在例如如图10所示的接收机中,例如在帧加权单元1027中,根据认为“是”为每一帧提供的质量等级来使用最大比率合并方法,适当地加权从每一帧中提取的数据。为此目的,序列处理器1025可以为帧加权单元1027提供:a)帧同步信息,以便帧加权单元1027能够知道哪些帧集合在一起,以及b)每一帧的同步模式中的错误数量。质量等级根据认为在接收帧中有多少错误,以及根据在期望用于该帧的同步模式中有多少错误来确定,并且由序列处理器1025提取。表1示出了用于每一同步模式的错误数量和各个加权,其中已经利用同步模式中的这种错误数量,根据经验导出适合于一帧的该加权。换言之,可将从每一帧中提取数据的值视为作为组合处理一部分的通过其相关加权所加权的软数据。
根据这些加权,提取用于连续帧中对应块位置的相同数据比特的多个实例并将其进行组合以形成单个的接收比特。这可以通过以下计算实现:
,这里
bit_out为三帧的组最后输出的比特;
w1、w2和w3为时间帧中第一、第二和第三帧的加权;
bit1、bit2和bit3为来自时间帧中第一、第二和第三帧的相同位置块的比特;以及
n为软解码器输入精度的比特数量。
为了最佳利用软信息,信道解码器1021为所谓的软解码器,它能够应用软数据比特,即每个表示为非二进制数的数据比特,其范围取决于软解码器输入精度。例如,8比特输入精度的软解码器操作于0到255之间的值。为此目的,接收硬比特的加权平均值 与2n-1相乘,借此将加权平均值转换为适当精度的软解码所能够处理的软值。
当特定帧的确定质量低于预定的阈值时,可以假定特定帧不包含任何的水印数据以及没有为该帧提取任何数据。
本领域的普通技术人员将容易意识到,哪一帧增加了值,哪一帧减去了值以及哪一帧未发生改变;不论加和减都是必要的;一组中帧的数量;以及对相加或相减值或所产生的值所执行的任何舍入到整数取决于实施者的判断。
同步比特错误数量 |
加权因子w |
0 |
1 |
1 |
0.9 |
2 |
0.8 |
3 |
0.7 |
4 |
0.6 |
5 |
0.5 |
6 |
0.4 |