给数字视频加水印的方案
相关申请的交叉参考引用:
同时与本申请一起提交的序列号为第(Zarrabizadeh 22)号和第(Zarrabizadeh 24)号的美国专利申请。
技术领域
本发明涉及给数字视频加水印的技术,具体而言,本发明涉及将附加信息包括在数字视频信息中的技术。
背景技术
给视频信号加水印通常为在视频本身内包括附加信息。这能够有利于提供视频源的嵌入式标识,以跟踪视频播放的位置以及播放时间的长短,并通过该视频传送信息到辅助设备。用于给数字信号加水印的现有技术典型使用视频亮度将附加信息编码为视频本身内的模拟格式以携带附加信息。但是,人类的视觉系统对亮度信号非常敏感,因此,当试图增加附加信息的比特率到一定点,例如超过120比特每秒时,观察加有水印信号的人很容易感知这种改变视频信号用以传送附加信息所引起的失真。从而,尽管给视频信号加水印的现有技术在某些应用领域已经获得了一定的成功,但这种成功限制于可达到的非常小的比特率,而当人观察该携带附加信息的视频信号时不会感知失真。
在先前提交的序列号为10/342704的美国专利申请正如其完全阐述一样在此包含引作参考,发明人意识到人类的视觉系统较亮度而言对色度不那么敏感。所以,开发了一种用于给视频信号数字加水印的系统,即在视频信号的色度分量而不是其亮度信号上插入水印信号的附加信息。因此,附加信息“印象”在视频信号的色度分量上。有利的,尽管可能存在色度分量的严重失真,特别是当附加信息的比特率高于现有技术可达到的不被感知失真的比特率时,但是不论如何,只要对此加以适当地管理,人类的视觉系统将不会检测到这种失真。从而,与现有技术所达到的比特率相比,附加信息能够具有更高的比特率,例如能够实现大于每秒150比特的比特率。进一步有利的是,即使在使用运动图像专家组(MPEG-1)和(MPEG-2)编码系统压缩加有附加数据水印的视频信号之后,也能够从视频信号恢复该附加数据。
本人已经意识到序列号为10/342704的专利申请的系统要求多帧视频来精确地发送有关色度分量的信息。这将不利的是在某些应用中,例如,在要求更细密粒度的加水印情况下,以便提供更好的响应时间和对阻止临时篡改视频的改进,在一定情形下,例如当场景变化时,这种场景变化能够在视频中高速运动的情况下立即地发生,诸如发生在追赶场景中。
在同时与本申请提交的第(案例Zarrabizadeh22)号美国申请中,在等于每一帧的基础上,通过视频信号的各种块中每一个的色度分量平均值携带水印数据的一个或更多比特,能够改善给视频加水印。更具体而言,水印数据的一个或更多比特可能有效地放置在等于每一帧的每一块色度分量的至少一个选择部分之平均值的具体比特位置中。典型地注意到,有两个色度部分,当视频以YUV格式表示时例如为色度分量U和V。更具体而言,可能修改原始视频信号每一帧的每一块以在色度部分的平均值中携带其自己独立的水印数据的一个或更多比特,该色度部分选择用于携带用于该块的水印数据。然后理论上,所选色度部分平均值的比特位置的值将包含用于一个块的水印数据,并可能被考虑通过该块所携带的水印数据的比特值来代替。
只有一个色度部分携带用于任何特定块的水印数据。可以为该块独立地选择所选的用于携带任何块的水印数据的色度部分。被代替的平均值的比特位置为平均值的整数部分比特的位置。
如果有必要,可以调整一个块的各个像素的所选色度部分的值,以便使得块的所选色度部分要携带水印数据的比特平均值与水印数据比特的值相同。这可以通过改变该块中各个像素的所选色度部分的值来实现,以便在整个块中改变色度部分的平均值,从而平均值的所选比特位置的值符合水印数据的值,该值置于所选的比特位置中。
如果要包含水印数据的平均值的比特位置的值已经与水印数据比特的值相同,那么可以不对块的任何像素执行任何改变。但是,如果要包含水印数据的平均值的比特位置的值为块所携带的水印数据比特值的补码,则对该平均值执行至少最小的改变,这种改变将使得比特改变为水印数据比特的值。例如,如果要包含水印数据的平均值的比特为平均值整数部分的次最低有效位,那么可以通过给平均值加一或减一,总是将这样的一个比特改变为其补码值。这样做优选地用于增加2,这还可以用于总是改变该比特为其补码值,因为它在平均值引入了较少的变化,所以在块中也引入了较少的变化,籍此减少了引入观者可感知的非自然信号的机会。块的所选色度部分平均值的改变,通过将块的其中一些像素的所选色度部分加上或减去一个值来实现,减法可以通过加负数来实现,直到获得想要的色度部分平均值的改变。
当使用基于块的频域视频编码时,诸如运动图像专家组(MPEG)标准的其中之一,例如MPEG-1、MPEG-2、MPEG-4,通过对应于平均值,调整该块的至少一个色度矩阵的DC系数的值,可以获得替换加有水印数据的比特。例如,通过期望印象该块的水印比特的值来代替用于该块的DC系数的次最低有效位。
指定色度部分平均值的哪一比特携带水印数据可能为该块纹理变化量的函数。有利的是,随着纹理变化量的增加而增加携带水印数据的比特位置的有效性,因为类似MPEG的编码为较高的纹理变化量应用较大的量化步长大小,并且如果加水印数据没有足够显著地定位,那么使用这种较大的量化步长大小能够产生消除,例如过滤加水印数据。当使用更多的有效比特位置时,为了改变携带水印数据的比特位置的值为其补码值,给平均值增加或减少的值可以大于1。可以使用任何纹理变化量,例如纹理变化量Y、U或V,或者这些变化量的组合。
不论携带水印数据的比特位置改变为其补码与否,都可以将“余量”值填加到平均值中,以便更加保证块的平均值所携带的水印数据的比特幸免于类似于MPEG的编码,同时最小化了可感知的非自然信号产生的可能性。
一种接收机确定块的哪一色度分量携带水印数据并从该色度分量平均值的整数部分所选择的比特位置提取水印数据比特。可能根据块的纹理变化量,例如该块确定的色度部分的纹理变化量或亮度分量的纹理变化量,来确定所选择的比特位置。
有利地,与现有技术相比,实现了更好的响应时间和对阻止篡改视频的改进。进一步有利地是,场景变化不对印象数据引入错误。另外有利的是即使视频的原始像素域版本不可用,而只有基于块的频域编码版本可用,那么也可以给视频加水印而不用变换回到像素域。
发明内容
尽管同时与本申请提交的第(案例Zarrabizadeh22)号美国申请提供了上述说明的显著优点,但是申请人意识到通过一定的色彩组合,不利地是仍然存在附加数据引起轻微的可视闪烁的可能性。而且,在序列号为第(案例Zarrabizadeh22)号的美国申请中没有在接收机提取数据质量的任何指示。
所以,根据本发明的原理,在将任何数据印象到块的色度部分的平均值上之前,要复制该数据至少一次,优选为两次或更多次。在各个帧的相同块位置中,使用同时与本申请提交的序列号第(案例Zarrabizadeh22)号美国申请的技术来发送原始和产生的每个复制数据。考虑将携带相同数据的具有相同位置块的帧使其为一个组,并且优选地,该组中的这些帧以显示顺序相连续。
进一步,根据本发明的一个方面,该帧的特定块可以嵌入特定的已知数据序列,例如,巴克序列,而不是编码的用户数据。根据本发明的另一个方面,嵌入已知序列的特定块可以分布于一帧的整个块中。每组可以应用不同的已知序列,或者将相同的序列应用于不同的连续组中。
根据本发明的一个方面,代替简单地重复用于一组的每个相同位置块的数据,即使当块的复杂度相同时,也可以根据其复杂度可以稍微地从一帧到另一帧改变为每个块的平均值增加的量,这种改变用于一组上的相同位置的块。这种做提供了附加的编码增益,这有利于在接收机提高数据的可靠性。但是,这样做可能引起低纹理区域可见质量的轻微减小,因此该块内的一些像素可能具有不同于相同位置上原有像素的值。然而,由于这种可见质量的减小处于像素级,所以典型地不会引起注意。
在接收机,提取用于连续帧中对应块位置的相同数据比特的多个实例并将其进行组合以形成单个的接收比特。根据本发明的一个方面,能够使用已知的数据序列来确定每一特定帧的质量。该确定的质量用于为该帧规定一个加权,并且可以将从每一帧提取的数据的值视为软数据,以及作为组合处理的一部分,使用相关的加权为该软数据进行加权。如果特定帧的确定质量低于预定的阈值,则可以假定特定帧不包含任何水印数据,以及不为该帧提取任何数据。
附图说明
在附图中:
图1所示用于给视频信号数字加水印的示意性的发送机;
图2所示为用于恢复视频信号的附加数据的示意性接收机,该信号包括色度信号的数字水印;
图3A和3B所示为当它们结合在一起为如图3所示时,在利用附加数据给色度部分之一加水印时所使用的示意性处理流程;
图4A和4B所示为当它们结合在一起为如图4所示时,从数字加水印视频信号中提取附加信息的示意性处理流程,其中构成视频信号内的水印信号的附加信息已经印象在了色度分量上;
图5所示为一些安全范围的实例,其中期望的比特位置为第三最低有效位;
图6所示为用于确定哪一特定色度部分更加合适因此应该作出选择以包含用于像素的加水印信息的示意性处理流程;
图7所示为示意性划分色彩空间的一部分的剖视图;
图8所示为选择特定色度部分以包含用于像素的水印信息所采用的另一示意性处理流程;
图9所示为根据本发明原理的示意性发送机,其中在它印象在块的色度部分的平均值上之前,通过复制印象数据至少一次,优选为两次或更多次,从而可以减少闪烁;以及
图10所示为根据本发明原理的接收机的示意性实施例,该接收机用于接收诸如图9的发送机所产生的加有水印的视频信号。
具体实施方式
以下描述仅仅示例了本发明的原理。因此将会理解,本领域的普通技术人员将能够设计实施本发明原理的各种结构,尽管这里没有明确描述或示出,但是它们却包括在本发明的精神和范围之内。而且,所有的实例和这里叙述的条件语言都旨在从原理上表示用于教导的目的,以帮助读者理解本发明的原理和发明人提出的促进技术的构思,并且不构造作为对这些具体叙述实例和条件的限制。而且,这里叙述本发明原理、各个方面、实施例、及其具体实例的所有陈述旨在包括本发明的结构性和功能性的等同物。另外,这种等同物旨在包括当前已知的等同物以及未来开发的等同物,即所开发的执行相同功能而不考虑结构的任何组件。
因此,例如,本领域的普通技术人员将会理解,这里的任何方框图都表示实施本发明原理的示意性结构的理论视图。同理,将会理解任何流程表、流程图、状态转变图、伪码等等都表示各种处理流程,这些处理可以实质上在计算机可读媒体中表示,从而可以由计算机或处理器执行处理,而不论是否明确示出了这种计算机或处理器。
图中所示的各个组件的功能,包括标记为“处理器”的任何功能性方块,也可以通过使用专门硬件以及能够执行与适当软件所相关软件的硬件来提供。当处理器提供这些功能时,可以由单个专门的处理器、或单个共享的处理器、或多个其中有些可共享的各个处理器来提供。而且,明确使用术语“处理器”或“控制器”不应该解释为排他性地指代能够执行软件的硬件,它可以隐含地包括但不限制于,数字信号处理器(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)块积分器V 213,f)块积分器U 215,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色度部分提供给块积分器V 213,以及U色度部分提供给块积分器U 215。不象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。
块积分器V 213在整个块上积分V的值,即组合例如相加用于块中的每个像素的值。块积分器U 215在整个块上积分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
地址: 内容
1 to 16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
17 to 32 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
33 to 48 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
49 to 64 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
65 to 80 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
81 to 96 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
97 to 112 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
113 to 128 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
129 to 144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
145 to 160 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
161 to 176 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
177 to 192 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
193 to 208 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
209 to 224 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
225 to 240 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
241 to 256 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
257 to 272 255 255 127 0 0 0 0 0 255 255 255 255 255 255 255 255
273 to 288 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
289 to 304 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
305 to 320 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
321 to 336 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
337 to 352 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
353 to 368 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
369 to 384 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
385 to 400 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
401 to 416 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
417 to 432 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
433 to 448 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
449 to 464 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
465 to 480 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
481 to 496 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
497 to 512 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
513 to 528 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
529 to 544 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
545 to 560 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
561 to 576 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
577 to 592 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
593 to 608 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
609 to 624 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
625 to 640 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
641 to 656 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
657 to 672 255 255 255 555 255 255 255 255 255 255 255 255 255 255 255 255
673 to 688 255 255 255 555 255 255 255 255 255 255 255 255 255 255 255 255
689 to 704 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
705 to 720 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
721 to 736 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
737 to 752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
755 to 768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
769 to 784 254 255 127 0 0 0 0 0 255 255 255 0 0 0 0 0
785 to 800 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
801 to 816 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
617 to 832 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
833 to 848 255 255 255 255 255 555 255 255 255 255 255 255 255 255 255 255
549 to 864 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
865 to 880 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
851 to 896 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
897 to 912 255 255 255 255 255 255 255 255 255 255 255 255 555 255 255 255
913 to 928 255 255 255 255 255 255 255 555 255 255 255 255 255 255 255 255
929 to 944 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
945 to 960 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
961 to 976 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
977 to 992 255 255 255 255 255 255 255 255 555 255 255 255 255 255 255 255
993 to 1008 255 255 255 255 555 255 255 255 255 255 255 255 255 555 255 255
1009 to 1024 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1025 to 1040 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1041 to 1056 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1057 to 1072 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1073 to 1088 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1089 to 1104 555 255 255 255 255 255 255 555 255 255 255 255 255 255 255 255
1105 to 1120 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1121 to 1136 255 255 255 555 255 255 255 255 255 255 255 255 255 255 255 255
1137 to 1152 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1153 to 1168 255 255 555 255 255 255 255 255 255 255 255 255 255 255 255 255
1169 to 1184 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1185 to 1200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 555 255
1201 to 1216 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1217 to 1232 255 255 255 255 255 255 255 255 0 0 0 0 0 5 0 0
1233 to 1248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1249 to 1264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1265 to 1280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1251 to 1296 248 255 255 0 0 0 0 0 255 255 255 0 0 0 0 0
1297 to 1312 255 255 255 1 0 0 0 0 255 255 255 255 255 255 255 255
1313 to 1328 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1329 to 1344 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1345 to 1360 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1361 to 1376 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1377 to 1392 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1393 to 1408 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1409 to 1424 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1425 to 1440 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1441 to 1456 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1457 to 1472 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1473 to 1488 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1489 to 1504 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1505 to 1520 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1521 to 1536 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1537 to 1552 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1553 to 1568 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1569 to 1584 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1585 to 1500 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1601 to 1616 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1617 to 1622 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1633 to 1648 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1649 to 1664 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1665 to 1680 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1681 to 1696 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1697 to 1712 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1713 to 1728 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1729 to 1744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1745 to 1760 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1761 to 1776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1777 to 1792 0 0 0 0 0 0 0 0 0 255 127 0 0 0 0 0
1793 to 1808 224 255 255 0 0 0 0 0 252 255 255 1 0 0 0 0
1809 to 1824 255 255 255 3 0 0 0 0 255 255 255 3 0 0 0 0
1825 to 1840 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1841 to 1856 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1857 to 1872 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1873 to 1888 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1889 to 1904 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1905 to 1920 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1921 to 1936 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1937 to 1952 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1953 to 1969 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1969 to 1984 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
1985 to 2000 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2001 to 2016 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2017 to 2032 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2033 to 2048 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2049 to 2064 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2065 to 2080 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2081 to 2096 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2097 to 2112 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2113 to 2128 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2129 to 2144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2145 to 2160 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2161 to 2176 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2177 to 2192 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2193 to 2208 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
2209 to 2224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2225 to 2240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2241 to 2256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2257 to 2272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2273 to 2288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2289 to 2304 0 0 0 0 0 0 0 0 0 254 255 0 0 0 0 0
2305 to 2320 128 255 255 0 0 0 0 0 240 255 255 1 0 0 0 0
2321 to 2336 254 255 255 3 0 0 0 0 255 255 255 7 0 0 0 0
2337 to 2352 255 255 255 7 0 0 0 0 255 255 255 15 0 0 0 0
2353 to 2368 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2369 to 2384 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2385 to 2400 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2401 to 2416 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2417 to 2432 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2433 to 2448 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2449 to 2464 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2465 to 2480 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2481 to 2496 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2497 to 2512 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2513 to 2528 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2529 to 2544 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2545 to 2560 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2561 to 2576 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2577 to 2592 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2593 to 2608 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2609 to 2624 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2625 to 2640 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2641 to 2655 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2657 to 2672 255 255 255 225 255 255 255 255 255 255 255 255 255 255 255 255
2673 to 2688 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2689 to 2704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2705 to 2720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2721 to 2736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2737 to 2752 0 0 4 0 0 0 0 0 0 0 2 0 0 0 0 0
2753 to 2768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2769 to 2784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2785 to 2800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2801 to 2816 0 0 0 0 0 0 0 0 0 248 255 0 0 0 0 0
2817 to 2832 0 255 255 2 0 0 0 0 192 255 255 1 0 0 0 0
2833 to 2848 248 255 255 3 0 0 0 0 255 255 255 7 0 0 0 0
2849 to 2864 255 255 255 15 0 0 0 0 255 255 255 15 0 0 0 0
2865 to 2880 255 255 255 31 0 0 0 0 255 255 255 255 255 255 255 255
2881 to 2896 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2897 to 2912 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2913 to 2928 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2929 to 2944 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2945 to 2960 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2961 to 2976 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2977 to 2992 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
2993 to 3008 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3009 to 3024 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3025 to 3040 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3041 to 3056 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3057 to 3072 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3073 to 3088 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3089 to 3104 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3105 to 3120 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3121 to 3136 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3137 to 3152 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3153 to 3168 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3169 to 3184 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
3185 to 3200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3201 to 3216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3217 to 3232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3233 to 2248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3249 to 3264 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0
3265 to 3290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3241 to 3296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3297 to 3312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3313 to 3329 0 0 0 0 0 0 0 0 0 224 255 0 0 0 0 0
3329 to 3344 128 252 255 1 0 0 0 0 128 255 255 3 0 0 0 0
3345 to 3360 224 255 255 7 0 0 0 0 252 255 255 7 0 0 0 0
3361 to 3376 255 255 255 15 0 0 0 0 255 255 255 31 0 0 0 0
3377 to 3392 255 255 255 31 0 0 0 0 255 255 255 63 0 0 0 0
3393 to 3408 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3409 to 3424 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3425 to 3440 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3441 to 3456 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3457 to 3472 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3473 to 3488 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3489 to 3504 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3505 to 3520 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3521 to 3536 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3537 to 3552 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3553 to 3568 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3569 to 3584 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3585 to 3600 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3601 to 3616 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3617 to 3632 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3633 to 3648 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3649 to 3664 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3665 to 3680 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3681 to 3696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3697 to 3712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3713 to 3728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3729 to 3744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3745 to 3760 0 0 0 0 0 0 0 0 0 0 96 0 0 0 0 0
3761 to 3776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3777 to 3792 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0
3793 to 3808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3809 to 3824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3825 to 3840 0 0 0 0 0 0 0 0 0 152 255 1 0 0 0 0
3841 to 3856 0 241 255 1 0 0 0 0 0 254 255 3 0 0 0 0
3857 to 3872 192 255 255 7 0 0 0 0 248 255 255 15 0 0 0 0
3973 to 3888 254 255 255 15 0 0 0 0 255 255 255 31 0 0 0 0
3889 to 3904 255 255 255 63 0 0 0 0 255 255 255 63 0 0 0 0
3905 to 3920 255 255 255 127 0 0 0 0 255 255 255 255 255 255 255 255
3921 to 3936 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3937 to 3952 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3953 to 3969 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3969 to 3984 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
3985 to 4000 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4001 to 4016 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4017 to 4032 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4033 to 4048 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4049 to 4064 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4065 to 4080 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4081 to 4096 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4097 to 4112 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4113 to 4128 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4129 to 4144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4145 to 4160 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
4161 to 4176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4177 to 4192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4193 to 4208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4209 to 4224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4225 to 4240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4241 to 4256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4257 to 4272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4273 to 4288 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
4289 to 4304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4305 to 4320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4321 to 4336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4337 to 4352 0 0 0 0 0 0 0 0 0 96 255 1 0 0 0 0
4353 to 4368 0 192 255 3 0 0 0 0 0 249 255 7 0 0 0 0
4369 to 4384 0 255 255 7 0 0 0 0 224 255 255 15 0 0 0 0
4385 to 4400 252 255 255 31 0 0 0 0 255 255 255 31 0 0 0 0
4401 to 4416 255 255 255 63 0 0 0 0 255 255 255 127 0 0 0 0
4417 to 4432 255 255 255 255 0 0 0 0 255 255 255 255 0 0 0 0
4433 to 4448 255 255 255 255 1 0 0 0 255 255 255 255 255 255 255 255
4449 to 4464 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4465 to 4480 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4481 to 4496 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4497 to 4512 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4513 to 4528 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4529 to 4544 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4545 to 4560 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4561 to 4576 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4577 to 4592 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4593 to 4608 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4609 to 4624 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4625 to 4640 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4641 to 4656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4657 to 4672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4673 to 4688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4689 to 4704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4705 to 4720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4721 to 4736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4737 to 4752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4753 to 4768 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 0
4769 to 4784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4785 to 4800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4801 to 4816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4817 to 4832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4833 to 4848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4849 to 4864 0 0 224 1 0 0 0 0 0 194 253 1 0 0 0 0
4865 to 4880 0 130 255 3 0 0 0 0 0 224 255 7 0 0 0 0
4881 to 4896 0 252 255 15 0 0 0 0 128 255 255 15 0 0 0 0
4897 to 4912 240 255 255 31 0 0 0 0 254 255 255 63 0 0 0 0
4913 to 4928 255 255 255 63 0 0 0 0 255 255 255 127 0 0 0 0
4929 to 4944 255 255 255 255 0 0 0 0 255 255 255 255 1 0 0 0
4945 to 4960 255 255 255 255 1 0 0 0 255 255 255 255 3 0 0 0
4961 to 4976 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4977 to 4992 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
4993 to 5008 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5009 to 5024 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5025 to 5040 255 255 255 255 255 255 255 255 255 555 255 255 255 255 255 255
5041 to 5056 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5057 to 5072 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5073 to 5088 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5089 to 5104 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5105 to 5120 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5121 to 5136 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
5137 to 5152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5153 to 5168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5169 to 5184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5185 to 5200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5201 to 5216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5217 to 5232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5233 to 5248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5249 to 5264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5265 to 5280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5281 to 5296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5297 to 5312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5313 to 5328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5329 to 5344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5345 to 5360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5361 to 5376 0 0 128 1 0 0 0 0 0 0 227 3 0 0 0 0
5377 to 5392 0 0 254 3 0 0 0 0 0 192 255 7 0 0 0 0
5393 to 5408 0 240 255 15 0 0 0 0 0 254 255 31 0 0 0 0
5409 to 5424 192 255 255 31 0 0 0 0 248 255 255 63 0 0 0 0
5425 to 5440 255 255 255 127 0 0 0 0 255 255 255 255 0 0 0 0
5441 to 5456 255 255 255 255 0 0 0 0 255 255 255 255 1 0 0 0
5457 to 5472 255 255 255 255 3 0 0 0 255 255 255 255 3 0 0 0
5473 to 5488 255 255 255 255 7 0 0 0 255 255 255 255 255 255 255 255
5485 to 5504 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5505 to 5520 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5521 to 5536 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5537 to 5552 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5553 to 5568 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5569 to 5584 255 255 255 255 255 255 255 255 255 255 255 255 255 555 255 255
5585 to 5600 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5601 to 5616 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5617 to 5632 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
5633 to 5648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5649 to 5664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5665 to 5680 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5681 to 5696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5697 to 5712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5713 to 5728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5729 to 5744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5745 to 5760 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5761 to 5776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5777 to 5792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5793 to 5808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5809 to 5824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5825 to 5840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5841 to 5856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5857 to 5872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5873 to 5888 0 0 0 0 0 0 0 0 0 16 196 3 0 0 0 0
5889 to 5904 0 56 248 7 0 0 0 0 0 0 255 15 0 0 0 0
5905 to 5920 0 224 255 15 0 0 0 0 0 248 255 31 0 0 0 0
5921 to 5936 0 255 255 63 0 0 0 0 224 255 255 63 0 0 0 0
5937 to 5952 252 255 255 127 0 0 0 0 255 255 255 255 0 0 0 0
5953 to 5968 255 255 255 255 1 0 0 0 255 255 255 255 1 0 0 0
5969 to 5984 255 255 255 255 3 0 0 0 255 255 255 255 7 0 0 0
5985 to 6000 255 255 255 255 7 0 0 0 255 255 255 255 15 0 0 0
6001 to 6016 255 255 255 255 31 0 0 0 255 255 255 255 255 255 255 255
6017 to 6032 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6033 to 6048 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6049 to 6064 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6065 to 6080 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6081 to 6096 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6097 to 6112 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6113 to 6128 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6129 to 6144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6145 to 6160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6161 to 6176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6177 to 6192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6193 to 6208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6209 to 6224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6225 to 6240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6241 to 6256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6257 to 6272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6273 to 6288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6289 to 6304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6305 to 6320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6321 to 6336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6337 to 6352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6353 to 6368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6369 to 6384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6385 to 6400 0 0 0 0 0 0 0 0 0 0 8 3 0 0 0 0
6401 to 6416 0 48 224 7 0 0 0 0 0 0 252 15 0 0 0 0
6417 to 6432 0 128 255 31 0 0 0 0 0 240 255 31 0 0 0 0
6433 to 6448 0 252 255 63 0 0 0 0 128 255 255 127 0 0 0 0
6449 to 6464 240 255 255 127 0 0 0 0 254 255 255 255 0 0 0 0
6465 to 6480 255 255 255 255 1 0 0 0 255 255 255 255 3 0 0 0
6481 to 6496 255 255 255 255 3 0 0 0 255 255 255 255 7 0 0 0
6497 to 6512 255 255 255 255 15 0 0 0 255 255 255 255 15 0 0 0
6513 to 6528 255 255 255 255 31 0 0 0 255 255 255 255 63 0 0 0
6529 to 6544 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6545 to 6560 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6561 to 6576 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6577 to 6592 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6593 to 6608 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6609 to 6624 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6625 to 6640 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6641 to 6656 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
6657 to 6672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6673 to 6688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6689 to 6704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6705 to 6720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6721 to 6736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6737 to 6752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6753 to 6768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6769 to 6784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6785 to 6800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6801 to 6816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6817 to 6832 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0
6833 to 6848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6849 to 6864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6865 to 6880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6881 to 6896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6897 to 6912 0 0 0 0 0 0 0 0 0 8 0 6 0 0 0 0
6913 to 6928 0 96 128 15 0 0 0 0 0 0 240 15 0 0 0 0
6929 to 6944 0 0 254 31 0 0 0 0 128 192 255 63 0 0 0 0
6945 to 6960 0 248 255 63 0 0 0 0 0 254 255 127 0 0 0 0
6961 to 6976 192 255 255 255 0 0 0 0 248 255 255 255 1 0 0 0
6977 to 6992 255 255 255 255 1 0 0 0 255 255 255 255 3 0 0 0
6993 to 7008 255 255 255 255 7 0 0 0 255 255 255 255 7 0 0 0
7009 to 7024 255 255 255 255 15 0 0 0 255 255 255 255 31 0 0 0
7025 to 7040 255 255 255 255 63 0 0 0 255 255 255 255 63 0 0 0
7041 to 7056 255 255 255 255 127 0 0 0 255 255 255 255 255 255 255 255
7057 to 7072 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7073 to 7088 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7089 to 7104 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7105 to 7120 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7121 to 7136 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7137 to 7152 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7153 to 7168 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7169 to 7184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7185 to 7200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7201 to 7216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7217 to 7232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7233 to 7248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7249 to 7264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7265 to 7280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7281 to 7296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7297 to 7312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7313 to 7328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7329 to 7344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7345 to 7360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7361 to 7376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7377 to 7392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7393 to 7408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7409 to 7424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7425 to 7440 0 192 0 15 0 0 0 0 64 0 192 31 0 0 0 0
7441 to 7455 0 0 248 31 0 0 0 0 0 0 255 63 0 0 0 0
7457 to 7472 0 224 255 127 0 0 0 0 0 252 255 127 0 0 0 0
7473 to 7488 128 255 255 255 0 0 0 0 224 255 255 255 1 0 0 0
7489 to 7504 252 255 255 255 3 0 0 0 255 255 255 255 3 0 0 0
7505 to 7520 255 255 255 255 7 0 0 0 255 255 255 255 15 0 0 0
7521 to 7536 255 255 255 255 15 0 0 0 255 255 255 255 31 0 0 0
7537 to 7552 255 255 255 255 63 0 0 0 255 255 255 255 127 0 0 0
7553 to 7568 255 255 255 255 127 0 0 0 255 255 255 255 255 0 0 0
7569 to 7584 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7585 to 7600 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7601 to 7616 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7617 to 7632 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7633 to 7648 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7648 to 7664 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7665 to 7680 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
7681 to 7696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7697 to 7712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7713 to 7728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7729 to 7744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7745 to 7760 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7761 to 7776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7777 to 7792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7793 to 7808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7809 to 7824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7825 to 7840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7841 to 7856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7857 to 7872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7873 to 7888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7889 to 7904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7905 to 7920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7921 to 7936 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0
7937 to 7952 0 192 0 12 0 0 0 0 0 0 129 31 0 0 0 0
7953 to 7968 0 4 224 63 0 0 0 0 0 0 252 63 0 0 0 0
7969 to 7984 0 128 255 127 0 0 0 0 0 240 255 255 0 0 0 0
7985 to 8000 0 254 255 255 1 0 0 0 192 255 255 255 1 0 0 0
8001 to 8016 240 255 255 255 3 0 0 0 254 255 255 255 7 0 0 0
8017 to 8032 255 255 255 255 7 0 0 0 255 255 255 255 15 0 0 0
8033 to 8048 255 255 255 255 31 0 0 0 255 255 255 255 63 0 0 0
8049 to 8064 255 255 255 255 63 0 0 0 255 255 255 255 127 0 0 0
8065 to 8080 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 0
8081 to 8096 255 255 255 255 255 1 0 0 255 255 255 255 255 2 0 0
8097 to 8112 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8113 to 8128 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8129 to 8144 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8145 to 8160 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8161 to 8176 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8177 to 8192 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8193 to 8208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8209 to 8224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8225 to 8240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8241 to 8256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8257 to 8272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8273 to 8288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8289 to 8304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8305 to 8320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8321 to 8336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8337 to 8352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8353 to 8368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8369 to 8384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8385 to 8400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8401 to 8416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8417 to 8432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8433 to 8448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8449 to 8464 0 128 1 16 0 0 0 0 0 0 0 30 0 0 0 0
8465 to 8480 0 0 192 63 0 0 0 0 0 0 240 127 0 0 0 0
8481 to 8496 0 0 254 127 0 0 0 0 0 192 255 255 0 0 0 0
8497 to 8512 0 248 255 255 1 0 0 0 0 255 255 255 3 0 0 0
8513 to 8528 224 255 255 255 3 0 0 0 248 255 255 255 7 0 0 0
8529 to 8544 255 255 255 255 15 0 0 0 255 255 255 255 15 0 0 0
8545 to 8560 255 255 255 255 31 0 0 0 255 255 255 255 63 0 0 0
8561 to 8576 255 255 255 255 127 0 0 0 255 255 255 255 127 0 0 0
8577 to 8592 255 255 255 255 255 0 0 0 255 255 255 255 255 1 0 0
8593 to 8608 255 255 255 255 255 1 0 0 255 255 255 255 255 3 0 0
8609 to 8624 255 255 255 255 255 7 0 0 255 255 255 255 255 255 255 255
8625 to 8640 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8641 to 8656 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8657 to 8672 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8673 to 8688 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8689 to 8704 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
8705 to 8720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8721 to 8736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8737 to 8752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8753 to 8768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8769 to 8784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8785 to 8800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8801 to 8816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8817 to 8832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8833 to 8848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8849 to 8864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8865 to 8880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8881 to 8896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8897 to 8912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8913 to 8928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8929 to 8944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8945 to 8960 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8961 to 8976 0 0 1 0 0 0 0 0 0 0 0 56 0 0 0 0
8977 to 8992 0 0 0 63 0 0 0 0 0 0 224 127 0 0 0 0
8993 to 9008 0 0 252 255 0 0 0 0 0 0 255 255 0 0 0 0
9009 to 9024 0 224 255 255 1 0 0 0 0 252 255 255 3 0 0 0
9025 to 9040 128 255 255 255 7 0 0 0 240 255 255 255 7 0 0 0
9041 t0 9056 252 255 255 255 15 0 0 0 255 255 255 255 31 0 0 0
9057 to 9072 255 255 255 255 63 0 0 0 255 255 255 255 63 0 0 0
9073 to 9088 255 255 255 255 127 0 0 0 255 255 255 255 255 0 0 0
9089 to 8104 255 255 255 255 255 0 0 0 255 255 255 255 255 1 0 0
9105 to 9120 255 255 255 255 255 3 0 0 255 255 255 255 255 7 0 0
9121 to 9136 255 255 255 255 255 7 0 0 255 255 255 255 255 15 0 0
9137 to 9152 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9153 to 9168 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9169 to 9184 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9185 to 9200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9201 to 9216 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9217 to 9232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9233 to 9248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9249 to 9264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9265 to 9280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9281 to 9296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9297 to 9312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9313 to 9328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9329 to 9344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9345 to 9360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9361 to 9376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9377 to 9392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9393 to 9408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9409 to 9424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9425 to 9440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9441 to 9456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9457 to 9472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9473 to 9488 0 0 6 0 0 0 0 0 0 0 0 32 0 0 0 0
9489 to 9504 0 0 0 124 0 0 0 0 0 0 128 127 0 0 0 0
9505 to 9520 0 0 240 255 0 0 0 0 0 0 254 255 1 0 0 0
9521 to 9536 0 128 255 255 3 0 0 0 0 240 255 255 3 0 0 0
9537 to 9552 0 254 255 255 7 0 0 0 192 255 255 255 15 0 0 0
9553 to 9568 248 255 255 255 15 0 0 0 254 255 255 255 31 0 0 0
9569 to 9584 255 255 255 255 63 0 0 0 255 255 255 255 127 0 0 0
9585 to 9600 255 255 255 255 127 0 0 0 255 255 255 255 255 0 0 0
9601 to 9616 255 255 255 255 255 1 0 0 255 255 255 255 255 1 0 0
9617 to 9632 255 255 255 255 255 3 0 0 255 255 255 255 255 7 0 0
9633 to 9648 255 255 255 255 255 15 0 0 255 255 255 255 255 15 0 0
9649 to 9664 255 255 255 255 255 31 0 0 255 255 255 255 255 255 255 255
9665 to 9680 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9681 to 9696 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9697 to 9712 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9713 to 9728 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
9729 to 9744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9745 to 9760 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9761 to 9776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9777 to 9792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9793 to 9808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9809 to 9824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9825 to 9840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9841 to 9856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9857 to 9872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9873 to 9888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9889 to 9904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9905 to 9920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9921 to 9936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9937 to 9952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9953 to 9968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9969 to 9984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9985 to 10000 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
10001 to 10016 0 0 0 112 0 0 0 0 0 2 0 254 0 0 0 0
10017 to 10032 0 0 192 255 0 0 0 0 0 0 248 255 1 0 0 0
10033 to 10048 0 0 255 255 3 0 0 0 0 192 255 255 7 0 0 0
10049 to 10064 0 248 255 255 7 0 0 0 0 255 255 255 15 0 0 0
10065 to 10080 224 255 255 255 31 0 0 0 252 255 255 255 31 0 0 0
10081 to 10096 255 255 255 255 63 0 0 0 255 255 255 255 127 0 0 0
10097 to 10112 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 0
10113 to 10128 255 255 255 255 255 1 0 0 255 255 255 255 255 3 0 0
10129 to 10144 255 255 255 255 255 3 0 0 255 255 255 255 255 7 0 0
10145 to 10160 255 255 255 255 255 15 0 0 255 255 255 255 255 31 0 0
10161 to 10176 255 255 255 255 255 31 0 0 255 255 255 255 255 63 0 0
10177 to 10192 255 255 255 255 255 127 0 0 255 255 255 255 255 255 255 255
10193 to 10208 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10209 to 10224 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10225 to 10240 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10241 to 10256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10257 to 10272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10273 to 10288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10289 to 10304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10305 to 10320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10321 to 10336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10337 to 10352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10353 to 10368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10369 to 10394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10395 to 10400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10401 to 10416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10417 to 10432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10433 to 10448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10449 to 10464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10405 to 10400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10401 to 10496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10497 to 10512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10513 to 10528 0 0 0 96 0 0 0 0 0 0 0 248 0 0 0 0
10529 to 10544 0 0 0 255 1 0 0 0 0 0 224 255 3 0 0 0
10545 to 10560 0 0 252 255 3 0 0 0 0 128 255 255 7 0 0 0
10561 to 10576 0 224 255 255 15 0 0 0 0 252 255 255 15 0 0 0
10577 to 10592 120 255 255 255 31 0 0 0 240 255 255 255 63 0 0 0
10593 to 10608 254 255 255 255 127 0 0 0 255 255 255 255 127 0 0 0
10609 to 10624 255 255 255 255 255 0 0 0 255 255 255 255 255 1 0 0
10625 to 10640 255 255 255 255 255 1 0 0 255 255 255 255 255 3 0 0
10641 to 10656 255 255 255 255 255 7 0 0 255 255 255 255 255 15 0 0
10657 to 10672 255 255 255 255 255 15 0 0 255 255 255 255 255 31 0 0
10673 to 10688 255 255 255 255 255 63 0 0 255 255 255 255 255 63 0 0
10689 to 10704 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
10705 to 10720 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10721 to 10736 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10737 to 10752 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
10753 to 10768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10769 to 10784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10785 to 10800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10801 to 10816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10817 to 10832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10833 to 10848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10849 to 10864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10865 to 10880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10881 to 10896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10897 to 10912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10913 to 10928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10929 to 10944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10945 to 10960 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10961 to 10976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10977 to 10992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10993 to 11008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11009 to 11024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11025 to 11040 0 0 0 128 0 0 0 0 0 0 0 240 0 0 0 0
11041 to 11056 0 0 0 252 1 0 0 0 0 0 128 255 3 0 0 0
11057 to 11072 0 0 240 255 7 0 0 0 0 0 254 255 7 0 0 0
11073 to 11088 0 192 255 255 15 0 0 0 0 240 255 255 31 0 0 0
11089 to 11104 0 254 255 255 31 0 0 0 192 255 255 255 63 0 0 0
11105 to 11120 248 255 255 255 127 0 0 0 255 255 255 255 255 0 0 0
11121 to 11136 255 255 255 255 255 0 0 0 255 255 255 255 255 1 0 0
11137 to 11152 255 255 255 255 255 0 0 0 255 255 255 255 255 3 0 0
11153 to 11168 255 255 255 255 255 0 0 0 255 255 255 255 255 15 0 0
11169 to 11184 255 255 255 255 255 31 0 0 255 255 255 255 255 31 0 0
11185 to 11200 255 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
11201 to 11216 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
11217 to 11232 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255
11233 to 11248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
11249 to 11264 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
11265 to 11280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11281 to 11296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11297 to 11312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11313 to 11328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11329 to 11344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11345 to 11360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11361 to 11376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11377 to 11392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11393 to 11408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11409 to 11424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11425 to 11440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11441 to 11456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11457 to 11472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11473 to 11488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11489 to 11504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11505 to 11520 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11521 to 11536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11537 to 11552 0 0 0 0 0 0 0 0 0 0 0 192 1 0 0 0
11553 to 11568 0 0 0 248 1 0 0 0 0 0 0 254 3 0 0 0
11569 to 11584 0 0 192 255 7 0 0 0 0 0 248 255 15 0 0 0
11585 to 11600 0 0 255 255 15 0 0 0 0 224 255 255 31 0 0 0
11601 to 11616 0 252 255 255 63 0 0 0 0 255 255 255 127 0 0 0
11617 to 11632 224 255 255 255 127 0 0 0 252 255 255 255 255 0 0 0
11633 to 11648 255 255 255 255 255 1 0 0 255 255 255 255 255 1 0 0
11649 to 11664 255 255 255 255 255 3 0 0 255 255 255 255 255 7 0 0
11665 to 11680 255 255 255 255 255 15 0 0 255 255 255 255 255 15 0 0
11681 to 11696 255 255 255 255 255 31 0 0 255 255 255 255 255 63 0 0
11697 to 11712 255 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
11713 to 11728 255 255 255 255 255 255 0 0 255 255 255 255 255 255 1 0
11729 to 11744 255 255 255 255 255 255 1 0 255 255 255 255 255 255 3 0
11745 to 11760 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
11761 to 11776 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
11777 to 11792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11793 to 11808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11809 to 11824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11825 to 11840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11841 to 11856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11857 to 11872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11873 to 11888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11889 to 11904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11905 to 11920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11921 to 11936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11937 to 11952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11953 to 11968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11969 to 11984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11985 to 12000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12001 to 12016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12017 to 12032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12033 to 12048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12049 to 12064 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
12065 to 12080 0 0 0 224 3 0 0 0 0 0 0 252 7 0 0 0
12081 to 12096 0 0 0 255 7 0 0 0 0 0 224 255 15 0 0 0
12097 to 12112 0 0 252 255 31 0 0 0 0 128 255 255 31 0 0 0
12113 to 12128 0 240 255 255 63 0 0 0 0 254 255 255 127 0 0 0
12129 to 12144 125 255 255 255 255 9 0 0 240 255 255 255 255 0 0 0
12145 to 12160 254 255 255 255 255 1 0 0 255 255 255 255 255 3 0 0
12161 to 12176 255 255 255 255 255 3 0 0 255 255 255 255 255 7 0 0
12177 to 12192 255 255 255 255 255 15 0 0 255 255 255 255 255 31 0 0
12193 to 12208 255 255 255 255 255 31 0 0 255 255 255 255 255 63 0 0
12209 to 12224 255 255 255 255 255 127 0 0 255 255 255 255 255 127 0 0
12225 to 12240 255 255 255 255 255 255 0 0 255 255 255 255 255 255 1 0
12241 to 12256 255 255 255 255 255 255 3 0 255 255 255 255 255 255 3 0
12257 to 12272 255 255 255 255 255 255 7 0 255 255 255 255 255 255 15 0
12273 to 12288 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
12289 to 12304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12305 to 12320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12321 to 12336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12337 to 12352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12353 to 12368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12369 to 12384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12385 to 12400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12401 to 12416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12417 to 12432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12433 to 12448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12449 to 12464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12465 to 12480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12481 to 12496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12497 to 12512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12513 to 12528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12529 to 12544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12545 to 12560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12561 to 12576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12577 to 12592 0 0 0 128 3 0 0 0 0 0 0 240 7 0 0 0
12593 to 12608 0 0 0 254 15 0 0 0 0 0 192 255 15 0 0 0
12609 to 12624 0 0 240 255 31 0 0 0 0 0 254 255 63 0 0 0
12625 to 12640 0 192 255 255 63 0 0 0 0 248 255 255 127 0 0 0
12641 to 12656 0 255 255 255 255 0 0 0 192 255 255 255 255 1 0 0
12657 to 12672 248 255 255 255 255 1 0 0 255 255 255 255 255 3 0 0
12673 to 12688 255 255 255 255 255 7 0 0 255 255 255 255 255 15 0 0
12689 to 12704 255 255 255 255 255 15 0 0 255 255 255 255 255 31 0 0
12705 to 12720 255 255 255 255 255 63 0 0 255 255 255 255 255 63 0 0
12721 to 12736 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
12737 to 12752 255 255 255 255 255 255 1 0 255 555 255 255 255 255 1 0
12753 to 12768 255 255 255 255 255 255 3 0 255 255 255 255 255 255 7 0
12769 to 12784 255 255 255 255 255 255 7 0 255 255 255 255 255 255 15 0
12785 to 12800 255 255 255 255 255 255 31 0 255 255 255 255 255 255 255 255
12801 to 12816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12817 to 12832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12833 to 12848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12849 to 12864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12865 to 12880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12881 to 12896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12897 to 12912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12913 to 12928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12929 to 12944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12945 to 12960 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12961 to 12976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12977 to 12992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12993 to 13008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13009 to 13024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13025 to 13040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13041 to 13056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13057 to 13072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13073 to 13088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13089 to 13104 0 0 0 0 6 0 0 0 0 0 0 192 7 0 0 0
13105 to 13120 0 0 0 248 15 0 0 0 0 0 0 255 31 0 0 0
13121 to 13136 0 0 224 255 31 0 0 0 0 0 248 255 63 0 0 0
13137 to 13152 0 0 255 255 127 0 0 0 0 224 255 255 255 0 0 0
13153 to 13168 0 252 255 255 255 0 0 0 128 255 255 255 255 1 0 0
13169 to 13184 224 255 255 255 255 3 0 0 252 255 255 255 255 3 0 0
13185 to 13200 255 255 255 255 255 7 0 0 255 255 255 255 255 15 0 0
13201 to 13216 255 255 255 255 255 31 0 0 255 255 255 255 255 31 0 0
13217 to 13232 255 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
13233 to 13248 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
13249 to 13264 255 255 255 255 255 255 1 0 255 255 255 255 255 255 3 0
13265 to 13280 255 255 255 255 255 555 3 0 255 255 255 255 255 255 7 0
13281 to 13296 255 255 255 255 255 255 15 0 255 255 255 255 255 255 15 0
13297 to 13312 255 255 255 255 255 255 31 0 255 255 255 255 255 255 63 0
13313 to 13328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13329 to 13344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13345 to 13360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13361 to 13376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13377 to 13392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13393 to 13408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13409 to 13424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13425 to 13440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13441 to 13456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13457 to 13472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13473 to 13488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13489 to 13504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13505 to 13520 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13521 to 13536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13537 to 13552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13553 to 13568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13569 to 13584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13583 to 13600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13601 to 13616 0 0 0 0 4 0 0 0 0 0 0 0 15 0 0 0
13617 to 13632 0 0 0 224 15 0 0 0 0 0 0 252 31 0 0 0
13633 to 13648 0 0 128 255 63 0 0 0 0 0 240 255 63 0 0 0
13649 to 13664 0 0 252 255 127 0 0 0 0 128 255 255 255 0 0 0
13665 to 13680 0 240 255 255 255 1 0 0 0 254 255 255 255 1 0 0
13681 to 13696 192 255 255 255 255 3 0 0 240 255 255 255 255 7 0 0
13697 to 13712 254 255 255 255 255 7 0 0 255 255 255 255 255 15 0 0
13713 to 13728 255 255 255 255 255 31 0 0 255 255 255 255 255 63 0 0
13729 to 13744 255 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
13745 to 13760 255 255 255 255 255 255 0 0 253 255 255 255 255 255 1 0
13761 to 13776 255 255 255 255 255 255 1 0 255 255 255 255 255 255 3 0
13777 to 13792 255 255 255 255 255 255 7 0 253 255 255 255 255 255 7 0
13793 to 13808 255 255 255 255 255 255 15 0 255 255 255 255 255 255 31 0
13809 to 13824 255 255 255 255 255 255 63 0 255 255 255 255 253 255 63 0
13825 to 13840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13841 to 13856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13857 to 13872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13873 to 13888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13889 to 13904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13905 to 13920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13921 to 13936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13937 to 13952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13953 to 13968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13969 to 13984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13985 to 14000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14001 to 14016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14017 to 14032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14033 to 14048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14049 to 14064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14065 to 14080 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14081 to 14096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14097 to 14112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14113 to 14128 0 0 0 0 0 0 0 0 0 0 0 0 14 0 0 0
14129 to 14144 0 0 0 128 31 0 0 0 0 0 0 240 31 0 0 0
14145 to 14160 0 0 0 254 63 0 0 0 0 0 192 255 127 0 0 0
14161 to 14176 0 0 248 255 255 0 0 0 0 0 254 255 255 0 0 0
14177 to 14192 0 192 255 255 255 1 0 0 0 248 255 255 255 3 0 0
14193 to 14208 0 255 255 255 255 3 0 0 224 255 255 255 255 7 0 0
14209 to 14224 252 255 255 255 255 15 0 0 255 255 255 255 255 31 0 0
14225 to 14240 255 255 255 255 255 31 0 0 255 255 255 255 255 63 0 0
14241 to 14256 255 255 255 255 255 127 0 0 255 255 255 255 255 127 0 0
14257 to 14272 255 255 255 255 255 255 0 0 255 255 255 255 255 255 1 0
14273 to 14288 255 255 255 255 255 255 3 0 255 255 255 255 255 255 3 0
14289 to 14304 255 255 255 255 255 255 7 0 255 255 255 255 255 255 15 0
14305 to 14320 255 255 255 255 255 255 15 0 255 255 255 255 255 255 31 0
14321 to 14336 255 255 255 255 255 255 63 0 255 255 255 255 255 255 127 0
14337 to 14352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14353 to 14368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14369 to 14384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14385 to 14400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14401 to 14416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14417 to 14432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14433 to 14448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14449 to 14464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14465 to 14480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14481 to 14496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14497 to 14512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14513 to 14528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14529 to 14544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14545 to 14560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14561 to 14576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14577 to 14592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14593 to 14608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14609 to 14624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14625 to 14640 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0
14641 to 14656 0 0 0 0 31 0 0 0 0 0 0 192 63 0 0 0
14657 to 14672 0 0 0 248 63 0 0 0 0 0 0 255 127 0 0 0
14673 to 14688 0 0 224 255 255 0 0 0 0 0 252 255 255 1 0 0
14689 to 14704 0 0 255 255 255 1 0 0 0 224 255 255 255 3 0 0
14705 to 14720 0 252 255 255 255 7 0 0 128 255 255 255 255 7 0 0
14721 to 14736 240 255 255 255 255 15 0 0 254 255 255 255 255 31 0 0
14737 to 14752 255 255 255 255 255 63 0 0 255 255 255 255 255 53 0 0
14753 to 14768 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
14769 to 14784 255 255 255 255 255 255 0 0 255 255 255 255 255 255 1 0
14785 to 14800 255 255 255 255 255 255 3 0 255 255 255 255 255 255 7 0
14801 to 14816 255 255 255 255 255 255 7 0 255 255 255 255 255 255 15 0
14817 to 14832 255 255 255 255 255 255 31 0 255 255 255 255 255 255 31 0
14833 to 14848 255 255 255 255 255 255 63 0 255 255 255 255 255 255 127 0
14849 to 14864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14865 to 14880 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14881 to 14896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14897 to 14912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14913 to 14928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14929 to 14944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14945 to 14960 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14961 to 14976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14977 to 14992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14993 to 15008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15009 to 15024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15025 to 15040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15041 to 15056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15057 to 15072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15073 to 15088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15089 to 15104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15105 to 15120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15121 to 15136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15137 to 15152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15153 to 15160 0 0 0 0 28 0 0 0 0 0 0 128 63 0 0 0
15169 to 15184 0 0 0 224 127 0 0 0 0 0 0 252 255 0 0 0
15185 to 15200 0 0 128 255 255 0 0 0 0 0 240 255 255 1 0 0
15201 to 15215 0 0 254 255 255 3 0 0 0 192 255 255 255 3 0 0
15217 to 15232 0 240 255 255 255 7 0 0 0 254 255 255 255 15 0 0
15233 to 15248 192 255 255 255 255 31 0 0 248 255 255 255 255 31 0 0
15249 to 15264 255 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
15265 to 15280 255 255 255 255 255 127 0 0 255 255 255 255 255 255 0 0
15281 to 15296 255 255 255 255 255 255 1 0 255 255 255 255 255 255 3 0
15297 to 15312 255 255 255 255 255 255 3 0 255 255 255 255 255 255 7 0
15313 to 15328 255 255 255 255 255 255 15 0 255 255 255 255 255 255 15 0
15329 to 15344 255 255 255 255 255 255 31 0 255 255 255 255 255 255 63 0
15345 to 15360 255 255 255 255 255 255 127 0 255 255 255 255 255 255 127 0
15361 to 15376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15377 to 15392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15393 to 15408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15409 to 15424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15425 to 15440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15441 to 15456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15457 to 15472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15473 to 15488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15489 to 15504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15505 to 15520 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15521 to 15536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15537 to 15552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15553 to 15568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15569 to 15584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15585 to 15600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15601 to 15616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15617 to 15632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15633 to 15648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15649 to 15664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15665 to 15680 0 0 0 0 48 0 0 0 0 0 0 0 62 0 0 0
15681 to 15696 0 0 0 192 127 0 0 0 0 0 0 240 255 0 0 0
15697 to 15712 0 0 0 254 255 1 0 0 0 0 192 255 255 1 0 0
15713 to 15728 0 0 248 255 255 3 0 0 0 0 255 255 255 7 0 0
15729 to 15744 0 224 255 255 255 7 0 0 0 248 255 255 255 15 0 0
15745 to 15760 0 255 255 255 255 31 0 0 224 255 255 255 255 63 0 0
15761 to 15776 252 255 255 255 255 63 0 0 255 255 255 255 255 127 0 0
15777 to 15792 255 255 255 255 255 255 0 0 255 255 255 255 255 255 0 0
15793 to 15808 255 255 255 255 255 255 1 0 255 255 255 255 255 255 3 0
15809 to 15824 255 255 255 255 255 255 7 0 255 255 255 255 255 255 7 0
15825 to 15840 255 255 255 255 255 255 15 0 255 255 255 255 255 255 31 0
15841 to 15856 255 255 255 255 255 255 31 0 255 255 255 255 255 255 63 0
15857 to 15872 255 255 255 255 255 255 127 0 255 255 255 255 255 255 255 0
15873 to 15888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15889 to 15904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15905 to 15920 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15922 to 15936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
25937 to 15952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15953 to 15968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15969 to 15984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15985 to 16000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16001 to 16016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16017 to 16032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16033 to 16048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16049 to 16064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16055 to 16080 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16081 to 16096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16097 to 16112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16113 to 16128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16129 to 16144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16145 to 16160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16161 to 16176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16177 to 16192 0 0 0 0 0 0 0 0 0 0 0 0 120 0 0 0
16193 to 16208 0 0 0 0 127 0 0 0 0 0 0 224 255 0 0 0
16209 to 16224 0 0 0 252 255 1 0 0 0 0 0 255 255 3 0 0
16225 to 16240 0 0 224 255 255 3 0 0 0 0 255 255 255 7 0 0
16241 to 16256 0 128 255 255 255 15 0 0 0 240 255 255 255 15 0 0
16257 to 16272 0 252 255 255 255 31 0 0 128 255 255 255 255 63 0 0
16273 to 16288 240 255 255 255 255 127 0 0 254 255 255 255 255 127 0 0
16289 to 16304 255 255 255 255 255 255 0 0 255 255 255 255 255 255 1 0
16305 to 16320 255 255 255 255 255 255 3 0 255 255 255 255 255 255 3 0
16321 to 16336 255 255 255 255 255 255 7 0 255 255 255 255 255 255 15 0
16337 to 16352 255 255 255 255 255 255 15 0 255 255 255 255 255 255 31 0
16353 to 16368 255 255 255 255 255 255 63 0 255 255 255 255 255 255 127 0
16369 to 16384 255 255 255 255 255 255 127 0 255 255 255 255 255 255 255 0
步骤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(i,j) (p,q)<预定值,该值例如为最大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 |