國立臺灣師範大學...

55
國立臺灣師範大學 資訊工程研究所碩士論文 指導教授:黃 吉 博士 可逆式浮水印嵌入法則之硬體架 構實現之研究 The hardware implementation of reversible watermarking algorithm 研究生: 林岳 中華民國 一百零五 七 月

Transcript of 國立臺灣師範大學...

  • 國立臺灣師範大學

    資訊工程研究所碩士論文

    指導教授:黃 文 吉 博士

    可逆式浮水印嵌入法則之硬體架

    構實現之研究

    The hardware implementation of

    reversible watermarking algorithm

    研究生: 林岳 撰

    中華民國 一百零五 年 七 月

  • 摘要

    I

    摘要

    本論文的主要目的是用一套硬體架構去實現浮水印嵌入法則。採用的法則是

    Hadamard Transform 法則,與其他法則相比,此法則解決了其他法則有不可逆和

    會受到圖片種類而影響嵌入數量的問題,同時計算複雜度也不高,計算上較方

    便。

    本論文將會以硬體架構去實現浮水印嵌入法則,在許多應用中,我們希望能

    夠即時的嵌入浮水印,在軟體中,嵌入所花的時間和想要嵌入的浮水印 bits 數成

    正相關,而此時用硬體處理的好處是執行時間不會因為想要嵌入的浮水印 bits 數

    而有太大變化,同時資源消耗方面也不太受影響,可在有限的時間內快速的嵌入

    浮水印。在其他以 VLSI 架構來嵌入浮水印的論文中,大多有嵌入完後不可逆的

    問題,或是可能無法為圖片提供全覆蓋保護,而在本論文中則解決了上述問題。

    綜合上述提到的觀點,本硬體架構具備低複雜度、處理速度快、可使嵌入浮水印

    後的圖片還原至原圖,以及提供全圖片覆蓋保護的優點。

    關鍵字:FPGA、Hadamard Transform、可逆式

  • 誌謝

    II

    誌謝

    首先要先感謝我的指導教授 黃文吉教授,在我這兩年的學習生涯中,教導

    了我許多研究上必要的知識,指引我正確的學習方向,在我遇到瓶頸時,都能夠

    適時的提供我建議,讓我能夠解決困難,使得本論文能夠順利的完成。同時也感

    謝輔仁大學資訊工程系 葉佐任副教授和台北大學資訊工程學系 黃俊堯教授

    撥冗來參加我的碩士論文口試,給予在論文上的評閱和建議,使我受益良多。

    此外,能夠在多媒體通訊暨系統晶片實驗室中能夠和大家一起研究,我深感

    榮幸,我要感謝皓棠學長、建廷學長、映綸學長、建旻學長、柏佑學長、元品學

    長和信豪學長,即使在畢業後也提供了我許多的建議,以及和我相處兩年的同學

    們:書豪、元俊、孟蓉、雅慶、松甫、凱文、育君,在平日和課業上協助我,和

    一年級的學弟妹:塏立、愷薇、啟濠、得榮、暐傑、志昌、伯儒、紘境,在我口

    試時幫忙我許多。

    最後,感謝我的家人和朋友在這兩年支持和關懷我,讓我能夠專心於研究中,

    使我最終能夠完成這篇論文,順利完成學業,謹將此論文成果獻給所有關心我的

    人,希望大家能夠與我一同分享這份喜悅和榮耀。

  • 目錄

    III

    目錄

    摘要 ....................................................................................................................... I

    誌謝 ......................................................................................................................II

    目錄 .................................................................................................................... III

    表目錄 ................................................................................................................ IV

    圖目錄 .................................................................................................................. V

    第一章 緒論 ......................................................................................................... 1

    1.1 研究背景與動機 ......................................................................................... 1

    1.2 研究目的與方法 ......................................................................................... 8

    第二章 基礎理論以及技術背景介紹 ................................................................ 9

    2.1 全像圖 ......................................................................................................... 9

    2.2 HADAMARD TRANSFORM........................................................................... 10

    2.3 浮水印嵌入法則流程 ............................................................................... 11

    2.3.1 浮水印嵌入 ............................................................................................................. 11

    2.3.2 浮水印截取 ............................................................................................................. 17

    2.3.2 圖片還原 ................................................................................................................. 20

    第三章 系統架構 ............................................................................................... 24

    3.1 簡介 ........................................................................................................... 24

    3.2 HADAMARD 轉換單元 ............................................................................... 26

    3.3 數據隱藏單元 .......................................................................................... 30

    第四章 實驗數據與效能比較........................................................................... 34

    4.1 開發平台與實驗環境 .............................................................................. 34

    4.2 實驗數據呈現與討論 .............................................................................. 35

    第五章 結論 ....................................................................................................... 46

    參考文獻 ............................................................................................................. 47

  • 表目錄

    IV

    表目錄

    表 2.1 L 與 q 與最大嵌入資訊數量 Q(m)的關係與是否具備可逆性…………….23

    表 4.1 不同精度下測量原本和進行重建後的 Hologram 的 PSNR 值… …..……37

    表 4.2 不同圖片在不同法則下所能夠嵌入的最大資訊量和隱蔽性比較………..41

    表 4.3 硬體架構在精度不同時,變動 q 時的硬體資源消耗比較………………...42

    表 4.4 硬體架構在精度不同時,變動嵌入 q 後,比較嵌入完後的隱蔽性……...43

    表 4.5 軟體(Matlab)和本論文硬體架構執行時間比較……………………….......44

    表 4.6 本論文和其他論文之執行時間比較..............................................................44

  • 圖目錄

    V

    圖目錄

    圖 1.1 嵌入浮水印後的圖片 (a)未遭受破壞 (b)遭受到破壞………………..…...3

    圖 2.1 實數軸做長度 L 的分割後,q 為 2 的情況下嵌入的流程………………...13

    圖 2.2 將浮水印 W 嵌入至原始圖片 H 得到�̅�的流程圖……………………..….15

    圖 2.3 從已經被嵌入浮水印的圖𝑯中,截取浮水印資訊�̅̅̅�的流程……………...17

    圖 2.4 將已嵌入浮水印的圖片�̅�四捨五入後還原至圖片 H 的流程……….…....20

    圖 3.1 浮水印嵌入的硬體架構…………………………………………………….25

    圖 3.2 1D Hadamard 轉換元件的硬體架構……………………………..………...26

    圖 3.3 2D Hadamard 轉換單元的硬體架構………………………………...……..27

    圖 3.4 最右上角 cell的架構…………....…………………………………………..27

    圖 3.5 2D Hadamard 變換的操作………………………………………………….29

    圖 3.6 數據隱藏單元……………………………………………………………….31

    圖 3.7 浮水印嵌入的狀態圖……………………………………………………….32

    圖 4.1 使用的圖片素材…………………………………………………………….36

    圖 4.2 Hologram1 做振幅還原後的結果……………………………………..……39

    圖 4.3 Hologram2 做相位還原後的結果…………………………………………..40

  • 第一章 緒論

    1

    第一章 緒論

    1.1 研究背景與動機

    在現代生活中,隨著電腦與網路的快速發展,數位資料可以不受時間與空間

    限制,藉由網路快速的傳播,一般來說,我們會希望傳送給對方的數據是正確的,

    而對於一些比較敏感的圖像,像是軍事、醫療或法律用或是全像圖(Hologram),

    更是絲毫的改變都是不被允許的,為了避免像是在傳輸時發生錯誤,導致接收方

    收到不正確的數據,或是遭到第三者惡意的竄改圖像而影響數據的價值,我們會

    使用一些方法確保數據的正確性。在此,我們使用的方式是藉由嵌入一個有意義

    的浮水印來確定我們所傳送的圖像是正確的,遭到更改時我們也能夠得知圖像已

    遭破壞過。

    (a) (b)

    圖 1.1 嵌入浮水印後的圖片 (a)未遭受破壞 (b)遭受到破壞,出現雜訊

    浮水印的目的在於嵌入一塊秘密的訊息(浮水印)到原始的數據中,而任何

    一點的更動或是竄改就會改變浮水印,像是在論文[6]中,在附圖 1.1 內,嵌入了

    擁有者名子的縮寫,如遭破壞就會顯示出很明顯的雜訊,如附圖 1.2,就可以很

    明顯的看到一點一點的雜訊,對於想截取出浮水印的人來說,很清楚的就得知圖

  • 第一章 緒論

    2

    1.2 和圖 1.1 不一樣,從而得知此圖已經遭到了竄改,避免獲得錯誤的資訊。而

    我們就稱只要一些細微更動就磨滅的浮水印叫做脆弱式浮水印,反過來說能夠抵

    抗對嵌入資料的一定操作,而不被影響的就稱為強健式浮水印,強健式浮水印在

    經過各種攻擊後,所萃取的浮水印仍然可以清楚的用人眼辨識或判斷,強健式浮

    水印一般應用在保護作者智慧財產權上,所以要能夠經的起各種攻擊,無論是壓

    縮而產生的破壞或是惡意破壞影像之攻擊。

    一般而言,為了確保浮水印的安全強度,我們會要求浮水印要有一些性質:

    隱蔽性、安全性、靈敏性、可逆性和容量,因為我們希望浮水印是只有相關人士

    知道的,若太簡單就被得知浮水印的樣式或浮水印嵌入位置的話,就喪失了浮水

    印的意義。

    讓浮水印不可被察覺是很重要的,如果嵌入的浮水印不能被保護原始資料,

    那此浮水印的可用性就非常的低,像是我們常常能看到印上 LOGO 圖案的

    檔案,這種就稱為可見浮水印(Visible Watermarking),若浮水印沒有隱蔽性,就

    很容易遭到其他人惡意的複製或破壞,使得我們獲得錯誤的資料,所以浮水印應

    當是不能夠輕易的被察覺。

    而在難以察覺浮水印的情況下,我們也希望浮水印應該具備安全性,也就是

    浮水印本身要難以被修改,如果第三者只是想要惡意修改本身資料的話,應該要

    能夠明顯的察覺浮水印已遭到修改,而嵌入的浮水印應該也不能太容易的被偽造,

    以確保資料的正確性,而同時我們也希望浮水印具備可偵測被修改的靈敏性,倘

    若圖像已經被第三者修改,或是在傳輸過程中發生一些錯誤使得資料錯誤,最好

  • 第一章 緒論

    3

    是能夠找出被修改過後的位置,以了解圖像被動過什麼手腳,方便使用者釐清圖

    像發生了什麼錯誤。

    在一般的情況下,浮水印最好是具備可逆性的,也就是在嵌入浮水印後,截

    取出浮水印的圖最好能夠還原成和原圖一樣,一些具備高價值的資料,像是醫院

    拍攝的醫療用圖片、全像圖等,是必須絕對正確、不能容許一點差錯的,一些細

    微的改變很有可能就會影響專業上的判斷,因此在還原後的圖是必須得和原圖不

    能有細節上的落差。在具備可逆性的同時,我們也希望在完成浮水印嵌入後,嵌

    入浮水印後的圖和原本尚未嵌入符水印的原圖不要有太大的落差,這也是基於安

    全性考量,因為如果很明顯的就被看出來嵌入過後的圖和原本的圖有明顯的差異,

    可能反而會引起有心的第三者注意,有意的做截取測試後再做修改,讓安全性上

    面有疑慮,應該也要避免此狀況。

    最簡單去實現脆弱式浮水印的方法就是在空間域中,把浮水印隱藏在圖片中

    的每一個 pixel 內的 LSB (Least Significant Bit,最不重要的位元),這種方法具有高

    視覺透明度,同時計算複雜度也不高,相當容易實做,但是如果被破壞的位置剛

    好不在 LSB 上,那我們就不知道已經被修改過且也找不到是哪邊被修改過,這

    個方法在錯誤偵測上的靈敏性是相當低的。同時此法也欠缺可逆性,也就是在截

    取出浮水印之後,沒有辦法把圖片還原到尚未嵌入浮水印前的原始狀態圖片,可

    能會導致研究最後的結果產生誤差。

    為了解決 LSB 法則不可逆的結果,在論文[5]提出了解決方法,先計算出圖

    片中 pixel 出現的次數,統計後尋找出 pixel 出現的高峰值和低峰值,然後利用橫

  • 第一章 緒論

    4

    移的方式挪出一塊可以供浮水印嵌入的位置,然後再嵌入浮水印。如此做的話,

    接收方只要提取出裡面的浮水印資訊,然後再做相反的操作,也就是把先前做過

    橫移動作的區塊橫移回去,就可以回到原圖,達成我們所需要的可逆的功能,同

    時操作困難度也不會太高,容易實現。

    不過,若使用這個法則,要擷取出浮水印且還原圖片的話,需要知道橫移區

    塊的邊界值才能夠還原,也就是必須另外分開傳值給接收者,而若這個值遭到第

    三者修改,則接收者是無法截取出正確的浮水印的,也無法還原出完整的原始圖

    片。另外若第三者破壞或嵌入的位置避開嵌入浮水印的空間,沒有更改到我們當

    初為了嵌入浮水印而橫移的區塊,那我們也不會知道這張圖片是不是已經破壞或

    是修改過,在錯誤偵測上的靈敏性是不太足夠的。

    同時,因為這個法則需要看 pixel 出現的峰值,所以能夠嵌入的浮水印資訊

    量是有限的,如果圖片的 pixel 分布相當的集中的話,就可以嵌入相對多的浮水

    印資訊量,反過來,如果選擇圖片 pixel 是均勻分布的,所能影響的值就不多,

    嵌入的數量就大大減少。

    而因為論文[6]中,要能嵌入較多的浮水印的話,圖片的 pixel 分布需要相對

    集中才可能達成,在論文[10]中則改善了這種限制,這個法則是基於前面論文[6]

    的方法,但是在嵌入前就先把圖片分割成固定大小的 Block,而在每個 Block 內,

    每相鄰的兩個 pixel 先做相減,相減過後把每一組差值記錄下來,對這些 Block

    的差值做橫移處理,再嵌入浮水印資訊,嵌入完後再將差值橫移回來,就得到了

    加密完成的圖片,這樣做的好處是因為一般來說,圖片每一個 pixel和相鄰的 pixel

  • 第一章 緒論

    5

    之間的差值不會差太多,這樣處理過後能嵌入的浮水印資訊量就會大大的增加

    不過同樣的,因為要先切成固定大小的 block,而這些切完後 block 要還原

    的話必須要有還原的值,同樣的這個值被若遭到修改後,也是無法截取出正確的

    浮水印,同時若第三者修改的位置避開當初橫移嵌入過的位置的話,我們也是不

    知道這張圖片是否已經遭到修改過,只要修改一個位置就會讓影像產生一連串的

    錯誤,造成使用者更大的困擾。

    雖然論文[10]比起論文[16]大大的提升了嵌入數量,但還是受限於圖片的

    pixel 是否集中,所以另一個方向就是我們把浮水印嵌入的位置從空間域改到轉

    換域上面,同時在安全性考量上,在空間域修改一小部分的值,就會對變換域中

    的係數產生很大的影響,因此安全性上較有保障,在論文[9]、論文[10]、論文[11]

    就是基於 JPEG 圖像編碼在變換域上做轉換,但因為 JPEG 量化所產生出來的失

    真,一些浮水印的操作可能會導致視覺品質下降,在論文[13]中採用了可逆的數

    據隱藏技術,可避免因為嵌入浮水印後所導致的視覺品質下降,但是因為在 JPEG

    量化後的失真無法回復,在一些需要高度精準度的研究中,是非常不適合的。而

    有些法則因為有較高的計算複雜度,可能會在浮水印嵌入到圖像中的長時間延遲

    中,發生離線攻擊(對軟體進行無時間限制的破解動作)。

    在論文[17]中,使用的浮水印嵌入法是用 DCT 轉換法,先把圖片切成數個

    相同固定大小的 Block,接著對每一個 Block 做 DCT 轉換處理,轉換後,在從每

    個轉換後的 Block 內挑選一個係數出來,對這個係數嵌入浮水印資訊,嵌入完成

    後,再將每個 Block 做 Inverse DCT 轉換,再放回原來每個 Block 的位置,完成

  • 第一章 緒論

    6

    嵌入的動作。這法則的優點是在錯誤偵測上面具有相當高的靈敏度,因為嵌入前

    我們必須先將圖片從空間域轉換到轉換域上,所以就算被第三者修改的位置或是

    在傳輸時發生錯誤的位置和浮水印所嵌入的位置不同,經由 DCT 轉換後,可以

    看到浮水印的樣式明顯的不正確,從而得知資料是不正確的。

    DCT 轉換浮水印嵌入法則擁有很高的錯誤偵測靈敏性,但是在截取完嵌入

    的浮水印後,無法將圖片還原至尚未嵌入浮水印的狀態,也就是說,這是一個不

    可逆的浮水印嵌入法則,雖然擁有高度的靈敏性來偵測錯誤,但是因為不可逆的

    關係在應用上還是有許多的限制,同時,DCT 轉換浮水印嵌入法則在做 DCT 轉

    換時,有較高的計算複雜度。

    為了減少浮水印嵌入的所花的時間,像是論文[14]、論文[20]、論文[21] 、

    論文[23]、論文[26]、論文[27]、論文[29]、論文[30]已提出用 VLSI 架構來快速嵌

    入浮水印,在論文論文[14]中,是在空間域中進行 DPCM 操作(脈衝編碼調變後,

    紀錄目前的值和前一個值的差異值)後,再執行 LSB 法則,而在論文[26]中對強

    健式浮水印進行 DCT 轉換,論文[27]則是在空間域中嵌入二進制的浮水印,論

    文[21]在小波域(wavelet domains)上處理強健式浮水印,而在論文[20]中能夠為壓

    縮的影音串流提供實時半脆弱式浮水印嵌入處理。不過上述論文的法則,在嵌入

    浮水印都不可逆,雖然在論文[23]中,提出了一個在硬體中可逆的 RCM 演算法,

    不過 RCM 可能無法圖片全覆蓋保護,而且可能因為不同的圖片而影響能隱藏的

    浮水印數量。

    因此,為了改善如同論文[16]、論文[20]錯誤偵測的靈敏性,以及論文[14]、

  • 第一章 緒論

    7

    論文[20]、論文[21] 、論文[23]、論文[26]、論文[27]、論文[29]、論文[30]的不

    可逆性和降低計算複雜度,解決論文[23]可能無法為圖片提供全覆蓋保護的問題,

    同時也要保持在視覺上的高度透明度,在論文[18]中,使用了新的轉換方式來取

    代論文[17]的轉換公式,使用了 Hadamard 轉換公式來取代 DCT 轉換,更換成

    Hadamard 轉換公式的好處是 Hadamard 轉換公式是可逆的,在轉換回來後可以還

    原成尚未嵌入浮水印前的圖片,同時計算複雜度也比 DCT 轉換公式低很多,可

    以應用在各種需要高度精準度的圖片上,而同時硬體架構非常適合為圖片提供全

    覆蓋的保護,且擁有低面積成本和高處理能力,能夠及時處理浮水印嵌入至大尺

    寸圖像中。

  • 第一章 緒論

    8

    1.2 研究目的與方法

    在本篇論文中,我們將以論文[18]的演算法,延伸出以硬體架構去實現

    Hadamard 轉換法則。會在接下來文章中說明 Hadamard 轉換法則的運作方式,其

    硬體設計的架構,以及如何應用在一般 2D 影像上或 Hologram 上。

    在本篇論文中,將會把內容分為

    【第一章】 緒論

    介紹本論文研究的背景、動機、目的和全文架構

    【第二章】 基礎理論以及技術背景介紹

    說明全像圖(Hologram)和本論文使用的 Hadamard 轉換公式以及相關數學驗證

    【第三章】 硬體架構

    詳述本論文以硬體實作浮水印嵌入的流程和架構

    【第四章】 實驗結果

    以硬體電路實現後的結果和軟體的數據做比對和分析

    【第五章】 結論

    總結本篇論文所提出的成果

  • 第二章 基礎理論以及技術背景介紹

    9

    第二章 基礎理論以及技術背景介紹

    2.1 全像圖(Hologram)

    全像術(Holography)代表全像技術的統稱,是ㄧ種 3D 成像技術,過去十多

    年來,數位全像術已經被廣泛的使用,範圍也由簡單的重建影像,發展至製作全

    像光學元件或是電腦全像術上,應用於即時動態光學資訊處理,包括光學計算、

    光學神經網路、光學相位編碼加密等,在像是娛樂、醫療、生物學領域上都有很

    大應用幅度。這種技術能把一個物體的形狀資訊紀錄下來後,可以按照原比例把

    物體還原出來,可以使用者自由放大縮小,方便使用者觀察或是研究。

    記錄資訊時並不是以外觀的顏色來記錄,而是記錄影像中包含振幅和相位的

    資訊,這個資訊的產生的方式是先用一組固定波長的光線照射到我們想要拍攝的

    物體上後,在用另一組同樣波長的光線,照射到該物體後反射出來的光線做光繞

    射,把做完光繞射的結果用 CCD(Charge Couple Device)Camera 來將記錄下來,

    儲存在 Hologram 裡面,就完成儲存動作。

    Hologram 還原時需要一組還原參數,我們把這組還原參數當作浮水印嵌入

    Hologram 後,就不必在另外傳送資料給使用者,提升方便性的同時,也避免了

    另外傳送資料時被第三者攔截更改的可能危險性。

  • 第二章 基礎理論以及技術背景介紹

    10

    2.2 Hadamard Transform

    我們所使用轉換方式是 Hadamard transform,變換命名源自法國數學家

    Jacques Solomon Hadamard,為一種廣義的傅立葉變換(Fourier transform), 在視

    頻編碼中作為變換編碼的一種使用已有很久的歷史,Hadamard 矩陣形式為為2𝑘

    的變換矩陣,每個元素都是+1 或-1,每行都是互相正交、對稱的,最小矩陣單

    位為 2x2,若需要增減時,可藉由公式(1)擴增到需要的大小,再藉由公式(2)依據

    正負號次序(Sign change,正負號改變次數)將矩陣內的列向量座順序上的重新排

    列。

    𝑉2𝑘+1 = (𝑊2𝑘 𝑊2𝑘𝑊2𝑘 −𝑊2𝑘

    ) (1)

    𝑉2𝑘+1 → W2𝑘+1 (2)

    我們選擇了我們所要使用的 Hadamard 矩陣的大小後,接下來就可以開始對

    圖片進行嵌入浮水印的動作,嵌入浮水印的流程主要是先把圖片切成固定大小的

    Block,然後每個 Block 藉由 Hadamard transform 的方式從空間域轉到轉換域後,

    從每個 Block 中提出一個係數作量化,然後再把浮水印資訊嵌入到這個量化完的

    係數內,嵌入完之後再用Hadamard transform把Block從轉換域轉回到空間域上,

    轉換完之後再使用四捨五入做精度調整,這樣就完成了浮水印嵌入的動作。

  • 第二章 基礎理論以及技術背景介紹

    11

    2.3 浮水印嵌入法則流程

    假設現在有一張維度是2𝑁 × 2𝑁的圖片 H,而我們要將符水印資訊 W 嵌入至

    H 中,W 的維度是2𝑛 × 2𝑛且N≥n,在W中的每一個 pixel 是 q 個 bits,q≥1,W

    的體積是2𝑛 × 2𝑛 × 𝑞。�̅�代表嵌入完浮水印的圖,而從�̅�截取出來的浮水印為�̅�,

    若 W=�̅�,則我們認定這個浮水印嵌入法則是正確的。

    2.3.1 浮水印嵌入

    嵌入符水印的目標是在H中嵌入浮水印資訊W,然後得到嵌入完的圖�̅�。

    為了嵌入浮水印,我們首先把 H 分割成大小相同且不重疊的 block 𝑈𝑖,𝑗,i≥ 0,

    j≤ 2𝑛 − 1,而每個 block 的大小是2𝑘 × 2𝑘,k=N-n,𝑤𝑖,𝑗代表浮水印 W 裡第(i , j)

    個元素,而因為我們要把𝑤𝑖,𝑗嵌入到𝑈𝑖,𝑗的 Hadamard 轉換域中,這邊用𝑉𝑖,𝑗代表𝑈𝑖,𝑗

    的 Hadamard 轉換域,則代表

    𝑉𝑖,𝑗 = 𝐴𝑘𝑈𝑖,𝑗𝐴𝑘𝑇 (3)

    A 是大小2𝑘 × 2𝑘的 Hadamard 矩陣,k>0,可以經由公式(3)從𝐴𝑘−1擴充出來

    𝐴𝑘 =1

    √2(

    𝐴𝑘−1 𝐴𝑘−1𝐴𝑘−1 −𝐴𝑘−1

    ) (4)

    在k=1時

    𝐴0 = 1 (5)

    在此法則中,我們會從𝑉𝑖,𝑗中,提出一個係數 c 來做量化,其餘係數則不

    變,而為了把𝑤𝑖,𝑗嵌入到量化後的係數 c 中,我們會先將實數軸做切割,切割

    成不重疊、長度為 L 的等長連續區間,而在每段長度相同的等長區間之間,

  • 第二章 基礎理論以及技術背景介紹

    12

    連接點都有一個指標,每個指標對應到2𝑞群組的其中一組,指標x屬於群組

    y 中,y=x mod 2𝑞,而浮水印𝑤𝑖,𝑗會屬於 a 群組,0≤a≤ 2𝑞-1,這是因為𝑤𝑖,𝑗裡

    面共有 q 個 bit,代表著從 0 到2𝑞 − 1的值。而在我們選定了𝑤𝑖,𝑗後,係數 c

    會移動到最近的間隔內,而這個間隔屬於群組 a,假設𝑤𝑖,𝑗=a,a=0 ,・・・, 2𝑞-1,

    設 p 是 c 原本所在的分組,利用公式(5)

    𝑝 = round (𝑐

    𝐿) (6)

    用c除上L在做四捨五入取整數的運算,即可得知p的分組,讓I(p)代表p屬於第幾

    個區間中

    I(p)=Lp (7)

    給了c、𝑤𝑖,𝑗和p後,讓p*代表c在做完量化後的新的指標區間。因為新的區間必須

    在最接近係數c的群組a中,p*應該要滿足

    𝑝∗ = argmin𝑥:𝑥 mod 2𝑞=𝑎

    | 𝐼(𝑥) − 𝑐 | (8)

    然後c移位後的新係數c*就可以從p*推算出

    c*=I(p*) (9)

    係數c*即為嵌入浮水印後的位置。

  • 第二章 基礎理論以及技術背景介紹

    13

    圖2.1 實數軸做長度L的分割後,q為2的情況下嵌入的流程。

    舉個例子說明如何嵌入流程,如圖(2.1),先對實數軸做長度為L的分割

    後,我們選擇的係數c位置在靠近指標4的區間,也就是𝑝在群組4,假設今天我們

    要嵌入的浮水印𝑤𝑖,𝑗=2,從圖中可以看到距離係數c最近同時屬於群組2的地方中,

    指標6是最靠近了,c會重新移位到指標為6的組,即𝑝∗=6,移位完成後,就達成

    了浮水印嵌入的流程。

    在實數軸切割成等長L的區間後,因浮水印𝑤𝑖,𝑗於a群組,在尋找p*的過程中

    ,會對實數軸上所有屬於a群組的區間進行搜索,找到距離係數c最近的a群組,

    然後再移位係數c,但是這個過程非常浪費時間,因為要對整條實數軸進行搜索。

    所以在不影響廣泛性的情況下,我們假設p屬於群組b,0≤b≤ 2𝑞-1,會存在一個

    整數M,使得p=M2𝑞+b。對於指標p而言,實數軸會存在著兩個屬於a群組的元素

    𝑝’和𝑝’+2𝑞,這兩個元素會符合

    𝑝’ ≤ 𝑝 ≤ 𝑝’ + 2𝑞 (10)

    𝑝’ = {𝑀2𝑞 + 𝑎 𝑖𝑓 𝑎 ≤ 𝑏

    (𝑀 − 1)2𝑞 + 𝑎 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 (11)

  • 第二章 基礎理論以及技術背景介紹

    14

    𝑝’與𝑝’+2𝑞是在a群組別中和p的距離最近的兩個元素,其他屬於a群組一定比𝑝’小

    或著是比𝑝’+2𝑞大,而因為係數c在移位時會移動到最近的a群組中,所以比𝑝’小

    或著是比𝑝’+2𝑞大的就不用去考慮,所以我們只要知道𝑝’和 𝑝’+2𝑞的位置後,再去

    調整p*的位置,就完成移位了。

    因為我們不需要考慮比𝑝’小或著是比𝑝’+2𝑞大的值,所以p*一定會是𝑝’或

    𝑝’+2𝑞這兩個其中之一的位置,而因為從公式(10)可以知道|𝑝∗ − 𝑝| < 2𝑞−1,再依

    照公式(9)就可以得知

    |𝑝∗ − 𝑝| < 2𝑞𝐿 (12)

    從公式(12)可以知道,我們在浮水印嵌入流程時,量化完c嵌入浮水印後對c影響

    的最大值。在我們把圖片從空間域經由Hadamard轉換公式轉換到轉換域後,我

    們每個block只會選定一個係數c嵌入浮水印資訊𝑤𝑖,𝑗,而其餘剩下的係數並不會

    做其他更動,所以當L或是q的值很小時,因為只更改到係數c的值的關係,所以

    在整個嵌入流程當中,只會在轉換域內造成輕微失真,而不會有太大的影響。

    𝑉𝑖,𝑗是尚未嵌入浮水印的圖,𝐶𝑖,𝑗是已經嵌入浮水印完的𝑉𝑖,𝑗,然後𝑉𝑖,𝑗做完

    inverse Hadamark轉換得𝐵𝑖,𝑗,依照L值的不同,在𝐵𝑖,𝑗裡面的每一個pixel都可能為

    實數,最後將𝐵𝑖,𝑗做完四捨五入(精度調整)之後可以得到�̅�𝑖,𝑗,在�̅�𝑖,𝑗裡面,每一個

    pixel都含有m個bit,而m就是精度的大小,精度越高,我們嵌入完後的block就有

  • 第二章 基礎理論以及技術背景介紹

    15

    越高的精準度,設�̅�為嵌入完浮水印資訊的圖片H,�̅� = {�̅�𝑖,𝑗, 0 ≤ 𝑖, 𝑗 ≤ 2𝑛 − 1}

    。這樣就完成了在轉換域中嵌入浮水印W的流程。而將浮水印嵌入到圖片H得到

    嵌入完後的圖片�̅�的流程可以以下面的圖(2.2)和步驟說明。

    圖2.2 將浮水印W嵌入至原始圖片H得到�̅�的流程圖,此Block的大小為4×4。

  • 第二章 基礎理論以及技術背景介紹

    16

    嵌入浮水印W到圖片H的流程

    Step 0:給被要嵌入浮水印的圖片H和浮水印資訊W。

    Step 1:將H分割為數個同樣大小且不重疊的block 𝑈𝑖,𝑗。

    Step 2:透過Hadamard轉換公式轉換到轉換域上,將block 𝑈𝑖,𝑗轉換成 𝑉𝑖,𝑗。

    Step 3:透過使用公式(5)和公式(6)得知c所在的群組。

    Step 4:透過使用公式(7)和公式(8)將浮水印嵌入至c,得𝐶𝑖,𝑗。

    Step 5:使用inverse Hadamard轉換轉換回空間域上,將𝐶𝑖,𝑗轉換成 𝐵𝑖,𝑗。

    Step 6:做四捨五入(精度修正),把 𝐵𝑖,𝑗裡的每個pixel四捨五入到精度為m個bit,

    得到�̅�𝑖,𝑗。

    Step 7:獲得嵌入完浮水印的圖�̅�。

  • 第二章 基礎理論以及技術背景介紹

    17

    2.3.2 浮水印截取

    嵌入流程完成後,我們會得到嵌入完成的圖�̅�,而截取主要的流程是以圖

    �̅�中的每個小 block�̅�𝑖,𝑗做為基礎,操作步驟和浮水印嵌入相似,為了截取出

    浮水印�̅�,首先我們先對每個 block �̅�𝑖,𝑗做 Hadamard 轉換,i≥ 0,j≤ 2𝑛 − 1

    ,用𝐶�̅�,𝑗代表�̅�𝑖,𝑗的 Hadamard 轉換域,在 Hadamrd 轉換域上,係數𝑐̅的位置和

    係數 c 在是ㄧ樣的,再由𝐶�̅�,𝑗中獲得係數𝑐̅,則我們就可以由公式(12)(13)

    �̅� = round(𝑐̅

    𝐿) (13)

    �̅�𝑖,𝑗 = �̅� mod2𝑞 (14)

    先求出係數𝑐̅所在的區間�̅�,然後就可以得知浮水印�̅�𝑖,𝑗,整個截取得就如圖

    (2.3)。

    圖 2.3 從已經被嵌入浮水印的圖𝑯中,截取浮水印資訊�̅̅̅�的流程。

    依序從每個�̅�𝑖,𝑗截取出想要的浮水印�̅�𝑖,𝑗後,就可以獲得浮水印�̅�,�̅� =

    {�̅�𝑖,𝑗 ,0 ≤ 𝑖, 𝑗 ≤ 2𝑛 − 1 },而截取出來的浮水印�̅�再和當初嵌入進去的浮水印

    𝑊做比較,就可以得知我們截取出來的結果是否正確。

    從Hologram �̅�中截取出浮水印�̅�之流程

  • 第二章 基礎理論以及技術背景介紹

    18

    Step 0:給被要截取出浮水印的圖片�̅�。

    Step 1:將�̅�分割為數個同樣大小且不重疊的block �̅�𝑖,𝑗。

    Step 2:透過Hadamard轉換公式轉換到轉換域上,將block�̅�𝑖,𝑗轉換成𝐶�̅�,𝑗。

    Step 3:透過使用公式(12)得知係數𝑐̅的區間�̅�。

    Step 4:透過使用公式(13)由�̅�得知浮水印�̅�𝑖,𝑗。

    Step 5:獲得浮水印�̅�,�̅� = {�̅�𝑖,𝑗 ,0 ≤ 𝑖, 𝑗 ≤ 2𝑛 − 1 }

    ㄧ般來說,除了因為傳輸問題而導致的錯誤,或是第三者的惡意修改之外

    ,我們對已經嵌入完的浮水印的圖片�̅�的每一個pixel做有限的精度修正(即四捨

    五入的動作),可能會汙染嵌入圖片�̅�裡的浮水印,另外就是在運算時,選擇分割

    區間的長度L和pixel顯示的精度m會影響到我們最後做精度修正後,所產生出來

    的誤差,造成一些錯誤。

    而為了保證我們從�̅�截取出來的浮水印�̅�沒有遭到修改過,要和原始的浮水

    印W是ㄧ樣的,𝑐̅必須滿足

    |𝑐̅ − 𝑐∗| <𝐿

    2 (15)

    而在從公式(13)(14)可以很清楚的知道�̅�和�̅�𝑖,𝑗會與p*和𝑤𝑖,𝑗是相同的,所以

    可推導出W=�̅�。

    而為了達成公式(15)的條件,我們必須正確的選擇出分割區間的長度L和

  • 第二章 基礎理論以及技術背景介紹

    19

    pixel顯示的精度m,L和m不必單獨被指定來降低四捨五入的誤差。在不影響現有

    架構之下,假設圖片H中每個pixel都有8bits。

    選定一個固定長度的精度m bits,m≥8,則小數部分會有m-8 bits,每個pixel

    做完四捨五入後,誤差應該要小於2−(𝑚−7),即平方需小於2−2(𝑚−7),我們假設

    兩個矩陣X與Y之間的誤差平方為D(X,Y),且必須滿足

    𝐷( 𝐵𝑖,𝑗 , �̅�𝑖,𝑗 ) ≤ 2−2𝑘(𝑚−7) (16)

    設B和�̅�做完Hadamard轉換之後,分別會得到C和𝐶̅。

    參考論文[17]中,可以以相似的流程推得

    𝐷( 𝐵𝑖,𝑗 , �̅�𝑖,𝑗 ) = 𝐷(𝐶𝑖,𝑗 , 𝐶�̅�,𝑗 ) (17)

    而𝐷(𝐶𝑖,𝑗 , 𝐶�̅�,𝑗 )應該要比在C中的係數c*和在𝐶̅中的係數𝑐̅的平方誤差還要大,所以

    可得知

    (𝑐̅ − 𝑐∗)2 ≤ 𝐷( 𝐶 , 𝐶̅ ) (18)

    2−2𝑘(𝑚−7) ≤ (𝐿

    2)

    2

    (19)

    成立時

    可以從公式(16) (17) (18)中的結果,足以證明公式(15)是成立的,而且在經過整

    理後,我們可以發現能使公式(19)L成立的最小的條件是

  • 第二章 基礎理論以及技術背景介紹

    20

    𝐿 = 2𝑘−𝑚+8 (20)

    在選定了精度m後,我們可以依照公式(19)為基礎來選擇L的大小,這樣就可以降

    低在嵌入浮水印後,因為要做精度修正而做四捨五入操作所導致的量化誤差的汙

    染情形。

    2.3.3 圖片還原

    圖片還原是要讓我們能夠把已經嵌入浮水印的圖片�̅�,能夠還原成原本尚未

    嵌入浮水印的圖片,假設我們原本的圖片,每一個pixel裡面都有8bits,只要在

    m>8的情況下,只要把嵌入過浮水印的圖片𝐻四捨五入到8bits後,就能夠還原到

    尚未嵌入浮水印的原圖。如圖2.4所示

    圖2.4 將已嵌入浮水印的圖片�̅�四捨五入後還原至圖片H的流程

    但是要把圖片�̅�還原成原圖H有一定的限制條件,並不是每張嵌入過後的圖

    片四捨五入後都能還原至原圖,以下會把條件列出來。而因為Hadamard矩陣具

    有正交性,所以配合公式(3)可以得到

  • 第二章 基礎理論以及技術背景介紹

    21

    𝑈 = 𝐴𝑘𝑇𝑉𝐴𝑘 (21)

    𝐴𝑘是由公式(4)得知的, 𝐶為做Hadamard轉換運算後的B,𝐶̅為做Hadamard轉換運

    算後的�̅�。

    𝐵 = 𝐴𝑘𝑇𝐶𝐴𝑘 (22)

    �̅� = 𝐴𝑘𝑇𝐶̅𝐴𝑘 (23)

    我們假設a(𝑟, 𝑠),是矩陣𝐴𝑘的第(𝑟, 𝑠)個的元素,0 ≤ 𝑟, 𝑠 ≤ 2𝑘 − 1,從公式

    (4)公式(5)可得知,a(𝑟, 𝑠)取出來的值會是2−𝑘

    2 或−2−𝑘

    2 ,設矩陣U、V、�̅�、𝐶̅中的

    第(𝑟, 𝑠)個元素為u(𝑟, 𝑠)、 v(𝑟, 𝑠)、 �̅�(𝑟, 𝑠)、 𝑐̅(𝑟, 𝑠),則依照公式(21)(22),可以

    更改為

    𝑢(𝑟, 𝑠) = ∑ ∑ 𝑎(𝑥, 𝑟)

    2𝑘−1

    𝑦=0

    2𝑘−1

    𝑥=0

    𝑎(𝑦, 𝑠)𝑣(𝑥, 𝑦) (24)

    �̅�(𝑟, 𝑠) = ∑ ∑ 𝑎(𝑥, 𝑟)

    2𝑘−1

    𝑦=0

    2𝑘−1

    𝑥=0

    𝑎(𝑦, 𝑠)𝑐̅(𝑥, 𝑦) (25)

    所以要能把�̅�還原成原始的H,只有滿足

    |𝑢(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| < 0.5 (26)

    才能夠正確的還原

    而在滿足0 ≤ 𝑟, 𝑠 ≤ 2𝑘 − 1和公式(26)的條件後,我們就可以確定�̅�可以還原

    成原本的矩陣U。正確的選擇必要L、m與q是很重要的,L、m與q是並不是可以

    任意值帶回公式(26)都可以成立。

    在浮水印嵌入流程中,我們設V的係數為c= v(𝑥′, 𝑦′),而b(𝑟, 𝑠)與c(𝑟, 𝑠)分別是

  • 第二章 基礎理論以及技術背景介紹

    22

    B與C中的第(𝑟, 𝑠)個元素,可以得到

    𝑐(𝑟, 𝑠) = {𝑐∗ 𝑖𝑓(𝑟, 𝑠) = (𝑥′, 𝑦′)

    𝑣(𝑟, 𝑠) 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 (27)

    而也可以從公式(22)知

    𝑏(𝑟, 𝑠) = ∑ ∑ 𝑎(𝑥, 𝑟)

    2𝑘−1

    𝑦=0

    2𝑘−1

    𝑥=0

    𝑎(𝑦, 𝑠)𝑐 (𝑥, 𝑦) (28)

    再依照公式(24)、公式(27)、公式(28)可以證明

    |𝑢(𝑟, 𝑠) − 𝑏(𝑟, 𝑠)| = |𝑎(𝑥′, 𝑟)𝑎(𝑦′, 𝑠)||𝑐 − 𝑐∗| (29)

    因a(𝑟, 𝑠)的值會為2−𝑘

    2 或−2−𝑘

    2 ,再依照公式(12)

    |𝑢(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| = 2𝑘|𝑐 − 𝑐 ∗| < 2−𝑘2𝑞−1𝐿 (30)

    而可得到

    |𝑢(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| ≤ |𝑢(𝑟, 𝑠) − 𝑏(𝑟, 𝑠)| + |𝑏(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| (31)

    對b(𝑟, 𝑠)做四捨五入可得�̅�(𝑟, 𝑠),即可知

    |𝑏(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| ≤ 2−(𝑚−7) (32)

    綜合公式(30)和(32),代入(31)中可得

    |𝑢(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| ≤ 2−𝑘2𝑞−1 + 2−(𝑚−7) (33)

    L的選擇須滿足公式(20)才能確定四捨五入後誤差不會汙染到嵌入後的浮水印

    ,再結合公式(20)和(33)可得知

    |𝑢(𝑟, 𝑠) − �̅�(𝑟, 𝑠)| ≤ 2𝑞−𝑚+7 + 2−(𝑚−7) (34)

  • 第二章 基礎理論以及技術背景介紹

    23

    根據公式(34),我們只要能夠滿足

    2𝑞−𝑚+7 + 2−(𝑚−7) < 0.5 (35)

    就可以確定公式(26)是成立的

    這樣就可以保證以經嵌入玩浮水印的圖片�̅�能夠還原成原始的圖片H。

    我們定義資訊隱藏容量Q(m)為可回復的浮水印W的體積,體積大小為2𝑛 ×

    2𝑛 × 𝑞個bits,藉由以下公式定義出來

    𝑄(𝑚) = max{2𝑞−𝑚+7+2−(𝑚−7)

  • 第三章 硬體架構

    24

    第三章 硬體架構

    3.1 簡介

    本章節的目的是實現第二章節所提出的浮水印嵌入法則的硬體實現。在

    第二章節中,我們會先把圖片切割成成數個同樣大小且不重疊的 block 後,

    把每個 block經由Hadamard轉換公式從空間域轉換到轉換域中,而每個 block

    的大小是2𝑘 × 2𝑘,會在每個 block 中取得要嵌入的係數 c 再進行嵌入,嵌入

    完成後再使用 inverse Hadamard 轉換從轉換域中轉換回空間域,最後進行精

    度修正,就可以得到嵌入完的圖�̅�。

    以整體來看,嵌入浮水印的硬體架構會涉及到 block 的讀取和儲存操作

    ,在變換域中,會使用到轉換用的 2D Hadamard 變換和逆變換、要隱藏的浮

    水印資訊和嵌入浮水印的操作。因此可以從圖(3.1)中,看到整個硬體架構

    的圖,主要會使用到四個單元:I/O buffer、Hadamard 轉換單元、數據隱藏單

    元和 controller。I/O buffer 主要的功能是從主記憶體中,存取我們要使用的

    block,還有寫回主記憶體已經嵌入完的 block,Hadamard 轉換單元則是將

    block 進行 2D 的 Hadamard 轉換,在這邊把 block 從空間域轉換到轉換域上,

    要被嵌入浮水印的的係數 c 也是在這邊決定,嵌入完成後 Inverse Hadamard

    轉換也是在這裡運算,最後的精度修正會接在 Inverse Hadamard 轉換後。數

    據隱藏單元負責判斷輸入進來的浮水印的群組,在依照浮水印的群組決定係

    數 c 要移位到哪邊,最後再把嵌入完成後的 c*輸出回去給 Hadamard 轉換單

  • 第三章 硬體架構

    25

    元。而controller則負責控制協調上述三個單元的運作,並在做完精度修正後,

    把嵌入完的嵌入完浮水印的圖�̅�輸出出來。

    圖3.1 浮水印嵌入的硬體架構

  • 第三章 硬體架構

    26

    3.2 Hadamard 轉換單元

    在 Hadamard 轉換單元中,包含了兩個 1D Hadamard 轉換單元,在轉換完之

    後,會存到大小為2𝑘 × 2𝑘的 2D 陣列暫存器中,如圖(3.2)所示,而在我們這邊的

    電路中,為了簡單起見,使用的陣列大小是 4x4,也就是 k=2,因為 Hadamard

    陣列形式是2𝑘,k 值太大的話會造成圖片切割完後的 block 數變少,影響能夠嵌

    入的浮水印數量,而因我們的陣列大小是 4x4。

    在 1D Hadamard 轉換單元的輸入輸出就是四個輸入四個輸出,而這個 1D

    Hadamard 轉換單元僅由簡單的加法器所構成,如圖(3.3),而在大小為 4x4 的 2D

    陣列內,包含了 16 個 cell,每個 cell 由一個 mux 和一個暫存器組成,如圖(3.4),

    由 mux 控制每個 cell 的輸入,在 2D 陣列中,允許存在暫存器內的資料向下移動

    或是向左移動去做運算。

    圖3.2 1D Hadamard轉換元件的硬體架構

  • 第三章 硬體架構

    27

    圖3.3 2D Hadamard轉換單元的硬體架構

    圖3.4 最右上角cell的架構

  • 第三章 硬體架構

    28

    而在介紹完電路架構後,由圖(3.5)顯示出我們如何利用 Hadamard 變換單元

    操作 2D Hadamard 變換,也就是我們如何把資料從空間域轉到轉換域上儲存的

    動作。在這邊,首先我們會先將初始的資料 block U 傳遞到頂端的 1D Hadamard

    轉換單元上,然後進行 1D 的 Hadamard 轉換,計算完後的結果就向下移動,同

    時下一筆資料就在進來進行 1D 的 Hadamard 轉換,因為 block U 的大小是 4x4,

    所以這個步驟會進行四次,然後儲存在陣列內,之後再如同上述步驟,向左移動

    進行第二次的 1D 的 Hadamard 轉換,轉換回來的結果會從右邊旋轉儲存回到陣

    列內,這樣就完成了 2D Hadamard 轉換。

  • 第三章 硬體架構

    29

    (a)

    (b)

    圖3.5 2D Hadamard變換的操作 (a)逐行1D Hadamard變換運算 (b)逐列1D Hadamard變換運算

  • 第三章 硬體架構

    30

    而在完成了 2D Hadamard 轉換後,為了嵌入浮水印 w,所以要在這邊選出一

    個係數 c 做為嵌入點,提供給之後的數據隱藏單元用。

    而在經過數據隱藏單元運算,再進行一次 2D Hadamard 轉換,得到了嵌入

    完的 Block �̅�後,之後會進行精度操作的修正,也就是四捨五入的調整,再從 2D

    陣列輸出值到 I/O buffer 時,首先會經由四捨五入的電路進行調整,依照分辨率

    m 修正,修正出的結果再傳出到 I/O buffer 內儲存。

    3.3 數據隱藏單元

    在數據隱藏單元中,會從 Hadamard 轉換單元中提供的係數 c 做為嵌入點,

    使用外部輸入進來的浮水印 w 嵌入,係數 c 的選擇是在變換域中的固定一點,

    在 Hadamard 轉換單元中,就是使用將 c 移位完的的係數 c*代表浮水印資訊,而

    因為是在變換域中做浮水印嵌入的動作,所以在嵌入完後還會傳回 Hadamard 轉

    換單元轉換回空間域。

    數據隱藏單元的硬體架構如圖(3.6)所示,會將要嵌入的係數 c 和浮水印資訊 w 輸

    入進來,目的是求出移位完的係數 c*。在數據隱藏單元中,使用到的電路為簡

    單的加法器、位移運算、多工器和比較器。在(a)電路中,因為從(9)(10)中得知

    ,先求出𝑝’和𝑝’+2𝑞就可知道 c*可能的位置。在 c 輸入進來後,以位移運算取代

    (7)(8)的乘法除法運算,可有效的降低硬體使用的 cost,而在經過運算後,就可

    以得知𝑝’和𝑝’+2𝑞的位置,在經由(b)電路,比較一下𝑝’和𝑝’+2𝑞哪個距離原本的係

    數 c 比較近,c*值就會位移成𝑝’或𝑝’+2𝑞其中一個較靠近係數 c 者。

  • 第三章 硬體架構

    31

    (a)

    (b)

    圖3.6 數據隱藏單元 (a)第一階段:找到𝑝’和𝑝’+2𝑞 (b)第二階段:得到c*

  • 第三章 硬體架構

    32

    在我們得知 c*值位移成𝑝’或𝑝’+2𝑞其中一個值後,c*的值就回傳回 Hadamard

    轉換單元中,然後在 Hadamard 轉換單元中進行 inverse Hadamard 轉換,inverse

    Hadamard 轉換同樣的也使用了兩個 1D Hadamard 轉換單元,而與前面一開始也

    進行 Hadamard 轉換不一樣的地方是在於,這次轉換的資料是從陣列內取得,然

    後先向左推移進行逐列的 1D Hadamard 變換運算,然後再旋轉陣列向下推移,

    經由頂端的變換電路,進行逐行的 1D Hadamard 變換運算,完成 2D Hadamard

    變換,而第一次轉換的時候則是從 I/O buffer 中取得資料。

    圖 3.7 浮水印嵌入的狀態圖

  • 第三章 硬體架構

    33

    圖 3.7 是整體電路的運作流程,Init 狀態時會把所有資料都設為 0 做 reset,

    直到 ctrl_en=1 時 ,啟動電路。啟動後進入到 wait_valid 狀態,發出 Ready_in=1

    訊號,告訴 I/O Buffer 可以開始傳送資料,若 I/O buffer 可以傳送資料,則會發

    出 In_Valid=1 訊號,並開始傳送,進入 Hadamard Transform 狀態,Hadamard 轉

    換電路就會接收資料開始運作,反之若 In_Valid 訊號不為 1,則就會回到

    Wait_Valid 狀態,直到開始傳送資料。Hadamard 轉換電路運算完之後儲存在 2D

    陣列內,進到 Data_Hiding 狀態。進到 Data_Hiding 狀態後,啟動數據隱藏單元,

    從 2D 陣列內取得係數 c,並進行浮水印嵌入動作,嵌入完之後取得係數𝑐̅,再把

    𝑐̅丟回 2D 陣列內儲存,然後進到 Inverse Hadamard Transform 狀態,進行 Inverse

    Hadamard 轉換,轉換完後會發出 out_valid=1 訊號,此時就會把 2D 陣列裡的資

    料傳送到 I/O buffer 內儲存,若此時 rst=0 則回到 Init 狀態重設資料,rst=1 時則

    會回到 wait_valid 狀態,準備繼續進行下一筆資料的運算。

  • 第四章 實驗結果

    34

    第四章 實驗結果

    4.1 開發平台與實驗環境

    本論文使用 Altera Quartus II 14.0 做為撰寫 Verilog 硬體描述語言的開平台,

    Quartus 提供了許多協助開發的功能,像是檢查語法是否錯誤、時序分析、自動

    配置邏輯元件、電路的合成和繞線布局等等,使我們在設計上可以有效的節省時

    間,另外我們使用了 Modelsim 產生模擬訊號波形圖,來驗證我們電路的正確性。

    除了使用 Verilog 硬體描述語言來設計硬體電路外,軟體方面則是使用

    Matlab 2014a 為平台來驗證此硬體架構的執行結果是否正確。

    ※ 硬體實作環境

    Device:Altera Stratix IV EP4SGX230KF40C2

    ※ 軟體實作環境

    CPU:Intel® Core™ i7-3770CPU @ 3.40GHz

    Memory:DDR III 32.0GB

  • 第四章 實驗結果

    35

    4.2 實驗數據呈現與討論

    在本章節中,主要呈現以硬體電路實作浮水印嵌入後,評估嵌入後的隱蔽性、

    資源消耗和效能分析。在這邊我們用四張圖片來分析,兩張一般圖片和兩張

    Hologram,分別標記為圖片 1、圖片 2、Hologram 1和Hologram 2。這兩張Hologram

    是由台灣師範大學光電科技學院 IOP 實驗室,使用數位全像顯微鏡(Digital

    Holographic Microscope(DHM) )拍攝得到的,這四張圖片的大小相同,皆為

    512×512(i,e, N=9)。

    Hologram 1是從 negative USAF 1951的 resolution target所獲取的振幅影像。

    Hologram 2 則是一個 micro array 的相位影像,鏡片直徑(lens diameter)與曲率半

    徑(radius of curvature(ROC)分別為 95𝜇m以及 120𝜇m,microlens 的折射率指標波

    長為 633nm 的時候是 1.457,對焦距離大約是 253𝜇m。

  • 第四章 實驗結果

    36

    (a)Barbara (b)Pepper

    (c) Hologram 1 (d) Hologram 2

    圖 4.1 使用的圖片素材(a)(b)為一般的 2D 影像,分別為 Barbara 和 Pepper (c)Hologram 1 (USAF

    1951 Resolution Target) (d) Hologram 2 (microlens array)

  • 第四章 實驗結果

    37

    在評估隱蔽性上面,我們使用峰值值信號比(peak signal-to-noise-ratio,PSNR)

    來做評估標準,其定義如下

    MSE=1

    262144∑ ∑ ‖�̅�(𝑖, 𝑗) − 𝐻(𝑖, 𝑗)‖2511𝑗=0

    511𝑖=0 (36)

    𝑃𝑆𝑁𝑅 = 10 log2552

    𝑀𝑆𝐸 (37)

    MSE(mean squared error)為已經嵌入浮水印的圖片�̅�和尚未嵌入浮水印的圖片 H

    之間的平均平方差。而在 Hologram 中,MSE 是|�̅�|與|𝐺|之間的平均平方差,而

    對於一個相位影像而言,MSE 是∠G 與∠�̅�之間的平均平方差。

    為了評估我們硬體實作出的可逆式浮水印嵌入法則與其他可逆式浮水印嵌

    入法的差別,接下來會比較對於圖片 girl、pepper、Hologram 1 和 Hologram 2 在

    嵌入數量和隱蔽性上的比較。Q(m)為最大資訊隱藏數量,不同的精度 m 可根據

    公式(36)得到能對應的最大值 q。

    表格 4.1 在嵌入浮水印至 Hologram 後,在不同精度下測量原本的 Hologram 和進行重建後的

    Hologram 的 PSNR 值

    m q Hologram 1 Hologram 2

    10 1 bit 83.97 dB 66.77 dB

    11 2 bits 84.52 dB 70.66 dB

    12 3 bits 86.87 dB 71.95 dB

  • 第四章 實驗結果

    38

    表格 4.1 展示我們在嵌入浮水印之後,把原本還沒有嵌入浮水印的 Hologram

    和嵌入完浮水印的 Hologram 做重建後,在這邊嵌入的浮水印是 Hologram 各自

    的還原參數,來進行 3D 重建,這樣我們傳送 Hologram 時,就不需要再另外傳

    送一個將參數紀錄起來的檔案。而從表格 4.1 看到,我們使用的架構在轉換域中

    對於任何的精度 m 來說,都有相當高的隱蔽性。

    在這邊的 Hologram 2 是ㄧ個 microlens array 的 hologram,這邊為了簡單起

    見,只顯示出 array 中其中一個 microlens,我們把浮水印嵌入在轉換域中最後一

    個係數內。

  • 第四章 實驗結果

    39

    (a) (b)

    (c) (d)

    圖 4.2 沒有嵌入浮水印和已經嵌入浮水印的 Hologram 1 做振幅還原的結果(a)原圖 (b)嵌入浮水

    印且 m=10 (c) 嵌入浮水印且 m=11 (d) 嵌入浮水印且 m=12

  • 第四章 實驗結果

    40

    (a) (b)

    (c) (d)

    圖 4.3 沒有嵌入浮水印和已經嵌入浮水印的 Hologram 2 做相位還原的結果(a)原圖 (b)嵌入浮水

    印且 m=10 (c) 嵌入浮水印且 m=11 (d) 嵌入浮水印且 m=12

  • 第四章 實驗結果

    41

    表格 4.2 一般 2D 圖像 Barbara、Pepper 與 Hologram1、2 在不同的浮水印嵌入法則下所能夠嵌

    入的最大資訊量和隱蔽性比較

    論文[6] 論文[10] 本論文架構

    m=10 m=11 m=12

    Barbara Capacity(bits) 6677 46979 16384 32768 49152

    PSNR(dB) 49.46 53.24 62.90 62.90 62.85

    Pepper Capacity(bits) 14689 52361 16384 32768 49152

    PSNR(dB) 52.47 50.69 59.68 61.49 63.25

    Hologram Capacity(bits) 3563 31864 16384 32768 49152

    1 PSNR(dB) 48.43 57.93 63.13 63.18 64.40

    Hologram Capacity(bits) 5944 33024 16384 32768 49152

    2 PSNR(dB) 44.95 53.68 57.34 57.37 60.51

    在表格 4.2 中,比較了各法則在不同圖片下能隱藏的最大資訊量和隱蔽性的

    比較,可以看到在論文[6]和論文[10]中,資訊隱藏數量會受到圖片 pixel 分布是

    否均勻,若像是在具備 noise-like 特色的 hologram 圖中,就會使論文[6]和論文[14]

    的資訊隱藏數量大大的下降,雖然論文[10]擁有較高的資訊隱藏數量,不過 PSNR

    值不會隨著嵌入數量的上升而一起上升。本論文架構使用的 Hadamard 轉換嵌入

    法則不會因為圖片的種類而影響能嵌入的數量,而且在精度 m=12 時,能看出可

    嵌入的資訊量已贏過其他法則,同時不管是在一般2D圖片或著是hologram圖中,

  • 第四章 實驗結果

    42

    皆有較高的 PSNR 值,在視覺品質上勝過其他的浮水印嵌入法則。

    表格 4.3 硬體架構在精度不同時,變動 q 時的硬體資源消耗比較

    m=10 m=11 m=12

    q 1 1 2 1 2 3

    Capacity (bits) 16384 16384 32768 16384 32768 49152

    Combinational ALUTs 1126 1087 1097 1084 1092 1097

    Memory ALUTs 0 0 0 0 0 0

    Dedicated logic registers 861 859 858 855 857 857

    Block Memory Bits 0 0 0 0 0 0

    DSP Blocks 0 0 0 0 0 0

    表格 4.3 表示了本論文的硬體架構的資源消耗,我們測量了在不同精度下,

    更改嵌入浮水印的 bits 大小,比較其硬體消耗,可以看到不論調整精度的差異,

    或是在同精度之下,選擇嵌入不同 bits 數的浮水印資訊之下,在硬件消耗的方面

    都差距不大,能讓我們在增加浮水印嵌入量的同時,仍維持低面積成本。

  • 第四章 實驗結果

    43

    表格 4.4 硬體架構在精度不同時,變動嵌入 q 後,比較嵌入完後的隱蔽性

    m=10 m=11 m=12

    q 1 1 2 1 2 3

    Barbara Capacity(bits) 16384 16384 32768 16384 32768 49152

    PSNR(dB) 62.90 62.93 62.90 64.27 64.26 62.85

    Pepper Capacity(bits) 16384 16384 32768 16384 32768 49152

    PSNR(dB) 59.68 61.49 61.42 62.30 62.27 63.25

    Hologram Capacity(bits) 16384 16384 32768 16384 32768 49152

    1 PSNR(dB) 63.13 63.20 63.18 64.67 64.43 64.40

    Hologram Capacity(bits) 16384 16384 32768 16384 32768 49152

    2 PSNR(dB) 57.34 58.97 57.37 60.59 60.45 60.51

    表格 4.4 比較了更動嵌入的浮水印 bits 數或是更動精度後,調整嵌入浮水印

    的 bits 大小後做隱蔽性比較。可以看出在提升精度後,隱蔽性會隨之上升,而且

    不會因圖片種類的不同受到太大的影響,不論在 m=10、m=11、m=12 時或在

    m=11 或 m=12 時更動嵌入的浮水印 bits 數後,仍然都保持著高隱蔽性。

  • 第四章 實驗結果

    44

    表格 4.5 軟體(Matlab)和本論文硬體架構執行時間比較

    Matlab 本論文硬體架構(100MHz)

    精度(m) 10 11 12 10 11 12

    q 1 2 3 1 2 3

    Capacity(bits) 16384 32768 49152 16384 32768 49152

    執行時間(s) 0.289 3.076 3.250 0.00229 0.00231 0.00230

    表格 4.6 本論文和其他論文之執行時間比較

    可逆 圖片尺寸 執行時間(ms)

    本論文 O 256*256 0.573

    [14] X 200*200 1.3059

    [29] X 256*256 0.893

    [30] X 256*256 1.125

    表格 4.5 比較了軟體和本篇論文所使用的硬體架構執行時間比較,可以看到

    在軟體執行的時間上,精度 m=12 時比精度 m=11 時還要多 0.2 秒,在精度 m=11

    時執行時間是在精度 m=10 的時候的 10 倍多,而在本論文硬體架構的執行時間

    上,不論是在精度 m=10、 m=11 或 m=12 時,執行時間是差不多的。同時和軟

    體比較的話,在精度 m=10 時,本論文所使用的硬體架構執行速度是軟體的 126

  • 第四章 實驗結果

    45

    倍,而在精度 m=11 時,執行速度是軟體的 1331 倍,在精度 m=12 時,執行速

    度更是軟體的 1413 倍,足以看出使用本論文的硬體架構在執行時間上的速度優

    勢。在表格 4.6 中,和其他 VLSI 架構實現出的法則中比較,可以看出執行速度

    勝過論文[14]、論文[29]和論文[30],且本論文也解決了論文[14]、論文[29]和論

    文[30]使用的法則不可逆問題。

  • 第五章 結論

    46

    第五章 結論

    本論文實現 Hadamard 轉換浮水印嵌入法則之硬體架構,可以由第四章的實

    驗結果看到,Hadamard 轉換法則在嵌入完後的隱蔽性上勝過其他法則,也不會

    因為圖片的 pixel 的分佈而影響到能夠嵌入的資訊數量。以硬體實現後,運算速

    度較軟體快上許多,同時本論文的硬體架構在增加能夠嵌入的浮水印 bits 數後,

    在資源消耗和執行時間上,都沒有太大的改變,而軟體卻會因為能夠嵌入的浮水

    印 bits 數不同而大大影響執行時間,使用硬體架構能使我們能夠更快的處理更大

    尺寸的圖像。

    而相較於其他以 VLSI 架構實作出的浮水印嵌入法則,本論文使用的嵌入法

    則解決了不可逆和無法覆蓋全圖片保護的問題,同時計算複雜度也不高,足以應

    證本論文的優勢。

  • 參考文獻

    47

    參考文獻

    [1] Coltuc, D. Low Distortion Transform for Reversible Watermarking. IEEE Trans.

    Image Processing, 21, 412-417, 2012.

    [2] Chang, H. T., & Tsan, C. L.. Image watermarking by use of digital holography

    embedded,in the discrete-cosine-transform domain. Applied Optics, 6211-6219, 2005

    [3] I. Cox,M. Miller, J.Bloom, J. Fridrich. T,Kalker. Digital Watermarking and

    Steganography, 2nd Ed., Morgan Kaufmann, 2008.

    [4] J. Irvine and D. Harle, Data Communications and Networks: An Engineering

    Approach. New York:Wiley,2002.

    [5] I. Kamel and H. Juma, A Lightweight Data Integruty Scheme for Sensor Networks,

    Sensors, pp.4118-4136, 2011.

    [6] Z. Ni, Y.-Q. Shi, N. Ansari, and W. Su, Reversible data hiding. IEEE Trans.

    Circuits and Systems for Video Technology, Vol. 16. pp. 354-362, 2006.

    [6] Hong, W., & Chen, T.S. Reversible data embedding for high quality images using

    interpolation and reference pixel distribution mechanism, J. Vis. Commun. Image R.,

    22, 131-140, 2011.

    [7] J. Lim, Robust image watermarking scheme against geometric attacks using a

    computer- generated hologram, Applied Optics,pp.6302-6312,2010.

    [8] Cheng, C. J., Hwang, W. J., Chen, C.T. & Lai, X.J. (2014). Efficient FPGA-Based

    Fresnel Transform Architecture for Digital Holography, IEEE Journal of Display

    Technology, 10, 272-281, 2014.

    [9] M. Wu and B. Liu, Watermarking for image authentication, Proc. IEEE Int. Conf.

    Image Processing, pp.437-441, 1998.

    [10]Roy, S. D., Li, X., Shoshan, Y., Fish, A., & Yadid-Pecht, O.Hardware

    Implementation of a Digital Watermarking System for Video Authentication. IEEE

    Trans. Circuits and Systems for Video Technology, 23, pp 289-301, 2013.

    [11]Caragata, D., Radu, A. L., EI Assad, S., & Apostoe, C.. Chaos based fragile

    watermarking algorithm for JPEG images, Proc. International Conf. for Internet

    Technology and Secure, 2008.

    [12] D, Catagata, A. L. Radu, S.EI Assad, C.Apostoe, Chaos based fragile

    watermarking algorithm for JPEG images. Proc. International Conf. for Internet

    Technology and Secure Transactions, 2010.

    [13] C. C. Chang, C. C. Lin, C. S. Tseng and W. L. Tai, Reversible hiding in

    DCT-based compressed images, Information Science, Vol. 127, pp. 2768-2786, 2007.

    [14] Garimella, A., Satyanarayana, M. V. V., Kumar, R. S., Murugesh, P.S., &

    Niranjan, U.C.VLSI Implementation of Online Digital Watermarking Technique with

    Difference Encoding for 8-bit Gray Scale Images, Proc. IEEE International Conf. on

  • 參考文獻

    48

    VLSI Design,2003.

    [15] J. Fridrich, M. Goljan, and R. Du, Invertible authentication, in Proc. SPIE

    Security Watermarking Multimedia Cintents, San Hose, CA, Jan.2001, pp. 197-208.

    [16] Cheng, C. J., Hwang, W. J., Zeng, H. Y., & Lin, Y.C.A fragile watermarking

    algorithm for hologram authentication. IEEE Journal of Display Technology, 10,

    pp.263-271,2014.

    [17] Cheng, C. J., Hwang, W. J., Zeng, H. Y., & Lin, Y.C.A fragile watermarking

    algorithm for hologram authentication. IEEE Journal of Display Technology, 10,

    pp.263-271,2014.

    [18] 詹皓棠, 適用於數位全息圖認證之可逆式浮水印嵌入法則開發與分析, 國

    立臺灣師範大學資訊工程研究所, 2012.

    [19] Hwang, W. J., Chan, H. T., & Cheng, C. J. Hologram Authentication Based on a

    Secure Watermarking Algorithm Using Cellular Automata. Applied Optics, 53,

    G64-G73. 2014.

    [20] C. J. Cheng and L. C. Lin, Correlation-based watermarking by a digital

    hologtaphic technique, Opt. Eng., Bol. 44, 2005.

    [21] Joshi, A. M., Darji, A., Mishra, V.Design and Implementation of Real-Time

    Image Watermarking. Proc. IEEE International Conference on Signal Processing,

    Communications and Computing,2011.

    [22] L. Luo, Z. Chen, M. Chen, X. Zeng, and Z. Xiong, Reversible Image

    Watermarking Using Interpolation Technique, IEEE Trans. Information Forensics and

    Security, Vol 5, pp.187-193, 2010.

    [23] Maity, H. K., & Maity, S. P. FPGA Implementation of Reversible Watermarking

    in Digital Images Using Reversible Contrast Mapping. The Journal of Systems and

    Software, 96, 93-104, 2014.

    [24] Coltuc, D., & Chassery, J. M. Very Fast Watermarking by Reversible Contrast

    mapping,IEEE Signal Processing letters, 14, 255-258, 2007.

    [25] I. Kamel and H. Juma, A Lightweight Data Integruty Scheme for Sensor

    Networks, Sensors, pp.4118-4136, 2011.

    [26] Mohanty, S.P., Ranganathan, N., & Balakrishnan, K. A Dual Voltage Frequency

    VLSI Chip for Image Watermarking in DCT Domain. IEEE Trans. Circuits and

    Systens-II: Express Briefs, 53,pp 394-398,2006.

    [27]Mohanty, S.P., Kougianos, E., & Ranganathan, N. VLSI Architecture and Chip

    for Combined Invisible Robust and Fragile Watermarking. IET Comput. Digit. Tech.,

    1, pp 600-611, 2007.

    [28] C. C. Lin, W. L. Tai, and C. C. Chang, Multilevel reversible data hiding based on

    histogram modification of difference image, Pattern Recognition, Vol. 41, pp. 3582-

    3591, 2008.

  • 參考文獻

    49

    [29] Joshi, Amit, R. M. Patrikar, and Vivekanand Mishra. Real time implementation of

    digital watermarking algorithm for image and video application. INTECH Open

    Access Publisher, 2012.

    [30] Saraju P. Mohanty, N. Raganathan and K. Balakrishna , A Dual Voltage-

    Frequency VLSI chip for Image Watermarking in DCT Domain , IEEE Transaction

    on circuits and systems II(TCAS-II),vol. 53,pp 394-398,2006