專利名稱:數(shù)據(jù)嵌入的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)值數(shù)據(jù)的處理,尤其涉及把外部數(shù)據(jù)嵌入到已有的數(shù)據(jù)字段中。此項發(fā)明得到了政府的支持,根據(jù)美國能源部No.W-7405-ENG-36號合同執(zhí)行。政府享有一定的發(fā)明權(quán)。
與本發(fā)明相關(guān)的背景技術(shù)使用數(shù)字形式的數(shù)據(jù)在全世界成為一項具有變革意義的通信形式。它們大多通過電話線、微波、和光纖進行通信。如今,數(shù)據(jù)可以在大地上,水上及衛(wèi)星之間進行準確地傳送。運行在軌道上的衛(wèi)星可以使地球上或是太空中的任何兩個點之間進行通信。
在許多情況下,把特殊的輔助數(shù)據(jù)與原始數(shù)據(jù)一齊傳送出去會大大收益。輔助數(shù)據(jù)包括電視節(jié)目中的解說詞,與照片有關(guān)的識別信息,或是與傳真?zhèn)鬏斠黄鸢l(fā)送的轉(zhuǎn)換信息。這種技術(shù)也適用于數(shù)字標(biāo)記圖,用以核實原始數(shù)據(jù)的原點及真實性。
以數(shù)字形式進行傳輸?shù)臄?shù)據(jù)采用寬帶通信信道。借助于提供絕對數(shù)據(jù)保真度的糾錯軟件和硬件協(xié)議,可使數(shù)據(jù)形式的通信變得極為便利。這些通信系統(tǒng)可以確保由一個站傳輸?shù)臄?shù)字位流在沒有變動的情況下被另一個站接收。
然而,大多數(shù)數(shù)字數(shù)據(jù)包含有冗余信息及固有噪聲。例如照片掃描后生成的數(shù)字圖象、電子藝術(shù)原著、或一個數(shù)字化后的視頻信號,在這種圖象掃描或數(shù)字生成過程中,在數(shù)字重現(xiàn)中就產(chǎn)生了噪聲。此外,圖象源——如攝影圖象和身份證就包含著噪聲,這是由于膠片的顆粒結(jié)構(gòu),光像差、及物體運動所致。藝術(shù)作品中也有噪聲,這是由于畫筆移動,顏料質(zhì)量、及藝術(shù)品許可證所致。
冗余對于數(shù)字圖象數(shù)據(jù)是固有的,因為數(shù)字密度的任何特定數(shù)值存在于圖象中的許多不同位置。例如,一個已知的灰度可以出現(xiàn)在有樹木,天空人及其它物體的圖象中。在任何數(shù)字圖象中,相同的或相似的數(shù)字象素(或圖素)值可以代表大量的圖象內(nèi)容。這就意味著具有相似數(shù)字值和在圖象中不同部位的出現(xiàn)頻率的象素可以自由地交換位置,而對圖象外表,或者對象素值出現(xiàn)的統(tǒng)計頻率而言都沒有改變。
只要當(dāng)相同的值在代表信息的數(shù)字值流中出現(xiàn)不只一次,冗余就出現(xiàn)在大多數(shù)類型的數(shù)字信息中。
對于一幅雙色的黑白傳真圖象,噪聲包括了黑或白象素值。掃描成黑白BITMAP格式的文件包括一連串的黑(1)和白(0)值。在這些圖象中的噪聲帶來了象素運行長度的變化。具有相同值的運行出現(xiàn)在黑白圖象中的不同位置和不同行中。這就使此發(fā)明可運用于傳真?zhèn)鬏敗?br>
在數(shù)字數(shù)據(jù)中存在的噪聲及冗余象素信息需要在它的噪聲部分嵌入額外的信息。由于當(dāng)前數(shù)字通信系統(tǒng)的保真度,嵌入的信息在傳輸?shù)浇邮芷髦惺鞘艿奖Wo的,接受器可以抽取這些信息。以這種方式嵌入的信息不會增加傳輸過程中所需的帶寬,因為嵌入的數(shù)據(jù)位于宿主數(shù)據(jù)的噪聲分量中。所以,可以在原始數(shù)據(jù)的冗余噪聲分量中傳送有意義的新信息,而不被未授權(quán)人發(fā)現(xiàn)。
本發(fā)明的目的因此,本發(fā)明的目的是提供一種向一個數(shù)字信息流中嵌入數(shù)據(jù),以便使數(shù)字信息不會有較大改變的設(shè)備和方法。
此發(fā)明的另一個目的是提供一種為阻止未經(jīng)授權(quán)而使用嵌入正常數(shù)字數(shù)據(jù)中的信息的設(shè)備和方法。
本發(fā)明的其它目的,優(yōu)點及新穎特點將在其后的說明中闡明,其他內(nèi)容對于熟悉這項技術(shù)的人來說,通過檢驗或使用本發(fā)明即可明白。本發(fā)明的目的及優(yōu)點可借助于所附的權(quán)利要求中特別提到的手段及工具實現(xiàn)和獲得。本發(fā)明的技術(shù)方案本發(fā)明提供將輔助數(shù)據(jù)嵌入宿主數(shù)據(jù)的方法,它包括幾個步驟建立含有數(shù)值及噪聲成分的元素的宿主數(shù)據(jù)的數(shù)字表示;以一系列位的形式創(chuàng)建輔助數(shù)據(jù)的數(shù)字表示;評價宿主數(shù)據(jù)的數(shù)字表示中的噪聲分量;比較噪聲分量與宿主數(shù)據(jù)中的元素以確定主元素對,此主元素包含小于該噪聲分量的數(shù)值;用從該元素對中取出的大體相等的值代替元素中的單個值,以便嵌入輔助數(shù)據(jù)的單一位值,此值相當(dāng)于輔助數(shù)據(jù)的位系列;以及以一個文件的形式將嵌入到宿主數(shù)據(jù)中的輔助數(shù)據(jù)輸出。
根據(jù)本發(fā)明,還可進一步提供從宿主數(shù)據(jù)中抽取已嵌入的輔助數(shù)據(jù)的方法,此宿主數(shù)據(jù)包含噪聲分量,其抽取步驟為從宿主數(shù)據(jù)中抽取指示已嵌入的輔助數(shù)據(jù)的一位系列,由此可核實宿主數(shù)據(jù),解釋宿主數(shù)據(jù)元素對,此宿主元素對小于噪聲成分值,并相當(dāng)于輔助數(shù)據(jù)的位值;標(biāo)識相當(dāng)于對值的輔助數(shù)據(jù)位系列;以及,以一個數(shù)據(jù)文件形式將輔助數(shù)據(jù)輸出。
附圖的簡要說明作為說明書的一部分,所有
了此發(fā)明的具體實施方法,它與說明書一道共同解釋發(fā)明的原理。
圖1是框圖,說明從宿主中抽取及嵌入數(shù)據(jù)的過程;圖2是部分計算機代碼,它們用于確定有相似值的宿主數(shù)據(jù)的對數(shù),并用于將RGB分量變成HSI分量;圖3是用于消除雙重宿主數(shù)據(jù)對的部分計算機代碼;圖4是部分計算機代碼,對于Truecolor(真彩色)圖象,它可以在宿主數(shù)據(jù)對出現(xiàn)頻率上引入制約,這樣可在宿主數(shù)據(jù)直方圖上將嵌入的作用減少到最低程度;圖5是用于完成將輔助數(shù)據(jù)嵌入到宿主數(shù)據(jù)的實際工作的部分計算機代碼,該代碼表包括大量的信息,這些信息對于處理首標(biāo)信息中的輔助位流和宿主數(shù)據(jù)文件數(shù)據(jù)是必需的;圖6是用于分析雙色傳真宿主數(shù)據(jù)中的一排象素的運行長度的部分計算機代碼;圖7是用于確保在起始數(shù)據(jù)行中的第一個象素能在偶列數(shù)里開始的部分計算機代碼,在該行的第一個象素位置標(biāo)志數(shù)據(jù)包的起始。
圖8是用于把數(shù)據(jù)嵌入到雙色主圖象(如傳真?zhèn)鬏?的部分計算機代碼。
本發(fā)明的最佳實施例本發(fā)明可以在對傳輸或圖象的內(nèi)容及含義不做任何可察覺的修改的情況下把數(shù)據(jù)嵌入到數(shù)字傳輸或圖象中去。由于采用了本發(fā)明的技術(shù),這一切是可以實現(xiàn)的。根據(jù)本發(fā)明,在一組數(shù)字宿主數(shù)據(jù)中的相似圖象值可按照已嵌入的信息重新排列。宿主數(shù)據(jù)圖象實例是用微軟的BITMAP格式(.BMP)表示的,因此所得出的圖象包含了嵌入的輔助信息,同時這些信息不會被察覺。
微軟BITMAP格式是一種公共范圍的格式,它可支持Truecolor圖象,調(diào)色板,灰度級、或黑白表示。Truecolor圖象的每個象素元素有24位,每個象素元素的每個字節(jié)代表紅、綠、和藍(RGB)色分量的強度。調(diào)色板圖象包含一張RGB許可值表。在調(diào)色板圖象里的象素值是這個表的索引?;叶燃増D象給出了象素值的數(shù)字密度。黑白表示分配0或1作為兩個可能的象素值之一。本發(fā)明將在BITMAP圖象類型的范圍內(nèi)進行解釋,請參考以下描述以理解本發(fā)明。
大多數(shù)傳感器接受的信息是以數(shù)字形式表示的,無論它來自視頻,照片,實驗室測量、或是傳真。這些數(shù)字數(shù)據(jù)帶有固有的噪聲和冗余信息,它們可被操縱以攜帶額外的數(shù)據(jù)信息。使用本發(fā)明和技術(shù),這些額外的信息也可以由授權(quán)的及可能的接受者容易地取出。
當(dāng)數(shù)字密度的一個特殊數(shù)值出現(xiàn)在圖象的許多不同位置對就出現(xiàn)數(shù)字圖象數(shù)據(jù)中的冗余。冗余常在圖象中發(fā)現(xiàn),因為給定的灰度級存在于樹木,天空,白云,人,及其它物體的再現(xiàn)中。數(shù)字圖象中噪音的出現(xiàn)使圖素、象素在數(shù)值上有輕微的變化。對于8位數(shù)字數(shù)據(jù),象素數(shù)值的范圍在0~255之間,由于具有相同或相似數(shù)值的象素代表著多種多樣的圖象內(nèi)容,圖象中不同位置的許多值可以自由地相互改變。通過交換數(shù)值附近的象素的空間位置,就可使一個特殊象素值的統(tǒng)計出現(xiàn)頻率及圖象外表幾乎不受到影響。
首先,從原數(shù)字數(shù)據(jù)(其后稱為“宿主”數(shù)據(jù))中,本發(fā)明在必要的情況下把宿主數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)形式,然后生成圖象直方圖,用于說明出現(xiàn)在圖象中的數(shù)字圖素值的可能密度。一個特殊的象素值在圖象中出現(xiàn)的次數(shù)將針對其值被繪制出來。對于8位數(shù)字數(shù)據(jù),象素值的范圍在0~255之間。當(dāng)然,圖象中的噪聲級將取決于數(shù)據(jù)源。照片、原始藝術(shù)品、數(shù)字音頻、視頻、和傳真之間的噪聲級會不同。
將輔助數(shù)據(jù)實際嵌入到宿主數(shù)據(jù)中的過程涉及到三部分處理。其基本步驟如圖1所示。首先,確定宿主數(shù)據(jù)中噪聲成分的估算值,然后與宿主數(shù)據(jù)數(shù)值的直方圖分析結(jié)合在一起以標(biāo)識宿主數(shù)據(jù)中的值對,宿主數(shù)據(jù)與大約相同的統(tǒng)計頻率出現(xiàn),其值低于噪聲成分的值。其次,調(diào)整所發(fā)現(xiàn)的對值出現(xiàn)的位置以嵌入輔助信息組的位流。第三,用宿主數(shù)據(jù)中已標(biāo)識的值對來生成附標(biāo),去抽取嵌入的數(shù)據(jù)。
抽取嵌入的數(shù)據(jù)的過程與上面相反,放置在圖象中的附標(biāo)在嵌入階段時規(guī)定對值,它包含已嵌入的輔助信息。由于對值已知,根據(jù)附標(biāo)中已給對值的象素位置重新創(chuàng)建輔助數(shù)據(jù)。附標(biāo)數(shù)據(jù)(關(guān)鍵碼)首先用來抽取首標(biāo)信息。它規(guī)定了輔助數(shù)據(jù)的長度和文件名,并使附標(biāo)合法化。如果包含嵌入信息的圖象被修改過,首標(biāo)信息就不會正確引出數(shù)據(jù)。然而,成功的抽取是在一個輸出文件中重新準確地創(chuàng)建輔助數(shù)據(jù)。
按照本發(fā)明的數(shù)據(jù)嵌入原理涉及到某種宿主數(shù)據(jù)值的重新排列,其目的是把即將加入的額外數(shù)據(jù)值進行編碼。為了便于說明本發(fā)明,假設(shè)一個宿主數(shù)據(jù)由8位二進制信息表示,對于每個宿主數(shù)據(jù)實例來說,其值的變化范圍在0和255之間。再進一步假設(shè)一個信號S的噪聲值為N,則N=±S/N,或大約信號值的10%。對于大多數(shù)數(shù)據(jù)而言,噪聲分量可由一個不變值或百分比近似,比如上面提到的10%。宿主數(shù)據(jù)中的兩個值di和dj在噪聲值范圍內(nèi),如果|di-dj|=ε≤N(10)某一值的di的出現(xiàn)頻率或直方圖值是F(di)。滿足方程式10的要求及以f(di)-f(dj)<δ(這里,δ是用于統(tǒng)計等式的容差)的出現(xiàn)頻率出現(xiàn)的宿主數(shù)據(jù)中的數(shù)據(jù)值即為嵌入之用的。di和dj構(gòu)成一對數(shù)據(jù)值Pk.k=0,1,2,....Np。在宿主數(shù)據(jù)里的這些對給出每一對的嵌入位Mk的全部數(shù)量Mk=Σif(di)+Σjf(dj)]]>這里,i和j之和運行到出現(xiàn)在用于表示各個數(shù)據(jù)值的數(shù)據(jù)組f(di)和f(dj)中的頻率極限處。
參見圖2,其中列出了部分打印的C語言計算機編碼。方程式10中的宿主數(shù)據(jù)象素對值(di和dj)的確定是通過圖2的編碼完成的。在圖2中,8位值譯成調(diào)色板表的索引,因此,方程式10中的比較就需要在調(diào)色板上相關(guān)顏色之間進行。調(diào)色板上的入口是紅、綠、藍顏色值,每個都在0~255范圍內(nèi)。
如果以BITMAP圖象格式增加額外信息的話,需要參照以下兩份資料,一是由Levine(1994,J.wiley & sons,New York)編寫的書,名為“圖形文件的編程”。另一個為技術(shù)文章,題為“BMP格式”,由M.Luse撰寫,刊登在1994年第19期P.18 Dr.Dobb′s Journal。
圖2中的分段碼從第1行開始圍繞調(diào)色板上的顏色循環(huán)。循環(huán)索引i用來把每一種調(diào)色板上的顏色用所有其它入口連續(xù)進行測試,以標(biāo)識色彩入口的對數(shù)以滿足方程10規(guī)定的要求。在i循環(huán)中標(biāo)識的顏色都要用另一個索引j通過第二個循環(huán)從第16行開始對調(diào)色板中的所有其它顏色進行測試。第7行提供了具有灰度級調(diào)色板而不是彩色圖象的修改方法。對于灰度級圖象,RGB分量對于每個調(diào)色板入口都是相同的,盡管有些灰級格式包含16色表。
通過將RGB彩色分量轉(zhuǎn)換成相應(yīng)的Hue,Satruation和Intensity(HSI)彩色分量可完成方程式10指出的比較。第12行采用單獨的子程序rgbhsi()來執(zhí)行這一轉(zhuǎn)換,第20行把j循環(huán)中的RGB彩色分量轉(zhuǎn)換成HSI數(shù)據(jù)結(jié)構(gòu)分量,第21行計算HSI系統(tǒng)中的色差,第24行完成方程10所要求的測試。如果色差小于規(guī)定的噪聲值(圖2清單中COLOR NOISE=10),就要做密度差試驗以確定這兩個調(diào)色板入口在小于規(guī)定的噪聲值時可否被接受。在作為備選對值接受入口前要先提出兩個額外的限制條件。首先,在測試(i-循環(huán))值和所有其它(j-循環(huán))值之間的最小色差應(yīng)為色差。其二,所選的對數(shù)必須小于圖象象素行中列數(shù)的一半,以便對值鍵可以存在一行象素中。這是一條算法限制,而并非本發(fā)明所要求。
數(shù)據(jù)結(jié)構(gòu)排列(Pair[])用來保持備選對(i,j)值和它們的全部出現(xiàn)頻率Mk的值。如果圖象是灰度調(diào)色板,第3行的測試就只用來對兩個調(diào)色板入口的密度進行比較。灰度圖象不需要對彩色調(diào)色板進行RGB到HSI的轉(zhuǎn)換。
本發(fā)明的嵌入過程忽略了彩色調(diào)色板入口的飽和度分量中的差別,因為飽和度在彩色圖象中一般不被注意。只有Hue和Intensity分量被限制落入確定的噪聲限度之內(nèi)以確定調(diào)色板對值。
由圖2列出的編碼示出的象素對值一般包含冗余值。同一個象素值i可以在幾個不同的對組合中發(fā)現(xiàn)。因為多個對不能包含相同的調(diào)色板入口(由于象素值的每對組合必須是獨一無二的),所以有必要刪除一些對。根據(jù)方程式10的要求設(shè)置的對數(shù)是以變量而不是以對存儲在第15行。
下面看圖3,列在里面的分段碼說明了是怎樣用單獨子程序刪除重復(fù)的對的。首先按照上面的方程式20的要求,利用圖象的直方圖計算每對中出現(xiàn)的全部數(shù)量。第一行說明i循環(huán)用于計算每對值Mk,其次,根據(jù)在第5行中的Pair[].Count數(shù)據(jù)結(jié)構(gòu)成員的減少順序存貯這些對。在下一行的刪除重復(fù)保留了對Pk,其頻率值Mk保持最大數(shù)量。第10行和以下行用分段編碼發(fā)現(xiàn)的獨特的象素對計算可嵌入到宿主數(shù)據(jù)中的全部字節(jié)數(shù)。
根據(jù)值Mk的減少順序?qū)χ捣诸?,從而把要嵌入一個特定的輔助數(shù)據(jù)流的對數(shù)減少到最低程度。然而,如果對值按隨機順序排列,則嵌入的數(shù)據(jù)的安全性就大大地增強了。將對值順序隨機化是本發(fā)明的一部分。這可以通過重新設(shè)置對值以便通過計算具有整數(shù)索引為pts[k],i,k=0,1,2,…,no_pairs和pts[k],gamma=δ0,δ1,…δr,…δno_pairs(其中,δr為隨機值)的入口的數(shù)據(jù)結(jié)構(gòu)而將順序隨機化的方法而實現(xiàn)。對數(shù)據(jù)結(jié)構(gòu)(pts[])分類以便把隨機值放在上升順序中使索引值隨機化。隨機索引值與上面計算的對值一并使用,以便重新排列表格,從而給出隨機對值順序。
用于調(diào)色板格式圖象的算法允許在不考慮單獨的出現(xiàn)頻率的情況下操縱象素值。參考圖4,另一個分段編碼適用于Truecolor圖象。在這里引入的出現(xiàn)頻率有限制,它可把宿主數(shù)據(jù)直方圖上的嵌入作用減少到最小。
Truecolor圖象包含3幅單獨的8位灰度圖象,分別為紅,綠,藍圖象分量。Truecolor圖象沒有調(diào)色板。三個8位分量可能的組合可給出大約1千6百萬種顏色。本發(fā)明用分別對待每幅RGB分量圖象的辦法向Truecolor圖象嵌入數(shù)據(jù)。所以在混合圖象色上嵌入的作用就保持在各個彩色密度分量的噪聲中。
圖4第2行開始的ip-循環(huán)參照彩色平面(對RGB而言,ip=0,1,2)。每個數(shù)值的變化頻率(從0到255)在數(shù)組hist_values[]中給出,彩色平面直方圖受第7行ip256所偏置。變量fvalue[]保持彩色分量ip的浮點直方圖值。第11行開始一個循環(huán)以限制為幾乎相等的出現(xiàn)頻率所選擇的對。在噪聲限制范圍內(nèi)的象素密度(RANGE)被選作比較統(tǒng)計頻率。統(tǒng)計一致的容差δ在17行是5%,該容差可以在特殊用途中進行調(diào)整。
當(dāng)所有可能的值都受到噪聲限制及統(tǒng)計頻率的測試后,在27行對發(fā)現(xiàn)的對進行了分類,重復(fù)的就刪除,起始索引在第31行加1,搜索繼續(xù)進行。對數(shù)的最大值又一次由算法限制決定,i,j對值必須少于一個圖象行中象素的一半。對于調(diào)色板格式圖象,本發(fā)明的安全性包含使對值入口的隨機化。
采用統(tǒng)計限制可以將嵌入輔助數(shù)據(jù)的宿主圖象作用降低到最小程度。如果容差δ設(shè)在0,則所選的每一對就包含小于在密度分離中噪聲值的數(shù)據(jù)值,并以完全相同的統(tǒng)計頻率出現(xiàn)。設(shè)定容差δ=5%,如圖4的分段編碼所示,就可接受在頻率上接近的象素對,并同時仍然保留大部分宿主數(shù)據(jù)的統(tǒng)計性能。如果有,可通過要求相同出現(xiàn)頻率的方式被發(fā)現(xiàn)的也是極少數(shù)對。
把輔助數(shù)據(jù)實際嵌入到一組宿主數(shù)據(jù)的過程包含了對冗余數(shù)值出現(xiàn)順序的重新排列。由分析發(fā)現(xiàn)的宿主數(shù)據(jù)值對是用于把輔助數(shù)據(jù)的位流編碼進入宿主數(shù)據(jù)的象素值。重要的是要意識到用于嵌入的數(shù)值是已經(jīng)出現(xiàn)在宿主數(shù)據(jù)中的值。本發(fā)明的嵌入過程并不會改變宿主數(shù)據(jù)中數(shù)值的數(shù)量。
在本發(fā)明的嵌入過程中,宿主數(shù)據(jù)按順序進行處理。首先是通過宿主數(shù)據(jù)檢查每個值并測試與象素-對值是否匹配。在宿主數(shù)據(jù)中的匹配值就被恢復(fù)成數(shù)據(jù)結(jié)構(gòu)值,pair[k].i,k=0,1,2,…Np。這一步驟把(圖1)宿主BITMAP圖象恢復(fù)成對值,其相當(dāng)于輔助數(shù)據(jù)中的零。然后通過輔助數(shù)據(jù)檢查將被嵌入的數(shù)據(jù)的順序位,并根據(jù)將被嵌入的輔助位值把宿主數(shù)據(jù)元素的對值設(shè)為i或j。如果正在嵌入的位流是隨機的,則宿主數(shù)據(jù)對值i和j在嵌入過程完成后就會在宿主圖象里以相同的頻率出現(xiàn)。
圖5解釋了完成實際嵌入工作的分段碼,其中包括用于操縱首標(biāo)信息里的數(shù)據(jù)輔助位流,和宿主數(shù)據(jù)文件所必需的大量信息。第1-12行給存儲器定位并啟動變量。即將嵌入的首標(biāo)及位流數(shù)據(jù)表示“數(shù)據(jù)-圖象”,并存在數(shù)組里,data_row[]。宿主數(shù)據(jù)就表示“圖象-數(shù)據(jù)”。
索引Ii用于始于第12行的循環(huán),以統(tǒng)計數(shù)據(jù)-圖象中字節(jié)的位置。這個循環(huán)始于Li=-512,因為首標(biāo)信息在數(shù)據(jù)-圖象字節(jié)之前嵌入。14行包含用首標(biāo)信息對裝入data_row[]所進行的測試。20行包含用從數(shù)據(jù)-圖象文件,磁帶5取出的字節(jié)裝入data_row[]所進行的測試。
第30行啟動一個用于數(shù)據(jù)-圖象字節(jié)內(nèi)的位循環(huán)。變量,位索引=(0,1,2,…7)統(tǒng)計數(shù)據(jù)-圖象字節(jié)內(nèi)的位的位置,數(shù)據(jù)-行(d_inrow),由變量d_inrow的索引。變量Ij檢索宿主圖象中的字節(jié)(象素)。變量,inrow,檢索圖象-數(shù)據(jù)緩沖器,圖象_行[inrow]。第32行是對輸出到圖象-數(shù)據(jù)文件中的嵌入數(shù)據(jù)(一個完整的象素行)進行測試,第40行對完成通過一遍圖象-數(shù)據(jù)的測試。每個象素對pair[k],k=0,1,2,…Np,都要進行一遍圖象-數(shù)據(jù)通過。
在第47行中,對索引被增加。一個臨時的對數(shù)據(jù)結(jié)構(gòu)變量(稱為“pvalue”被用于保持正在被用做嵌入的宿主數(shù)據(jù)圖素的工作對值。第60行刷新圖象-數(shù)據(jù)緩沖器image_row。
嵌入測試在第72行完成。如果image_row(inrow)的內(nèi)容與代表零的數(shù)據(jù)-圖象位的對值相等,那么就沒有變化。圖象-數(shù)據(jù)值保持在“pvalue,i”。然而,如果位流值是1,則圖象-數(shù)據(jù)值變成同等的pvalue,j。第84行把圖象-數(shù)據(jù)值看成不等于嵌入對值,pvalue,i。在這種情況下,位索引量就減少(減1),因為數(shù)據(jù)-圖象位還沒有被嵌入,同時圖象-數(shù)據(jù)索引在增加以檢查下一個宿主數(shù)據(jù)值。
把用于嵌入輔助數(shù)據(jù)-圖象位流的過程逆反就可把已嵌入的數(shù)據(jù)抽取出來。嵌入的圖象-數(shù)據(jù)組的直方分析將會暴露出抽取的備選對,因為只有在這種情況下,單獨的統(tǒng)計頻率不會被嵌入過程改變。圖2-5的編碼中,統(tǒng)計頻率受到嵌入過程的輕微改變。用于嵌入的對表格可利用分析原始圖象-數(shù)據(jù)重新創(chuàng)建,但它一般不能準確地從已嵌入的圖象-數(shù)據(jù)中發(fā)現(xiàn)。
此外,已如上文所描述的那樣,本發(fā)明包括對-值的順序隨機化處理,因此在事先不了解對值順序的情況下,就大大地增加了用于抽取已嵌入的數(shù)據(jù)所必需的分析量。
如前面所述,為嵌入所選擇的有序?qū)?gòu)成了從圖象-數(shù)據(jù)里抽取數(shù)據(jù)-圖象的“密匙(key)”。圖2-5中的編碼表說明嵌入分析怎樣把宿主數(shù)據(jù)中的噪聲成分的統(tǒng)計性能簡化成一張數(shù)值對表。密鑰——對在抽取嵌入的數(shù)據(jù)時是需要的,但它們不能在嵌入過程完成之后靠分析宿主數(shù)據(jù)生成。然而,“密鑰”可以從原始的,未被修改過的宿主數(shù)據(jù)中重新生成。所以,正在嵌入的數(shù)據(jù)類似于一次插入的加密器,可為已嵌入的位流提供極其安全的措施。
由于對表已知,抽取處理包括按順序測試象素值以便為首標(biāo)信息和數(shù)據(jù)-圖象重新建立輸出位流。在本項發(fā)明中,在可以進行抽取處理時也可將對表插入到主圖象-數(shù)據(jù)中??蛇x擇地,本發(fā)現(xiàn)允許隨意移動對表并以單獨的文件進行存儲。一般來說,對表的大小范圍在幾個到幾百個字節(jié)。表的允許最大尺寸是象素行長度的一半。隨著對表消失,只要原始宿主圖象-數(shù)據(jù)不能獲得,嵌入的數(shù)據(jù)就是安全的。因此,嵌入法接近一次插入加密法可保證數(shù)據(jù)的安全。
另一個保護對表的方法是移動密鑰并用公共密鑰或另一個加密手法對其進行加密。本發(fā)明可使加密后的密鑰放在宿主圖象-數(shù)據(jù)中,防止未授權(quán)者抽取。
把輔助數(shù)據(jù)嵌入到宿主中會稍微改變用于編碼位流的象素值的統(tǒng)計出現(xiàn)頻率。壓縮或加密嵌入數(shù)據(jù)是絕好的偽隨機輔助位流。結(jié)果,使得具有偽隨機性能的嵌入輔助數(shù)據(jù)將嵌入對中的值的平均出現(xiàn)頻率的變化減少到最低限度。嵌入沒有壓縮或加密的字符數(shù)據(jù)大大降低了本發(fā)明可提供的安全性。
嵌入數(shù)據(jù)的存在不易通過分析嵌入數(shù)據(jù)的圖象-數(shù)據(jù)所察覺。當(dāng)談到密碼方法時,數(shù)據(jù)的嵌入是把數(shù)據(jù)-圖象及圖象-數(shù)據(jù)卷積在一起。被嵌入的原始數(shù)據(jù)-圖象位流代表一份明文。把宿主和嵌入的數(shù)據(jù)合并起來就在宿主的噪聲分量里插入了一份密文。然而密文的存在并不明顯,因為宿主載體信息的內(nèi)容及意義受到了本發(fā)明所披露技術(shù)的保護。根據(jù)本發(fā)明進行的數(shù)據(jù)嵌入與加密不同,因為沒有生成明顯的密文。
不熟悉“明文”、“密文”術(shù)語的人可參考B.Schneier的書“應(yīng)用密碼協(xié)議、算法及原碼”。此書的內(nèi)容結(jié)合于此作為參照文件。
正如前面所提到的那樣,本發(fā)明在把輔助信息嵌入到傳真數(shù)據(jù)中是很有用處的。在前面有關(guān)輔助信息嵌入到圖象宿主數(shù)據(jù)的討論中,可以得知噪聲分量產(chǎn)生于象素數(shù)據(jù)的數(shù)值不確定性,或是在調(diào)色板的彩色值中。傳真?zhèn)鬏攲嶋H是發(fā)送包含黑白BITMAP數(shù)據(jù)的圖象,也就是說,來自圖象象素的數(shù)據(jù)是分別代表黑或白的二進制(0,1)值,而噪聲的作用要么增加象素,要么從數(shù)據(jù)中移去象素。所以本發(fā)明以雙色BITMAP的形式處理傳真黑白BITMAP圖象。
辦公室通用的傳真機是將掃描儀和通過電話線傳輸圖象所需的數(shù)字硬件和軟件結(jié)合在一起。使用專門的調(diào)制解調(diào)器協(xié)議進行圖象傳輸,其特點是獲得此技術(shù)的途徑極其多。例如,在EXP Modem用戶手冊中就對膝上型計算機的傳真/數(shù)據(jù)調(diào)制解調(diào)器進行了描述。計算機之間的傳真?zhèn)鬏斒菙?shù)字通訊,因此,這樣的數(shù)據(jù)適合數(shù)字嵌入。
正如以上談?wù)摰挠嘘P(guān)數(shù)據(jù)嵌入到圖象的處理,傳真嵌入過程是按兩個階段進行的分析和嵌入。在傳真雙色BITMAP時,圖象噪聲要么增加,要么就從圖象中去掉白象素。由于這一點,依次的相同象素的運行長度就有變化。
在雙色BITMAP圖象里,掃描過程通過在源拷貝中由相繼的黑色象素運行來代表白色行。在該運行中的象素數(shù)量是不定的,至少±1,這是由于掃描儀的分辯率及原始材料不確定地向黑-白BITMAP格式轉(zhuǎn)換所造成的。
這里所舉的數(shù)據(jù)嵌入到雙色BITMAP數(shù)據(jù)的例子包含分析BITMAP來確定相繼象素運行的統(tǒng)計出現(xiàn)頻率或直方圖。本發(fā)明的嵌入處理根據(jù)輔助數(shù)據(jù)-圖象中的位流內(nèi)容改變象素(0,+1)運行長度。適合嵌入的宿主數(shù)據(jù)是任何一幅雙色BITMAP圖象,它的大小是按傳真?zhèn)鬏斣O(shè)計的。傳真?zhèn)鬏數(shù)挠部截惪梢员粧呙枭呻p色BITMAP,或是利用計算機內(nèi)的傳真打印機驅(qū)動軟件生成的圖象。
傳真嵌入處理由分析象素每一行的運行長度開始。這一步驟的完成情況由圖6的分段碼解釋。程序rowstats()的變量是在一行象素數(shù)據(jù)的指針,它包括每個象素一個字節(jié),既可為零也可是1;指向統(tǒng)計頻率數(shù)組的指針;數(shù)據(jù)行中象素列的數(shù)量;以及用于內(nèi)部程序任選的標(biāo)記。任選標(biāo)記是將被嵌入的輔助位流塊或包的尺寸,任選標(biāo)記已在第9行被測試,程序Packet_col()用于正向任選標(biāo)記。此程序列在圖7的編碼表中,其目的是確保數(shù)據(jù)行中的第一個象素按偶列數(shù)開始。這行的第一個象素位置標(biāo)志數(shù)據(jù)包的起始,這一切將在下面詳細描述。
第12行是一個循環(huán),用來檢查數(shù)據(jù)行里的象素運行。在規(guī)定的值MINRUN和MAXRUN之間的運行由這個循環(huán)來檢查。在15行中的j-循環(huán)給象素運行定位并給運行起始索引設(shè)立變量K。21行的測試只選擇長度短于行長度的象素塊。22行里的循環(huán)將象素運行移到數(shù)組塊[]的暫時存儲中。
24行和25行處的兩個測試拒絕有運行長度的塊,而不是i-循環(huán)的當(dāng)前值所需的塊。嵌入方案選擇長度為i的塊,為了嵌入數(shù)據(jù)則增加一個象素使長度變成i+1。根據(jù)輔助嵌入數(shù)據(jù)的位流,這樣就可以保證運行包含或i或i+1的非零象素值。如果存儲在變量塊[]數(shù)組里的運行沒有在至少兩個零里結(jié)束,則它就不可作為i+1長度運行被接受。編碼轉(zhuǎn)移到NEXT,以檢查下一個運行。
28行開始一個循環(huán)以統(tǒng)計運行中的象素數(shù)量。被發(fā)現(xiàn)的數(shù)在第31行被增加1,使運行長度等于i+1。第33行包括一個測試,用來保證所選的運行有正確的長度。運行長度索引i的直方圖[]數(shù)組被增加以計算運行的出現(xiàn)頻率。用于運行的數(shù)據(jù)行字節(jié)由36行的循環(huán)作標(biāo)志,用一個字母代碼區(qū)分設(shè)址運行。這一標(biāo)識技術(shù)使嵌入數(shù)據(jù)能容易地確定嵌入位流所用的運行。在這條程序的出口上,數(shù)據(jù)行字節(jié)包含用字母代碼標(biāo)志的運行以便為嵌入位流指明可使用的象素位置。返回值是位于數(shù)據(jù)行中的運行數(shù)量。零返回說明在MINRUN和MAXRUN的規(guī)定范圍內(nèi)沒有運行被設(shè)址。
傳真調(diào)制解調(diào)器協(xié)議強調(diào)速度,因此不包括糾錯。由于這個原因,根據(jù)電話線的質(zhì)量及傳輸速度,傳真?zhèn)鬏斎菀讈G失信息,產(chǎn)生沖擊噪聲,并且丟失數(shù)據(jù)。由于有成功的嵌入技術(shù),本發(fā)明可以彌補圖象數(shù)據(jù)的一部分損失。為了完成這一目的,調(diào)制解調(diào)器塊協(xié)議中的各種各樣內(nèi)容被用于嵌入首標(biāo)和輔助數(shù)據(jù)。雙色圖象被當(dāng)成一個傳輸媒體,數(shù)據(jù)被嵌入到塊或包中,用于包-起始標(biāo)識和奇偶檢查。包起始由具有在偶列中的第一個象素的圖象行表示。當(dāng)包含在塊里的位數(shù)被抽取時,或在訛誤的軟件包中,當(dāng)包-起始標(biāo)識被定位在一行時,軟件包結(jié)束。奇偶檢查結(jié)果及包順序號與數(shù)據(jù)一起嵌入到包里。使用這種方法,傳真?zhèn)鬏斨械腻e只會導(dǎo)致一部分而不是全部嵌入數(shù)據(jù)的損失。
由于傳輸錯造成的數(shù)據(jù)丟失量取決于源圖象中象素的密度及丟失信息的長度。按每包20字節(jié)算,一個標(biāo)準文本在傳輸中會導(dǎo)致一到兩個數(shù)據(jù)包丟失。一般來說,一項成功的發(fā)明會考慮傳真宿主圖象信息的清晰度。
現(xiàn)在回到圖7,里面所列的步驟是用來啟動雙色BITMAP行,以便為每個包的起始設(shè)立標(biāo)志。雙色圖象中的每行包含一個起始于偶列(包起始)或是奇列(包連續(xù))的非零值。
在圖7中,可以看到第四行起始于一個在數(shù)據(jù)行里運行的象素數(shù)的循環(huán)。在傳真圖象中,零象素值指黑色空間,1指白色空間。第5行把第一個黑色空間放在該行的數(shù)據(jù)中。如果變量packet_size是正的,則列索引被測試成偶數(shù),同時圖素被強制代表白色空間。如果packet_size變量是負的,程序就會在不做任何變動的情況下返回到數(shù)據(jù)行標(biāo)識的指針上。如果packet_size大于零,則第一數(shù)據(jù)行元素就表示白色空間。第11行處理是當(dāng)packet_size等于零的情況,并指出連續(xù)行。在連續(xù)行中,第一數(shù)據(jù)行元素被迫表示黑色空間。由17-20行子程序返回的值說明被檢查的象素行的性質(zhì)。
圖8的分段程序提供了嵌入雙色BITMAP傳真圖象的輔助數(shù)據(jù)。一行中的象素按上述辦法處理,在它被分析及用數(shù)字代碼進行標(biāo)識后檢查數(shù)據(jù)行的內(nèi)容,以說明運行長度。第1至49行是對雙色BITMAP圖象里象素索引Ij做的大循環(huán)(未示出)的一部分。1-26行負責(zé)從雙色BITMAP里讀一行象素,并在第1行變量nrow里存儲圖象的行數(shù)。象素值位被解碼并在第12-36行中擴展成image_row[]數(shù)組。image_row[]數(shù)組包含以每節(jié)字一個值(0或1)存貯的象素值。
第28行用packet_col[]程序返回該行的包索引。如果28行的j是零,這行就是packet_start行,如果j是1,這行是連續(xù)行。29行使用roustats()程序為行緩沖器內(nèi)的象素指定運行-長度字母標(biāo)志。返回值i給出在圖象行設(shè)址的運行數(shù)量。常規(guī)試驗在31,37,和41行完成。索引Kp給出了一個數(shù)據(jù)包內(nèi)的象素行數(shù)。如果Kp是0,這行必定是packet_start索引,如果Kp>0,這行必定是連續(xù)行。第49行完成雙色圖象數(shù)據(jù)的讀和預(yù)處理過程。
數(shù)據(jù)-結(jié)構(gòu)數(shù)組,pair[]包含(i)的運行長度,擴充運行長度(i+1)及雙色BITMAP圖象中的全部運行數(shù)。在始于51行的循環(huán)中的索引k是正被嵌入的運行長度索引。索引inrow計算在圖象行緩沖器及變量內(nèi)的象素。位索引是位流字節(jié)內(nèi)的位-位置索引。
57行為變量testltr中的運行長度字母代碼設(shè)定值。圖象象素值用58行的字母代碼進行測試。如果測試字母代碼標(biāo)識設(shè)定位置,第60行就把這行中的索引推到正用于嵌入的象素運行之尾。62行中的測試功能是檢查位流包字節(jié)中當(dāng)前位索引的值。如果此值為1,則運行中的最后一個象素就設(shè)為1,否則就設(shè)為0。
尾隨一個運行設(shè)定象素值便可完成雙色BITMAP圖象的嵌入工作,其方法是根據(jù)包數(shù)據(jù)內(nèi)的偽隨機位流引入生成的噪聲。在image_row數(shù)組數(shù)據(jù)打包和寫回BMP格式文件之前,通過調(diào)用圖8的rowstats()而把被寫入行緩沖器中的字母標(biāo)識值重新設(shè)置成二進制單位。完成這項任務(wù)的過程雖未在圖8中描述,但對熟悉此技術(shù)的人來說是可以理解的。
根據(jù)本發(fā)明,要想把已嵌入到雙色BITMAP傳真圖象中的數(shù)據(jù)抽取出來,只有在計算機接受到傳真圖象后才能完成。圖象數(shù)據(jù)由接收計算機以文件格式存儲(很可能是傳真壓縮格式),這就需要把圖象轉(zhuǎn)換成BITMAP格式并抽取已嵌入的數(shù)據(jù)。送到標(biāo)準辦公機器上的傳真數(shù)據(jù)對所抽取的數(shù)據(jù)是不可修改的,因為打印出的圖象質(zhì)量不足以靠掃描來發(fā)現(xiàn)被嵌入的數(shù)據(jù)。
然而,本發(fā)明的確使用了掃描/打印傳真機,它是靠計算機硬件內(nèi)部處理數(shù)據(jù)。已嵌入的輔助數(shù)據(jù)在將宿主數(shù)據(jù)掃描之后,但在傳輸之前才被插入。這些數(shù)據(jù)在被接受以后,可在打印之前被抽取。
雙色圖象嵌入的密鑰可通過分析已嵌入數(shù)據(jù)的圖象找到,因為運行長度并未與原始(i,i+1)值有變。凡是被使用過的值,其順序取決于圖象中的出現(xiàn)頻率。以調(diào)色板圖象為例,值的密鑰及用于嵌入的對的順序插入到傳真中。然而,嚴格地講密鑰不是必不可少的,因為原則上講,規(guī)定值MINRUN和MAXRUN允許重新計算接收圖象上的運行長度統(tǒng)計。在實際操作中是需要密鑰的,因為在傳真調(diào)制解調(diào)器通信聯(lián)系中,傳輸誤差可能引入新的運行長度,它可以改變圖象的統(tǒng)計性能,因為對順序是不知的。即使傳真嵌入與向調(diào)色板圖象中嵌入輔助數(shù)據(jù)相比安全性有些低,但雙色BITMAP傳真數(shù)據(jù)嵌入仍然被認為類似于一次插入加密。
以上就本發(fā)明中詳細內(nèi)容所進行的描述目的是為了解釋和說明其功能,而絕非限制其用途。很明顯,許多修改和變化會依照上述解釋來做。所選的及所描述的具體內(nèi)容是為了使熟悉本技術(shù)的人能更好地理解本發(fā)明的原理及實際用途,并在實際運用中使用并根據(jù)實際情況進行修改。本發(fā)明的范圍由所附權(quán)利要求書限定。
權(quán)利要求
1.一種將輔助數(shù)據(jù)嵌入到宿主數(shù)據(jù)中的方法,其特征在于包括以下步驟生成該宿主數(shù)據(jù)的數(shù)字表示,該宿主數(shù)據(jù)以具有數(shù)值并包含噪聲分量的元素形式出現(xiàn);以單獨位值的順序形式生成該輔助數(shù)據(jù)的數(shù)字表示;計算該宿主數(shù)據(jù)的所述數(shù)字表示中的噪聲分量;用該噪聲分量與該元素對進行比較以確定具有數(shù)值的該元素的對數(shù),所述數(shù)值小于所述噪聲分量的值;從所述元素對中取出大體相等的值替換所述元素的單個值,以便把相當(dāng)于該輔助數(shù)據(jù)位值順序的所述輔助數(shù)據(jù)的單個位值嵌入;以及把所述宿主數(shù)據(jù)和已嵌入宿主數(shù)據(jù)的輔助數(shù)據(jù)以一個文件形式輸出。
2.根據(jù)權(quán)利要求1所述的方法,還包括在完成該輔助數(shù)據(jù)的數(shù)字化后把該輔助數(shù)據(jù)與預(yù)先確定的信息組合在一起的步驟,其中,所述信息指示所述輔助數(shù)據(jù)、其文件名、以及文件的大小。
3.根據(jù)權(quán)利要求1所述的方法,還包括確定嵌入該輔助數(shù)據(jù)到該宿主數(shù)據(jù)的協(xié)議,它可以驗證從該宿主數(shù)據(jù)中抽取的該輔助數(shù)據(jù)。
4.從包含噪聲分量的宿主數(shù)據(jù)中抽取已嵌入的輔助數(shù)據(jù)的方法,其特征在于包括以下步驟從所述宿主數(shù)據(jù)中抽取指示所述已嵌入的輔助數(shù)據(jù)的一個位順序,用以驗證所述宿主數(shù)據(jù);解釋該宿主數(shù)據(jù)并確定宿主元素對,該宿主元素對小于該噪聲分量,并相當(dāng)于該輔助數(shù)據(jù)的位值;利用該位順序標(biāo)識該輔助數(shù)據(jù);以及以一個文件形式抽取該輔助數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括一幅彩色照片。
6.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括一幅黑白照片。
7.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括電視信號。
8.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括一幅畫。
9.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括傳真?zhèn)鬏敗?br>
10.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括身份證。
11.根據(jù)權(quán)利要求1所述的方法,其中所述的宿主數(shù)據(jù)包括數(shù)字音頻信息。
全文摘要
一種將輔助數(shù)據(jù)嵌入一組宿主數(shù)據(jù)(例如照片,電視信號,傳真?zhèn)鬏?,或身份證)的方法。所有這類宿主數(shù)據(jù)都包括固有噪聲,允許幾乎相同并且其值小于噪聲值的宿主數(shù)據(jù)中的象素被操縱并由輔助數(shù)據(jù)置換。由于嵌入方法并未改變宿主數(shù)據(jù)的元素值,因此輔助數(shù)據(jù)基本不影響宿主數(shù)據(jù)的外形和解釋。通過實際為逆向的處理,嵌入的數(shù)據(jù)可由授權(quán)的用戶容易地檢索。
文檔編號H04N7/52GK1146817SQ96190120
公開日1997年4月2日 申請日期1996年2月22日 優(yōu)先權(quán)日1995年2月23日
發(fā)明者麥克斯韋·T·桑德福特Ii, 塞歐德爾·G·韓德爾 申請人:加里福尼亞大學(xué)董事會