首页> 中国专利> 用于模拟视频的水印方案

用于模拟视频的水印方案

摘要

通过处理模拟信号的数字版本,以向色度成分——其是用于至少部分地携带被印的附加数据比特的视频的线的分段的部分——中至少一些色度成分中每一个添加下列元素之积:a)周期性变化的对映波形的值;b)表示所印的附加水印数据比特的值;以及c)可选地,表示在正添加附加水印数据的点处图像的本地商业的加权值,从而实现对要以模拟形式传输的视频进行水印处理。

著录项

  • 公开/公告号CN1756340A

    专利类型发明专利

  • 公开/公告日2006-04-05

    原文格式PDF

  • 申请/专利权人 朗迅科技公司;

    申请/专利号CN200510107571.6

  • 发明设计人 莫罕莫德·H.·扎拉比扎德罕;

    申请日2005-09-29

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人董莘

  • 地址 美国新泽西州

  • 入库时间 2023-12-17 17:08:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-11-20

    未缴年费专利权终止 IPC(主分类):H04N7/08 授权公告日:20100825 终止日期:20120929 申请日:20050929

    专利权的终止

  • 2010-08-25

    授权

    授权

  • 2007-09-12

    实质审查的生效

    实质审查的生效

  • 2006-04-05

    公开

    公开

说明书

技术领域

本发明涉及对作为模拟信号发送的视频加水印的技术领域,并且尤其涉及在视频信息内包括附加信息。

背景技术

对视频信号加水印通常是在视频本身内包括附加信息。这可以用来提供视频源的嵌入标识,跟踪视频在何地播放以及播放了多久,并且通过视频将信息传递给辅助装置。用于视频信号水印的现有技术典型地使用视频的亮度以模拟格式将附加信息编码在视频本身内,以携带附加信息。然而,人类视觉系统对亮度信号非常敏感,因此当试图将附加信息的比特率增加到超过某一点,例如超过120比特每秒时,查看加水印后的信号的人容易觉察到由于对视频信号进行改变以传递附加信息而产生的失真。于是,虽然现有技术的视频信号水印技术在某些应用中取得了成功,但是这种成功受到了在查看携带附加信息的视频信号的人觉察不到失真的情况下可以实现的比特率非常小的局限。

在以前申请的美国专利申请号SN 10/342704中,其全部内容在此引做参考,本人以及本人的共同发明人认识到,人类视觉系统对色度的敏感度远不如对亮度的敏感度。因此,我们开发了一种用于对视频信号进行数字水印的系统,其将水印信号的附加信息插入到视频信号的色度成分上,而不是其亮度信号上。于是,附加信息被“印”到视频信号的色度成分上。有利地,虽然可能存在色度成分的显著失真,特别是当附加信息具有的比特率比通过现有技术可以得到的、觉察不到失真的比特率更高时,但是这种失真不会被人类视觉系统察觉到,假设对其进行适当的管理。于是,相比于现有技术可以得到的比特率,附加信息可以具有更高的比特率,例如可以得到超过150比特每秒的比特率。进一步更加有利地,即使在使用运动图像专家组(MPEG)-1和MPEG-2编码系统对被水印有附加数据的视频信号进行压缩之后,也能够从视频信号中恢复附加数据。

然而,现在以及在可预见的将来所使用的最普通的视频传输格式还是模拟视频。用于传输模拟视频的一些视频标准包括NTSC、PAL和SECAM。虽然我们讨论的用于附加信息加印的许多现有概念可以用于模拟视频,例如向色度成分添加附加信息,以及颜色选择以确定色度成分的哪一部分将携带附加信息,因为传播模拟视频信号的各种信道的特征所导致的失真,我们先前所公开的技术不足以保证精确地接收所传输的任何水印数据。

发明内容

本人已经认识到,可以改进要以模拟形式,例如NTSC、PAL或SECAM,传输的视频的水印,根据本发明的原理,通过处理模拟信号的数字版本,以向至少一些色度成分——其作为用于至少部分地携带所印附加数据的比特的视频的线的段的一部分——中每一个添加下列之积:a)周期性变化的对映(antipodal)波形的值;b)表示所印的附加水印数据比特的值;以及c)可选地,表示添加附加水印数据的点处图像的本地商业的加权值。

每一段典型地由与连续编号的线像素对应的色度成分组组成。表示比特的线的分段并不必由相同数目的色度成分组成。例如,如果在线上可以使用720个像素,并且视频为4-2-2格式,那么第一个比特可以通过该线上的一组前112个色度成分表示,第二比特可以通过线上接下来的一组128个色度成分表示,并且第三比特可以再次通过线上接下来的一组128个色度成分表示。可以是这样的,存在不属于任何组的、剩下的色度成分。如果是这样,不将这些色度成分用于水印目的。例如,使用前述组,忽略线的最后8个色度成分。

每一组色度成分被分成子组。每一子组在时间上对应于周期性变化的对映波形的一个循环的周期。上面的范例特别适用于周期与显示16个色度成分的时间一样长的、周期性变化的对映波形,其对应于4-2-2表示中的32个像素。印到一组112个色度成分上的每一比特对应于周期性变化的对映波形的7个循环,而印到一组128个色度成分上的中间比特对应于周期性变化的对映波形的8个循环。虽然附加循环可以用在线上的任何点,或者可以完全不使用,但是优选地使用靠近图像中间的额外循环,其趋于具有最大活动性,并且因此具有最小的图像相关性,因而其受益于额外循环所提供的附加稳健性。

对于每一色度成分,颜色选择处理确定哪一色度部分,即U还是V,更好地携带附加水印数据。在美国专利申请号NO.10/673893中公开了一种这样的选择处理,其全部内容在此引做参考。指定多数时间被选择作为为子组更好地携带附加数据的色度部分来携带附加数据。更具体地,修改选择处理为其选择多数选择的色度部分作为更好地携带附加水印数据的子组的那些色度成分,来携带附加水印数据。因此,每一这种色度成分已经向其添加了通过下列之积表示的值:a)表示被印到色度部分上的附加水印数据比特的值;b)用于特定色度成分位置的周期性变化的对映波形的值;以及c)可选地,在该值被添加的位置附近的图像的商业功能,例如局部变量。如果可能,其余的色度成分保持不变。这样做有助于确保附加数据不成为可见的。

被修改的信号然后被转换回为模拟NTSC表示,用于传输或存储。

附加水印数据的比特可以重复地印在多个线上的相同段位置。例如,附加水印数据的比特可以被印在连续线上相同位置处多组色度成分上。而且,用于在其上重复数据的每一线上的分段的数据表示并不必是相同的。

在用于NTSC视频的示范实施例中,视频每一线的“活动”部分被分为720个亮度像素。每一线的“活动”部分是携带想要显示给观看者的内容的线部分。注意到,存在NTSC扫描线的附加部分不是活动的,并且在该实施例中不使用。在NTSC视频中,每一帧具有525视频线。这些线在NTSC中作为两个隔行扫描场处理,并且所谓的“奇”场具有263线,而所谓的“偶”场具有262线。在本发明的示范实施例中,只使用480线。它们对应于所谓的“活动”线,即它们是携带要显示给观看者的内容的线。

优选地,使用4-2-2表示中的视频执行本发明。注意到,当以YUV格式表示视频时,每一色度成分中典型地存在两个色度部分,例如U和V。当以4-2-2表示视频时,存在360个色度成分,即对于线的活动部分,存在360个U色度部分,其每个与各自V色度部分相关联。

在示范实施例中,线携带3个比特,每一比特由三个分段中的各自一个携带,因此线上的色度成分被分成三组,每一组对应于分段,并且表示一个比特。印在线上的第一比特通过线的一组前112个色度成分表示,印在线上的下一比特通过线上接下来的128个色度成分组成的组表示,并且印在线上的最后一个比特通过线上接下来的112个色度成分组成的组表示。每一线上的后8个色度成分不用于水印。112个色度成分由7个1616色度成分的子组组成,并且128个色度成分由8个16色度成分的子组组成。

在示范实施例中,周期性变化的对映波形是正弦曲线信号。可选功能是可以向其添加表示附加水印数据的值的特定色度成分的位置附近的图像亮度的商业措施。商业功能的范围例如可以从1至20。概念性地,通过将所印的比特表示与色度部分时的正弦曲线值、以及与色度部分位置处所确定的局部亮度变量的值相乘,确定被添加到所修改的任何色度部分的值。

在示范实施例中,在多条线上重复数据,例如在设置为3对的6条线上。对于一对中的每一条线,使用与在该对中另一线中所使用的表示相反的表示来表示数据。例如,如果在一对的第一线上,1表示1并且-1表示0,那么在该对的另一线上,例如帧的下一连续线上,-1表示1,并且1表示0。于是,场的每一线使用相同的数据表示,并且帧的每一场使用与同一帧的另一场相反的表示。

根据本发明的一个方面,在本发明的示范实施例中,为组成一个或多个规定序列的一组比特,例如9个比特,分配帧的区域,例如靠近顶部。可以使用这种序列来确定帧中是否有任何水印数据。如果在帧中有水印数据,则序列可以用作标识信号,从而用户能够知道帧的水印数据是否是该用户的。于是,这种序列可以用作预约号,以将用户彼此隔离。有利地,如果帧不是正被监视的用户的,那么可以忽略该帧,从而减少功率消耗和所需要的处理能力。表示这样的9个比特的规定序列可能需要使用3组6线,共18线,其中每一组6线表示3个比特,以上述方式。

接收器使用所接收的加水印的模拟信号的数字化版本。更具体地,数字化处理应该将数字版本处理成为在对信号进行水印中所使用的相同格式,例如每线720像素,480线,4-2-2表示。然而,应该逐步设置视频,即与所接收的场去交错(deinterlace),例如使用常规技术。

使用线对,例如使用连续线对进行处理。对于每一线,色度成分的样本按照与发射机相同的方式分组。对第一线的每一子组执行颜色选择,并且为每一子组识别多数选择的颜色。每一子组的U色度部分与对映周期性变化波形相关,以产生子组的U相关值,而每一子组的V色度部分相似地与对映周期性变化波形相关,以产生子组的V相关值。对每一各自线中每一各自组的每一子组的多数选择的色度部分的相关值积分,即相加在一起。于是,产生了每一线上每一组的积分值。从第一线的各自相同位置组的积分值中减去第二线的每一组的积分值。使用可变加权组合器将所得到的差与从在其上印有附加水印数据相同比特的其它线对为相同组位置产生的差组合。可变加权组合器的输出用作提供给维特比解码器的软比特,其中每一输出对应于水印数据的一个比特,维特比解码器提供水印数据的最终硬比特版本。

优选地,当3组成对线携带相同的被印数据时,只处理中间线对,并且忽略其它4个线。这样做对应于在可变加权组合器中将0加权用于第一对和最后一对,而将1加权用于中间对。仍然得到良好的性能,因为这样印并且恢复的数据在构建NTSC信号,并且从其恢复视频信号,包括各种滤波操作,的处理以后仍然存在。可替换地,可以将不同加权赋予每一线对,并且对软比特应用加权。优选地,中间组的线具有的加权比可以被相等地加权的其它组高。

如果使用前同步码序列,则得到的差不必送往维特比解码器。作为替代,可以将差,即软比特值,相对于对应于特定用户的已知模式进行相关。如果存在匹配,就处理其余帧。处理可以是简单地将帧标识为属于特定用户的帧。否则,就忽略其余帧。

附图说明

其中:

图1所示为用于根据本发明的原理对将以模拟形式传输的视频加水印的示范发射机的基本组件;

图2所示为根据本发明的原理,用于从已经被加水印的模拟视频信号中恢复附加数据的示范接收器;

图3A和3B在结合在一起作为图3时所示为在根据本发明的原理用附加数据对一个色度部分加水印时所使用的示范处理;

图4A和4B在结合在一起作为图4时所示为根据本发明的原理,用于从被数字水印的视频信号中提取附加信息的示范处理,在该被数字水印的视频信号中,组成视频信号内水印信号的附加信息已经被印在色度成分上;

图5所示为图1的对映比特映射器的更详细的视图;

图6所示为用于确定哪一特定色度部分更适合、并因此应该选择、来包含色度成分的水印信息的示范处理;

图7所示为示范分割色彩空间的部分的剖面图(cutaway view);

图8所示为另一示范处理,通过其选择特定色度部分来包含像素的水印信息;和

图9所示为来自图1和5中所示几个元件的示范输出。

具体实施方式

下面仅仅描述本发明的原理。应该认识到,本领域的熟练技术人员能够设计实现本发明原理的多种设备,虽然其在这里没有明确描述或示出,并且其被包括在本发明的精神和范围内。而且,这里所引述的所有范例和条件语言主要是只用于教学说明目的的表述,以帮助读者理解本发明的原理以及发明人改进现有技术所贡献的概念,并且应该理解为不被限定到这里所引述的范例和条件。而且,这里说明原理、方面以及本发明实施例及其特定范例的所有表述意欲包括其结构和功能等同物。另外,这种等同物应该包括当前所知道的等同物以及未来开发的等同物,即所开发的执行相同功能的任何元件,而不管其结构。

于是,例如,本领域的熟练技术人员会理解的是,这里的任何方框图表示实施本发明原理的说明电路的概念性视图。类似地,应该理解的是,任何流程图、流程框图、状态转换图、伪代码等表示各种处理,其基本上可以在计算机可读介质中表示,并且通过计算机或处理器这样执行,而不管这种计算机或处理器是否在这里明确示出。

附图中所示的各种元件的功能,包括标记为“处理器”的任何功能方框,可以通过使用专用硬件以及能够与适当的软件相关联的、执行软件的硬件提供。当通过处理器提供时,功能可以通过单个专用处理器、通过单个共享处理器、或通过其中某些可以共享的多个单独处理器提供。而且,明确使用的词语“处理器”或“控制器”不应该理解为排它性地指代能够执行软件的硬件,并且可以隐含地包括数字信号处理器(DSP)硬件、网络处理器、特定用途集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)以及非易失性存储器,但并不仅限于此。也可以包括其它常规和/或定制的硬件。类似地,图中所示的任何切换只是概念性的。可以通过操作编程逻辑、通过专用逻辑、通过程序控制和专用逻辑的交互、或者甚至手动执行它们的功能,实施者可以选择的特定技术可以从上下文更加具体地理解。

在其权利要求中,任何表述为用于执行特定功能的装置的元件意欲包括执行该功能的任何方式,例如包括:a)执行该功能的电路元件的组合,或b)与用于执行该软件以执行该功能的适当电路相结合的任何形式的软件,因此包括固件、微代码等。这些权利要求定义的发明在于将各种所述装置提供的功能组合起来,并且通过权利要求所要求的方式一起进行。于是,应用将能够提供这些功能的任何装置当作这里所示的等同物。

软件模块、或者隐含地为软件的简单模块,在这里可以表示为流程图元件或者指示处理步骤执行的其它元件和/或文字描述的任何组合。这种模块可以通过明确或隐含示出的硬件执行。

除非这里有其它明确说明,所示附图并不按照比例。

在本说明书中,不同附图中相同编号的组件表示相同的组件。

图1所示为根据本发明的原理,用于通过处理模拟信号的数字版本以向视频线的分段的色度成分添加下列之积,从而对将以模拟形式,例如NTSC、PAL或SECAM,传输的视频加水印的示范发射机101的基本组件:a)周期性变化的对映波形;b)表示要印的附加水印数据比特的值;以及c)可选地,表示添加附加水印数据的点处图像的本地商业的加权值。

图1中所示为:a)YUV解复用器(demux)和抽取器103,b)颜色选择105,c)双极双掷(double-throw)切换109,d)纹理掩蔽单元111,e)乘法器113,f)加法器115,g)复用器(mux)117,h)对映比特映射器123,i)全国电视系统委员会制式(NTSC)转换器125,和i)延迟129。图1中也示出了可选的k)信道编码器119和1)块交织器121。

YUV解复用器和抽取器103接收要被加水印的视频信号,即要向其添加附加信息。YUV解复用器和抽取器103可以以数字视频工作,例如根据串行数字接口(SDI)标准格式的视频。如本领域普通技术人员会理解的,可以使用常规技术将开始不处于适当数字格式的任何视频信号转换为其。可以在开始处理之前将模拟视频转换成为数字的。

YUV解复用器和抽取器103解复用视频的亮度(Y)成分和其色度成分。视频信号的色度成分具有两个部分U和V,其中U是差分蓝部分,V是差分红部分。

优选地,将附加数据嵌入在色度成分上的很多处理是使用所谓“4-2-2”格式的视频进行,即亮度成分是全解析,而色度成分是a)只垂直为全解析和b)水平为半解析。这是SDI输入所提供的格式。在4-2-2格式中,对于线上亮度的每两个像素,存在一个色度分量。然而,对于某些处理操作,需要亮度和色度在相同速率上,即对于每一色度成分,只有一个亮度成分值。因此,YUV解复用器和抽取器103垂直抽取亮度成分,其作为信号Y被输出。将所抽取的亮度信号和色度部分作为输出提供给颜色选择105。

其它输入格式,例如4-4-4,可以作为视频输入信号提供给YUV解复用器和抽取器103,其然后将其抽取到上述适当的格式。它们应该选择这么做,本领域普通技术人员能够设计它们自己的方法,以产生适当的抽取信号。可替换地,在某些区域可以使用4-4-4格式执行处理,但是垂直方向上的附加色度需要说明。本领域普通技术人员可以很容易理解该如何做。

在可以将不同格式提供给发射机101的情况下,为了知道原始视频信号的格式,a)操作者可以向YUV解复用器和抽取器103指示提供给发射机101的视频的特定格式,b)可以使用常规技术直接从视频检测视频的格式,或者c)可以从正提供输入视频信号的更高层处理器提供信息。

YUV解复用器和抽取器103也以原始输入视频信号格式将Y、U和V输出提供给延迟129,优选地以4-2-2格式。延迟129将其接收到的Y、U和V信号延迟色度成分一个子组的时间,即对映波形的一个周期的时间,并且将所接收到的U和V信号的延迟版提供给双极双掷切换109。Y信号的延迟版本被提供给纹理掩蔽单元111和复用器117。

颜色选择105从YUV解复用器和抽取器103接收每一未延迟版的U、V和亮度信号Y。注意到,每一相关的U和V值组成单个色度成分,并且连同它们对应的Y值,它们对应于两个水平相邻的4-2-2像素。对于任何组的Y、U和V值,颜色选择105确定在色度成分上的哪一部分上,即U部分还是V部分上,如果需要,值的改变可以被更好地调节,而不会引入可见的非自然信号(artiface)。在本发明的一个实施例中,颜色选择105的操作是基于如下所述的查找表。可替换地,颜色选择105的操作可以全部或部分地基于各种计算,诸如在美国专利申请No.10/342704中公开的,其全部内容在此引作参考。将所得到的判定被存储到成分颜色存储器131中。成分颜色存储器131将用于色度成分的判定存储在一个子组中。例如,如果颜色选择105确定U应该是为色度成分选择的色度部分,那么将1存储在成分颜色存储器131中。类似地,如果颜色选择105确定V应该是为色度成分选择的色度部分,就将0存储在成分颜色存储器131中。成分颜色存储器131可以被实施为移位寄存器,以在将所选择的色度部分的指示作为输出COMPONENT COLOR提供之前,提供具有持续期为一个子组时间周期,即对映波形一个循环的时间期间,的延迟。

一旦已经由颜色选择105评估了子组的所有色度成分,就确定了选择U还是V用于子组的大多数色度成分。所选择的用于子组大多数色度成分的特定色度部分的指示被存储在子组多数存储器133中经过下一个子组的持续时间,并作为输出SUBGROUP MAJORITY被提供。

颜色选择105的输出COMPONENT COLOR也用来控制双极双掷切换109的位置。更具体地,COMPNENT COLOR控制双极双掷切换109,使得其:1)向加法器115提供已经被选择用来携带该水印数据的色度成分部分;2)向YUV复用器117提供未被选择的色度成分部分。COMPONENT COLOR也被提供给复用器117和对映比特映射器123,用于如下所述的使用。

在被延迟129延迟之后,纹理掩蔽单元111分析作为YUV解复用器和抽取器103的输出而提供的被抽取格式的每一相关色度成分和亮度成分周围的纹理,以确定在不引入可见非自然信号的情况下色度成分可以被调节的值的最大变化,并且将指示其的加权作为输出提供。加权值可以被编码,例如将从1至20的、用于10比特色度部分值的值进行积分。虽然纹理掩蔽单元111可以使用特定色度成分周围的所有像素位置来计算其纹理,但是这样做需要存储图像的多条线。根据本发明的一个方面,纹理掩蔽单元111可以简单地根据与当前色度成分相关的像素的亮度值以及与紧接着当前线上当前色度成分之前和之后的色度成分相关的像素的亮度值来确定纹理。有利地,根据本发明的一个方面,可以得到足够的精度,而不会让处理过于复杂。将加权提供给乘法器113。

注意到,所使用的特定值至少部分地取决于用来表示每一Y、U和V值的比特的数目。本领域的普通技术人员可以很容易认识到,所采用的值可以与所使用的比特数目成比例。

乘法器113将从纹理掩蔽单元111接收到的加权乘以与要作为该色度成分的部分而被传输的信息相关的值,其由对映比特映射器123提供。例如,由对映比特映射器123提供的值可以是正弦曲线值,例如sin(x)或-sin(x),对于其被选择的色度部分与子组的被选择的色度部分相同,即与信号SUBGROUP MAJORITY相同,的那些色度成分,其范围在-1与1之间。对于其被选择的色度部分与子组的被选择的色度部分不同的那些色度成分,如SUBGROUPMAJORITY信号所指示的,对映比特映射器123提供零。将乘法器113所产生的乘积提供给加法器115。

加法器115通过将乘法器113所提供的值与被颜色选择105选择用来为携带色度成分附加信息的色度成分部分的值相加,产生修改的色度部分。如所指示的,被颜色选择105选择用来携带附加信息的色度部分被双极双掷切换109传送到加法器115。将由加法器115提供的修改后的色度部分提供给复用器117。

复用器117接收每一延迟的原始亮度成分Y以及通过双极双掷切换109从延迟129提供的延迟的未修改的色度部分。复用器117也接收来自加法器115的修改后的色度部分。复用器117然后将原始亮度成分、未修改的色度部分以及修改后的色度部分复用在一起。复用器117借助于接收颜色选择105的输出,知道其在哪一引线上接收色度成分的修改部分,以及在哪一引线上接收色度成分的未修改部分。根据本发明的一个方面,所得到的视频信号被复用器117作为加水印的输出视频信号VIDEO OUT而提供。

注意到,原始亮度成分可以与色度成分不同的速率改变。例如,当原始视频是4-2-2格式时,每一像素由亮度值以及对应于被至少一个其它像素共享的色度成分的时间组成。由于两个相邻像素的组共享色度成分,而具有它们各自的Y值,所以亮度成分Y改变的速率是色度成分的两倍。本领域的普通技术人员可以很容易理解如何设计系统计时来考虑这一点。例如,YUV解复用器和抽取器103、延迟129和复用器117可以以其它组件速率的两倍工作。

如上所述,可以直接将要为每一组传输的附加信息的二进制数据值,即1或0,提供给对映比特映射器123,以作为水印数据使用,或者可以首先对其进行处理,以有利于在接收器中处理和恢复信息。可以通过可选的信道编码器119和块交织器121执行这种示范处理。

信道编码器119接收希望被嵌入到视频流中的附加数据。然后,例如使用前向纠错编码方案,对数据进行编码。这种前向纠错编码方案可以是任何常规前向纠错方案,诸如卷积编码,例如维特比编码或turbo编码,或者其可以是任何新开发的编码方案。在本发明的一个示范实施例中,使用速率四分之一的维特比编码。作为这种编码的结果,为原始比特流的每一比特产生四个比特。信道编码的比特流作为输出由信道编码器119提供给块交织单元121.

块交织器121重新设置信道编码的比特流的比特顺序,以随机地分布数据。这样做有助于减少丢失信道编码比特流的相邻部分的机会,例如由于噪声脉冲串或其它因素,那样就使得难以在接收器中根据剩余的实际接收的数据恢复这种数据。在本发明的示范实施例中,被交织作为单元的比特的数目等于帧中比特的数目。可以通过将数据顺序地从左向右写到块的行上--其中在每一行结束时,从下一行最左端的位置重新开始--,并然后通过从块的最左上端位置开始并向下读取一列,直至到达列的末端,--在那点上读取继续在下一列的顶部--,来读取数据,从而实现块交织器。已经证明,14行乘以16列的块交织器对于720乘以480像素的图像大小有效。对于不同的分辨率,本领域的普通技术人员可以很容易开发可比较的编码器。被交织的信道编码比特流作为比特交织器121的输出被提供给对映比特映射器123。

根据本发明的一个方面,在对映比特映射器123的控制下,将块交织器121提供的数据比特作为水印数据印到原始视频信号的至少一帧的至少一组线上。根据本发明的原理,对映比特映射器123提供的值表示所印的数据,其然后通过纹理掩蔽111的输出进行加权,并被加到所选择的色度部分的值上。

图5所示为对映比特映射器123的详细视图。图5中所示为a)双极切换501,b)乘法器507,c)对映正弦发生器509,d)乘法器513,e)比较器515,和f)控制器517。

控制器517控制对映比特映射器123的整体操作。特别地,控制器517控制如何表示从块交织器121接收到的数据的比特。注意到,多个色度成分被指定用来携带相同的附加数据。因此,例如在示范实施例中,色度成分的线的色度成分值被分为三组,其中每一组被分配给一个比特的表示。线上第一比特可以通过112个色度成分值表示,线上下一比特可以通过128个色度成分值表示,并且线上最后一个比特可以通过112个色度成分值表示。每一线上最后8个色度成分值不用于水印。112个色度成分值对应于7个子组的16色度成分,并且128个色度成分值对应于8个子组的16色度成分。

而且,在多个线,例如设置为3对的6个线,上相同组色度成分中携带相同的数据。对于一对中的每一条线,使用相反的表示来表示数据,例如,在一对的第一线上,由1表示1并且由-1表示0,那么在该对的另一线上,例如帧的下一个连续线上,用-1表示1,并且用1表示0。于是,场的每一线使用相同的数据表示,并且帧的每一场使用与相同帧的另一场相反的表示。

在控制器517的控制下,当该色度成分将要被包括在加水印的输出视频信号中时,对映比特映射器123提供来自交织的信道编码比特流的比特的适当表示,其要在原始视频信号的子组的每一色度成分的适当时间上为原始视频信号的每一线的每一子组被传输。于是,对映比特映射器123考虑这样的事实,即视频信号的处理时基于线的,即处理在线上是从左向右的,然后到下一行,再次从左向右,使得将要携带来自比特流的相同比特的相邻色度成分不必顺序地位于视频流中,并且因此并非都要在时间上直接相继地被处理。在任何时间作为对映比特映射器123的输出而提供的特定数据比特被作为输入提供给乘法器113。

控制器517接收来自块交织器121的数据。控制器517也接收关于图像的哪个扫描线正被处理的指示,作为输入。控制器517对作为线数目的函数的数据值进行补码运算。例如,仅对于偶扫描线,对数据值进行补码,即1变为0并且0变为1。

控制器517控制双极切换501的位置。如上所提到的,在本发明的一个实施例中,用于每一顺序线上数据的表示变为相反。于是,对于奇场,使用第一表示,对于偶场,使用相反的表示。

适当地转换从块交织器121接收到的数据以后,双掷切换501已经被耦合到与常数值1耦合的第一输入,和与常数值-1耦合的第二输入。当来自控制器517的输出是1时,双掷切换501的输出与常数值1耦合。当控制器517的输出是0时,双掷切换501的输出与常数值-1耦合。于是,双掷切换501将1、0数据表示有效地转换为1、-1数据表示。

双掷切换501的输出被提供给乘法器507。在图9中示出了来自双掷切换501的、对于由块交织器121提供的示范信号的示范输出。

乘法器507也接收对映波形,诸如正弦信号。在本发明的一个实施例中,对映波形是常规的正弦波,其范围在1与-1之间,由对映正弦发生器509产生。正弦信号的周期等于一个子组时间,即等于在显示器,例如电视,上显示与一个子组中色度成分的数目相对应数目的像素的时间,例如32个像素,其包含4-2-2表示中的16个色度成分。正弦通过多个相等空间间隔的样本进行数字表示。所使用的相等空间间隔的样本的数目与子组中色度成分的数目相等,例如为16。这对应于样本之间22.5度的空间间隔。例如参见表1。在图9中示出了来自对映正弦发生器509的、用于由块交织器121提供的示范信号的示范输出。

                       表1

                     色度           正弦值

                     位置

                     1              0

                     2              0.382683

                     3              0.707107

                     4              0.92388

                     5              1

                     6              0.92388

                     7              0.707107

                     8              0.382683

                     9              0

                     10             -0.38268

                     11             -0.70711

                     12             -0.92388

                     13             -1

                     14             -0.92388

                     15             -0.70711

                     16             -0.38268

将由乘法器507产生的、双掷切换501和对映正弦发生器509的输出的乘积提供给乘法器513。在图9中示出了来自乘法器507的、用于由块交织器121提供的示范信号的示范输出。

比较器515将颜色选择105当前所提供的信号值COMPONENTCOLOR与当前所提供的信号值SUBGROUP MAJORITY进行比较,其也由颜色选择105提供。如果值相等,则比较器515向乘法器513输出1。否则,比较器515向乘法器513输出0。于是,比较器513例如可以通过“异或非”门实施。于是,比较器515输出的1表示,当前色度成分已经选择为其子组中大多数色度成分选择被修改的相同色度成分来被修改。比较器515输出的0表示,当前色度成分已经选择对于其子组中大多数色度成分没有选择以修改的色度成分来修改,因此应该对色度成分不执行修改。

将作为来自乘法器513的输出而提供的、所得到的乘积提供给乘法器113(图1)。结果,不向为其选择以携带附加信息的色度部分与为色度成分的相同子组中多数色度成分所选择的色度部分不同的任何色度成分添加值。在图9中示出了来自乘法器513的、用于由块交织器121提供的示范信号的示范输出。

使用诸如图1中所示的编码器,当视频帧大小为720×480像素时,对于信道编码器119所提供的附加信息,已经达到了大约每秒1480比特的比特率,基本上没有错误。

本领域的普通技术人员可以很容易认识到,虽然图1中所示基本上为本发明的流水线实施方式,但是也可以有其它设置。在本发明的一个实施例中,为了方便,对整个线进行缓冲,并然后以更大的平行度进行处理。

根据本发明的一个方面,可以使用特定的已知数据序列,例如Barker序列,而不是编码用户所提供的数据,嵌入帧的具体比特位置。这通过可选的序列添加器127执行。可选的序列添加器127提供特定的已知数据序列,例如Barker序列。对映比特映射器123将序列的比特放置在帧的具体比特位置中,数据序列代替编码的用户数据,例如代替将来自块交织器121的数据放置在这些位置中。虽然优选地放置在帧的顶部附近,但是在其中对数据序列进行编码的比特位置可以分散在帧可用的各种比特位置上。嵌入这种序列的一种使用是将帧标识为加水印的帧。这种嵌入序列的另一种使用是标识特定的帧属于哪一用户,其可以通过为不同用户的帧使用不同的编码来实现。

图2所示为根据本发明的原理,用于恢复在其色度信号上包含数字水印的视频信号的附加数据的示范接收器201。图2中示出了:a)YUV解复用器(demux)和抽取器203,b)颜色选择单元207,c)双极双掷切换209,d)子组上的V相关器213,e)子组上的U相关器215,f)去交织器219,g)信道编码器221,h)组积分器231,i)线缓冲器233,j)双掷切换239,k)线延迟241,1)减法器243,m)多掷切换245和249,和n)可变加权组合器247-1至247-N,这里统称为可变加权组合器247。

YUV解复用器和抽取器203可以类似于发射机101的YUV解复用器和抽取器103(图1),其接收根据本发明的原理,通过向信号的色度成分添加附近信息而已经被数字加水印的视频信号。YUV解复用器和抽取器203可以以数字视频工作,例如根据串行数字接口(SDI)标准格式的视频。如本领域所普通技术人员会理解的,可以使用常规技术将开始不处于适当数字格式的任何视频信号,例如所接收的模拟NTSC信号,向其转换。

优选地,从色度成分恢复附加数据的很多处理是使用4-2-2格式的视频进行。然而,对于某些处理操作,需要亮度和色度具有相同的速率,即对于每一色度成分,只有一个亮度。因此,YUV解复用器和抽取器203垂直地抽取亮度成分,其被输出为信号Y。为了知道所接收的视频的格式,a)操作者需要向YUV解复用器和抽取器203指示输入视频的特定格式,b)可以使用常规技术从视频直接检测视频的格式,或者c)可以从正在提供输入视频信号的更高层处理器提供该信息。

将解复用的色度和抽取的亮度成分提供给颜色选择207。另外,将V色度部分提供给子组上的V相关器213,并且将U色度部分提供给子组上的U相关器215。与YUV解复用器和抽取器103不同,YUV解复用器和抽取器203也不需要提供原始输入视频信号的全格式的YUV输出。

作为子组内各种色度成分Y、U和V的函数,颜色选择单元207为每一子组确定在色度成分的哪一部分上,即在U部分还是V部分上,有可能为该子组嵌入附加信息。因此,颜色选择单元207主要重复由颜色选择105(图1)执行的、确定信号SUBGROUP MAJORITY所需要的计算。颜色选择单元207(图2)的输出用来控制双掷切换209的位置,使得双掷切换209向组上的积分器231提供由对应于多数选择颜色的相关器213和215其中之一所提供的相关值。在本发明的一个实施例中,颜色选择单元207是基于查找表的,如下更详细所述。这样做简化了处理,因为其不需要将YUV转换为RGB,否则这个转换是必需的。

子组上的V相关器213将子组上的V值与对映正弦的完整循环,诸如通过对映正弦发生器509所产生的,相关。因此,将每一V色度部分的值乘以相似位置的正弦值,并且将所有的乘积相加在一起产生单个值。类似地,子组上的U相关器215将子组上的U值与对映正弦的完整循环,诸如通过对映正弦发生器509所产生的,相关。因此,将每一U色度部分的值乘以相似位置的正弦值,并且将所有的乘积相加在一起产生单个值。

通过与对映正弦的完整循环相关,抵消了用于所选择部分的U或V部分的实际值,该实际值可以被看作循环上只少量变化,并且因此基本上对应于DC电平。这是因为,通过相关的乘法定律,所得到的乘积可以认为是与DC电平相乘的对映正弦,其是色度部分值加上与在DC电平为0时所印的正弦相乘的对映正弦。关于对映正弦与DC电平相乘,对于在正半周期的对映波形期间产生的每一正乘积值,存在对应的在负半周期的对映波形期间产生的负乘积值。当将对应的正乘积与负乘积相加时,它们就抵消了。然而,对映正弦乘以DC电平为0处所印的正弦的乘积通常产生正值或负值,除了在对映正弦为0的位置之外。于是,将这些值相加就产生总的正或负值。总值为正还是负取决于所印的正弦的极性。

由相关器为未选择色度部分产生的结果是不相关的,虽然其通常应该比较小,并且其反映色度部分的变化与对映正弦之间的内在相关性。

组积分器231将为组内每一子组的每一选择色度部分产生的值相加。注意到,如上所述,每一组中子组的数目不必相同,并且某些色度成分可以不属于任何组。进一步记住,每一组是特定比特的传输的部分。将所得到的结果提供给双掷切换239。

在图2中所示的本发明的实施例中,对于奇线,双掷切换239将来自组积分器231的组积分值路由到线延迟241,例如每线3个值。对于偶线的情况,双掷切换239将来自组积分器231的组积分值直接路由到减法器243。来自奇线的值在线延迟241中存储一个线周期,并然后将它们提供给减法器243。减法器243从奇线的对应位置各值中减去偶线的组积分值。

由切换245将每一组两个线的差值路由到其中一个可变加权组合器247。例如,当在每一线上印有3个比特时,就有三个可变加权组合器247,并且N=3。这样进行路由,使得第一可变加权组合器247接收对应于第一组两个线的积分差值,下一个可变加权组合器247接收对应于下一组两个线的积分差值,等等。每一可变加权组合器具有用于规定数目的积分差值的存储器位置,一个用于其上印有相同比特的每一对线。例如,当所印的数据在6个线上重复时,在每一可变加权组合器247中就有三个存储器位置,一个用于每一对线。

在处理其上已经重复被印数据比特的所有线之后,将加权乘以每一可变加权组合器247中存储值中的每一个。将加权后的值相加,并且将所得到的输出作为比特的软比特提供。通过切换249顺序地路由软比特,例如按照它们的对应组出现在视频信号的线上的顺序。

在本发明的一个实施例中,当所印的数据在6个线上重复时,用于中间两个线的加权为1,而用于前两个和后两个的加权为0。然后有效地,只需要处理中间两个线,简化了计算。已经发现,使用这种设置,即使使用3线梳状滤波器来处理图像,也可以成功地接收水印数据。

去交织器219重新设置软比特的顺序,以还原发射机101的块交织器121(图1)的效果。然后将重新排序的值提供给信道解码器221(图2),其对使用发射机101(图1)的信道编码器119所采用的编码类型进行编码的信号执行适当的解码,并且将软比特转换为最终的硬比特有效载荷。通过信道解码器221(图2)将所得到的解码值作为附加数据信号的重构版本提供。为了更加稳健,信道解码器221可以是所谓的“顺序解码器”,例如turbo解码器。

在一个示范应用中,可以监视视频信号内销售商的各种商业。可以将嵌入在其商业的每一帧中的唯一代码分配给销售商。接收器知道特定的唯一代码以及加水印的帧的哪一比特位置应该包含代码。通过检测在加水印的帧中代码的出现,接收器可以将帧标识为属于其中一个销售商商业的帧。一旦检测到具有代码的帧,就可以对包括代码的顺序帧的数目计数,以确定商业的长度。如果所计数的帧的数目少于帧的预期数目,则基于当其被初始水印时商业的已知长度,可以假定商业由于删除了对应于帧的预期数目与帧的计数数目之差的数目的帧,而被不适当的缩短了。本领域的普通技术人员可以认识到,也可以使用其它用于避免错误匹配以及处理由于误差丢失第一帧的常规技术。

可以使用唯一标识符,例如帧或组编号,来对商业的每一帧、或商业内的帧组进行水印处理,唯一标识符是帧上的离散序列的部分。当由于一个或多个丢失的帧而检测到预期序列中的间隙时,当每一帧具有唯一标识符时,就可以具体地识别这些丢失的帧。当将标识符只分配给组,并且每一组中帧数目是已知的时候,与丢失多少帧的计数一起,只可以识别任何丢失帧所属于的特定组。

如果销售商具有不同的商业,则每一商业可以具有嵌入在其帧的至少一个中的进一步序列,以标识正被接收的、该销售商的特定商业。

如果多个销售商具有加水印的商业,只要将唯一代码分配给每一销售商,则用于监视具有第一唯一代码的第一销售商商业的出现的系统就会忽略具有第二唯一代码的第二销售商商业。可替换地,单个系统可以监视用于来自分别具有唯一代码的不同销售商的商业的出现的视频信号,并且可以通过销售商根据它们的代码将这些结果隔离。

当多个销售商具有加水印的商业时,每一销售商使用相同的代码,并且代码甚至可以在用于每一销售商的帧中相同的比特位置上。然而,使用用于每一销售商的唯一密钥对包含在帧内的所有顺序数据进行加密,并且每一销售商具有只知道用于该销售商的密钥的接收器。因此,每一销售商只能够解密和接收来自其自己商业的数据。可替换地,可以通过对帧的比特位置上的数据进行扰频,对用于每一销售商的数据进行加密。每一接收器只知道其相关销售商的扰频模式。

在一个示范应用中,可以连续地、或者在希望播放商业的时间窗内,监视指示商业开始的代码的首次出现。

当出现时,可选的序列处理器223可以被定位,使得能够操作,以检测在帧中是否出现用户的唯一代码,并且剥离对应于这种代码的软比特。序列处理器223通过直接将其与软比特相关,从而检测用户的唯一代码。如果存在代码的匹配,就将其余的软比特提供给去交织器219。

图3A和3B在结合在一起表示为图3时,所示为根据本发明的原理,用于以附加数据对色度部分加水印的示范处理。图3的处理可以全部在软件中,或者结合诸如图1中所示的设置中执行。

当子组的所有色度成分都可用时,处理可以从步骤301开始。图3的部分处理是基于子组进行的,并且部分基于逐个色度成分,并且部分甚至在像素级进行。使用指针i标引线的色度成分。如上所述,对于该示范实施例,每一色度成分对应于两个亮度成分。

在进入步骤301的处理之后,在步骤303中对在处理中所使用的几个变量初始化,例如countU(i)=0并且countV(i)=0。countU是子组内多少色度成分被颜色选择处理选择作为适合于在U色度部分上进行水印的运行总数,而countV是子组内多少色度成分被颜色选择处理选择作为适合于在V色度部分上进行水印的运行总数。

此后,条件分支点307进行测试,以确定哪一特定色度部分,即U或者V,将包含用于子组的水印信息。这是通过评估用于子组内每一色度成分的颜色选择、并且计算子组内被选择用于每一色度部分的色度成分的数目来完成的。换言之,对于子组内的每一色度成分,根据被选择用来携带该色度成分的附加数据的色度部分,countU(i)和countV(i)其中适当的一个增加。可以使用查找表确定所选择的用于色度成分的色度部分,如下所述。选择被最多选择用于子组内色度成分的色度部分用于水印,即选择countU(i)和countV(i)其中较大者。

确定选择用来被为每一色度成分加水印的颜色的特定方法由实施者任意选择。在本发明的一个实施例中,选择具有最小值的色度成分的色度部分。在本发明的另一个实施例中,采用如下所述的颜色选择设置。

如果步骤307中的测试结果是V色度部分被选择被加水印,即countV(i)>countU(i),则控制前进到步骤309,其中设置变量SUBGROUP MAJORITY等于V。此后,控制前进到步骤313。如果步骤307中的测试结果是U色度部分被选择被加水印,即countU(i)≥countV(i),则控制前进到步骤311,其中设置变量SUBGROUP MAJORITY等于U。此后,控制前进到步骤313。

在步骤313中,得到子组的第一色度成分。然后,在步骤315中,确定为所得到的色度成分加水印所应该使用的特定色度部分。可以使用如下所述的查找表确定用于色度成分的被选择色度部分。此后,条件分支点317进行测试,以确定应该用于为所得到的色度成分加水印的特定色度部分是否与SUBGROUP MAJORITY所指示的色度部分相同。如果步骤317中的测试结果为YES,表示应该用于为所得到的色度成分加水印的特定色度部分与SUBGROUP MAJORITY所指示的色度部分相同,表示确实应该对该色度部分加水印,则控制前进到步骤319,其中计算var(i),用于与色度部分相关联的亮度值的商业指示,例如变量。有可能使用环绕色度部分的某些或全部亮度值。根据本发明的一个方面,已经发现,只使用与当前色度成分以及紧接着之前和之后的色度成分相关联的亮度值就足以计算var(i),如下:

>>var>>(>i>)>>=>min>>(>|>>Y>>(>i>)>>>(>1>)> >->>Y>>(>i>+>1>)>>>(>1>)> >|>,>|>>Y>>(>i>->1>)>>>(>1>)> >->>Y>>(>i>+>1>)>>>(>1>)> >|>)>>+>min>>(>|>>Y>>(>i>)>>>(>2>)> >->>Y>>(>i>->1>)>>>(>2>)> >|>,>|>>Y>>(>i>->1>)>>>(>2>)> >->>Y>>(>i>+>1>)>>>(>2>)> >|>)>>>s>

其中色度成分及其相关联的两个亮度成分在线上设置为Y1UY2V;i是指向当前色度成分的附标;i-1是指向前一色度成分的附标,并且其相关的亮度值类似地设置;并且i+1是指向下一色度成分的附标,并且其相关的亮度值类似地设置。使用var(i)的这种计算的优点在于,其避免包括大的值来表示在用于不具有纹理的环绕区域的边缘上的水印数据。在这种边缘处,存在亮度与色度之间非常大的变化,但是环绕区域基本上具有不变的亮度和色度。如果边缘的差异(variance)值将确定为边缘上的色度成分所要添加的量,那么这种边缘上的水印可能产生可见非自然信号。因此,既然因为在边缘的每一侧上存在非常小的纹理,所以在边缘的每一侧上,差异非常小,从而通过使用最小变化作为差异的指示器,至多为水印数据添加小的值。换言之,上述用于var(i)的公式过滤出反映非纹理区域之间的边界的差异变化。

而且,对于在线开始处的、并因此在线上没有紧靠其前的色度部分,或者紧靠其前的色度部分没有显示出来的那些色度部分,这种紧靠其前的色度部分的值可以认为是0。虽然这里已经描述了某些色度部分在线上的不使用,因为它们不属于任何子组,并且那些色度部分已经被指示为位于线的末端,但是有可能让部分或全部初始色度部分作为未被使用的色度部分。这样做就允许使用在其前面的色度部分的实际值计算线上首先使用的色度部分的差异,并且也允许使用在其后面的色度部分的实际值计算线上最后使用的色度部分的差异。

条件分支点321接着进行测试,确定变量SUBGROUPMAJORITY是否等于U。如果步骤321中的测试结果为NO,说明该变量SUBGROUP MAJORITY等于V,使得要被加水印的是当前色度成分的V色度部分,则控制前进到条件分支点323,其进行测试,以确定与色度成分相关联的差异var(i)是否大于作为最大V阈值的第一规定V阈值t1v。基于var(i)公式的t1v的范例值为20。

注意到,结合图3和4用于U和V的特定阈值不仅取决于用于计算var(i)的公式,而且至少部分地取决于用来表示每一Y值的比特的数目。例如,这里所建议的阈值对于Y是10比特值。本领域的普通技术人员容易认识到,用于8比特的值通过除以4可以被比例变化到8比特,例如将值向右移位两次。同样的,可以类似地调节用于Y、U和V的比特数目。

在本发明的其它实施例中,不是使用亮度的差异用于各种比较,而是可以计算和使用差(different)平均差异,例如子组上的平均V差异。

如果步骤323中的测试结果是YES,说明var(i)的值大于t1v,即大于20,则差异足够大,从而可以使用最大编码值,表示为m1,例如16,来编码附加数据,控制前进到步骤325,其中将变量m设置为等于m1,例如16。

如果步骤323中的测试结果是NO,说明差异不够大,从而附加数据还不能使用最大编码值进行编码,则控制前进到条件分支点329,其进行测试,以确定差异是否大于第二规定阈值t2v,其是第二大阈值。t2v的范例值为10。

如果步骤329中的测试结果是YES,说明var(i)的值大于t2v,即差异足够大,从而可以使用第二大编码值,表示为m2,例如12,编码附加数据,则控制前进到步骤331,其中变量m设置为等于m2,例如12。

如果步骤329中的测试结果是NO,说明差异不够大,从而附加数据不能使用第二大编码值进行编码,则控制前进到条件分支点333,其进行测试,以确定色度成分的差异var(i)是否大于第三规定V阈值t3v,其是最小的V阈值。t3v的范例值为5。

如果步骤333中的测试结果是YES,说明var(i)的值大于t3v,即差异足够大,从而可以使用第三大编码值,表示为m3,例如8,编码附加数据,则控制前进到步骤335,其中变量m设置为等于m3,例如8。

如果步骤333中的测试结果是NO,说明差异不够大,附加数据不能使用第三大编码值进行编码,则控制前进到步骤337,其中将变量m设置为等于m4,例如4。

如果步骤321中的测试结果为YES,说明变量SUBGROUPMAJORITY等于U,使得所被加水印的是当前色度成分的U色度部分,则控制前进到条件分支点343,其进行测试,以确定与色度成分相关联的差异var(i)是否大于第一规定U阈值t1u,其是最大U阈值。基于var(i)的公式的t1u范例值为20。

如果步骤343中的测试结果是YES,说明var(i)的值大于t1u,即差异足够大,从而可以使用最大编码值,表示为m1,例如16,编码附加数据,则控制前进到步骤345,其中将变量m设置为等于m1,例如16。

如果步骤343中的测试结果是NO,说明差异不够大,附加数据还不能使用最大编码值进行编码,则控制前进到条件分支点349,其进行测试,以确定差异是否大于第二规定阈值t2u,其是第二大U阈值。t2u的范例值为10。

如果步骤349中的测试结果是YES,说明var(i)的值大于t2u,即差异足够大,从而可以使用第二大编码值,表示为m2,例如12,编码附加数据,则控制前进到步骤351,其中变量m设置为等于m2,例如12。

如果步骤349中的测试结果是NO,说明差异不够大,附加数据不能使用第二大编码值进行编码,则控制前进到条件分支点353,其进行测试,以确定色度成分的差异var(i)是否大于第三规定U阈值t3u,其是最小U阈值。t3u的范例值为5。

如果步骤353中的测试结果是YES,说明var(i)的值大于t3u,即差异足够大,从而可以使用第三大编码值,表示为m3,例如8,编码附加数据,则控制前进到步骤355,其中变量m设置为等于m3,例如8。

如果步骤353中的测试结果是NO,说明差异不够大,附加数据不能使用第三大编码值进行编码,则控制前进到步骤357,其中将变量m设置为等于m4,例如4。

本领域的普通技术人员可以容易认识到,虽然为U和V提供单独路径,这样使得能够为U和V使用不同的阈值和/或不同编码值。如这里的范例中,当用于U和V的阈值和编码值相同时,两个路径可以合并为单个路径。

一旦步骤325、331、335、337、345、351、355和357中任何一个结束了,控制前进到条件分支点361,如果当前处理的线是帧的奇线,其将变量oddline的值设置为1。这可以通过设置oddline等于当前线数目除以2的模数来实现。条件分支点363然后进行测试,以确定oddline的值是否等于1。如果步骤323中的测试结果是YES,说明当前线确实是帧的奇线,则控制前进到步骤367。如果步骤323中的测试结果是NO,说明oddline的值为0,因为当前线是帧的偶线,则控制前进到步骤365,其中将oddline的值设置为-1。控制然后前进到步骤367。

条件分支点367进行测试,以确定要添加到当前色度位置的数据是否等于1。如果步骤367中的测试结果是YES,说明为当前色度成分位置添加的数据是1,则控制前进到步骤369,其中将watermarkadd的值设置为m、oddline、和用于被加水印的色度成分位置的对映波形的值的乘积。换言之,watermarkadd=m×oddline×sin(2πi/16),其中i是当前色度成分位置。

如果步骤367中的测试结果是NO,说明为当前色度成分位置添加的数据是0,则控制前进到步骤371,其中将watermarkadd的值设置为m、-1、oddline、和用于被加水印的色度部分位置的对映波形的值的乘积。换言之,watermarkadd=-m×oddline×sin(2πi/16),其中i是当前色度位置。

在结束步骤369或371之后,控制前进到步骤373,其中将watermarkadd的值加到通过SUBGROUP MAJORITY表示的当前色度成分的色度部分的值。控制然后返回到步骤375。

在结束步骤373之后,或者如果步骤317中的测试结果为NO,控制前进到条件分支点375,其进行测试,以确定刚刚处理的色度成分是否是子组的最后一个色度成分。如果步骤375中的测试结果是YES,则控制前进到步骤379,并退出处理。如果步骤375中的测试结果是NO,则控制前进到步骤337,其获取要处理的子组下一个色度成分。控制然后返回到步骤315,并且处理按照如上所述继续。

图4A和4B在结合表示为图4时,所示为根据本发明的原理,用于从数字水印的视频信号中提取附加信息的示范处理,其中组成视频信号内水印信号的附加信息已经被印在色度成分上。这种处理可以通过本发明的范例软件实施例实施。本领域的普通技术人员可以容易理解,这种处理如何与图2中所示本发明的实施例相关。

当已经接收并存储了共同表示附加数据单个比特的色度成分时,例如用于6条线的相同组的色度成分位置,处理进入步骤401(图4)。注意到,为了教学的目的,这里假定通过按照它们所表示的比特进行分组来将色度成分提供,以进行图4过程的处理,使得在处理用于下一比特的任何色度成分之前,处理比特的所有色度成分。然而,在设计实际的系统中,本领域的普通技术人员会容易认识到,色度成分可以以与它们被扫描相同的顺序处理,并且可以使用适当的存储器位置和控制结构,以有效地按照比特单独地处理色度成分。

在进入步骤401之后,在步骤402中将处理中所使用到的几个变量初始化为0,例如k和bit。变量bit是比特位置的最终软比特输出,并且k是线计数,其可以通过取实际帧线数目的模6的余数并且加1而得到,其中线被编号为从1值525。注意到,如此上所述,线上可以有3个比特位置。

接下来,在步骤403中,表示在线k的组上的整体积分的变量,Integ(k)被设置为0。在图2中,通过组积分器231得到Integ(k)。变量j,子组附标也被设置为1。

在步骤405中,将用于第j子组的U相关值CorrU(j)设置为0。而且,将CntU也设置为0,其计数U被选择作为子组内可能被加水印的色度部分的次数。另外,将子组内的色度成分附标i设置为1,色度成分附标i的范围从1至16。类似地,将用于第j子组的V相关值CorrV(i)设置为0。而且将CntV也设置为0,其计数子组内V被选择作为可能被加水印的色度部分的次数。

在步骤407中,对于当前线k,读取当前色度成分,即U(i,j)和V(i,j),并且得到与色度成分相关联的Y(i,j)的值。Y(i,j)例如可以作为与当前色度成分相关联的两个Y值的平均值得到,或者其可以简单地是其中一个Y值,而丢弃另一个值。

在步骤409中,计算每一色度成分的值与对映波形的当前值之间的相关性,并且将所得到的值添加到当前子组的相关性的适当运行总数。也就是说,计算:

CorrU(j)=CorrU(j)+U(i,j)×sin(2πi/16);和

CorrV(j)=CorrV(j)+V(i,j)×sin(2πi/16)。

接下来,条件分支点411进行测试,以确定当前色度成分的哪一色度部分,U或V,可能已经被加水印了。其可以被确定,例如在图2中使用颜色选择207。作为Y、U和V的函数,主要通过重复由颜色选择105(图1)所执行的、确定信号SUBGROUP MAJORITY所需要的计算来确定特定色度部分。在本发明第一个实施例中,颜色选择单元207(图2)是基于查找表的,如下所述。

如果步骤411中的测试结果为V,说明对于当前色度成分,可能选择V来携带附加数据,则控制前进到步骤413,其中CntV增1。如果步骤411中的测试结果是U,说明对于当前色度成分,可能选择U来携带附加数据,则控制前进到步骤415,其中CntU增1。

在步骤413或者415结束之后,控制前进到步骤417,其测试以确定当前正被处理的色度成分是否是当前子组中的最后一个色度成分,即对应于对映波形当前循环的最后一个色度成分。如果步骤417中的测试结果为NO,说明在当前子组中还有其余色度成分,则控制前进到步骤419,其中将色度成分附标i增1。控制然后返回到步骤407,并且处理如上所述继续。

如果步骤417中的测试结果为YES,说明当前色度成分是当前子组的最后一个,则控制前进到条件分支点421,其进行测试,以确定CntU是否大于等于CntV。如果步骤421中的测试结果为YES,说明在刚刚被处理的子组内,U被选择的次数如果不超过V,至少与其一样多,则控制前进到步骤423,其中将Integ(k)设置为等于Integ(k)+CorrU(j),即将子组上U的相关加到组上的整体积分。类似地,如果步骤421中的测试结果为NO,说明在刚刚被处理子组内,V被选择的次数多于U,则控制前进到步骤425,其中将Integ(k)设置为等于Integ(k)+CorrV(j),即将子组上V的相关性加入到组上的整体积分。

在步骤423或者425结束之后,控制前进到条件分支点427,其进行测试,以确定当前正处理的子组是否是当前组的最后一个子组。如果步骤427中的测试结果为NO,则控制前进到步骤428,其中将子组附标j增1,以指向下一个子组。

如果步骤427中的测试结果为YES,说明已经为当前线处理了全部组,则控制前进到条件分支点429,其进行测试,以确定当前线计数k的值是否是偶数。如果步骤429中的测试结果为NO,说明当前线是奇数编号的线,并因此在能够确定当前比特之前有多个线要被处理,则控制前进到步骤431,其中将当前线计数k增1。控制然后返回到步骤403,并且处理按照如上所述继续。

如果步骤429中的测试结果为YES,说明在能够确定当前比特之前没有更多的线要被处理,则控制前进到步骤433,其中通过向其加入加权因子乘以前一线的组上积分值Integ(k-1)与当前线的组上积分值Integ(k)之间的差的乘积,更新bit(k)的值,其是比特位置的最终软比特输出。换言之,步骤433例如计算bit=bit+w(k/2)×(Integ(k-1)-Integ(k))。注意到,当为一个比特使用6个线时,将会有3个加权值。在本发明的一个实施例中,加权为(0,1,0)。于是,有效地,在确定比特的值中只使用中间两个线。然而,在6个线上重复数据有助于中间两个线上的数据通过滤波,NTSC信号以足够高的可能性被正确检测到地经过滤波。

条件分支点435进行测试,以确定是否已经到达比特的最后一个线,即k是否已经到达其最大值,例如6。如果步骤435中的测试结果为NO,说明在能够确定当前比特之前还有其它线需要处理,则控制返回到步骤431,并且处理按照如上所述继续。如果步骤435中的测试结果为YES,说明已经处理了用于当前比特的所有线,则控制前进到步骤437,其中将比特的值作为软数据输出提供。处理然后在步骤439中退出。

注意到,不是视频信号的帧的所有比特位置都需要印有附加信息。

图6所示为用于确定哪一特定色度部分更适合、并应该被选择来包含色度成分的水印信息的示范处理。当需要选择色度部分来包含水印信息时,处理进入步骤601。为了讨论图6的目的,假定以YUV格式表示色度成分。而且,对于每一色度成分,只需要一个Y值。因此,可以对与4-2-2分辨率的线上每一色度部分相关联的两个Y值平均,或者可以选择它们其中的一个,并丢弃另一个,例如可以将YUV解复用器和抽取器103作为输出而提供的Y值用作下面附图描述中的Y。

概念性地,假定可以取Y、U和V值的整个范围,例如根据试验观察,将对应于可能的Y、U和V组合的三维YUV色彩空间中的每一位置分配一个色度部分,其更适合进行水印,由于如果其被加水印则不太可能引入可见的非自然信号。如果要使用Y、U和V值的每一可能组的整个表的版本,其中每一Y、U和V具有完整范围8比特,则需要存储至少16M比特的信息,假定为每一位置存储一个比特,以表示所选择的色度部分。

图7中示出了要为三维YUV色彩空间中每一可能的Y、U和V组合选择的色度部分的示范分配的部分的剖面图。注意到,提供图7只是用于说明目的,作为概念性的视觉辅助,并且不表示实际数据。

为了减少存储要求,YUV色彩空间可以被考虑为是一组区域,定义每一区域以包括对应于至少一组,并且典型地为多组,Y、U和V值的位置,即色彩空间中的位置对应于每一区域,并且因此映射到该区域的每一Y、U和V组合被分配一个色度部分,例如根据试验观察,其是为落入范围内的任何组Y、U和V值所要选择的。考虑分组到区域的一种方式是量化,其可以是线性或非线性的。

表1为示范色彩空间选择表的列表,其中每一区域对应于4个Y值、4个U值和4个V值,并且因此对应于任何像素的8比特值的64个可能组合。使用这种表就将需要存储的信息减少到256K比特,假定为每一位置只存储一个比特。表1可以存储在任何计算机可读介质中,例如ROM、RAM、磁性存储器,诸如硬盘或磁带驱动器,光学存储器,诸如CD-ROM或DVD-ROM等。

本领域的普通技术人员会很容易认识到,通过除以4,例如将每一10比特值向右移位两次,用于具有8比特全部范围的每一Y、U和V的、表1中所使用的值是可以被比例变化,以用于10比特的Y、U和V值,诸如在图1的其余元件中使用。同样地,可以类似地采用用于Y、U和V的其它数目的比特。

为了有效地设置和访问表1的数据,这样设置,使得用于具有相同U和V量化值但是具有不同顺序量化Y值的8个相邻区域的指定U或V选择被分组在一起形成字节,其中1表示选择U,而0表示选择V。于是,对于每一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最低有效位的值,U7、U6和U5是Y值的第8至第6最低有效位的值。然后,通过使用Y值的第5至第2最低有效位,例如Y4、Y3和Y2,来指定字节内的特定比特。

诸如表1的表格反映了这样的事实:人类的视觉系统a)对蓝色不敏感,以及b)对更低的亮度值更敏感。可以通过反复试验来开发这种表格,通常如下。

在部分(section)中检查颜色空间,每一部分通过亮度值定义,并且一维中的范围对应于第一色度部分从其最小值变化到其最大值,并且二维中的范围对应于第二色度部分从其最小值变化到其最大值。例如可以使用8比特值的6个最高有效位来量化任何或全部的亮度和色度部分。这样做就产生一组具有在显示为不同颜色的盒时出现的色度部分值的检测板的平面,一个平面用于每一亮度值。例如,进行量化,以使用亮度和色度部分的8比特值中6个最高有效位,就产生对应于每一可能的量化亮度值的64个平面,并且每一平面具有彩色盒的检测板图案,对于每个平面总共4096个盒,其中64个盒垂直,64个盒水平。

单独地检查每一平面。为多个帧开发随机数据,足以确信随机数据在帧随着时间推移的相似位置盒中具有不同的值,并且对于检查闪烁的观察者,其应该出现。已经证明30秒或更长的是有用的。随机数据被印到包含平面的帧上,但是只在第一色度部分上。显示并观察所得到版本的帧。

观察不到闪烁的任何盒在表格中表示,其亮度和色度部分的组合应该使用当前携带水印数据的色度部分作为所选择的用于该组合的色度部分。观察到闪烁的任何盒在表格中表示,其亮度和色度部分的组合应该使用当前没有携带水印数据的色度部分作为所选择的用于该组合的色度部分。对于平面,重复该处理,但是改变已经将数据加入到其中的色度部分。

对于两个色度部分都出现闪烁的平面的任何盒,如可能发生的那样,实施者可以选择应该选择的哪个色度部分。例如,可以选择U,因为人类视觉系统通常对蓝色不敏感。可替换地,可以使用能够提供所得到的表格的更好数据压缩的色度部分。类似地,在盒上都没有闪烁出现的地方,对所要使用的色度部分的选择就由实施者随意选择。

对于每一平面,重复该处理,直至整个表格被填充。

表格1

  Addrss     1                                              Contont  1    to    16  17   to    32  33   to    48  49   to    64  65   to    80  81   to    96  97   to    112  113  to    128  129  to    144  145  to    160  161  to    176  177  to    192  193  to    208  209  to    224  225  to    240  241  to    256  257  to    272  273  to    288  289  to    304  305  to    320  321  to    336  337  to    352  353  to    368  369  to    384  385  to    400  401  to    416  417  to    432  433  to    448  449  to    464  465  to    480  481  to    496  497  to    512  513  to    528  529  to    544  545  to    560  561  to    576  577  to    592  593  to    608  609  to    624  625  to    640  641  to    656  657  to    672  673  to    698  689  to    704  705  to    720  721  to    736  737  to    752  753  to    768  769  to    784  785  to    800  801  to    816  817  to    832  833  to    848  849  to    864  865  to    880  881  to    896  897  to    912  913  to    928  929  to    944  945  to    960  961  to    976  977  to    992  993  to    1008  1O09 to    1024  1025 to    1040  1041 to    1056  1057 to    1072  1073 to    1088  1089 to    1104  1105 to    1120  1121 to    1136  1137 to    1152  1153 to    1168  1169 to    1184  1185 to    1200  1201 to    1216  1217 to    1232  1233 to    1248  1249 to    1264  1265 to    1280  1281 to    1296  1297 to    1312  1313 to    1328  1329 to    1344  1345 to    1360  1361 to    1376  1377 to    1392  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  255  255  127  0    0    0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  254  255  127  0    0    0    0    0    255  255  255  0    0    0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  248  255  255  0    0    0    0    0    255  255  255  0    0    0    0    0  255  255  255  1    0    0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255
  1393  to    1408  1409  to    1424  1425  to    1440  1441  to    1456  1457  to    1472  1473  to    1488  1489  to    1504  1505  to    1520  1521  to    1536  1537  to    1552  1553  to    1568  1569  to    1584  1585  to    1600  1601  to    1616  1617  to    1632  1633  to    1648  1649  to    1664  1665  to    1680  1681  to    1696  1697  to    1712  1713  to    1728  1729  to    1744  1745  to    1760  1761  to    1776  1777  to    1792  1793  to    1808  1809  to    1824  1825  to    1840  1841  to    1856  1857  to    1872  1873  to    1888  1889  to    1904  1905  to    1924  1921  to    1936  1937  to    1952  1953  to    1968  1969  to    1984  1985  to    2000  2001  to    2016  2017  to    2032  2033  to    2048  2049  to    2064  2065  to    2080  2081  to    2096  2097  to    2112  2113  to    2128  2129  to    2144  2145  to    2160  2161  to    2176  2177  to    2192  2193  to    2208  2209  to    2224  2225  to    2240  2241  to    2256  2257  to    2272  2273  to    2288  2289  to    2304  2305  to    2320  2321  to    2336  2337  to    2352  2353  to    2368  2369  to    2384  2395  to    2400  2401  to    2416  2417  to    2432  2433  to    2448  2449  to    2464  2465  to    2480  2481  to    2496  2497  to    2512  2513  to    2528  2529  to    2544  2545  to    2560  2561  to    2576  2577  to    2592  2593  to    2608  2609  to    2624  2625  to    2640  2641  to    2656  2657  to    2672  2673  to    2688  2689  to    2704  2705  to    2720  2721  to    2736  2737  to    2752  2753  to    2768  2769  to    2784  2785  to    2800  2801  to    2816  2817  to    2832  2833  to    2848  2849  to    2864  2865  to    2880  2881  to    2896  2897  to    2912  2913  to    2928  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    64   0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    255  127  0    0    0    0    0  224  255  255  0    0    0    0    0    252  255  255  1    0    0    0    0  255  255  255  3    0    0    0    0    255  255  255  3    0    0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    254  255  0    0    0    0    0  128  255  255  0    0    0    0    0    240  255  255  1    0    0    0    0  254  255  255  3    0    0    0    0    255  255  255  7    0    0    0    0  255  255  255  7    0    0    0    0    255  255  255  15   0    0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    4    0    0    0    0    0    0    0    2    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    248  255  0    0    0    0    0  0    255  255  1    0    0    0    0    192  255  255  1    0    0    0    0  248  255  255  3    0    0    0    0    255  255  255  7    0    0    0    0  255  255  255  15   0    0    0    0    255  255  255  15   0    0    0    0  255  255  255  31   0    0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255
  2929  to    2944  2945  to    2960  2961  to    2976  2977  to    2992  2993  to    3008  3009  to    3024  3025  to    3040  3041  to    3056  3057  to    3072  3073  to    3088  3089  to    3104  3105  to    3120  3121  to    3136  3137  to    3152  3153  to    3168  3169  to    3184  3185  to    3200  3201  to    3216  3217  to    3232  3233  to    3248  3249  to    3264  3265  to    3280  3281  to    3296  3297  to    3312  3313  to    3328  3329  to    3344  3345  to    3360  3361  to    3376  3377  to    3392  3393  to    3408  3409  to    3424  3425  to    3440  3441  to    3456  3457  to    3472  3473  to    3489  3489  to    3504  3505  to    3520  3521  to    3536  3537  to    3552  3553  to    3568  3569  to    3584  3585  to    3600  3601  to    3616  3617  to    3632  3633  to    3648  3649  to    3664  3665  to    3680  3681  to    3696  3697  to    3712  3713  to    3728  3729  to    3744  3745  to    3760  3761  to    3776  3777  to    3792  3793  to    3808  3809  to    3824  3825  to    3840  3841  to    3856  3857  to    3872  3873  to    3888  3889  to    3904  3905  to    3920  3921  to    3936  3937  to    3952  3953  to    3968  3969  to    3984  3985  to    4000  4001  to    4016  4017  to    4032  4033  to    4048  4049  to    4064  4065  to    4080  4081  to    4096  4097  to    4112  4113  to    4128  4129  to    4144  4145  to    4160  4161  to    4176  4177  to    4192  4193  to    4208  4209  to    4224  4225  to    4240  4241  to    4256  4257  to    4272  4273  to    4288  4289  to    4304  4305  to    4320  4321  to    4336  4337  to    4352  4353  to    4368  4369  to    4384  4385  to    4400  4401  to    4416  4417  to    4432  4433  to    4448  4449  to    4464  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    8    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    224  255  0    0    0    0    0  128  252  255  1    0    0    0    0    128  255  255  3    0    0    0    0  224  255  255  7    0    0    0    0    252  255  255  7    0    0    0    0  255  255  255  15   0    0    0    0    255  255  255  31   0    0    0    0  255  255  255  31   0    0    0    0    255  255  255  63   0    0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  235  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    96   0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    8    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    15   225  51   0    0    0    0  0    241  255  1    0    0    0    0    0    254  255  3    0    0    0    0  192  255  255  7    0    0    0    0    248  255  255  15   0    0    0    0  254  255  255  15   0    0    0    0    255  255  255  31   0    0    0    0  255  255  255  63   0    0    0    0    255  255  255  63   0    0    0    0  255  255  255  12   7    0    0    00   255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    4    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    96   255  1    0    0    0    0  0    192  255  3    0    0    0    0    0    248  255  7    0    0    0    0  0    255  255  7    0    0    0    0    224  255  255  15   0    0    0    0  252  255  255  31   0    0    0    0    255  255  255  31   0    0    0    0  255  255  255  63   0    0    0    0    255  255  255  127  0    0    0    0  255  255  255  255  0    0    0    0    255  255  255  255  0    0    0    0  255  255  255  255  1    0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255
  4465  to    4480  4481  to    4496  4497  to    4512  4513  to    4528  4529  to    4544  4545  to    4550  4561  to    4576  4577  to    4592  4593  to    4608  4609  to    4624  4625  to    4640  4641  to    4656  4657  to    4672  4673  to    4688  4689  to    4704  4705  to    4720  4721  to    4736  4737  to    4752  4753  to    4768  4769  to    4784  4785  to    4800  4801  to    4816  4817  to    4832  4833  to    4848  4849  to    4864  4865  to    4880  4881  to    4896  4897  to    4912  4913  to    4928  4929  to    4944  4945  to    4960  4961  to    4976  4977  to    4992  4993  to    5008  5009  to    5024  5025  to    5040  5041  to    5056  5057  to    5072  5073  to    5088  5089  to    5104  5105  to    5120  5121  to    5136  5137  to    5152  5153  to    5168  5169  to    5184  5185  to    5200  5201  to    5216  5217  to    5232  5233  to    5248  5249  to    5264  5265  to    5280  5281  to    5296  5297  to    5312  5313  to    5328  5329  to    5344  5345  to    5360  5361  to    5376  5377  to    5392  5393  to    5408  5409  to    5424  5425  to    5440  5441  to    5456  5457  to    5472  5473  to    5488  5489  to    5504  5505  to    5520  5521  to    5536  5537  to    5552  5553  to    5568  5569  to    5584  5585  to    5600  5601  to    5616  5617  to    5632  5633  to    5648  5649  to    5664  5665  to    5680  5681  to    5696  5697  to    5712  5713  to    5728  5729  to    5744  5745  to    5760  5761  to    5776  5777  to    5792  5793  to    5808  5809  to    5824  5825  to    5840  5841  to    5856  5857  to    5872  5873  to    5888  5889  to    5904  5905  to    5920  5921  to    5936  5937  to    5952  5953  to    5968  5969  to    5984  5985  to    6000  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    12   0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    224  1    0    0    0    0    0    194  253  1    0    0    0    0  0    130  255  3    0    0    0    0    0    224  255  7    0    0    0    0  0    252  255  15   0    0    0    0    128  255  255  15   0    0    0    0  240  255  255  31   0    0    0    0    254  255  255  63   0    0    0    0  255  255  255  53   0    0    0    0    255  255  255  127  0    0    0    0  255  255  255  255  0    0    0    0    255  255  255  255  1    0    0    0  255  255  255  255  1    0    0    0    255  255  255  255  3    0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    128  1    0    0    0    0    0    0    227  3    0    0    0    0  0    0    254  3    0    0    0    0    0    192  255  7    0    0    0    0  0    240  255  15   0    0    0    0    0    254  255  31   0    0    0    0  192  255  255  31   0    0    0    0    248  255  255  63   0    0    0    0  255  255  255  127  0    0    0    0    255  255  255  255  0    0    0    0  255  255  255  255  0    0    0    0    255  255  255  255  1    0    0    0  255  255  255  255  3    0    0    0    255  255  255  255  3    0    0    0  255  255  255  255  7    0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    16   295  3    0    0    0    0  0    56   248  7    0    0    0    0    0    0    255  15   0    0    0    0  0    224  255  15   0    0    0    0    0    248  255  31   0    0    0    0  0    255  255  63   0    0    0    0    224  255  255  63   0    0    0    0  252  255  255  127  0    0    0    0    255  255  255  255  0    0    0    0  255  255  255  255  1    0    0    0    255  255  255  255  1    0    0    0  255  255  255  255  3    0    0    0    255  255  255  255  7    0    0    0  255  255  255  255  7    0    0    0    255  255  255  255  15   0    0    0
  6001  to   6016  6017  to   6032  6033  to   6048  6049  to   6064  6065  to   6080  6081  to   6096  6097  to   6112  6113  to   6128  6129  to   6144  6145  to   6160  6161  to   6176  6177  to   6192  6193  to   6208  6209  to   6224  6225  to   6240  6241  to   6256  6257  to   6272  6273  to   6288  6289  to   6304  6305  to   6320  6321  to   6336  6337  to   6352  6353  to   6368  6369  to   6384  6385  to   6400  6401  to   6416  6417  to   6432  6433  to   6448  6449  to   6464  6465  to   6480  6481  to   6496  6497  to   6512  6513  to   6528  6529  to   6544  6545  to   6560  6561  to   6576  6577  to   6592  6593  to   6608  6609  to   6624  6625  to   6640  6641  to   6656  6657  to   6672  6673  to   6688  6689  to   6704  6705  to   6720  6721  to   6736  6737  to   6752  6753  to   6768  6769  to   6784  6785  to   6800  6801  to   6816  6817  to   6832  6833  to   6848  6849  to   6864  6865  to   6880  6881  to   6896  6897  to   6912  6913  to   6928  6929  to   6944  6945  to   6960  6961  to   6976  6977  to   6992  6993  to   7008  7009  to   7024  7025  to   7040  7041  to   7056  7057  to   7072  7073  to   7088  7089  to   7104  7105  to   7120  7121  to   7136  7137  to   7152  7153  to   7168  7169  to   7184  7185  to   7200  7201  to   7216  7217  to   7232  7233  to   7248  7249  to   7264  7265  to   7280  7281  to   7296  7297  to   7312  7313  to   7328  7329  to   7344  7345  to   7360  7361  to   7376  7377  to   7392  7393  to   7408  7409  to   7424  7425  to   7440  7441  to   7456  7457  to   7472  7473  to   7488  7489  to   7504  7505  to   7520  7521  to   7536  255  255  255  255  31   0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  256  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    8    3    0    0    0    0  0    48   224  7    0    0    0    0    0    0    252  15   0    0    0    0  0    128  255  31   0    0    0    0    0    240  255  31   0    0    0    0  0    252  255  63   0    0    0    0    128  255  255  127  0    0    0    0  240  255  255  127  0    0    0    0    254  255  255  255  0    0    0    0  255  255  255  255  1    0    0    0    255  255  255  255  3    0    0    0  255  255  255  255  3    0    0    0    255  255  255  255  7    0    0    0  255  255  255  255  15   0    0    0    255  255  255  255  15   0    0    0  255  255  255  255  31   0    0    0    255  255  255  255  63   0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    128  0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    8    0    6    0    0    0    0  0    96   128  15   0    0    0    0    0    0    240  15   0    0    0    0  0    0    254  31   0    0    0    0    128  192  255  63   0    0    0    0  0    248  255  63   0    0    0    0    0    254  255  127  0    0    0    0  192  255  255  255  0    0    0    0    248  255  255  255  1    0    0    0  255  255  255  255  1    0    0    0    255  255  255  255  3    0    0    0  255  255  255  255  7    0    0    0    255  255  255  255  7    0    0    0  255  255  255  255  15   0    0    0    255  255  255  255  32   0    0    0  255  255  255  255  63   0    0    0    255  255  255  255  63   0    0    0  255  255  255  255  127  0    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    192  0    15   0    0    0    0    64   0    192  31   0    0    0    0  0    0    248  31   0    0    0    0    0    0    255  63   0    0    0    0  0    224  255  127  0    0    0    0    0    252  255  127  0    0    0    0  128  255  255  255  0    0    0    0    224  255  255  255  1    0    0    0  252  255  255  255  3    0    0    0    255  255  255  255  3    0    0    0  255  255  255  255  7    0    0    0    255  255  255  255  15   0    0    0  255  255  255  255  15   0    0    0    255  255  255  255  31   0    0    0
  7537  to  7552  7553  to  7568  7569  to  7584  7585  to  7600  7601  to  7616  7617  to  7632  7633  to  7648  7649  to  7664  7665  to  7680  7682  to  7696  7697  to  7712  7713  to  7728  7729  to  7744  7745  to  7760  7761  to  7776  7777  to  7792  7793  to  7808  7809  to  7824  7825  to  7840  7841  to  7856  7857  to  7872  7873  to  7888  7889  to  7904  7905  to  7920  7921  to  7936  7937  to  7952  7953  to  7968  7969  to  7984  7965  to  8000  8001  to  8016  8017  to  8032  8033  to  8048  8049  to  8064  8065  to  8080  8081  to  8096  8097  to  8112  8113  to  8128  8129  to  8144  8145  to  8160  8161  to  8176  8177  to  8192  8193  to  8208  8209  to  8224  8225  to  8240  8241  to  8256  8257  to  8272  8273  to  8288  8289  to  8304  8305  to  8320  8321  to  8336  6337  to  8352  8353  to  8368  8369  to  8384  8385  to  8400  8401  to  8416  8417  to  8432  8433  to  8448  8449  to  8464  8465  to  8480  8481  to  8496  8497  to  8512  8513  to  8528  8529  to  8544  8545  to  8560  8561  to  8576  8577  to  8592  8593  to  8608  8609  to  8624  8625  to  8640  8641  to  8656  8657  to  8672  8673  to  8688  8689  to  8704  8705  to  8720  8721  to  8736  8737  to  8752  8753  to  8768  8769  to  8784  8785  to  8800  8801  to  8816  8817  to  8832  8833  to  8848  8849  to  8864  8865  to  8880  8881  to  8896  8897  to  8912  8913  to  8928  8929  to  8944  8945  to  8960  8961  to  8976  8977  to  8992  8993  to  9008  9009  to  9024  9025  to  9040  9041  to  9056  9057  to  9072  255  255  255  255  63   0    0    0    255  255  255  255  127  0    0    0  255  255  255  255  127  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    4    0    0    0    0    0    0  0    192  0    12   0    0    0    0    0    0    129  31   0    0    0    0  0    422  4    63   0    0    0    0    0    0    252  63   0    0    0    0  0    128  255  127  0    0    0    0    0    240  255  255  0    0    0    0  0    254  255  255  1    0    0    0    192  255  255  255  1    0    0    0  240  255  255  255  3    0    0    0    254  255  255  255  7    0    0    0  255  255  255  255  7    0    0    0    255  255  255  255  15   0    0    0  255  255  255  255  31   0    0    0    255  255  255  255  63   0    0    0  255  255  255  255  63   0    0    0    255  255  255  255  127  0    0    0  255  255  255  255  255  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    128  1    16   0    0    0    0    0    0    0    30   0    0    0    0  0    0    192  63   0    0    0    0    0    0    240  127  0    0    0    0  0    0    254  127  0    0    0    0    0    192  255  255  0    0    0    0  0    248  255  255  1    0    0    0    0    255  255  255  3    0    0    0  224  255  255  255  3    0    0    0    248  255  255  255  7    0    0    0  255  255  255  255  15   0    0    0    255  255  255  255  15   0    0    0  255  255  255  255  31   0    0    0    255  255  255  255  63   0    0    0  255  255  255  255  127  0    0    0    255  255  255  255  127  0    0    0  255  255  255  255  255  0    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    1    0    0    0    0    0    0    0    0    56   0    0    0    0  0    0    0    63   0    0    0    0    0    0    224  127  0    0    0    0  0    0    252  255  0    0    0    0    0    0    255  255  0    0    0    0  0    224  255  255  1    0    0    0    0    252  255  255  3    0    0    0  128  255  255  255  7    0    0    0    240  255  255  255  7    0    0    0  252  255  255  255  15   0    0    0    255  255  255  255  31   0    0    0  255  255  255  255  63   0    0    0    255  255  255  255  63   0    0    0
  9073  to  9088  9089  to  9104  9105  to  9120  9121  to  9136  9137  to  9152  9153  to  9168  9169  to  9184  9185  to  9200  9203  to  9216  9217  to  9232  9233  to  9248  9249  to  9264  9265  to  9280  9281  to  9296  9257  to  9312  9313  to  9328  9329  to  9344  9345  to  9360  9361  to  9376  9377  to  9392  9393  to  9408  9409  to  9424  9425  to  9440  9441  to  9456  9457  to  9472  9473  to  9488  9489  to  9504  9505  to  9520  9521  to  9536  9537  to  9552  9553  to  9568  9569  to  9584  9585  to  9600  9601  to  9616  9617  to  9632  9633  to  9648  9649  to  9664  9665  to  9680  9681  to  9696  9697  to  9712  9713  to  9728  9729  to  9744  9745  to  9760  9761  to  9776  9777  to  9792  9793  to  9808  9809  to  9824  9825  to  9840  9841  to  9856  9857  to  9872  9873  to  9888  9889  to  9904  9905  to  9920  9921  to  9936  9937  to  9952  9953  to  9968  9969  to  9984  9985  to  10000  10001 to  10016  10017 to  10032  10033 to  10048  10049 to  10064  10065 to  10080  10081 to  10096  10097 to  10112  10113 to  10128  10129 to  10144  10145 to  10160  10161 to  10176  10177 to  10192  10193 to  10208  10209 to  10224  10225 to  10240  10241 t0  10256  10257 to  10272  10273 to  10288  10289 to  10304  10305 to  1032O  10321 to  10338  10337 to  10352  10353 to  10368  10369 to  10384  10385 to  10400  10401 to  10426  10417 to  10432  10433 to  10448  10449 to  10464  10465 to  10480  10481 to  10496  10497 to  10512  10513 to  10528  10529 to  10544  10545 to  10560  10561 to  10576  10577 to  10592  10593 to  10608  255  255  255  255  127  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  0    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  7    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    6    0    0    0    0    0    0    0    0    32   0    0    0    0  0    0    0    124  0    0    0    0    0    0    128  127  0    0    0    0  0    0    240  255  0    0    0    0    0    0    254  255  1    0    0    0  0    128  255  255  3    0    0    0    0    240  255  255  3    0    0    0  0    254  255  255  7    0    0    0    192  255  255  255  15   0    0    0  248  255  255  255  15   0    0    0    254  255  255  255  31   0    0    0  255  255  255  255  63   0    0    0    255  255  255  255  127  0    0    0  255  255  255  255  127  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  7    0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    4    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    112  0    0    0    0    0    2    0    254  0    0    0    0  0    0    192  255  0    0    0    0    0    0    248  255  1    0    0    0  0    0    255  255  3    0    0    0    0    192  255  255  7    0    0    0  0    248  255  255  7    0    0    0    0    255  255  255  15   0    0    0  224  255  255  255  31   0    0    0    252  255  255  255  31   0    0    0  255  255  255  255  63   0    0    0    255  255  255  255  127  0    0    0  255  255  255  255  255  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  7    0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  63   0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    96   0    0    0    0    0    0    0    248  0    0    0    0  0    0    0    255  1    0    0    0    0    0    224  255  3    0    0    0  0    0    252  255  3    0    0    0    0    128  255  255  7    0    0    0  0    224  255  255  15   0    0    0    0    252  255  255  15   0    0    0  128  255  255  255  31   0    0    0    240  255  255  255  63   0    0    0  254  255  255  255  127  0    0    0    255  255  255  255  127  0    0    0
  10609 to  10624  10625 to  10640  10641 to  10656  10657 to  10672  10673 to  10688  10689 to  10704  10705 to  10720  10721 to  10736  10737 to  10752  10753 to  10768  10769 to  10784  10785 to  10800  10801 to  10816  10817 to  10832  10833 to  10848  10849 to  10864  10865 to  10860  10881 to  10896  10897 to  10912  10913 to  10928  10929 to  10944  10945 to  10560  10961 to  10976  10977 to  10992  10993 to  11008  11009 to  11024  11025 to  11040  11041 to  11056  11057 to  11072  11073 to  11088  11089 to  11104  11105 to  11120  11121 to  11136  11137 to  11152  11153 to  11168  11169 to  11184  11185 to  11200  11201 to  11216  11217 to  11232  11233 to  11248  11249 to  11264  11265 to  11280  11281 to  11296  11297 to  11312  11313 to  11328  11329 to  11344  11345 to  11360  11361 to  11376  11377 to  11392  11393 to  11408  11409 to  11424  11425 to  11440  11441 to  11456  11457 to  11472  11473 to  11488  11489 to  11504  11505 to  11520  11521 to  11536  11537 to  11552  11553 to  11568  11569 to  11584  11585 to  11600  11601 to  11616  11617 to  11632  11633 to  11648  11649 to  11664  11665 to  11680  11681 to  11696  11697 to  11712  11713 to  11728  11729 to  11744  11745 to  11760  11761 to  11776  11777 to  11792  11793 to  11808  11809 to  11824  11825 to  11840  11841 to  11856  11857 to  11872  11973 to  11888  11889 to  11904  11905 to  11920  11921 to  11936  11937 to  11952  11953 to  11968  11969 to  11984  11985 to  12000  12001 to  12016  12017 to  12032  12033 to  12048  12049 to  12064  12065 to  12080  12081 to  12096  12097 to  12112  12113 to  12128  12129 to  12144  255  255  255  255  255  0    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  63   0    0    255  255  255  255  255  63   0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  255  0    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    128  0    0    0    0    0    0    0    240  0    0    0    0  0    0    0    252  1    0    0    0    0    0    128  255  3    0    0    0  0    0    240  255  7    0    0    0    0    0    254  255  7    0    0    0  0    192  255  255  15   0    0    0    0    240  255  255  31   0    0    0  0    254  255  255  31   0    0    0    192  255  255  255  63   0    0    0  248  255  255  255  127  0    0    0    255  255  255  255  255  0    0    0  255  255  255  255  255  0    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  63   0    0    255  255  255  255  255  127  0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  255  0    0  255  255  255  255  255  255  1    0    255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    192  1    0    0    0  0    0    0    248  1    0    0    0    0    0    0    254  3    0    0    0  0    0    192  255  7    0    0    0    0    0    248  255  l5   0    0    0  0    0    255  255  15   0    0    0    0    224  255  255  31   0    0    0  0    252  255  255  63   0    0    0    0    255  255  255  127  0    0    0  224  255  255  255  127  0    0    0    252  255  255  255  255  0    0    0  255  255  255  255  255  1    0    0    255  255  255  255  255  1    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  7    0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  63   0    0  255  255  255  255  255  63   0    0    255  255  255  255  255  127  0    0  255  255  255  255  255  255  0    0    255  255  255  255  255  255  1    0  255  255  255  255  255  255  1    0    255  255  255  255  255  255  3    0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    1    0    0    0  0    0    0    224  3    0    0    0    0    0    0    252  7    0    0    0  0    0    0    255  7    0    0    0    0    0    224  255  15   0    0    0  0    0    252  255  31   0    0    0    0    128  255  255  31   0    0    0  0    240  255  255  63   0    0    0    0    254  255  255  127  0    0    0  128  255  255  255  255  0    0    0    240  255  255  255  255  0    0    0
  12145 to  12160  12161 to  12176  12177 to  12192  12193 to  12208  12209 to  12224  12225 to  12240  12241 to  12256  12257 to  12272  12273 to  12288  12289 to  12304  12305 to  12320  12321 to  12336  12337 to  12352  12353 to  12368  12369 to  12384  12385 to  12400  12401 to  12416  12417 to  12432  12433 to  12448  12449 to  12464  12465 to  12480  12481 to  12496  12497 to  12512  12513 to  12528  12529 to  12544  12545 to  12560  12561 to  12576  12577 to  12592  12593 to  12608  12609 to  12624  12625 to  12640  12641 to  12656  12657 to  12672  12673 to  12688  12689 to  12704  12705 to  12720  12721 to  12736  12737 to  12752  12753 to  12768  12769 to  12784  12785 to  12800  12801 to  12816  12817 to  12832  12833 to  12848  12849 to  12864  12865 to  12880  12881 to  12896  12897 to  12912  12913 to  12928  12929 to  12944  12945 to  12960  12961 to  12976  12977 to  12992  12993 to  13008  13009 to  13024  13025 to  13040  13041 to  13056  13057 to  13072  13073 to  13088  13089 to  13104  13105 to  13120  13121 to  13136  13137 to  13152  13153 to  13168  13169 to  13184  13185 to  13200  13201 to  13216  13217 to  13232  13233 to  13248  13249 to  13264  13265 to  13280  13281 to  13296  13297 to  13312  13313 to  13328  13329 to  13344  13345 to  13360  13361 to  13376  13377 to  13392  13393 to  13408  13409 to  13424  13425 to  13440  13441 to  13456  13457 to  13472  13473 to  13488  13489 to  13504  13505 to  13520  13521 to  13536  13537 to  13552  13553 to  13568  13569 to  13584  13585 to  13600  13601 to  13616  13617 to  13632  13633 to  13648  13649 to  13664  13665 to  13680  254  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  3    0    0    255  255  255  255  255  7    0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  63   0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  127  0    0  255  255  255  255  255  255  0    0    255  255  255  255  255  255  1    0  255  255  255  255  255  255  3    0    255  255  255  255  255  255  3    0  255  255  255  255  255  255  7    0    255  255  255  255  255  255  15   0  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    128  3    0    0    0    0    0    0    240  7    0    0    0  0    0    0    254  15   0    0    0    0    0    192  255  15   0    0    0  0    0    240  255  31   0    0    0    0    0    254  255  63   0    0    0  0    192  255  255  63   0    0    0    0    248  255  255  127  0    0    0  0    255  255  255  255  0    0    0    192  255  255  255  255  1    0    0  248  255  255  255  255  1    0    0    255  255  255  255  255  3    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  15   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  63   0    0    255  255  255  255  255  63   0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  255  0    0  255  255  255  255  255  255  1    0    255  255  255  255  255  255  1    0  255  255  255  255  255  255  3    0    255  255  255  255  255  255  7    0  255  255  255  255  255  255  7    0    255  255  255  255  255  255  15   0  255  255  255  255  255  255  31   0    255  255  255  255  255  255  255  255  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    6    0    0    0    0    0    0    192  7    0    0    0  0    0    0    248  15   0    0    0    0    0    0    255  31   0    0    0  0    0    224  255  31   0    0    0    0    0    248  255  63   0    0    0  0    0    255  255  127  0    0    0    0    224  255  255  255  0    0    0  0    252  255  255  255  0    0    0    128  255  255  255  255  1    0    0  224  255  255  255  255  3    0    0    252  255  255  255  255  3    0    0  255  255  255  255  255  7    0    0    255  255  255  255  255  15   0    0  255  255  255  255  255  31   0    0    255  255  255  255  255  31   0    0  255  255  255  255  255  63   0    0    255  255  255  255  255  127  0    0  255  255  255  255  255  127  0    0    255  255  255  255  255  255  0    0  255  255  255  255  255  255  1    0    255  255  255  255  255  255  3    0  255  255  255  255  255  255  3    0    255  255  255  255  255  255  7    0  255  255  255  255  255  255  15   0    255  255  255  255  255  255  15   0  255  255  255  255  255  255  31   0    255  255  255  255  255  255  63   0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  0    0    0    0    4    0    0    0    0    0    0    0    15   0    0    0  0    0    0    224  15   0    0    0    0    0    0    252  31   0    0    0  0    0    128  255  63   0    0    0    0    0    240  255  63   0    0    0  0    0    252  255  127  0    0    0    0    128  255  255  255  0    0    0  0    240  255  255  255  1    0    0    0    254  255  255  255  1    0    0
  13681 to  13696  13697 to  13712  13713 to  13728  13729 to  13744  13745 to  13760  13761 to  13776  13777 to  13792  13793 to  13808  13809 to  13824  13825 to  13840  13841 to  13856  13857 to  13872  13873 to  13888  13889 to  13904  13905 to  13920  13921 to  13936  13937 to  13952  13953 to  13968  13969 to  13984  13985 to  14000  14001 to  14016  14017 to  14032  14033 to  14048  14049 to  14064  14065 to  14080  14081 to  14096  14097 to  14112  14113 to  14128  14129 to  14144  14145 to  14160  14161 to  14176  14177 to  14192  14193 to  14208  14209 to  14224  14225 to  14240  14241 to  14256  14257 to  14272  14273 to  14288  14289 to  14304  14305 to  14320  14321 to  14336  14337 to  14352  14353 to  14368  14369 to  14384  14385 to  14400  14401 to  14416  14417 to  14432  14433 to  14448  14449 to  14464  14465 to  14480  14581 to  14496  14497 to  14512  14513 to  14528  14529 to  14544  14545 to  14560  14561 to  14576  14577 to  14592  14593 to  14608  14609 to  14624  14625 to  14640  14641 to  14656  14657 to  14672  14673 to  14688  14689 to  14704  14705 to  14720  14721 to  14736  14737 to  14752  14753 to  14768  14769 to  14784  14785 to  14800  14801 to  14816  14817 to  14832  14833 to  14848  15849 to  14864  14865 to  14880  14881 to  14896  14897 to  14912  14913 to  14928  14929 to  14944  14945 to  14960  14961 to  14976  14977 to  14992  14993 to  15008  15009 to  15024  15025 to  15040  15041 to  15056  15057 to  15072  15073 to  15088  15089 to  15104  15105 to  15120  15121 to  15136  15137 to  15152  15153 to  15168  15169 to  15184  15185 to  15200  15201 to  15216  192  255  255  255  255    3    0    0    240 255  255  255  255    7    0    0  254  255  255  255  255    7    0    0    255 255  255  255  255    15   0    0  255  255  255  255  255    31   0    0    255 255  255  255  255    63   0    0  255  255  255  255  255    63   0    0    255 255  255  255  255    127  0    0  255  255  255  255  255    255  0    0    255 255  255  255  255    255  1    0  255  255  255  255  255    255  1    0    255 255  255  255  255    255  3    0  255  255  255  255  255    255  7    0    255 255  255  255  255    255  7    0  255  255  255  255  255    255  15   0    255 255  255  255  255    255  31   0  255  255  255  255  255    255  63   0    255 255  255  255  255    255  63   0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    14     0    0    0  0    0    0    128  31     0    0    0    0   0    0    240  31     0    0    0  0    0    0    254  63     0    0    0    0   0    192  255  127    0    0    0  0    0    248  255  255    0    0    0    0   0    254  255  255    0    0    0  0    192  255  255  255    1    0    0    0   248  255  255  255    3    0    0  0    255  255  255  255    3    0    0    224 255  255  255  255    7    0    0  252  255  255  255  255    15   0    0    255 255  255  255  255    31   0    0  255  255  255  255  255    31   0    0    255 255  255  255  255    63   0    0  255  255  255  255  255    127  0    0    255 255  255  255  255    127  0    0  255  255  255  255  255    255  0    0    255 255  255  255  255    255  1    0  255  255  255  255  255    255  3    0    255 255  255  255  255    255  3    0  255  255  255  255  255    255  7    0    255 255  255  255  255    255  15   0  255  255  255  255  255    255  15   0    255 255  255  255  255    255  31   0  255  255  255  255  255    255  63   0    255 255  255  255  255    255  127  0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    8      0    0    0  0    0    0    0    31     0    0    0    0   0    0    192  63     0    0    0  0    0    0    248  63     0    0    0    0   0    0    255  127    0    0    0  0    0    224  255  255    0    0    0    0   0    252  255  255    1    0    0  0    0    255  255  255    1    0    0    0   224  255  255  255    3    0    0  0    252  255  255  255    7    0    0    128 255  255  255  255    7    0    0  240  255  255  255  255    15   0    0    254 255  255  255  255    31   0    0  255  255  255  255  255    63   0    0    255 255  255  255  255    63   0    0  255  255  255  255  255    127  0    0    255 255  255  255  255    255  0    0  255  255  255  255  255    255  0    0    255 255  255  255  255    255  1    0  255  255  255  255  255    255  3    0    255 255  255  255  255    255  7    0  255  255  255  255  255    255  7    0    255 255  255  255  255    255  15   0  255  255  255  255  255    255  31   0    255 255  255  255  255    255  31   0  255  255  255  255  255    255  63   0    255 255  255  255  255    255  127  0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    0      0    0    0    0   0    0    0    0      0    0    0  0    0    0    0    28     0    0    0    0   0    0    128  63     0    0    0  0    0    0    224  127    0    0    0    0   0    0    252  255    0    0    0  0    0    128  255  255    0    0    0    0   0    240  255  255    1    0    0  0    0    254  255  255    3    0    0    0   192  255  255  255    3    0    0
  15217 to  15232  15233 to  15248  15249 to  15264  15265 to  15280  15281 to  15296  15297 to  15312  15313 to  15328  15329 to  15344  15345 to  15360  15361 to  15376  15377 to  15392  15393 to  15408  15405 to  15424  15425 to  15440  15441 to  15456  15457 to  15472  15473 to  15488  15489 to  15504  15505 to  15520  15521 to  15536  15537 to  15552  15553 to  15568  15569 to  15584  15585 to  15600  15601 to  15616  15617 to  15632  15633 to  15648  15645 to  15664  15665 to  15680  15681 to  15696  15697 to  15712  15713 to  15728  15729 to  15744  15745 to  15760  15761 to  15776  15777 to  15792  15793 to  15808  15809 to  15824  15825 to  15840  15841 to  15856  15857 to  15872  15873 to  15888  15889 to  15904  15905 to  15920  15921 to  15936  15937 to  15952  15953 to  15968  15969 to  15984  15985 to  16000  16001 to  16016  16017 to  16032  16033 to  16048  16049 to  16064  16065 to  16080  16081 to  16096  16097 to  16112  16113 to  16128  16129 to  16144  16145 to  16160  16161 to  16176  16177 to  16192  16193 to  16208  16209 to  16224  16225 to  16240  16241 to  16256  16257 to  16272  16273 to  16288  16289 to  16304  16305 to  16320  16321 to  16336  16337 to  16352  16353 to  16368  16369 to  16384  0    240  255  255  255  7    0    0    0    254  255  255  255  15    0     0  192  255  255  255  255  31   0    0    248  255  255  255  255  31    0     0  255  255  255  255  255  63   0    0    255  255  255  255  255  127   0     0  255  255  255  255  255  127  0    0    255  255  255  255  255  255   0     0  255  255  255  255  255  255  1    0    255  255  255  255  255  255   3     0  255  255  255  255  255  255  3    0    255  255  255  255  255  255   7     0  255  255  255  255  255  255  15   0    255  255  255  255  255  255   15    0  255  255  255  255  255  2553 1    0    255  255  255  255  255  255   63    0  255  255  255  255  255  255  127  0    255  255  255  255  255  255   127   0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    48   0    0    0    0    0    0    0    62   0     0     0  0    0    0    192  127  0    0    0    0    0    0    240  255  0     0     0  0    0    0    254  255  1    0    0    0    0    192  255  255  1     0     0  0    0    248  255  255  3    0    0    0    0    255  255  255  7     0     0  0    224  255  255  255  7    0    0    0    248  255  255  255  15    0     0  0    255  255  255  255  31   0    0    224  255  255  255  255  63    0     0  252  255  255  255  255  63   0    0    255  255  255  255  255  127   0     0  255  255  255  255  255  255  0    0    255  255  255  255  255  255   0     0  255  255  255  255  255  255  1    0    255  255  255  255  255  255   3     0  255  255  255  255  255  255  7    0    255  255  255  255  255  255   7     0  255  255  255  255  255  255  15   0    255  255  255  255  255  2553  1     0  255  255  255  255  255  255  31   0    255  255  255  255  255  2556  3     0  255  255  255  255  255  255  127  0    255  255  255  255  255  255   255   0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    0    0     0     0  0    0    0    0    0    0    0    0    0    0    0    0    120  0     0     0  0    0    0    0    127  0    0    0    0    0    0    224  255  0     0     0  0    0    0    252  255  1    0    0    0    0    0    255  255  3     0     0  0    0    224  255  255  3    0    0    0    0    252  255  255  7     0     0  0    128  255  255  255  15   0    0    0    240  255  255  255  15    0     0  0    252  255  255  255  31   0    0    128  255  255  255  255  63    0     0  240  255  255  255  255  127  0    0    254  255  255  255  255  127   0     0  255  255  255  255  255  255  0    0    255  255  255  255  255  255   1     0  255  255  255  255  255  255  3    0    255  255  255  255  255  255   3     0  255  255  255  255  255  255  7    0    255  255  255  255  255  255   15    0  255  255  255  255  255  255  15   0    255  255  255  255  255  255   31    0  255  255  255  255  255  255  63   0    255  255  255  255  255  255   127   0  255  255  255  255  255  255  127  0    255  255  255  255  255  255   255   0

当这样设置时,步骤603开始访问信息的处理。更具体地,在步骤603中,为当前色度部分计算:

y=Y>>5,

u=U>>2,以及

v=V>>2

其中“>>”是右移操作。这样做就只剩下U值的想要的第8至第3最低有效位、V值的第8至第3最低有效位,以及Y值的第8至第6最低有效位。此后,在步骤605中,查找表地址被计算为LUT_Address=u<<9+v<<3+y,其中“<<”是左移操作。

这样做就将所提取的比特组合到组合地址中,并且指向对应于所提供的Y、U和V值的一个字节。此后,在步骤607中,通过使用由Y值的第2至第5最低有效位组成的值作为比特中的附标,确定对应于所提供的Y、U和V值的字节内的特定比特。因此,步骤607计算b=mod(Y<<2,8),其中mod是取模函数。

在步骤609中,提取所计算的查找表地址处的字节的第b个比特位置的值,分配作为变量m的值,其被提供为输出。再次,在该示范实施例中,如果所提取的比特是1,则U是所选择的色度部分,而如果所提取的比特是0,则V是所选择的色度部分。

处理然后在步骤611中退出。

本领域的普通技术人员可以容易认识到,如何将前述适用于其它格式的像素,诸如RGB或YIQ。

注意到,如果希望对表格进行Huffman编码,则以下可能是有利的,即选择U为1而选择V为0的前述对应关系应该反向,假定,如已经从实验性地看到,为多数像素组合选择U。

图8所示为另一示范处理,通过其,选择特定色度部分来包含像素的水印信息。当需要选择适合于包含水印信息的色度部分时,处理进入步骤801。为了描述图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-value-derived)比特,有利地,可以将表格的大小减少高大一半。这是通过以下方式实现的,即添加测试,以在形成表格地址之前确定U值是否小于最大值的一半,并且如果测试结果为YES,简单地指示选择U色度部分并且跳过访问表格的其余处理,并且也通过在计算地址的U值推导的比特之前从实际U值中减去最大U值的一半。于是,消除了图6所使用的、对应于最高有效U位为0的表格部分,并且只保留最高有效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<predefined_value,其中predefined_value例如是最大U值的一半。注意到,为了节省比特,并且将表格减半,predefined_value优选地应该是2的幂。如果步骤802中的测试结果为NO,说明U值小于预定值,例如U的最大值的一半,例如128,并且因此所要选择的色度部分是Y、U和V的函数,从而必须访问表格,则控制前进到步骤803,以开始访问表格的处理。在步骤803中,为当前色度成分计算:

y=Y>>5,

u=(U-predefined value)>>2,例如u=(U-128)>>2,以及

v=V>>2

其中“>>”是右移操作。这样做就只剩下希望的U值的第7至第3最低有效位、V值的第8至第3最低有效位、以及Y值的第8至第6最低有效位。此后,在步骤805中,用于当前像素的查找表地址被计算为LUT_Address=u<<9+v<<3+y,其中“<<”是左移操作。

这样做就将所提取的比特组合到一个组合地址中,并且指向对应于像素的一个字节。此后,在步骤807中,通过使用由Y值的第5至第2最低有效位组成的值作为到字节的索引,来确定对应于像素的字节内的特定比特。因此,步骤807计算b=mod(Y<<2,8),其中mod是取模函数。

在步骤809中,提取在所计算的查找表地址处字节的第b个比特位置的值,并将其存储在变量m中。变量m的值在步骤811中作为输出提供。再次,如果输出比特是1,则U是所选择的色度部分,而如果所提取的比特是0,则V是所选择的色度部分。处理然后在步骤813中退出。

如果步骤802中的测试结果为YES,说明应该选择U色度部分,因为像素颜色并非主要为蓝色,并且因此改变像素的蓝色不会被人类视觉系统检测到,则控制前进到步骤815,其中将变量m设置为等于1。这样做就确保选择U。控制然后前进到步骤811,并且处理按照如上所述继续。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号