数据嵌入的制作方法

文档序号:7570185阅读:589来源:国知局
专利名称:数据嵌入的制作方法
技术领域
本发明涉及数值数据的处理,尤其涉及把外部数据嵌入到已有的数据字段中。此项发明得到了政府的支持,根据美国能源部No.W-7405-ENG-36号合同执行。政府享有一定的发明权。
与本发明相关的背景技术使用数字形式的数据在全世界成为一项具有变革意义的通信形式。它们大多通过电话线、微波、和光纤进行通信。如今,数据可以在大地上,水上及卫星之间进行准确地传送。运行在轨道上的卫星可以使地球上或是太空中的任何两个点之间进行通信。
在许多情况下,把特殊的辅助数据与原始数据一齐传送出去会大大收益。辅助数据包括电视节目中的解说词,与照片有关的识别信息,或是与传真传输一起发送的转换信息。这种技术也适用于数字标记图,用以核实原始数据的原点及真实性。
以数字形式进行传输的数据采用宽带通信信道。借助于提供绝对数据保真度的纠错软件和硬件协议,可使数据形式的通信变得极为便利。这些通信系统可以确保由一个站传输的数字位流在没有变动的情况下被另一个站接收。
然而,大多数数字数据包含有冗余信息及固有噪声。例如照片扫描后生成的数字图象、电子艺术原著、或一个数字化后的视频信号,在这种图象扫描或数字生成过程中,在数字重现中就产生了噪声。此外,图象源——如摄影图象和身份证就包含着噪声,这是由于胶片的颗粒结构,光像差、及物体运动所致。艺术作品中也有噪声,这是由于画笔移动,颜料质量、及艺术品许可证所致。
冗余对于数字图象数据是固有的,因为数字密度的任何特定数值存在于图象中的许多不同位置。例如,一个已知的灰度可以出现在有树木,天空人及其它物体的图象中。在任何数字图象中,相同的或相似的数字象素(或图素)值可以代表大量的图象内容。这就意味着具有相似数字值和在图象中不同部位的出现频率的象素可以自由地交换位置,而对图象外表,或者对象素值出现的统计频率而言都没有改变。
只要当相同的值在代表信息的数字值流中出现不只一次,冗余就出现在大多数类型的数字信息中。
对于一幅双色的黑白传真图象,噪声包括了黑或白象素值。扫描成黑白BITMAP格式的文件包括一连串的黑(1)和白(0)值。在这些图象中的噪声带来了象素运行长度的变化。具有相同值的运行出现在黑白图象中的不同位置和不同行中。这就使此发明可运用于传真传输。
在数字数据中存在的噪声及冗余象素信息需要在它的噪声部分嵌入额外的信息。由于当前数字通信系统的保真度,嵌入的信息在传输到接受器中是受到保护的,接受器可以抽取这些信息。以这种方式嵌入的信息不会增加传输过程中所需的带宽,因为嵌入的数据位于宿主数据的噪声分量中。所以,可以在原始数据的冗余噪声分量中传送有意义的新信息,而不被未授权人发现。
本发明的目的因此,本发明的目的是提供一种向一个数字信息流中嵌入数据,以便使数字信息不会有较大改变的设备和方法。
此发明的另一个目的是提供一种为阻止未经授权而使用嵌入正常数字数据中的信息的设备和方法。
本发明的其它目的,优点及新颖特点将在其后的说明中阐明,其他内容对于熟悉这项技术的人来说,通过检验或使用本发明即可明白。本发明的目的及优点可借助于所附的权利要求中特别提到的手段及工具实现和获得。本发明的技术方案本发明提供将辅助数据嵌入宿主数据的方法,它包括几个步骤建立含有数值及噪声成分的元素的宿主数据的数字表示;以一系列位的形式创建辅助数据的数字表示;评价宿主数据的数字表示中的噪声分量;比较噪声分量与宿主数据中的元素以确定主元素对,此主元素包含小于该噪声分量的数值;用从该元素对中取出的大体相等的值代替元素中的单个值,以便嵌入辅助数据的单一位值,此值相当于辅助数据的位系列;以及以一个文件的形式将嵌入到宿主数据中的辅助数据输出。
根据本发明,还可进一步提供从宿主数据中抽取已嵌入的辅助数据的方法,此宿主数据包含噪声分量,其抽取步骤为从宿主数据中抽取指示已嵌入的辅助数据的一位系列,由此可核实宿主数据,解释宿主数据元素对,此宿主元素对小于噪声成分值,并相当于辅助数据的位值;标识相当于对值的辅助数据位系列;以及,以一个数据文件形式将辅助数据输出。
附图的简要说明作为说明书的一部分,所有


了此发明的具体实施方法,它与说明书一道共同解释发明的原理。
图1是框图,说明从宿主中抽取及嵌入数据的过程;图2是部分计算机代码,它们用于确定有相似值的宿主数据的对数,并用于将RGB分量变成HSI分量;图3是用于消除双重宿主数据对的部分计算机代码;图4是部分计算机代码,对于Truecolor(真彩色)图象,它可以在宿主数据对出现频率上引入制约,这样可在宿主数据直方图上将嵌入的作用减少到最低程度;图5是用于完成将辅助数据嵌入到宿主数据的实际工作的部分计算机代码,该代码表包括大量的信息,这些信息对于处理首标信息中的辅助位流和宿主数据文件数据是必需的;图6是用于分析双色传真宿主数据中的一排象素的运行长度的部分计算机代码;图7是用于确保在起始数据行中的第一个象素能在偶列数里开始的部分计算机代码,在该行的第一个象素位置标志数据包的起始。
图8是用于把数据嵌入到双色主图象(如传真传输)的部分计算机代码。
本发明的最佳实施例本发明可以在对传输或图象的内容及含义不做任何可察觉的修改的情况下把数据嵌入到数字传输或图象中去。由于采用了本发明的技术,这一切是可以实现的。根据本发明,在一组数字宿主数据中的相似图象值可按照已嵌入的信息重新排列。宿主数据图象实例是用微软的BITMAP格式(.BMP)表示的,因此所得出的图象包含了嵌入的辅助信息,同时这些信息不会被察觉。
微软BITMAP格式是一种公共范围的格式,它可支持Truecolor图象,调色板,灰度级、或黑白表示。Truecolor图象的每个象素元素有24位,每个象素元素的每个字节代表红、绿、和蓝(RGB)色分量的强度。调色板图象包含一张RGB许可值表。在调色板图象里的象素值是这个表的索引。灰度级图象给出了象素值的数字密度。黑白表示分配0或1作为两个可能的象素值之一。本发明将在BITMAP图象类型的范围内进行解释,请参考以下描述以理解本发明。
大多数传感器接受的信息是以数字形式表示的,无论它来自视频,照片,实验室测量、或是传真。这些数字数据带有固有的噪声和冗余信息,它们可被操纵以携带额外的数据信息。使用本发明和技术,这些额外的信息也可以由授权的及可能的接受者容易地取出。
当数字密度的一个特殊数值出现在图象的许多不同位置对就出现数字图象数据中的冗余。冗余常在图象中发现,因为给定的灰度级存在于树木,天空,白云,人,及其它物体的再现中。数字图象中噪音的出现使图素、象素在数值上有轻微的变化。对于8位数字数据,象素数值的范围在0~255之间,由于具有相同或相似数值的象素代表着多种多样的图象内容,图象中不同位置的许多值可以自由地相互改变。通过交换数值附近的象素的空间位置,就可使一个特殊象素值的统计出现频率及图象外表几乎不受到影响。
首先,从原数字数据(其后称为“宿主”数据)中,本发明在必要的情况下把宿主数据转换成数据形式,然后生成图象直方图,用于说明出现在图象中的数字图素值的可能密度。一个特殊的象素值在图象中出现的次数将针对其值被绘制出来。对于8位数字数据,象素值的范围在0~255之间。当然,图象中的噪声级将取决于数据源。照片、原始艺术品、数字音频、视频、和传真之间的噪声级会不同。
将辅助数据实际嵌入到宿主数据中的过程涉及到三部分处理。其基本步骤如图1所示。首先,确定宿主数据中噪声成分的估算值,然后与宿主数据数值的直方图分析结合在一起以标识宿主数据中的值对,宿主数据与大约相同的统计频率出现,其值低于噪声成分的值。其次,调整所发现的对值出现的位置以嵌入辅助信息组的位流。第三,用宿主数据中已标识的值对来生成附标,去抽取嵌入的数据。
抽取嵌入的数据的过程与上面相反,放置在图象中的附标在嵌入阶段时规定对值,它包含已嵌入的辅助信息。由于对值已知,根据附标中已给对值的象素位置重新创建辅助数据。附标数据(关键码)首先用来抽取首标信息。它规定了辅助数据的长度和文件名,并使附标合法化。如果包含嵌入信息的图象被修改过,首标信息就不会正确引出数据。然而,成功的抽取是在一个输出文件中重新准确地创建辅助数据。
按照本发明的数据嵌入原理涉及到某种宿主数据值的重新排列,其目的是把即将加入的额外数据值进行编码。为了便于说明本发明,假设一个宿主数据由8位二进制信息表示,对于每个宿主数据实例来说,其值的变化范围在0和255之间。再进一步假设一个信号S的噪声值为N,则N=±S/N,或大约信号值的10%。对于大多数数据而言,噪声分量可由一个不变值或百分比近似,比如上面提到的10%。宿主数据中的两个值di和dj在噪声值范围内,如果|di-dj|=ε≤N(10)某一值的di的出现频率或直方图值是F(di)。满足方程式10的要求及以f(di)-f(dj)<δ(这里,δ是用于统计等式的容差)的出现频率出现的宿主数据中的数据值即为嵌入之用的。di和dj构成一对数据值Pk.k=0,1,2,....Np。在宿主数据里的这些对给出每一对的嵌入位Mk的全部数量Mk=Σif(di)+Σjf(dj)]]>这里,i和j之和运行到出现在用于表示各个数据值的数据组f(di)和f(dj)中的频率极限处。
参见图2,其中列出了部分打印的C语言计算机编码。方程式10中的宿主数据象素对值(di和dj)的确定是通过图2的编码完成的。在图2中,8位值译成调色板表的索引,因此,方程式10中的比较就需要在调色板上相关颜色之间进行。调色板上的入口是红、绿、蓝颜色值,每个都在0~255范围内。
如果以BITMAP图象格式增加额外信息的话,需要参照以下两份资料,一是由Levine(1994,J.wiley & sons,New York)编写的书,名为“图形文件的编程”。另一个为技术文章,题为“BMP格式”,由M.Luse撰写,刊登在1994年第19期P.18 Dr.Dobb′s Journal。
图2中的分段码从第1行开始围绕调色板上的颜色循环。循环索引i用来把每一种调色板上的颜色用所有其它入口连续进行测试,以标识色彩入口的对数以满足方程10规定的要求。在i循环中标识的颜色都要用另一个索引j通过第二个循环从第16行开始对调色板中的所有其它颜色进行测试。第7行提供了具有灰度级调色板而不是彩色图象的修改方法。对于灰度级图象,RGB分量对于每个调色板入口都是相同的,尽管有些灰级格式包含16色表。
通过将RGB彩色分量转换成相应的Hue,Satruation和Intensity(HSI)彩色分量可完成方程式10指出的比较。第12行采用单独的子程序rgbhsi()来执行这一转换,第20行把j循环中的RGB彩色分量转换成HSI数据结构分量,第21行计算HSI系统中的色差,第24行完成方程10所要求的测试。如果色差小于规定的噪声值(图2清单中COLOR NOISE=10),就要做密度差试验以确定这两个调色板入口在小于规定的噪声值时可否被接受。在作为备选对值接受入口前要先提出两个额外的限制条件。首先,在测试(i-循环)值和所有其它(j-循环)值之间的最小色差应为色差。其二,所选的对数必须小于图象象素行中列数的一半,以便对值键可以存在一行象素中。这是一条算法限制,而并非本发明所要求。
数据结构排列(Pair[])用来保持备选对(i,j)值和它们的全部出现频率Mk的值。如果图象是灰度调色板,第3行的测试就只用来对两个调色板入口的密度进行比较。灰度图象不需要对彩色调色板进行RGB到HSI的转换。
本发明的嵌入过程忽略了彩色调色板入口的饱和度分量中的差别,因为饱和度在彩色图象中一般不被注意。只有Hue和Intensity分量被限制落入确定的噪声限度之内以确定调色板对值。
由图2列出的编码示出的象素对值一般包含冗余值。同一个象素值i可以在几个不同的对组合中发现。因为多个对不能包含相同的调色板入口(由于象素值的每对组合必须是独一无二的),所以有必要删除一些对。根据方程式10的要求设置的对数是以变量而不是以对存储在第15行。
下面看图3,列在里面的分段码说明了是怎样用单独子程序删除重复的对的。首先按照上面的方程式20的要求,利用图象的直方图计算每对中出现的全部数量。第一行说明i循环用于计算每对值Mk,其次,根据在第5行中的Pair[].Count数据结构成员的减少顺序存贮这些对。在下一行的删除重复保留了对Pk,其频率值Mk保持最大数量。第10行和以下行用分段编码发现的独特的象素对计算可嵌入到宿主数据中的全部字节数。
根据值Mk的减少顺序将对值分类,从而把要嵌入一个特定的辅助数据流的对数减少到最低程度。然而,如果对值按随机顺序排列,则嵌入的数据的安全性就大大地增强了。将对值顺序随机化是本发明的一部分。这可以通过重新设置对值以便通过计算具有整数索引为pts[k],i,k=0,1,2,…,no_pairs和pts[k],gamma=δ0,δ1,…δr,…δno_pairs(其中,δr为随机值)的入口的数据结构而将顺序随机化的方法而实现。对数据结构(pts[])分类以便把随机值放在上升顺序中使索引值随机化。随机索引值与上面计算的对值一并使用,以便重新排列表格,从而给出随机对值顺序。
用于调色板格式图象的算法允许在不考虑单独的出现频率的情况下操纵象素值。参考图4,另一个分段编码适用于Truecolor图象。在这里引入的出现频率有限制,它可把宿主数据直方图上的嵌入作用减少到最小。
Truecolor图象包含3幅单独的8位灰度图象,分别为红,绿,蓝图象分量。Truecolor图象没有调色板。三个8位分量可能的组合可给出大约1千6百万种颜色。本发明用分别对待每幅RGB分量图象的办法向Truecolor图象嵌入数据。所以在混合图象色上嵌入的作用就保持在各个彩色密度分量的噪声中。
图4第2行开始的ip-循环参照彩色平面(对RGB而言,ip=0,1,2)。每个数值的变化频率(从0到255)在数组hist_values[]中给出,彩色平面直方图受第7行ip256所偏置。变量fvalue[]保持彩色分量ip的浮点直方图值。第11行开始一个循环以限制为几乎相等的出现频率所选择的对。在噪声限制范围内的象素密度(RANGE)被选作比较统计频率。统计一致的容差δ在17行是5%,该容差可以在特殊用途中进行调整。
当所有可能的值都受到噪声限制及统计频率的测试后,在27行对发现的对进行了分类,重复的就删除,起始索引在第31行加1,搜索继续进行。对数的最大值又一次由算法限制决定,i,j对值必须少于一个图象行中象素的一半。对于调色板格式图象,本发明的安全性包含使对值入口的随机化。
采用统计限制可以将嵌入辅助数据的宿主图象作用降低到最小程度。如果容差δ设在0,则所选的每一对就包含小于在密度分离中噪声值的数据值,并以完全相同的统计频率出现。设定容差δ=5%,如图4的分段编码所示,就可接受在频率上接近的象素对,并同时仍然保留大部分宿主数据的统计性能。如果有,可通过要求相同出现频率的方式被发现的也是极少数对。
把辅助数据实际嵌入到一组宿主数据的过程包含了对冗余数值出现顺序的重新排列。由分析发现的宿主数据值对是用于把辅助数据的位流编码进入宿主数据的象素值。重要的是要意识到用于嵌入的数值是已经出现在宿主数据中的值。本发明的嵌入过程并不会改变宿主数据中数值的数量。
在本发明的嵌入过程中,宿主数据按顺序进行处理。首先是通过宿主数据检查每个值并测试与象素-对值是否匹配。在宿主数据中的匹配值就被恢复成数据结构值,pair[k].i,k=0,1,2,…Np。这一步骤把(图1)宿主BITMAP图象恢复成对值,其相当于辅助数据中的零。然后通过辅助数据检查将被嵌入的数据的顺序位,并根据将被嵌入的辅助位值把宿主数据元素的对值设为i或j。如果正在嵌入的位流是随机的,则宿主数据对值i和j在嵌入过程完成后就会在宿主图象里以相同的频率出现。
图5解释了完成实际嵌入工作的分段码,其中包括用于操纵首标信息里的数据辅助位流,和宿主数据文件所必需的大量信息。第1-12行给存储器定位并启动变量。即将嵌入的首标及位流数据表示“数据-图象”,并存在数组里,data_row[]。宿主数据就表示“图象-数据”。
索引Ii用于始于第12行的循环,以统计数据-图象中字节的位置。这个循环始于Li=-512,因为首标信息在数据-图象字节之前嵌入。14行包含用首标信息对装入data_row[]所进行的测试。20行包含用从数据-图象文件,磁带5取出的字节装入data_row[]所进行的测试。
第30行启动一个用于数据-图象字节内的位循环。变量,位索引=(0,1,2,…7)统计数据-图象字节内的位的位置,数据-行(d_inrow),由变量d_inrow的索引。变量Ij检索宿主图象中的字节(象素)。变量,inrow,检索图象-数据缓冲器,图象_行[inrow]。第32行是对输出到图象-数据文件中的嵌入数据(一个完整的象素行)进行测试,第40行对完成通过一遍图象-数据的测试。每个象素对pair[k],k=0,1,2,…Np,都要进行一遍图象-数据通过。
在第47行中,对索引被增加。一个临时的对数据结构变量(称为“pvalue”被用于保持正在被用做嵌入的宿主数据图素的工作对值。第60行刷新图象-数据缓冲器image_row。
嵌入测试在第72行完成。如果image_row(inrow)的内容与代表零的数据-图象位的对值相等,那么就没有变化。图象-数据值保持在“pvalue,i”。然而,如果位流值是1,则图象-数据值变成同等的pvalue,j。第84行把图象-数据值看成不等于嵌入对值,pvalue,i。在这种情况下,位索引量就减少(减1),因为数据-图象位还没有被嵌入,同时图象-数据索引在增加以检查下一个宿主数据值。
把用于嵌入辅助数据-图象位流的过程逆反就可把已嵌入的数据抽取出来。嵌入的图象-数据组的直方分析将会暴露出抽取的备选对,因为只有在这种情况下,单独的统计频率不会被嵌入过程改变。图2-5的编码中,统计频率受到嵌入过程的轻微改变。用于嵌入的对表格可利用分析原始图象-数据重新创建,但它一般不能准确地从已嵌入的图象-数据中发现。
此外,已如上文所描述的那样,本发明包括对-值的顺序随机化处理,因此在事先不了解对值顺序的情况下,就大大地增加了用于抽取已嵌入的数据所必需的分析量。
如前面所述,为嵌入所选择的有序对构成了从图象-数据里抽取数据-图象的“密匙(key)”。图2-5中的编码表说明嵌入分析怎样把宿主数据中的噪声成分的统计性能简化成一张数值对表。密钥——对在抽取嵌入的数据时是需要的,但它们不能在嵌入过程完成之后靠分析宿主数据生成。然而,“密钥”可以从原始的,未被修改过的宿主数据中重新生成。所以,正在嵌入的数据类似于一次插入的加密器,可为已嵌入的位流提供极其安全的措施。
由于对表已知,抽取处理包括按顺序测试象素值以便为首标信息和数据-图象重新建立输出位流。在本项发明中,在可以进行抽取处理时也可将对表插入到主图象-数据中。可选择地,本发现允许随意移动对表并以单独的文件进行存储。一般来说,对表的大小范围在几个到几百个字节。表的允许最大尺寸是象素行长度的一半。随着对表消失,只要原始宿主图象-数据不能获得,嵌入的数据就是安全的。因此,嵌入法接近一次插入加密法可保证数据的安全。
另一个保护对表的方法是移动密钥并用公共密钥或另一个加密手法对其进行加密。本发明可使加密后的密钥放在宿主图象-数据中,防止未授权者抽取。
把辅助数据嵌入到宿主中会稍微改变用于编码位流的象素值的统计出现频率。压缩或加密嵌入数据是绝好的伪随机辅助位流。结果,使得具有伪随机性能的嵌入辅助数据将嵌入对中的值的平均出现频率的变化减少到最低限度。嵌入没有压缩或加密的字符数据大大降低了本发明可提供的安全性。
嵌入数据的存在不易通过分析嵌入数据的图象-数据所察觉。当谈到密码方法时,数据的嵌入是把数据-图象及图象-数据卷积在一起。被嵌入的原始数据-图象位流代表一份明文。把宿主和嵌入的数据合并起来就在宿主的噪声分量里插入了一份密文。然而密文的存在并不明显,因为宿主载体信息的内容及意义受到了本发明所披露技术的保护。根据本发明进行的数据嵌入与加密不同,因为没有生成明显的密文。
不熟悉“明文”、“密文”术语的人可参考B.Schneier的书“应用密码协议、算法及原码”。此书的内容结合于此作为参照文件。
正如前面所提到的那样,本发明在把辅助信息嵌入到传真数据中是很有用处的。在前面有关辅助信息嵌入到图象宿主数据的讨论中,可以得知噪声分量产生于象素数据的数值不确定性,或是在调色板的彩色值中。传真传输实际是发送包含黑白BITMAP数据的图象,也就是说,来自图象象素的数据是分别代表黑或白的二进制(0,1)值,而噪声的作用要么增加象素,要么从数据中移去象素。所以本发明以双色BITMAP的形式处理传真黑白BITMAP图象。
办公室通用的传真机是将扫描仪和通过电话线传输图象所需的数字硬件和软件结合在一起。使用专门的调制解调器协议进行图象传输,其特点是获得此技术的途径极其多。例如,在EXP Modem用户手册中就对膝上型计算机的传真/数据调制解调器进行了描述。计算机之间的传真传输是数字通讯,因此,这样的数据适合数字嵌入。
正如以上谈论的有关数据嵌入到图象的处理,传真嵌入过程是按两个阶段进行的分析和嵌入。在传真双色BITMAP时,图象噪声要么增加,要么就从图象中去掉白象素。由于这一点,依次的相同象素的运行长度就有变化。
在双色BITMAP图象里,扫描过程通过在源拷贝中由相继的黑色象素运行来代表白色行。在该运行中的象素数量是不定的,至少±1,这是由于扫描仪的分辩率及原始材料不确定地向黑-白BITMAP格式转换所造成的。
这里所举的数据嵌入到双色BITMAP数据的例子包含分析BITMAP来确定相继象素运行的统计出现频率或直方图。本发明的嵌入处理根据辅助数据-图象中的位流内容改变象素(0,+1)运行长度。适合嵌入的宿主数据是任何一幅双色BITMAP图象,它的大小是按传真传输设计的。传真传输的硬拷贝可以被扫描生成双色BITMAP,或是利用计算机内的传真打印机驱动软件生成的图象。
传真嵌入处理由分析象素每一行的运行长度开始。这一步骤的完成情况由图6的分段码解释。程序rowstats()的变量是在一行象素数据的指针,它包括每个象素一个字节,既可为零也可是1;指向统计频率数组的指针;数据行中象素列的数量;以及用于内部程序任选的标记。任选标记是将被嵌入的辅助位流块或包的尺寸,任选标记已在第9行被测试,程序Packet_col()用于正向任选标记。此程序列在图7的编码表中,其目的是确保数据行中的第一个象素按偶列数开始。这行的第一个象素位置标志数据包的起始,这一切将在下面详细描述。
第12行是一个循环,用来检查数据行里的象素运行。在规定的值MINRUN和MAXRUN之间的运行由这个循环来检查。在15行中的j-循环给象素运行定位并给运行起始索引设立变量K。21行的测试只选择长度短于行长度的象素块。22行里的循环将象素运行移到数组块[]的暂时存储中。
24行和25行处的两个测试拒绝有运行长度的块,而不是i-循环的当前值所需的块。嵌入方案选择长度为i的块,为了嵌入数据则增加一个象素使长度变成i+1。根据辅助嵌入数据的位流,这样就可以保证运行包含或i或i+1的非零象素值。如果存储在变量块[]数组里的运行没有在至少两个零里结束,则它就不可作为i+1长度运行被接受。编码转移到NEXT,以检查下一个运行。
28行开始一个循环以统计运行中的象素数量。被发现的数在第31行被增加1,使运行长度等于i+1。第33行包括一个测试,用来保证所选的运行有正确的长度。运行长度索引i的直方图[]数组被增加以计算运行的出现频率。用于运行的数据行字节由36行的循环作标志,用一个字母代码区分设址运行。这一标识技术使嵌入数据能容易地确定嵌入位流所用的运行。在这条程序的出口上,数据行字节包含用字母代码标志的运行以便为嵌入位流指明可使用的象素位置。返回值是位于数据行中的运行数量。零返回说明在MINRUN和MAXRUN的规定范围内没有运行被设址。
传真调制解调器协议强调速度,因此不包括纠错。由于这个原因,根据电话线的质量及传输速度,传真传输容易丢失信息,产生冲击噪声,并且丢失数据。由于有成功的嵌入技术,本发明可以弥补图象数据的一部分损失。为了完成这一目的,调制解调器块协议中的各种各样内容被用于嵌入首标和辅助数据。双色图象被当成一个传输媒体,数据被嵌入到块或包中,用于包-起始标识和奇偶检查。包起始由具有在偶列中的第一个象素的图象行表示。当包含在块里的位数被抽取时,或在讹误的软件包中,当包-起始标识被定位在一行时,软件包结束。奇偶检查结果及包顺序号与数据一起嵌入到包里。使用这种方法,传真传输中的错只会导致一部分而不是全部嵌入数据的损失。
由于传输错造成的数据丢失量取决于源图象中象素的密度及丢失信息的长度。按每包20字节算,一个标准文本在传输中会导致一到两个数据包丢失。一般来说,一项成功的发明会考虑传真宿主图象信息的清晰度。
现在回到图7,里面所列的步骤是用来启动双色BITMAP行,以便为每个包的起始设立标志。双色图象中的每行包含一个起始于偶列(包起始)或是奇列(包连续)的非零值。
在图7中,可以看到第四行起始于一个在数据行里运行的象素数的循环。在传真图象中,零象素值指黑色空间,1指白色空间。第5行把第一个黑色空间放在该行的数据中。如果变量packet_size是正的,则列索引被测试成偶数,同时图素被强制代表白色空间。如果packet_size变量是负的,程序就会在不做任何变动的情况下返回到数据行标识的指针上。如果packet_size大于零,则第一数据行元素就表示白色空间。第11行处理是当packet_size等于零的情况,并指出连续行。在连续行中,第一数据行元素被迫表示黑色空间。由17-20行子程序返回的值说明被检查的象素行的性质。
图8的分段程序提供了嵌入双色BITMAP传真图象的辅助数据。一行中的象素按上述办法处理,在它被分析及用数字代码进行标识后检查数据行的内容,以说明运行长度。第1至49行是对双色BITMAP图象里象素索引Ij做的大循环(未示出)的一部分。1-26行负责从双色BITMAP里读一行象素,并在第1行变量nrow里存储图象的行数。象素值位被解码并在第12-36行中扩展成image_row[]数组。image_row[]数组包含以每节字一个值(0或1)存贮的象素值。
第28行用packet_col[]程序返回该行的包索引。如果28行的j是零,这行就是packet_start行,如果j是1,这行是连续行。29行使用roustats()程序为行缓冲器内的象素指定运行-长度字母标志。返回值i给出在图象行设址的运行数量。常规试验在31,37,和41行完成。索引Kp给出了一个数据包内的象素行数。如果Kp是0,这行必定是packet_start索引,如果Kp>0,这行必定是连续行。第49行完成双色图象数据的读和预处理过程。
数据-结构数组,pair[]包含(i)的运行长度,扩充运行长度(i+1)及双色BITMAP图象中的全部运行数。在始于51行的循环中的索引k是正被嵌入的运行长度索引。索引inrow计算在图象行缓冲器及变量内的象素。位索引是位流字节内的位-位置索引。
57行为变量testltr中的运行长度字母代码设定值。图象象素值用58行的字母代码进行测试。如果测试字母代码标识设定位置,第60行就把这行中的索引推到正用于嵌入的象素运行之尾。62行中的测试功能是检查位流包字节中当前位索引的值。如果此值为1,则运行中的最后一个象素就设为1,否则就设为0。
尾随一个运行设定象素值便可完成双色BITMAP图象的嵌入工作,其方法是根据包数据内的伪随机位流引入生成的噪声。在image_row数组数据打包和写回BMP格式文件之前,通过调用图8的rowstats()而把被写入行缓冲器中的字母标识值重新设置成二进制单位。完成这项任务的过程虽未在图8中描述,但对熟悉此技术的人来说是可以理解的。
根据本发明,要想把已嵌入到双色BITMAP传真图象中的数据抽取出来,只有在计算机接受到传真图象后才能完成。图象数据由接收计算机以文件格式存储(很可能是传真压缩格式),这就需要把图象转换成BITMAP格式并抽取已嵌入的数据。送到标准办公机器上的传真数据对所抽取的数据是不可修改的,因为打印出的图象质量不足以靠扫描来发现被嵌入的数据。
然而,本发明的确使用了扫描/打印传真机,它是靠计算机硬件内部处理数据。已嵌入的辅助数据在将宿主数据扫描之后,但在传输之前才被插入。这些数据在被接受以后,可在打印之前被抽取。
双色图象嵌入的密钥可通过分析已嵌入数据的图象找到,因为运行长度并未与原始(i,i+1)值有变。凡是被使用过的值,其顺序取决于图象中的出现频率。以调色板图象为例,值的密钥及用于嵌入的对的顺序插入到传真中。然而,严格地讲密钥不是必不可少的,因为原则上讲,规定值MINRUN和MAXRUN允许重新计算接收图象上的运行长度统计。在实际操作中是需要密钥的,因为在传真调制解调器通信联系中,传输误差可能引入新的运行长度,它可以改变图象的统计性能,因为对顺序是不知的。即使传真嵌入与向调色板图象中嵌入辅助数据相比安全性有些低,但双色BITMAP传真数据嵌入仍然被认为类似于一次插入加密。
以上就本发明中详细内容所进行的描述目的是为了解释和说明其功能,而绝非限制其用途。很明显,许多修改和变化会依照上述解释来做。所选的及所描述的具体内容是为了使熟悉本技术的人能更好地理解本发明的原理及实际用途,并在实际运用中使用并根据实际情况进行修改。本发明的范围由所附权利要求书限定。
权利要求
1.一种将辅助数据嵌入到宿主数据中的方法,其特征在于包括以下步骤生成该宿主数据的数字表示,该宿主数据以具有数值并包含噪声分量的元素形式出现;以单独位值的顺序形式生成该辅助数据的数字表示;计算该宿主数据的所述数字表示中的噪声分量;用该噪声分量与该元素对进行比较以确定具有数值的该元素的对数,所述数值小于所述噪声分量的值;从所述元素对中取出大体相等的值替换所述元素的单个值,以便把相当于该辅助数据位值顺序的所述辅助数据的单个位值嵌入;以及把所述宿主数据和已嵌入宿主数据的辅助数据以一个文件形式输出。
2.根据权利要求1所述的方法,还包括在完成该辅助数据的数字化后把该辅助数据与预先确定的信息组合在一起的步骤,其中,所述信息指示所述辅助数据、其文件名、以及文件的大小。
3.根据权利要求1所述的方法,还包括确定嵌入该辅助数据到该宿主数据的协议,它可以验证从该宿主数据中抽取的该辅助数据。
4.从包含噪声分量的宿主数据中抽取已嵌入的辅助数据的方法,其特征在于包括以下步骤从所述宿主数据中抽取指示所述已嵌入的辅助数据的一个位顺序,用以验证所述宿主数据;解释该宿主数据并确定宿主元素对,该宿主元素对小于该噪声分量,并相当于该辅助数据的位值;利用该位顺序标识该辅助数据;以及以一个文件形式抽取该辅助数据。
5.根据权利要求1所述的方法,其中所述的宿主数据包括一幅彩色照片。
6.根据权利要求1所述的方法,其中所述的宿主数据包括一幅黑白照片。
7.根据权利要求1所述的方法,其中所述的宿主数据包括电视信号。
8.根据权利要求1所述的方法,其中所述的宿主数据包括一幅画。
9.根据权利要求1所述的方法,其中所述的宿主数据包括传真传输。
10.根据权利要求1所述的方法,其中所述的宿主数据包括身份证。
11.根据权利要求1所述的方法,其中所述的宿主数据包括数字音频信息。
全文摘要
一种将辅助数据嵌入一组宿主数据(例如照片,电视信号,传真传输,或身份证)的方法。所有这类宿主数据都包括固有噪声,允许几乎相同并且其值小于噪声值的宿主数据中的象素被操纵并由辅助数据置换。由于嵌入方法并未改变宿主数据的元素值,因此辅助数据基本不影响宿主数据的外形和解释。通过实际为逆向的处理,嵌入的数据可由授权的用户容易地检索。
文档编号H04N7/52GK1146817SQ96190120
公开日1997年4月2日 申请日期1996年2月22日 优先权日1995年2月23日
发明者麦克斯韦·T·桑德福特Ii, 塞欧德尔·G·韩德尔 申请人:加里福尼亚大学董事会
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1