專利名稱:基于字符拓撲結構的文本數字水印技術的制作方法
技術領域:
本發明屬于通信與信息工程領域,具體涉及到數據的隱藏、數據的編碼與解碼、數字水印技術。
背景技術:
數字水印技術是信息隱藏技術領域的一個重要組成部分,它將具有特定意義的信息(數字水印信息),利用數字嵌入方法隱藏在各種數字圖像、聲音、視頻、文本數字產品中。這些帶有數字水印信息的電子產品一方面可以不易被感知地正常使用,另一方面,通過特定的技術手段可以檢測出嵌入在這些數字產品中的數字水印信息。數字水印技術廣泛應用在數字產品的版權保護、內容驗證與防偽、防止非法拷貝、操作跟蹤、秘密數據通信等眾多流域。按照數字水印載體的不同,數字水印可分為圖像數字水印、聲音數字水印、視頻數字水印和文本數字水印等主要的幾個種類。本發明涉及的主要是文本數字水印領域,其特點是水印信息隱藏在由字符為主要組成元素的文本文件中。
如綜述文章“文本數字水印”(中文信息學報,第15卷,第5期,作者黃華、齊春、李俊、朱偉芳)所述,現有的文本數字水印技術集中在利用文本文件的格式信息來保存數字水印信息。該論文主要講述了利用文本的字間距、行間距進行編碼來嵌入水印信息。這種思路的缺陷在于對于利用字間距、行間距的編碼方法,以拉丁字母為基礎的語言體系(如英語)有一定的優勢,但對于類似中文這樣以方塊文字為基礎的語言,由于不存在英文意義下的字間距,水印的嵌入比較困難。同時,對利用字間距編碼的水印信息進行檢測的誤差較大,而利用行間距編碼的水印技術攜帶的水印信息較少。
文章“基于文本的信息隱藏技術”(計算機應用研究,2003.10,39~41,作者曹衛兵 戴冠中 夏煜 慕德俊)主要講述了以標點信息編碼、字符的字體編碼來攜帶水印信息的技術。其缺點在于由于文本文件中標點符號相對較少,所以利用標點信息編碼攜帶信息較少。利用字符的字體編碼的文本數字水印技術的主要問題在于檢測以印刷品文件為載體文件的水印信息很困難,文中沒有提及在這種情況下的檢測方法。
上述兩篇文章均提及了利用字符的特征編碼來保存數字水印信息的技術,主要涉及了改變部分字符筆劃的長度或整個字符的高度來嵌入水印信息。該項技術的主要問題同樣是對以印刷品文件為載體文件的水印信息的檢測很困難,同時會帶來較大的視覺影響。
如文章“二值文本數字水印技術的研究與仿真”(系統仿真學報,VOL.16 No.3,2004.3,作者王慧琴、李人厚)所述,另一種主要的現有文本數字水印技術的思路是將文本文件轉換為圖像文件,按照圖像數字水印技術提供的方法進行水印信息加載。該方法的缺點是不能用大多數的文字處理軟件進行帶有水印信息的圖像電子文件的顯示和處理。
如文章“Techniques for data Hiding”(IBM Systems Journal,1996,35(3&4),Bender W,et al.)所述,另外一種現有的文本數字水印技術,通過對文本中的特定詞組進行同義詞替代,對同義的不同詞匯進行編碼,用于加載水印信息。這種技術的缺點是難以為所有的詞匯找到恰當的同義詞,造成文本可嵌入水印信息的容量相當有限,畢竟不是每一個詞匯都有與之對應的同義詞。
專利申請號為00805218.2,專利名稱為“元信息的不可見的編碼”(申請人皇家菲利普電子有限公司,發明人K.埃亨,進入中國日期2001.09.18)提供了一種專利文本數字水印技術。該技術對不可見符號(如空格、回車、制表符號等)出現的順序進行編碼,然后將這些不可見的符號嵌入到文本文件中用于表示數字水印信息。由于水印信息集中在不可見符號上,該項技術只能用于載體文件為電子文件的情況,不能用于載體文件為印刷品文件的情況。同時,文本文件中大量的可見符號沒有加載水印信息,水印信息分布不均勻,所以,用這種方式加載的水印信息極易被攻擊者去除。
專利申請號為200410040307.0,專利名稱為“以符號的冗余編碼攜帶隱藏信息的文本數字水印技術”(申請人劉東,發明人劉東,申請時間2004.7.26,待授權中。)提供了另一種專利文本數字水印技術。該技術對字符進行冗余編碼,并結合相應的字體文件進行數字水印信息的顯示和處理。對于載體文件為電子文件的情況,該方法較好地實現了水印信息的嵌入、顯示與檢測。對于載體文件為印刷品文件的情況,其本質是基于字符字體編碼的技術,該方法僅較好地解決了數字水印信息的嵌入問題,數字水印信息的檢測仍然很困難。
發明內容
本發明的目的是提供一種利用字符(串)的拓撲結構攜帶隱藏水印信息的文本數字水印技術,用于解決現有文本數字水印技術中出現的諸如水印信息給用戶帶來的視覺上的影響較大、載體文件攜帶水印信息的容量小、印刷品數字水印信息檢測困難等問題。本發明的技術對于數字水印信息的載體文件為電子文件、印刷品文件的情況均適合。
本發明的基本原理在于通過適當改變字符(串)的拓撲結構,設計出語義上相同的字符(串)的多種字形,并對基于字符(串)字形拓撲結構的字形特征進行恰當的編碼,利用字符(串)字形的編碼來嵌入數字水印信息,從而構成一種新的文本數字水印技術。
本發明包括如下緊密相關的內容(1)用于攜帶數字水印信息的將同一字符(串)設計成多種字形的方法;(2)若干種對同一字符(串)的多種字形進行編碼的方法;(3)若干種對多個字符(串)的多種字形進行統一編碼的方法;(4)基于對多個字符(串)的多種字形分別編碼的文本數字水印技術;(5)基于對多個字符(串)的多種字形統一編碼的文本數字水印技術;(6)一種協調水印信息檢測效果與水印信息對人視覺影響的方法。用于攜帶數字水印信息的將同一字符(串)設計成多種字形的方法主要的設計思想是通過適當改變字符(串)的拓撲結構,從而設計出語義上相同的同一字符(串)的多種字符(串)外形。其中,較為自然的字形設計方法是通過改變組成字符(串)的各筆劃之間的連斷關系來改變字符(串)的拓撲結構。但不僅限于此,任何改變字符(串)拓撲結構的方法都可行,只要這種改變對于人的視覺識別能力來說,不至于引起字符(串)本身語義上的混淆。
字符(串)字形設計方法應綜合考慮以下因素1)字形編碼的因素在實際的數字水印系統中,字符(串)字形的設計應與本發明特定的編碼方法結合起來,針對特定的字符(串)字形編碼方法來設計相應的字形拓撲結構。通用的設計原則是字符(串)字形拓撲結構的改變可以導致在特定編碼方法下的不同編碼。在字符(串)的多種字形的設計中,應充分考慮編碼的因素,設計出合適的字形,獲得盡可能多的編碼,從而解決字符(串)攜帶水印信息所需容量的問題。
2)字形字體風格的因素字符(串)字形的設計還應充分考慮到字形字體風格的因素。一方面,在載體文件中,通常要求攜帶數字水印信息的字符(串)之間有相同的字體風格,從而減小因攜帶水印信息帶來的視覺上的影響。這不僅要求同一字符(串)的不同字形之間,字形的高度、寬度及字體風格應基本相同,而且多個字符(串)的多種字形之間也應有相似的高度、寬度和相同的字體風格。另一方面,由于原載體文件的字符本身可能有不同的字體風格(例如有宋體、楷體之分),所以,還應考慮針對不同的字體風格,為同一字符(串)設計有相同拓撲結構、但有不同字體風格的字形。在本發明中,字符(串)字形的拓撲結構及其編碼方法確定后,其攜帶的水印信息的檢測方法也確定了。設計有相同拓撲結構、但有不同字體風格的字形,為本發明的字形設計方法在不改變水印信息檢測方法的情況下提供了一種擴展性。在字符(串)的多種字形的設計中,應充分考慮字形字體風格的因素,從而解決減少視覺影響和字形設計的擴展性問題。
在實際的應用系統中,應針對不同的應用背景,綜合考慮上述因素進行字符(串)字形的設計。本發明推薦的設計規則是
(1)首先應根據應用情況確定特定的編碼方法,并針對該編碼方法來改變字符(串)字形的拓撲結構,這種拓撲結構的變化應盡可能對應不同的編碼,從而增大字符(串)攜帶數字水印信息的容量。
(2)對于同一字符(串)的不同編碼對應的多種字形來說,應設計出一組高度、寬度及字體風格基本相同的字形。例如,某一字符(串)的不同編碼對應的多種字形均為宋體風格,其字形高度、寬度相似,只是這些字符(串)字形的拓撲結構不同。這種設計主要應用于同一字體風格的載體文件攜帶數字水印信息的情況,例如,整個載體文件的字符都只有一種字體——宋體。
(3)考慮到擴展性,相同編碼的同一字符(串)的字形也應有不同的字體風格。例如,某一字符(串)的相同編碼對應的多種字形有多種字體風格(例如宋體、楷體、仿宋體等)。這種設計主要應用于不同字體風格的載體文件攜帶數字水印信息的情況,例如,載體文件中的字符(串)有的是宋體,有的是楷體,甚至同一字符(串)在一個地方是宋體,在另一個地方是楷體。
需要特別說明的是,對字符字形的設計方法可以類似地推廣到字符串字形的設計中。這種情況下,將整個字符串看作一個整體來改變整個字符串的拓撲結構,不但可以改變組成字符串的單個字符的拓撲結構,還可以通過改變組成字符串的各字符之間的連斷關系來改變字符串的拓撲結構,從而為字符串設計出多種拓撲形狀,并使用字符串不同拓撲結構的字形來攜帶數字水印信息。在利用字符攜帶數字水印信息的方法中,攜帶水印信息的最小載體單位為單個的字符,而在利用字符串攜帶數字水印信息的方法中,攜帶水印信息的最小載體單位為多個字符組成的字符串。這兩種方法中的字形設計思想及編碼規則沒有本質的不同,可以將字符串看成一個有復雜拓撲結構的字符。
在實際的文本數字水印系統中,如果希望以字符串為單位攜帶數字水印信息,本發明推薦將多個字符組成的完整單詞(組)作為攜帶數字水印信息的基本單位,字符串字形的設計也針對完整的單詞(組)進行設計。以拉丁字母為基礎的語言(如英語)較為適合利用字符串攜帶數字水印信息,通常以手寫體、草書體的字形來實現;同時,對于漢語、韓語等以方塊字為基礎的語言,可以設計有美術字體風格(或手寫體、草書體)的字形來攜帶數字水印信息。
若干種對同一字符(串)的多種字形進行編碼的方法本發明的本質在于通過語義上相同的字符(串)的不同拓撲結構的字形來表示隱藏信息,這需要對不同拓撲結構的字形進行編碼,本發明的基本編碼規則是相同拓撲結構的字符(串)字形有相同的編碼,不同拓撲結構的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。通常,應盡可能的將不同拓撲結構的字形編為不同的碼值。
以下是遵守上述規則的6種具體的編碼方法及其若干種的變形編碼方法。
1)基于“圖”結構的編碼方法本方法包括以下步驟(1)按照一定的規則將字符(串)字形映射為數學學科“圖論”中定義的“圖”。
一種具體的規則是將字符筆劃的頂點、交叉點、拐點等特征點映射為數學學科“圖論”中定義的“圖”的節點(端點),而連接這些特征點(頂點、交叉點、拐點等)之間的筆劃映射為“圖”的邊。這樣,可以將字符(串)的字形映射為“圖論”中定義的無向“圖”。字符(串)的字形與“圖”是多對一的映射關系,即一個字符(串)的字形映射到一個“圖”上,而一個“圖”可能映射為多個字符(串)字形。還可在無向圖的基礎上,加入特定的空間順序規則(例如從左到右,從上到下等),將字符(串)字形映射為有向圖。
(2)同構的“圖”對應的字符(串)字形有相同的編碼,不同構的“圖”對應的字符(串)字形的編碼不能完全相同(即至少要有兩個不同的編碼)。
在步驟(1)所得的同一個字符(串)的不同字形對應的多個“圖”中,有可能出現其中一些“圖”是同構的(按照“圖論”中對同構的定義),編碼時應將同構的“圖”對應的字符(串)字形編碼為相同的碼。通常,應將不同構的“圖”對應的字符(串)字形編碼為不同的碼,以盡量提高字符(串)攜帶水印信息的容量。但是,考慮到在實際的文本數字水印系統中,多個不同的字符(串)攜帶信息的容量最好相同,以及希望字符(串)字形的編碼個數是圓整的(例如,通常要求是2的倍數或以2為底的冪指數)等因素,允許多個不同構的“圖”對應的字符(串)字形有相同的編碼。為了保證字符(串)至少有一位二進制的水印信息攜帶容量,則至少要有兩個不同構的“圖”對應的字形有不同的編碼,即攜帶數字水印信息的字符(串)字形至少要有兩個不同的編碼狀態。
2)基于獨立連通區域個數的編碼方法本方法針對字符(串)字形包含的獨立連通區域(即相互之間不連通的那些連通區域)的個數進行編碼。字符(串)字形的獨立連通區域個數等于該字符(串)字形對應的“圖”的分量個數。
編碼的規則考慮到與“基于圖結構的編碼方法”步驟(2)相同的原因,仍然是相同獨立連通區域個數的字符(串)字形有相同的編碼,不同獨立連通區域個數的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
“基于圖結構的編碼方法”需要對不同“圖”之間的同構性進行判斷,而“圖”的同構判斷算法在數學理論上計算復雜性較高(為NP問題)。雖然字符(串)字形對應的“圖”通常不會太復雜,直接利用現有“圖”的同構判斷算法進行處理是可行的,但處理過程仍然相對復雜。本編碼方法是對“基于圖結構編碼方法”的簡化方法。
3)基于獨立連通區域個數與獨立封閉區域個數的組合集合的編碼方法一些特定的字符(串),特別是漢語、韓語等語言的字符(串),存在一個或多個由筆劃圍成的封閉區域。此外,采用本發明的字符(串)字形設計方法,也可為一些特定的字符(串)設計出由字符(串)字形筆劃圍成的封閉區域。本編碼方法針對字符(串)字形包含的獨立連通區域個數與字符(串)字形包含的獨立封閉區域個數兩者的組合集合進行編碼。
編碼的規則考慮到與“基于圖結構的編碼方法”步驟(2)相同的原因,仍然是相同的組合集合對應的字符(串)字形有相同的編碼,不同的組合集合對應的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
與單獨“基于獨立連通區域個數的編碼方法”相比,本方法提供了更大的靈活性和更多的編碼空間。
4)基于獨立連通區域個數與獨立封閉區域個數的和的編碼方法本方法針對字符(串)字形包含的獨立連通區域個數與字符(串)字形包含的獨立封閉區域個數之和進行編碼。
編碼的規則考慮到與“基于圖結構的編碼方法”步驟(2)相同的原因,仍然是獨立連通區域個數與獨立封閉區域個數之和相同的字符(串)字形有相同的編碼,兩者之和不同的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
與“基于獨立連通區域個數與獨立封閉區域個數的組合集合的編碼方法”相比,本方法更簡單。
5)基于對獨立連通區域個數除以整數后的余數進行編碼的方法本方法針對字符(串)字形包含的獨立連通區域個數除以整數后的余數進行編碼,余數相同的字符(串)字形有相同的編碼,余數不同的字符(串)字形有不同的編碼。
本方法中整數的取值是靈活的,當整數取2時,本方法等價于對獨立連通區域個數的奇偶性進行編碼。獨立連通區域個數為奇數的字符(串)字形之間有相同的編碼,獨立連通區域個數為偶數的字符(串)字形之間也有相同的編碼,但獨立連通區域個數奇偶性不同的字符(串)字形之間的編碼是不同的。本方法中,整數的取值范圍在2~4之間較為合適,從簡單易用的角度,本發明推薦整數的取值為2或4。
6)基于對獨立連通區域個數與獨立封閉區域個數之和除以整數后的余數進行編碼的方法本方法針對字符(串)字形包含的獨立連通區域個數與字符(串)字形包含的獨立封閉區域個數之和除以整數后的余數進行編碼,余數相同的字符(串)字形有相同的編碼,余數不同的字符(串)字形有不同的編碼。
與前述僅針對獨立連通區域個數除以整數后的余數進行編碼的方法相比,本方法提供了更大的靈活性,但本質上是相似的。本方法中,整數的取值范圍在2~8之間較為合適,從簡單易用的角度,本發明推薦整數的取值為2、4或8。
需要特別指出的是,本發明的上述6種典型編碼方法有很多種變形。
一種變形的方式為針對將字符(串)字形獨立連通區域個數、獨立封閉區域個數作為參數的數學運算結果進行編碼。例如,類似前述的“基于獨立連通區域個數的編碼方法”,可以對獨立連通區域的個數做平方、三次方、求奇偶性、判斷是否為素數等數學運算的結果進行編碼。也可類似前述的“基于獨立連通區域個數與獨立封閉區域個數的和的編碼方法”,對獨立連通區域個數與獨立封閉區域個數的乘積進行編碼,或者將獨立連通區域個數與獨立封閉區域個數作為參數進行指數運算、對數運算等數學運算,對其結果進行編碼。此外,還可以對上述各種數學運算結果形成的排列組合集合進行編碼。依此類推,可以變形出很多編碼方法。
另一種變形的方式為綜合應用多個編碼方法對字符(串)字形進行編碼。在利用一種方法進行編碼的基礎上,對基于該編碼方法的有相同編碼值的字符(串)字形再利用其他方法進行二次編碼,并可依此類推,綜合利用多個方法進行多次編碼。例如,先采用“基于獨立連通區域個數的方法”進行編碼,再對有相同獨立連通區域個數的多個字符(串)字形進行二次編碼,二次編碼的方式可采用“基于獨立連通區域個數與獨立封閉區域個數的組合集合的編碼方法”。還可進一步針對獨立連通區域個數與獨立封閉區域個數的組合集合相同的字符(串)字形進行三次編碼,三次編碼的方式可采用“基于圖結構的編碼方法”。依此類推,可以變形出很多編碼方法,可根據字符(串)字形的自身拓撲結構進行選擇。綜合多個編碼方法對字符(串)字形進行編碼可以擴大字符(串)攜帶數字水印信息的容量。
雖然上述變形方法從形式上看起來與本發明的6種典型編碼方法有所不同,實質上是這些典型編碼方法的簡單延伸。
若干種對多個字符(串)的多種字形進行統一編碼的方法在多個字符(串)的多種字形(注包括同一字符(串)的多種字形)組成的集合范圍內,利用本發明的“若干種對同一字符(串)的多種字形進行編碼的方法”中的一種方法,對多個字符(串)的多種字形進行統一編碼,并且字符(串)字形編碼值的確定規則在多個字符(串)之間是統一的。
在實際的數字水印系統中,通常需要由載體文件的多個字符(串)共同攜帶數字水印,而本方法是對多個字符(串)的多種字形進行統一編碼的方法。本方法采用本發明“若干種對同一字符(串)的多種字形進行編碼的方法”(如前節所述6種典型編碼方法及其變形方法)中的一種,對多個字符(串)的多種字形使用相同的方法進行編碼,而且字符(串)的字形特征與編碼的具體對應關系在不同字符(串)之間是統一的。例如,如果采用“基于圖結構的編碼方法”,不僅對應同構“圖”的同一字符(串)的多種字形有相同編碼,而且對應同構“圖”的不同字符(串)的多種字形也有相同編碼。再例如,如果采用“基于獨立連通區域個數的編碼方法”,則有相同獨立連通區域個數的所有字符(串)字形都對應相同的編碼值,不論這些字符(串)的字形是同一個字符(串)的字形,還是多個不同字符(串)的字形。基于對多個字符(串)的多種字形分別編碼的文本數字水印技術在本項文本數字水印技術中,數字水印信息嵌入到載體文件字符(串)的多種字形中,字符(串)字形的編碼用來表示數字水印信息。字形的設計方法采用本發明的改變字符(串)字形的拓撲結構的方法,為同一字符(串)設計出多種字符(串)字形。字形的編碼方法采用本發明的6種典型的對同一字符(串)的多種字形進行編碼的方法及其若干種變形方法。
本項文本數字水印技術的一個重要特點是針對載體文件包含的多個不同字符(串)的字形編碼方法可以不同,可以根據字符(串)自身的特點為某個字符(串)選擇專門的字形編碼方法。通常來說,字符(串)筆劃的繁簡程度和拓撲結構有其自身的特點,在維持一定的視覺感官質量的前提下,不同字符(串)可以設計出的不同拓撲結構字形的數量是有差異的。實質上各字符(串)通過字形的變化攜帶數字水印信息的能力是有差異的,對不同字符(串)使用不同的字形編碼方法可以充分反映出這種差異,從而增大整個載體文件攜帶數字水印信息的能力。在具體編碼值的確定上,本項文本數字水印技術中不同字符(串)的字形與編碼值的對應規則是相互獨立的。對同一字符(串)的多種字形來說,僅考慮對該字符(串)的不同拓撲結構進行編碼,不考慮其他字符(串)字形的拓撲結構可能帶來的對該字符(串)的影響,從而編碼較為簡單。
本項文本數字水印技術的水印信息檢測方法的特點是需要明確載體文件中各個字符(串)的特有的字形編碼方法。檢測過程通常應首先確定載體文件中各字符(串)的語義信息,根據字符(串)的語義信息查詢各字符(串)特定的字形編碼方法,然后根據特定的字形編碼方法檢測對應的字形特征以確定載體文件中各字符(串)字形的編碼,從而檢測出數字水印信息。例如,一個字符(串)對應的編碼方法是“基于圖結構的編碼方法”,則應檢測該字符(串)字形對應的“圖”結構特征,以確定相應的字形編碼。另一個字符(串)對應的編碼方法是“基于連通區域個數的編碼方法”,則應檢測該字符(串)字形包含的連通區域個數這個字形特征,從而進一步確定字形的編碼。將載體文件中各字符(串)對應的字形編碼組合起來,就得到了整個載體文件攜帶的數字水印信息。本項文本數字水印技術中,數字水印信息檢測過程的基礎是首先應明確載體文件中各字符(串)特定的字形編碼方法,一個字符(串)攜帶的數字水印信息的檢測過程與該字符(串)的語義信息通常是關聯的。
基于對多個字符(串)的多種字形統一編碼的文本數字水印技術與上述的“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”相似,在本項文本數字水印技術中,數字水印信息嵌入到載體文件字符(串)的多種字形中,字符(串)字形的編碼用來表示數字水印信息。仍然采用本發明的改變字符(串)的拓撲結構的方法,為同一字符(串)設計出多種字符(串)外形。
與“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”相比,本項技術的主要區別在于字形的編碼方法采用本發明的“若干種對多個字符(串)的多種字形進行統一編碼的方法”及其變形方法。
本項文本數字水印技術的一個重要特點是針對載體文件的多個字符(串)的字形編碼方法相同,只能使用一種共同的方法對多個字符(串)的多種字形進行編碼。在具體編碼值的確定上,不同字符(串)的字形編碼值的確定規則是統一的,即對于多個不同字符(串)的多種字形,只要它們對應的拓撲結構特征相同,則它們的編碼值應相同。對同一字符(串)的多種字形進行編碼,不僅應考慮該字符(串)自身的不同拓撲結構字形特征的編碼因素,而且還應考慮到其他字符(串)字形的編碼情況,應與其他字符(串)字形的編碼協調一致。
本項文本數字水印技術的水印信息檢測方法的特點是由于載體文件中各字符(串)只有一種共同的字形編碼方法,檢測過程不需要知道每個字符(串)的語義信息,可直接針對共同的編碼方法檢測字符(串)字形的編碼特征,以確定載體文件中各字符(串)字形的編碼,從而檢測出數字水印信息。例如,如果載體文件使用“基于圖結構的編碼方法”,則載體文件中的多個字符(串)都使用這個相同的方法,可直接檢測各字符(串)字形對應的“圖”結構特征以確定其編碼。再例如,如果載體文件使用“基于對獨立連通區域個數除以整數后的余數進行編碼的方法”,并且整數取2,則檢測方法極為簡單。不需要知道各字符(串)的語義信息,直接計算每個字符(串)獨立連通區域個數,奇數個數為一種編碼(例如編碼為1),偶數個數為另一種編碼(例如編碼為0),從而直接確定各字符(串)字形的編碼。將載體文件中各字符(串)對應的字形編碼組合起來,就得到了整個載體文件攜帶的數字水印信息。本項文本數字水印技術中,一個字符(串)攜帶的數字水印信息的檢測過程與該字符(串)的語義信息無關。一種協調水印信息檢測效果與水印信息對人視覺影響的方法本專利的核心點在于適量地改變字符(串)的拓撲結構,通過語義上同一字符(串)的不同拓撲結構的字形來表示隱藏信息,這相當于隱藏水印信息在字符(串)的拓撲結構中引入了噪聲。通常,一方面要求同一字符(串)的不同字形的拓撲結構應非常明確,便于檢測另一方面,在字形設計時,要求對字符(串)字形的拓撲結構的改變應盡可能小,同一字符(串)不同字形相互之間拓撲結構差異也盡量小,以減小水印信息給人帶來的視覺上的影響,這兩者是一對矛盾。
針對上述矛盾,本發明提出了一種處理字符(串)字形的方法,用以協調增強水印信息檢測效果與控制水印信息對人視覺影響之間的矛盾。其內容是應根據應用的需要,放大或縮小字符(串)的字形。當需要進行水印信息檢測的時候,應放大字符(串)字形,盡可能的使字符(串)字形的拓撲結構清晰,筆劃連斷關系清晰,以增強水印信息的檢測效果;當正常使用(如閱讀、打印等)帶有水印信息的字符(串)時,不需要進行水印信息檢測的時候,應適當調整字符(串)字形到適當的大小,以減小水印信息對人視覺的影響。
對照現有文本數字水印技術,本發明的主要特點是(1)本發明的數字水印信息的檢測方法僅與字符(串)字形的拓撲結構有關,與字符(串)的大小,傾斜角度無關,便于檢測。字符(串)字形的縮放、旋轉不影響對水印信息的檢測,抗噪聲能力強,魯幫性好。
(2)本發明對字符(串)字形的改變方式是適當改變字符(串)的拓撲結構,可以不改變字符(串)字形的外形大小,整體風格,水印信息造成的視覺影響小,嵌入的數字水印信息不易被覺察。
(3)本發明的字符(串)字形設計方法靈活,確定了特定的編碼規則后,可以根據需要為同一字符(串)設計出有相同編碼但有不同字體風格的多種字形,不需要改變檢測方法及相關的程序,可擴展性好。
(4)本發明的“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”可以針對每一字符(串)的具體情況特別地設計字符(串)的字形,并選擇特定的編碼方法,從而使得字符(串)攜帶水印信息的容量較大。
(5)本發明的“基于對多個字符(串)的多種字形統一編碼的文本數字水印技術”不需要檢測各字符(串)的語義信息便可以直接確定各字符(串)攜帶的文本數字水印信息,簡化了水印信息的檢測方法,并減少了出錯的環節。
(6)本發明的“協調水印信息檢測效果與水印信息對人視覺影響的方法”提供了一種靈活、簡單的方法,在協調增強水印信息檢測效果和減小水印信息對人視覺影響兩個互為矛盾的方面找到了一種解決途徑。
圖1以示例的方式顯示了通過適當改變字符的拓撲結構來設計同一字符多種字形的方法,并顯示了字符字形與數學學科“圖論”中的“圖”對應的方法。
圖2以示例的方式顯示了基于字符字形包含的連通區域個數和封閉區域個數的字形設計和編碼方法。
圖3以示例的方式顯示了字符串的多種字形設計和編碼的方法。
圖4以示例的方式顯示了一組字符各自不同的字形設計與編碼方法。
圖5以示例的方式顯示了多種形式的字符(串)字形設計方法。
圖6以示例的方式顯示了“基于對多個字符(串)的多種字形分別編碼的數字水印技術”的水印信息的加載與檢測原理。
圖7以示例的方式顯示了“基于對多個字符(串)的多種字形統一編碼的數字水印技術”的水印信息的加載與檢測原理。
圖8是本發明的“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”的數字水印信息提取過程示意9是本發明的“基于對多個字符(串)的多種字形統一編碼的文本數字水印技術”的數字水印信息提取過程示意圖。
具體實施例方式
下面通過舉例,并參照附圖,詳細描述本發明的具體實施方式
。將同一字符(串)設計成多種字形的方法的
具體實施例方式如圖1所示,通過改變組成漢字“王”(100)的筆劃之間的連斷關系,得到語義上相同的字符“王”的不同拓撲結構的字形(110)、(120)、(130)、(140)。這些不同字形的高度、寬度相同,字形的字體風格一致,都是細黑字體。與原始的字符字形(100)相比,僅僅是少數筆劃在原字形(100)基礎上做了微小的縮短。但是,這些筆劃微小的變化帶來了筆劃之間連斷關系的變化,從而改變了字形的拓撲結構,就拓撲結構來說,這些筆劃微小的變化帶來的是字形拓撲結構較大的變化。通常,對于類似漢字這樣的組成筆劃較多,字形相對比較復雜的字符,改變字符拓撲結構的方式很多。在圖2中,漢字“啟”有15種不同的字形,而這些字形,僅僅是通過改變字符拓撲結構可能形成的若干種字形中一部分。在實際的字形設計中,一方面應考慮與本發明特定的字形編碼方法結合進行字形設計,使得字形的改變盡可能引起編碼的不同。另一方面應考慮盡量減小字形改變帶來的視覺影響,例如應結合字符自身的特點,盡量改變完整筆劃之間的連斷關系,這樣的方法優于通過將一個完整的筆劃分成不同的部分來改變字符拓撲結構的方法。
如圖4所示,同一字符的多種字形設計可以基于同一種字體風格進行,漢字“你”基于宋體字體風格有兩種字形(400)、(401)。不同字符的字形設計也可以基于同一種字體風格進行,例如漢字“好”的字形(410)、(411),漢字“媽”的字形(430)、(431)、(432)、(433)都是基于宋體字體風格。在由同一種字體風格的字符字形構成的攜帶數字水印信息的載體文件中,加入數字水印信息帶來的視覺上的影響很小。除此之外,相同拓撲結構的同一字符的多種字形也可對應不同字體風格。如圖4所示,每個字符都有兩種字體風格的字形,分別是宋體和隸書,漢字“你”的相同拓撲結構的字形(400)、(402)有不同的字體風格,(400)對應宋體,(402)對應隸書。這樣的設計,既能適于在同一個載體文件中有不同字體風格字符的情況,又能滿足在不改變字形編碼方法、水印信息檢測方法的情況下進行多種字符字形設計的擴展性要求。
如圖3所示,通過改變組成字符串“draft”(300)的各字符之間的連斷關系來改變字符串(300)的拓撲結構,可以為字符串(300)設計出多種字形(311)~(314)、(321)、(322)、(331)、(332)、(340),并以這些字符串的字形為基本單位進行數字水印信息的攜帶。與字符的字形設計思想相同,改變組成字符串的各字符之間的連斷關系同樣應選擇恰當的連斷點,對于字符串“draft”(300)來說,選擇字符d與r、r與a、a與f、f與t之間如圖所示的連斷點是合適的。此外,“draft”(300)的各種字形(311)~(314)、(321)、(322)、(331)、(332)、(340)都基于同一種字體風格(細黑字體),相互之間的替換帶來的視覺上的影響很小。與字符字形設計方法相似,不同字符串的字形設計也可以基于同一種字體風格進行,且相同拓撲結構的同一字符串的多種字形也可對應不同字體風格,可由字符字形設計方法直接類推。也可通過改變字符串中單個字符的拓撲結構來改變整個字符串的拓撲結構,如字符串“by”(3506)中,字符“b”的拓撲結構發生了變化,從而改變了整個字符串“by”(3506)的拓撲結構。此外,還可組合改變單個字符內部拓撲結構的方法和改變字符間的連斷關系的方法來改變字符串的拓撲結構。例如,句子(350)中,字符串candidate(3502)中,前一個“a”與后一個“a”的內部拓撲結構不一樣,同時,前一個“d”和字符“i”是連接的,字符串draft(3505)也是這種情況。
圖5顯示了多種形式的字符(串)字形設計方法。其中,字符“a”(500)為英語字符,字符“1”(510)為阿拉伯數字,字符“の”(520)為日語平假名,字符“ヲ”(530)為日語片假名,字符“ ”(540)為單個朝鮮語字母,字符“ ”(550)為多個朝鮮語字母組成的朝鮮語字,字符“@”(560)為常用特殊字符,字符“∑”(570)為數學運算符,字符“民”(580)為手寫體的漢字,字符串“life”(590)為英語單詞的草書體。圖5中,這些字符(串)都有兩個不同的拓撲結構的字形示例,而且同一字符(串)的不同字形有相同的字體風格。設計出這些不同拓撲結構字形的方法很多,有的是改變字符筆劃之間的連斷關系,如(501)、(522)、(532)、(541)、(551)、(552)、(561)、(571)、(572)等,有的是改變字符一個筆劃內的連斷關系,如(502)、(511)、(512)、(521)、(531)、(542)、(562)等,有的是綜合應用這兩種方法,如(591)、(592)。這些字形設計方法的共同點在于改變了字符(串)的拓撲結構。仿造圖5中的示例,幾乎可以為所有語言的字符及符號設計出不同的字形。需要特別說明的是可應用相同的方法為手寫體、草書體的字符(串)設計不同拓撲結構的字形,如(581)、(582)、(591)、(592)。通常,手寫體、草書體的字符(串)字形的信息隱藏效果更好,可以設計出的不同拓撲結構的字形更多。若干種對同一字符(串)的多種字形進行編碼的方法的
具體實施例方式特此說明基于簡潔的原因,以下編碼方法的示例主要采用對字符字形的編碼示例,但這并不影響對字符串字形編碼方法的具體實施方式
的說明,可將字符字形的編碼示例方法簡單類推到字符串字形的編碼上。
1)基于“圖”結構的編碼方法的具體實施方式
如圖1所示,首先按照確定的規則——字形筆劃的頂點、交叉點、拐點映射為數學學科“圖論”中定義的“圖”的節點(端點),連接頂點、交叉點、拐點之間的筆劃映射為“圖”的邊,將“王”(100)的不同字形映射為數學學科“圖論”中定義的“圖”。其中(110)映射為(111)、(120)映射為(121)、(130)映射為(131)、(140)映射為(141),(111)、(121)、(131)、(141)均為無向圖。此外,如果按照字符字形的空間狀態,定義連接兩個節點(端點)的邊的方向為從左到右,從上到下的方向,可將字符字形映射為有向圖。例如,字形(110)的有向圖表示為(112),字形(120)的有向圖表示為(122),字形(130)的有向圖表示為(132),字形(140)的有向圖表示為(142)。這樣,通過圖示的方式就將漢字“王”(100)的多個字形分別表示成了相應的無向圖或有向圖。
接下來的步驟是基于字形對應的無向圖或有向圖的結構屬性進行編碼。注意到字符的不同字形對應的“圖”結構根據“圖論”中的定義有可能是同構的,對于同構的“圖”映射的多種字形的編碼應相同。例如,字形(120)、(130)映射的無向圖(121)與(131)是同構的,它們的編碼應相同。但對于同構的無向圖對應的多個字形,其有向圖不一定是同構的。例如,字形(120)、(130)對應的有向圖(122)、(132)是不同構的,因此,本編碼方法應首先明確字形與無向圖對應還是與有向圖對應。如果統一使用無向圖進行編碼,圖1中的字形(110)可編碼為“0”(三進制);由于字形(120)、(130)對應的無向圖(121)、(131)是同構的,它們共同編碼可為“1”(三進制);(140)可編碼為“2” (三進制)。如果統一使用有向圖進行編碼,圖1中的字形(110)、(120)、(130)、(140)對應的有向圖(112)、(122)、(132)、(142)各不同構,可分別編碼為“00”、“01”、“10”、“11”(二進制)。
實際的數字水印系統中,考慮到編碼的圓整和字符之間編碼進制的統一性,需要將有不同結構的“圖”對應的字符字形進行相同的編碼。例如圖1中,對于基于無向圖的編碼方法來說,“王”(100)的多種字形對應的無向圖有三種狀態,但在實際系統中通常不用三進制進行編碼,需要將三種“圖”結構的字形圓整為兩種狀態進行二進制編碼。可以將不同構的“圖”(111)、(141)對應的字形(110)、(140)編為相同的碼“0”,同構的“圖”(121)、(131)對應的字形(120)、(130)編為相同的碼“1”。但為了至少攜帶一位數字水印信息,在不同構的“圖”對應的字形編碼中,至少應有兩個不同的編碼,即字形(110)~(140)的編碼不能完全相同。
2)基于獨立連通區域個數的編碼方法的具體實施方式
如圖1所示,字符字形(110)僅有一個獨立連通區域(1101); 字符字形(120)有兩個獨立連通區域(1201)、(1202);字符字形(130)也有兩個獨立連通區域(1301)、(1302);字符字形(140)有三個獨立連通區域(1401)、(1402)、(1403)。本項方法是針對獨立連通區域個數進行編碼,相同獨立連通區域個數的字符字形有相同的編碼,字形(120)、(130)的獨立連通區域個數均為2,所以它們應有相同的編碼。不同獨立連通區域個數的字符字形(110)、(140)與(120)(或(130))之間的編碼可以不同,也可以相同,但為了使字符“王”(100)具有攜帶數字水印信息的能力,它們的編碼不能完全相同。
本方法等價于對字符字形對應的“圖”的分量(獨立的連通子圖)個數進行編碼。可以看到在圖1中,字形(110)的獨立連通區域個數等于“圖”(111)的分量個數,均為1;字形(120)的獨立連通區域個數等于“圖”(121)的分量個數,均為2;字形(130)的獨立連通區域個數等于“圖”(131)的分量個數,均為2;字形(140)的獨立連通區域個數等于“圖”(141)的分量個數,均為3。
同理,對圖3所示的字符串可利用本項方法進行編碼。英文單詞“draft”(300)有9種不同的字形,其中,字形組(310)包含的字形(311)、(312)、(313)、(314)有4個獨立的連通區域;字形組(320)包含的字形(321)、(322)有3個獨立的連通區域;字形組(330)包含的字形(331)、(332)有2個獨立的連通區域;字形(340)有1個獨立的連通區域。這樣,“draft”(300)的9種不同的字形對應了4種不同的獨立連通區域個數,因而有4種編碼狀態,可以編為4種不同的碼。由此可見,對字符串字形的編碼方法與對字符字形的編碼方法是相似的,不同之處僅在于組成字符串獨立連通區域的筆劃可能來自不同的字符。
3)基于獨立連通區域個數與獨立封閉區域個數的組合集合的編碼方法的具體實施方式
如圖2所示,漢字“啟”有15種不同的字形,其中,字形(2001)、(2002)、(2003)、(210)、(220)有1個獨立的連通區域;字形(2301)、(2302)、(2303)、(240)、(250)有2個獨立的連通區域;字形(2601)、(2602)、(2603)、(270)、(280)有3個獨立的連通區域。與此同時,在字形組(200)、(230)、(260)包含的各字形中,字形包含的獨立封閉區域個數為0;在字形(210)、(240)、(270)所示的字形中,字形包含的獨立封閉區域個數為1;在字形(220)、(250)、(280)所示的字形中,獨立封閉區域個數為2。將字符字形包含的獨立連通區域個數與獨立封閉區域個數形成組合集合,例如字形(210)對應的組合集合為{獨立連通區域個數1,獨立封閉區域個數1},字形(280)對應的組合集合為{獨立連通區域個數3,獨立封閉區域個數2}。這樣,圖2中的15個不同的字形對應了9種不同的組合集合,因而有9種編碼狀態,可以編為9種不同的碼。
值得注意的是,字形組(200)包括的三種字形(2001)、(2002)、(2003)雖然字形的拓撲結構不一樣(它們對應的“圖”不同構),但它們對應的由獨立連通區域個數與獨立封閉區域個數形成的組合集合相同,根據本項編碼方法的規定,應編為相同的碼。同理,字形(2301)、(2302)、(2303)應有相同的編碼,字形(2601)、(2602)、(2603)也應有相同的編碼。同樣的情況在圖4中也存在,如圖4所示,對字符“媽”的字形編碼采用了本項編碼方法,字形(431)、(435)的獨立連通區域個數均為2,獨立封閉區域個數均為1,編碼值都為“01”,但字形(431)、(435)的拓撲結構是不同的。字形(433)、(437)的編碼情況也類似上述例子。
4)基于獨立連通區域個數與獨立封閉區域個數的和的編碼方法的
具體實施例方式如圖2所示,漢字“啟”的15種不同的字形中,字形(2001)、(2002)、(2003)包含的獨立連通區域個數與獨立封閉區域個數的和為1;字形(210)、(2301)、(2302)、(2303)包含的獨立連通區域個數與獨立封閉區域個數的和為2;字形(220)、(240)、(2601)、(2602)、(2603)包含的獨立連通區域個數與獨立封閉區域個數的和為3;字形(250)、(270)包含的獨立連通區域個數與獨立封閉區域個數的和為4;字形(280)包含的獨立連通區域個數與獨立封閉區域個數的和為5。這樣,圖2中的15個不同的字形對應了5種不同的獨立連通區域個數與獨立封閉區域個數的和,因而有5種編碼狀態,可以編為5種不同的碼。
5)基于對獨立連通區域個數除以整數后的余數進行編碼的方法的具體實施方式
如果利用本項方法對圖4中的字符“你”的4種不同字形(400)~(403)進行編碼,假設整數取2,等價于對字形包含的獨立連通區域個數的奇偶性進行編碼,又假設獨立連通區域個數為奇數的字符字形對應的編碼為“1”,獨立連通區域個數為偶數的字符字形對應的編碼為“0”,則有以下結果如圖4所示,字形(400)、(402)包含的獨立連通區域個數為4,除以2后余數為0,即字形(400)、(402)包含的獨立連通區域個數為偶數,它們的編碼為“0”;字形(401)、(403)包含的獨立連通區域個數為5,除以2后余數為1,即字形(401)、(403)包含的獨立連通區域個數為奇數,它們的編碼為“1”。這樣,字符“你”的4種不同字形(400)~(403)按照本項方法進行編碼后,對應了2種不同的編碼狀態,被編為2種不同的碼。
6)基于對獨立連通區域個數與獨立封閉區域個數之和除以整數后的余數進行編碼的方法的具體實施方法如果利用本項方法對圖2中的字符“啟”的15種不同字形(200)~(280)進行編碼,假設整數取4,獨立連通區域個數與獨立封閉區域個數之和除以4后余數為0的字形對應的編碼為“O0”,余數為1的字形對應的編碼為“01”,余數為2的字形對應的編碼為“10”,余數為3的字形對應的編碼為“11”,則有以下結果如圖2所示,字形(2001)、(2002)、(2003)包含的獨立連通區域個數與獨立封閉區域個數的和為1,除以4后余數為1,字形編碼為“01”字形(210)、(2301)、(2302)、(2303)包含的獨立連通區域個數與獨立封閉區域個數的和為2,除以4后余數為2,字形編碼為“10”;字形(220)、(240)、(2601)、(2602)、(2603)包含的獨立連通區域個數與獨立封閉區域個數的和為3,除以4后余數為3,字形編碼為“11”;字形(250)、(270)包含的獨立連通區域個數與獨立封閉區域個數的和為4,除以4后余數為0,字形編碼為“00”;字形(280)包含的獨立連通區域個數與獨立封閉區域個數的和為5,除以4后余數為1,字形編碼為“01”,與字形組(200)的編碼相同。這樣,圖2中的15個不同的字形按照本項方法進行編碼后,對應了4種不同的編碼狀態,被編為4種不同的碼。
綜合應用多種編碼方法進行編碼的具體實施方法例如,對如圖2所示的字符“啟”的15種字形采用多種編碼方法進行綜合編碼。
首先,利用“基于獨立連通區域個數與獨立封閉區域個數的組合集合的編碼方法”進行編碼,如前所述,15種字形有9種編碼狀態,可以編為9種不同的碼。其中字形組(200)包括的三種字形(2001)、(2002)、(2003)的編碼相同;字形組(230)包括的三種字形(2301)、(2302)、(2303)的編碼相同;字形組(260)包括的三種字形(2601)、(2602)、(2603)的編碼相同。
然后,再用“基于圖結構的編碼方法”對字形組(200)、(230)、(260)中的字形進行二次編碼。假如采用基于無向圖的編碼方式,則字形組(200)包含的字形(2001)、(2002)、(2003)對應三種不同結構的“圖”;則字形組(230)包含的字形(2301)、(2302)、(2303)對應兩種不同結構的“圖”,其中,字形(2302)、(2303)對應的“圖”是同構的;字形組(260)包含的字形(2601)、(2602)、(2603)也對應了三種不同結構的“圖”。經過兩次編碼后,圖2中的15種字符字形有14中不同的狀態,可編為14種不同的碼。
對多個字符(串)的多種字形進行統一編碼的方法的具體實施方法本項編碼方法的特點是在多個字符(串)的多種字形(注包括同一字符(串)的多種字形)組成的集合范圍內,利用同一種方法對多個字符(串)的多種字形進行統一編碼,字符(串)字形編碼值的確定規則在多個字符(串)之間是統一的。
具體編碼方法的確定可在本發明的“若干種對同一字符(串)的多種字形進行編碼的方法”基礎上,將這些方法按照統一編碼的規則擴展到多個字符的多種字形上。例如,采用“基于獨立連通區域個數的編碼方法”,對圖4中的字符集合{“好”,“!”}的字形進行編碼,字符“好”的字形(410)、(412)與字符“!”的字形(440)、(442)包含的獨立連通區域個數均為2,編碼值均為“0”;字符“好”的字形(411)、(413)與字符“!”的字形(441)、(443)包含的獨立連通區域個數均為1,編碼值均為“1”。字符集合{“好”,“!”}中的字符對應的字形與編碼值的映射規則在不同字符之間是統一的,因而滿足本項編碼方法的要求。
相反,如果仍然采用“基于獨立連通區域個數的編碼方法”,對圖4中的字符集合{“你”,“好”,“!”}的字形進行編碼,圖4中所示的字形與編碼值的映射規則不滿足本項編碼方法的要求。這是因為編碼值為0的字符“你”的字形(400)、(402)的獨立連通區域個數為4,而編碼值為0的字符“好”的字形(410)、(412)與字符“!”的字形(440)、(442)的獨立連通區域個數均為2,字符“你”的字形與編碼值的映射規則同字符“好”、“!”的映射規則不一致。同樣,對于編碼值為“1”的字符字形(401)、(403)、(411)(413)、(441)、(443)來說,字符“你”同字符“好”(或“!”)的字形與編碼值的映射規則也不一致。由此可知,采用“基于獨立連通區域個數的編碼方法”,字符集合{“你”,“好”,“!”}如圖4的字形編碼值的確定方法不滿足本項編碼方法的要求。
又例如,如果采用“基于對獨立連通區域個數除以整數后的余數進行編碼的方法”,對上述字符集合{“你”,“好”,“!”}的字形進行編碼,假設整數取2,則圖4中所示的字形與編碼值的映射規則滿足本項編碼方法的要求。由于整數取2,等價于對獨立連通區域個數的奇偶性進行編碼,又假設獨立連通區域個數為奇數的字符字形對應的編碼為“1”,獨立連通區域個數為偶數的字符字形對應的編碼為“0”,如圖4所示字形(400)(402)的獨立連通區域個數為4,字形(410)(412)的獨立連通區域個數為2,字形(440)、(442)的獨立連通區域個數也為2,這些字形包含的獨立連通區域個數除以2后為余數0,即這些字形包含的獨立連通區域個數均為偶數,所以它們的編碼是相同的,均為“0”。字形(401)(403)的獨立連通區域個數為5,字形(411)(413)的獨立連通區域個數為1,字形(441)、(443)的獨立連通區域個數也為1,這些字形包含的獨立連通區域個數除以2后為余數1,即這些字形包含的獨立連通區域個數均為奇數,它們的編碼是相同的,均為“1”。本例中,特別應該注意的是不同字符之間字形與編碼值的映射規則是一致的,余數與字形編碼值的映射關系在不同字符之間不能變化。由此可知,采用“基于對獨立連通區域個數除以整數后的余數進行編碼的方法”,字符集合{“你”,“好”,“!”}如圖4的字形編碼值的確定方法滿足本項編碼方法的要求。
由上可知,對于同樣字符集合{“你”,“好”,“!”}的如圖4所示的字形來說,不能采用“基于獨立連通區域個數的編碼方法”對該集合進行統一編碼,而可以采用“基于對獨立連通區域個數除以2后的余數進行編碼的方法”對該集合進行統一編碼。
基于對多個字符(串)的多種字形分別編碼的文本數字水印技術的
具體實施例方式圖6以示例的方式顯示了本項數字水印技術的水印信息加載與檢測的原理。
如圖6所示,從框圖(600)、(601)到(610),再到框圖(620)、(630),最后到框圖(621)、(631)的流程表示水印信息加載的流程。該流程表示將數字水印信息“0101 100”(600)加載到文本“你好,媽媽!”(601)中。首先,根據文本“你好,媽媽!”(601)中各字符的語義信息查詢如圖4所示的表,確定每一個字符攜帶水印信息的長度(位數),得到字符“你”、“好”、“!”攜帶水印信息的位數為一位;字符“媽”攜帶水印信息的位數為兩位;字符“,”沒有攜帶水印信息的能力。然后利用(610)所示的方法將水印信息進行分割,如框圖(610)所示,字符“你”對應的水印信息為“0”;字符“好”對應的水印信息為“1”;字符“,”不對應任何水印信息(因為如圖4所示,“,”沒有攜帶水印信息的能力),前一個字符“媽”對應的水印信息為“01”;后一個字符“媽”對應的水印信息為“10”;字符“!”對應的水印信息為“0”。接下來再查詢圖4中的表,查找各字符字形編碼等于該字符對應的水印信息的字形。如圖4所示,在字符“你”的多種字形中,(400)、(402)的編碼為0,對應水印信息“0”;在字符“好”的多種字形中,(411)、(413)的編碼為1,對應水印信息“1”;在字符“媽”的多種字形中,(431)、(435)的編碼為01,對應水印信息“01”,(432)、(436)的編碼為10,對應水印信息“10”;在字符“!”的多種字形中,(440)、(442)的編碼為0,對應水印信息“0”。字符字形與水印信息的對應結果如框圖(620)、(630)所示。圖6中,每個字符都有兩個字形的編碼等于該字符對應的水印信息,且這兩個字形分別屬于不同的字體風格宋體和隸書。最后將相同字體風格的多個字符的字形組合起來,得到攜帶了水印信息“0101100”(600)的文本字符串(621)、(631),其中字符串(621)的字體風格為隸書,字符串(631)的字體風格為宋體。由于字符串(621)、(631)內部各字符之間的字體風格統一,加載數字水印信息“0101100”(600)后給人視覺上帶來的影響很小。
圖8顯示了本項技術的數字水印信息檢測的過程。帶有數字水印信息的載體文件(800)通過字符語義識別系統(810)識別出原載體電子文件(820)。在此基礎上,字符字形識別系統(830)對帶有數字水印信息的載體文件(800)進行字符(串)字形編碼識別,識別出各字符(串)字形的編碼后,組合載體文件中各字符(串)的編碼就得到數字水印信息(840)。字符字形識別系統(830)需要利用字符語義識別系統(810)的識別結果進行字符(串)字形編碼識別的原因在于在本項技術中,載體文件中的各個字符(串)的編碼方法可以不同,水印信息檢測過程首先需要明確載體文件中各字符(串)的特定的字形編碼方法。因此,需要對載體文件中的各字符(串)進行語義識別,通過字符(串)的語義信息查找如圖4所示的編碼表,確定各字符(串)特定的字形編碼方法,從而檢測各編碼方法對應的字形特征,進一步確定各字符(串)字形的編碼。此外,也可直接利用原載體電子文件作為模板進行水印信息的檢測。原載體電子文件模板(850)提供載體文件中字符(串)各自的語義信息,結合字符字形識別系統(830)可進行字符(串)特征及編碼的識別,此時的水印信息檢測過程是一個非盲水印檢測過程。
例如,如果需要從圖6所示的字符串(621)或(631)中檢測出數字水印信息,檢測系統需要知道組成字符串(621)或(631)的各字符的特定的字形編碼方式。所以,檢測系統首先應該識別出各字符的語義信息(包括人工識別),或者直接得到原載體電子文件,利用原載體電子文件作為模板提供字符的語義信息,然后,通過字符的語義信息獲取各字符特定的編碼方法。本例中字符“你”、“好”、“!”采用的是“基于獨立連通區個數的編碼方法”,字符“媽”采用的是“基于獨立連通區個數與獨立封閉區域個數的組合集合的編碼方法”,字符“,”不攜帶水印信息。然后,檢測系統根據各字符的特定字形編碼方法,檢測編碼方法對應的字形特征,例如,應檢測字符“你”、“好”、“!”的字形對應的獨立連通區個數的字形特征,檢測字符“媽”的字形對應的獨立連通區域個數與獨立封閉區域個數形成的組合集合的字形特征。檢測字符字形特征的結果是得到相應的字符字形編碼,字符串(621)、(631)中各字符字形與編碼的對應關系如框圖(620)、(630)所示。組合各字符字形的編碼,得到字符串(621)、(631)攜帶的數字水印信息為“0101100”(600)。
需要說明的是本發明的編碼方法對應的字形特征的檢測方法,為現有成熟技術。例如,對字符(串)字形映射的“圖”的同構性判斷,對字符(串)字形包含的獨立連通區域個數、獨立封閉區域個數的計算,利用現有成熟技術可完成,這些技術不包含在本發明的范圍內。
基于對多個字符(串)的多種字形統一編碼的文本數字水印技術的
具體實施例方式圖7以示例的方式顯示了本項數字水印技術的水印信息的加載與檢測的原理。
如圖7所示,從框圖(700)、(701)到(710),再到框圖(720)、(730),最后到框圖(721)、(731)的流程表示水印信息加載的流程。該流程表示將數字水印信息“010”(700)加載到文本“你好!”(701)中。如圖4所示,文本字符串“你好!”(701)中的各字符的編碼方法相同(都采用“基于對獨立連通區域個數除以2后的余數進行編碼的方法”),且各字符攜帶的水印信息長度(位數)相同,不需要特別的水印信息分割處理,只需按順序、等長度(位數)進行水印信息對應。如框圖(710)所示,每個字符順序對應水印信息“010”(700)中的一位信息。然后再查詢圖4中的表,查找各字符字形編碼等于該字符對應的水印信息的字形。如圖4所示,在字符“你”的多種字形中,(400)、(402)的編碼為0,對應水印信息“0”;在字符“好”的多種字形中,(411)、(413)的編碼為1,對應水印信息“1”;在字符“!”的多種字形中,(440)、(442)的編碼為0,對應水印信息“0”。字符字形與水印信息的對應結果如框圖(720)、(730)所示。圖7中,每個字符都有兩個字形的編碼等于該字符對應的水印信息,且這兩個字形分別屬于不同的字體風格宋體和隸書。最后將相同字體風格的多個字符的字形組合起來,得到攜帶了水印信息“010”(700)的文本字符串(721)、(731),其中字符串(721)的字體風格為隸書,字符串(731)的字體風格為宋體。由于字符串(721)、(731)內部各字符之間的字體風格統一,加載數字水印信息“010”(700)后給人視覺上帶來的影響很小。
假設采用“基于對獨立連通區域個數與獨立封閉區域個數之和除以整數后的余數進行編碼的方法”,對圖3中的句子(350)中的單詞(字符串)進行統一編碼,整數取2,等價于對獨立連通區域個數與獨立封閉區域個數之和的奇偶性進行統一編碼。又假設和數為奇數的字符串字形對應的編碼為“1”,和數為偶數的字符串字形對應的編碼為“0”,則句子(350)攜帶數字水印信息的情況是這樣的單詞(3501)的獨立連通區域個數與獨立封閉區域個數之和為4,(3502)為13,(3503)為11,(3504)為2,(3505)為4,(3506)為2,(3507)為4,(3508)為7。可知單詞(3501)、(3504)、(3505)、(3506)、(3507)獨立連通區域個數與獨立封閉區域個數之和為偶數,編碼為“0”,單詞(3502)、(3503)、(3508)獨立連通區域個數與獨立封閉區域個數之和為奇數,編碼為“1”。這樣,句子(350)中的單詞(字符串)按從左到右的順序對應的編碼為“01100001”,而二進制數字“01100001”對應的ASC碼為“a”,這相當于句子(350)攜帶了數字水印信息“a”(或二進制水印信息“01100001”)。
圖9顯示了本項技術的數字水印信息檢測的過程。字符字形識別系統(910)對帶有數字水印信息的載體文件(900)直接進行字符(串)字形編碼識別。由于帶有數字水印信息的載體文件(900)中的各字符(串)有共同的字形編碼方法,可以直接檢測與該編碼方法對應的各字符(串)的字形特征,進一步確定各字符(串)字形的編碼,組合載體文件中各字符(串)的編碼就得到數字水印信息(920)。整個水印的檢測過程是一個盲水印檢測過程,不需要獲得原載體電子文件的模板,或者進行字符(串)語義識別。
例如,如果需要從圖7所示的字符串(721)或(731)中檢測出數字水印信息,字符字形識別系統(910)根據統一的字形編碼方法進行字符字形識別。例子中的字符“你”、“好”、“!”都采用了“基于對獨立連通區域個數除以2后的余數進行編碼的方法”(等價于“基于對獨立連通區域個數的奇偶性進行編碼的方法”),所以,字符字形識別系統(910)可以直接判斷字符串(721)或(731)中各字符字形包含的獨立連通區域個數的奇偶性,奇數編碼為“1”,偶數編碼為“0”。這個規則對各個字符都是相同的,從而可直接檢測出字符字形對應的編碼,不需要知道各個字符的語義信息,字符串(721)、(731)中各字符字形與編碼的對應關系如框圖(720)、(730)所示。組合各字符字形的編碼,得到字符串(721)、(731)攜帶的數字水印信息為“010”(700)。
本項數字水印技術與“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”相比,本質的區別在于在本項技術中,攜帶數字水印信息的載體文件中的各字符(串)需要采用共同的字形編碼方法,而對于“基于對多個字符(串)的多種字形分別編碼的文本數字水印技術”,載體文件中的各字符(串)可以采用不同的字形編碼方法。
一種協調水印信息檢測效果與水印信息對人視覺影響的方法的
具體實施例方式本方法的實質是要能對載體文件中的字符(串)字形的拓撲結構進行靈活、方便的放大或縮小。在水印信息的載體文件是電子文件的環境下,典型的實施方式是用矢量字體來設計字符(串)的字形,如TrueType字體、工程繪圖軟件使用的矢量字體。矢量字體放大、縮小后其拓撲結構相應地放大或縮小。此外,還需要提供縮放字符(串)字形的途徑,常用的途徑有調整載體文件中字符(串)的字號,例如,可利用字處理軟件調整載體文件的中字符(串)字體的字號大小;直接放大或縮小線形矢量字體的大小,例如,可任意放大、縮小許多工程制圖軟件中矢量字體的形狀;調整載體文件的顯示比例,例如,可方便地在Adobe Acrobat中調整PDF格式文件的顯示比例。
當需要檢測字符(串)字形攜帶的水印信息時,應放大字符(串)的字形以增強檢測效果。當正常使用載體文件時,應調整字符(串)字形到一個恰當的大小,以減小水印噪聲對人視覺的影響。例如,將圖5按照1∶1的比例制作成PDF格式的電子文件后,在Adobe Acrobat軟件中用100%的顯示比例,字形(511)、(512)與(510)相比,有明顯的水印噪聲,但是,利用50%的顯示比例,就人的感覺來說,字形(511)、(512)接近(510),用30%的顯示比例,字形(511)、(512)與(510)給人視覺上的感覺幾乎沒有區別,水印噪聲帶給人視覺上影響很小。與此同時,字形的顯示比例也不能太小,太小會影響人對字形本身的語義識別,圖5中的顯示比例小于20%后,會逐漸影響人對字形(511)、(512)語義的識別。所以,就圖5中的例子來說,正常使用帶有水印信息的載體文件時,應選擇30%~60%的顯示比例,這樣,水印噪聲幾乎不會給人帶來多大的視覺上的影響,也可正常辨別字形的語義信息。當要檢測水印信息時,應放大字符(串)字體,選擇大于100%的顯示比例來顯示載體文件,這樣,字符(串)字體的拓撲結構非常清晰,可以增強水印信息的檢測效果。在實際應用中,應根據具體情況縮放字形到合適的大小來正常使用(閱讀、打印等)載體文件或進行水印信息的檢測。
此外,可利用放大設備(如光學放大鏡或電子放大鏡等)將字符(串)字形放大后進行水印信息的檢測,可增強檢測的效果,提高檢測精度,這樣的方法也可用于帶有水印信息的載體文件是印刷品的情況下。
權利要求
1.一種隱藏數據通信方法,其特征是利用字符(串)的不同拓撲結構的字形來攜帶隱藏信息。
2.一種用于攜帶隱藏信息的將同一字符(串)設計成多種字形的方法,其特征是通過改變字符(串)的拓撲結構,從而得到同一字符(串)的多種字符(串)外形。
3.一種如權利要求2所述的將同一字符(串)設計成多種字形的方法,其特征是通過改變組成字符(串)的各筆劃之間的連斷關系來改變字符(串)的拓撲結構,從而得到同一字符(串)的多種字符(串)外形。
4.一種對同一字符(串)的多種字形進行編碼的方法,其特征是相同拓撲結構的字符(串)字形有相同的編碼,不同拓撲結構的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
5.一種對同一字符(串)的多種字形進行編碼的方法,其步驟是(1)將字符(串)字形映射為數學學科“圖論”中定義的“圖”。(2)同構的“圖”對應的字符(串)字形有相同的編碼,不同構的“圖”對應的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
6.一種對同一字符(串)的多種字形進行編碼的方法,其特征是針對字符(串)字形包含的獨立連通區域的個數進行編碼,獨立連通區域個數相同的字符(串)字形有相同的編碼,獨立連通區域個數不同的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
7.一種對同一字符(串)的多種字形進行編碼的方法,其特征是針對字符(串)字形包含的獨立連通區域個數與字符(串)字形包含的獨立封閉區域個數兩者的組合集合進行編碼,相同的組合集合對應的字符(串)字形有相同的編碼,不同的組合集合對應的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
8.一種對同一字符(串)的多種字形進行編碼的方法,其特征是針對字符(串)字形包含的獨立連通區域個數與字符(串)字形包含的獨立封閉區域個數之和進行編碼,兩者之和相同的字符(串)字形有相同的編碼,兩者之和不同的字符(串)字形的編碼不能完全相同(即至少有兩個不同的編碼)。
9.一種對同一字符(串)的多種字形進行編碼的方法,其特征是針對字符(串)字形包含的獨立連通區域個數除以整數后的余數進行編碼,余數相同的字符(串)字形有相同的編碼,余數不同的字符(串)字形有不同的編碼。
10.一種對同一字符(串)的多種字形進行編碼的方法,其特征是針對字符(串)字形包含的獨立連通區域的個數與字符(串)字形包含的獨立封閉區域個數之和除以整數后的余數進行編碼,余數相同的字符(串)字形有相同的編碼,余數不同的字符(串)字形有不同的編碼。
11.對同一字符(串)的多種字形進行編碼的方法,其特征是綜合利用如權利要求4~10所述的編碼方法對同一字符(串)的多種字形進行編碼。
12.對多個字符(串)的多種字形進行編碼的方法,其特征是在多個字符(串)的多種字形(注包括同一字符(串)的多種字形)組成的集合范圍內,利用如權利要求4~11所述的方法中的一種方法對多個字符(串)的多種字形進行統一編碼,字符(串)字形編碼值的確定規則在多個字符(串)之間是統一的。
13.對字符(串)的多種字形進行編碼的方法,其特征是針對將字符(串)字形包含的獨立連通區域的個數、獨立封閉區域個數作為參數的數學運算結果進行編碼。
14.一種文本數字水印技術,其特征是(1)采用如權利要求2或3所述的方法設計合適的字符(串)字形,并用如權利要求4~11所述的方法分別對載體文件多個字符(串)的多種字形進行編碼。數字水印信息嵌入到載體文件各字符(串)的多種字形中,字符(串)字形的編碼用來表示數字水印信息。(2)針對載體文件中的各字符(串)在(1)中確定的各自的編碼方法,分別檢測載體文件中各字符(串)的字形特征,以確定載體文件各字符(串)字形的編碼,從而檢測出數字水印信息。
15.一種文本數字水印技術,其特征是(1)采用如權利要求2或3所述的方法設計合適的字符(串)字形,并用如權利要求12所述的方法對載體文件中多個字符(串)的多種字形進行統一編碼。數字水印信息嵌入到載體文件各字符(串)的多種字形中,字符(串)字形的編碼用來表示數字水印信息。(2)針對載體文件中的各字符(串)在(1)中確定的共同的編碼方法,統一檢測載體文件中各字符(串)的字形特征,以確定載體文件各字符(串)字形的編碼,從而檢測出數字水印信息。
16.一種處理如權利要求2或3的設計方法設計出的字符(串)字形的方法,其特征是根據應用的需要,放大字符(串)的字形,使字符(串)字形的拓撲結構變得清晰,以增強數字水印信息的檢測效果,或者通過調整字符(串)的字形到適當的大小,以減少水印信息對人視覺的影響。
全文摘要
本發明提供了一種基于字符拓撲結構的文本數字水印技術。其基本原理是通過改變字符(串)字形的拓撲結構,設計出語義上相同的字符(串)的多種字形,并對這些字符(串)字形的拓撲結構進行恰當的編碼,利用字符(串)的拓撲結構來攜帶數字水印信息。本發明包括多項緊密相關的內容(1)字符(串)的多種字形設計方法;(2)若干種對同一字符(串)的多種字形進行編碼的方法;(3)若干種對多個字符(串)的多種字形進行統一編碼的方法;(4)基于對多個字符(串)的多種字形分別編碼的文本數字水印技術;(5)基于對多個字符(串)的多種字形統一編碼的文本數字水印技術(6)一種協調水印信息檢測效果與水印信息對人視覺影響的方法。本發明的文本數字水印技術具有水印信息帶來的視覺影響小、檢測方法簡單可靠、魯幫性好、水印信息容量大等特點。
文檔編號G09C1/00GK1684115SQ20051006589
公開日2005年10月19日 申請日期2005年4月20日 優先權日2004年10月18日
發明者劉 東 申請人:劉 東