• 沒有找到結果。

對本論文做最後的總結。

第二章 浮水印法則介紹

在本章中,我們將詳細介紹本論文所提出的浮水印法則,以及透過數學分析 證明其有效性與正確性。

2.1 簡介

本論文提出一個適用於以 DH 系統為基礎的脆弱型浮水印嵌入技術,提供透 過浮水印來對全像圖做認證和檢查資料的正確性。整個浮水印法則我們分成兩個 部份來探討,第一部份我們先介紹浮水印的嵌入流程以及浮水印的嵌入法則。我 們的浮水印嵌入於 DCT 域底下,計算完後並沒有做量化的動作,而是直接對 DCT 運算過後的係數做嵌入浮水印的動作,之後再做 IDCT 計算,然後我們會依據我 們所期望的儲存精度的大小對每個係數做調整,最後再四捨五入使其值為整數,

以上為整個嵌入過程的初步介紹。

第二部分我們介紹浮水印的擷取,我們首先會將接收到的資料做 DCT 轉換,

獲得我們藏於 DCT 域底下的浮水印資訊,最後產生出浮水印影像。接下來的小 節裡,我們將仔細介紹整個浮水印的嵌入以及擷取過程,最後就是對整個法則的 數學分析,證明其合理性與正確性。

2.2 浮水印嵌入法則

 

 

p*

odd odd odd

odd odd odd

odd odd odd

odd odd odd

odd odd odd

j

2.3 浮水印擷取法則

時,與其相對應擷取出的浮水印影像,我們定義為

w

i,j,其值為 0,否則其值為

]

   

們定義

y

q

y

q如下所示

從 eqs.(7)、(15),我們可以知道

為了我們以上概論的真實性,假設 H 裡的每一個像素值都在

0,256

之內,

第三章 實驗成果跟數據探討

本章節主要是呈現並且討論我們提出之法則的一些實驗結果。

3.1 開發平台與測試對象

本論文提出的法則主要以 JAVA 語言實作,並搭配以 matlab 撰寫出的還原程 式為輔。之所以用 JAVA 語言為我們實現的語言原因為我們將來是有可能實作出 來應用在客戶端或是系統端上,而客戶端的裝置可能為智慧型手機或是平板電腦,

這些行動裝置我們主要以 android 系統為主,選擇 android 系統的原因為其普及 率是目前行動裝置上最高的,而 android 系統的應用程式主要都以 JAVA 語言實 作,所以使用 JAVA 語言來實作是最為適合的。另外 JAVA 語言本身也提供了許 多對我們有用的功能,整理成以下四點:

1. 跨平台: 由於 JAVA 的 JVM(Java Virtual Machine)技術,可在各種作業 系統上建立起自己的平台,故擁有跨平台的特性。若是未來此浮水印法 則需要在平板電腦或是手機上執行,只需設計其使用者介面,毋須再重 新設計程式。

2. 簡單而不複雜: JAVA 語言本身提供許多類別與函式庫給開發者使用,以 供開發者用來撰寫應用程式。若撰寫程式時使用物件導向的設計,將來 若需要維護則相對地比較容易。

3. 資源回收處理(Garbage Collection):剛剛提到 JAVA 中的 JVM 技術,不 僅可達到跨平台的功能,還可以幫助開發者做程式的動態記憶體管理,

讓開發者不用擔心記憶體的問題。

4. 例外處理(Exception) :JAVA 的例外處理機制,主要用來顯示程式中有 可能出現問題的地方的資訊,以供開發者修改或維護,若是執行時發生 錯誤,開發者就可以容易地發現問題點,不需浪費多餘的時間來找出問 題。

測試對象為四張 512×512 的全像圖(圖 3.1(a)、圖 3.1(b)、圖 3.1(c)、圖 3.1(d)),

為了方便之後結果的呈現我們把每張全像圖都命名(Hologram 1、Hologram 2、

Hologram 3、Hologram 4),以及一張 128×128 的二元浮水印影像(圖 3.1(e)),其 圖片在下頁顯示。我們使用 128×128 大小的浮水印影像主要原因在章節 2.2 中的 嵌入浮水印部分中有提到我們會將讀進來的全像圖做切割的動作,而我們區塊切 割的大小為 4×4,512×512 的全像圖表示會有 128×128 個區塊,所以浮水印影像 用 128×128 的大小才能讓每一個位置的元素剛好都能分配到每一個 128×128 的 區塊裡,以上為我們使用 128×128 大小的浮水印影像的主要原因。

(d) Hologram 4 (c) Hologram 3

(e) 二元浮水印

圖 3.1 測試資料及二元浮水印

其中全像圖皆為台灣師範大學光電科技研究所所提供;

(a) Hologram 1、(b) Hologram 2、(c) Hologram 3、(d) Hologram 4 (a) Hologram 1 (b) Hologram 2

3.2 實驗數據的呈現與討論

本節主要分成幾個小節來討論。3.2.1 節呈現之前章節提到過的不同影像格 式對於重建品質之影響,主要測試格式為用m

8及 JPG 兩種格式。3.2.2 節主要 呈現章節 2.2 提到過的 m 跟 L 之間的關係,當對 m 跟 L 做調整後,對全像圖還 原後的結果所造成的影響將在這節詳細的討論。之後我們假設了兩個情況來驗證 我們浮水印法則的效能與其正確性。在 3.2.3 節模擬全像圖透過無線傳輸時發生 封包破壞或是其他使接收資料不正確的情況,當我們接收到資料時,我們透過擷 取浮水印來偵測我們接收到的資料是否正確,所以浮水印的呈現及討論為這小節 的重點。3.2.4 節模擬全像圖遭到惡意篡改等其他情況使儲存在資料庫中的全像 圖不正確,當要還原的時候,我們先擷取出浮水印來判斷全像圖是否有被破壞,

若擷取出破壞嚴重的浮水印我們就捨棄這個資料,而在這個實驗中我們調整篡改 的大小來觀察浮水印的變化,用以驗證浮水印的結果是否如我們所預期的一樣。

3.2.1 JPG 格式對於重建品質之影響

我們以 Hologram 4 來做我們的測試對象,分別用m

8及 JPG 格式來儲存,

兩者都沒有嵌入浮水印,結果呈現如圖 3.2 及圖 3.3 所示。圖 3.2 為二維相位展 開影像,我們可以發現圖 3.2(a)還原出的影像半球附近的邊緣比較圓滑清楚,而 圖 3.2(b)則比較模糊不清,兩者的成像品質有很大的不同,其 PSNR 為 26.8263。

圖 3.3 為三維相位展開影像,我們也可以發現圖 3.3(a)還原出來的邊比較平滑且 完整,圖 3.3(b)則比較崎嶇不平且有缺陷,這也證明了不同的影像格式對全像圖 的重建會有很大的影響。

(b) JPG 格式儲存且無嵌入浮水印 還原出來的二維相位展開影像 (a) m

8儲存且無嵌入浮水印還原

出來的二維相位展開影像

圖 3.2 不同影像格式未嵌入浮水印還原出的二維相位展開影像

(a) m

8儲存且無嵌入浮水印還 原出來的三維相位展開影像

(b) JPG 格式儲存且無嵌入浮水印 還原出來的三維相位展開影像

3.2.2 浮水印控制參數的討論

討論章節 2.2 提到過的 m 跟 L 之間的關係,以四張全像圖做為我們的測試 對像。我們透過 PSNR 計算來驗證我們結果,而 PSNR 計算皆以還原過後的影像 來測量。我們之所以要用還原過後的影像而不用未還原過後的全像圖來做測量主 要原因有二:

1. 我們不知道原本存在於未還原影像的錯誤會不會因還原程式的計算而擴 大,使得還原出來的影像品質不合乎我們的要求,所以如果還原過後出 來的結果包含了原本加入浮水印所造成的破壞還是很好的話,就表示我 們的浮水印法則對影像破壞程度很小。

2. 一般我們都以全像圖還原過後的影像來做判斷,所以還原過後的影像正 不正確會比未還原的影像來的重要,所以透過對還原後的影像做 PSNR 計算,我們才知道這個還原後的影像是否能提供我們做出正確的判斷。

以上兩點為我們為什麼要使用還原過後的影像來做 PSNR 量測的主要原因。

我們發現隨著 m 值的增加 PSNR 也會隨著增加,但理論上 PSNR 並不會一 直無限制的往上提升,所以我們必須知道每張全像圖還原過後的 PSNR 所能達到 的最大上限,首先我們簡單介紹 PSNR 的計算,其計算過程如下

全像圖

我們令嵌入浮水印的全像圖還原後的影像其 PSNR 的最大上限為P 。關於0

P 的獲得,嵌入浮水印的全像圖我們用0 m

64來表示,代表用雙精度的儲存格式 來儲存,保留所有的小數部分。當m

64,根據 eq.(27)

2

2k2m7

  L / 2 

2,其 L 應該為一個極小的數值,為了方便計算,在這裡我們假設 L 為 0.0001。圖 3.8、

圖 3.10、圖 3.12、圖 3.14、圖 3.16 虛線上的數字就是以上面的設定算出來的P 。0 我們希望嵌入浮水印的全像圖還原後的影像其 PSNR 越接近P 越好,其中我們0 可以透過控制 m 來改善嵌入浮水印所造成的破壞,當用 m 個位元儲存的已嵌入 浮水印的全像圖還原後的影像做完 PSNR 計算的結果是最接近P ,表示這張全0 像圖用 m 個位元來儲存是最適合的。

我們的測試皆以可以正確擷取出浮水印為前提,從m

8開始,對 m 一路往 上加到使有嵌入浮水印的全像圖還原後的影像計算出的 PSNR 最接近P ,而這0 之間也需要調整 L 來確保浮水印不會因為四捨五入的關係而遭到破壞,根據

eq.(27)

2

2k2m7

  L / 2 

2,m 跟 L 之間的關係如表 3.1 所示

表 3.1 m 與 L 之間的對應

m L

8 4

9 2

10 1

11 0.5

12 0.25

13 0.125

14 0.0625

15 0.03125

16 0.015625

17 0.0078125

18 0.00390625

我們可以發現隨著 m 值的增加 L 則呈倍數減少,m 跟 L 之間的關係是互相對應 的無法分開來指定。以下的實驗結果為呈現每張全像圖在嵌入浮水印後用不同的

m 個位元儲存,其還原後的影像 PSNR 值的變化。圖 3.6(a)、圖 3.6(b)、圖 3.6(c)、

圖 3.6(d) 、圖 3.6(e)為每張全像圖在未嵌入浮水印時所還原出來的影像,以供後 面結果比較之用。

(c) Hologram 3 未加入浮水印還原 後之振幅影像

(d) Hologram 4 未加入浮水印還原 後之振幅影像

圖 3.6 各張全像圖未加入浮水印 還原後的影像

(a) Hologram 1 未加入浮水印還原 後之振幅影像

(b) Hologram 2 未加入浮水印還原 後之振幅影像

(e) Hologram 4 未加入浮水印還原 後之相位展開影像

59.5465 62.9405 65.3274 68.3525 70.4185 73.9089 76.4056 78.1832

0 10 20 30 40 50 60 70 80 90

8 9 10 11 12 13 14 15

PSNR(db)

Precision level (m)

78.4960

(a) (b)

圖 3.8 Hologram 1 嵌入浮水印後用不同 m 儲存後之 PSNR 圖 3.7 Hologram 1 嵌入浮水印後還原出的影像

(a) 用m

8儲存後之振幅還原結果 (b) 用m

15儲存後之振幅還原結果

52.3362

57.5559 61.1365 63.4507 65.7019 68.6595

0 10 20 30 40 50 60 70 80

8 9 10 11 12 13

PSNR(db)

Precision level (m)

69.1439

(a) (b)

圖 3.10 Hologram 2 嵌入浮水印後用不同 m 儲存後之 PSNR 圖 3.9 Hologram 2 嵌入浮水印後還原出的影像

(a) 用m

8儲存後之振幅還原結果 (b) 用m

13儲存後之振幅還原結果

54.6343 57.0974 58.9884 62.8087 65.6754 68.4192 69.9786

0 10 20 30 40 50 60 70 80

8 9 10 11 12 13 14

PSNR(db)

Precision level (m)

70.4129

(a) (b)

圖 3.12 Hologram 3 嵌入浮水印後用不同 m 儲存後之 PSNR 圖 3.11 Hologram 3 嵌入浮水印後還原出的影像

(a) 用m

8儲存後之振幅還原結果 (b) 用m

14儲存後之振幅還原結果

41.5018

47.992351.0418

55.953159.053562.004164.548567.204169.9007 71.4419 72.2302

0 10 20 30 40 50 60 70 80

8 9 10 11 12 13 14 15 16 17 18

PSNR(db)

Precision level (m)

72.3293

(a) (b)

圖 3.14 Hologram 4 嵌入浮水印後用不同 m 儲存後之 PSNR(振幅) 圖 3.13 Hologram 4 嵌入浮水印後還原出的影像(振幅)

(a) 用m

8儲存後之振幅還原結果 (b) 用m

18儲存後之振幅還原結果

54.2926

60.869664.383367.041868.875170.3132

75.7004 76.089679.5274 79.8378 81.8469

0 10 20 30 40 50 60 70 80 90

8 9 10 11 12 13 14 15 16 17 18

PSNR(db)

Precision level (m)

82.6901

(a) (b)

圖 3.16 Hologram 4 嵌入浮水印後用不同 m 儲存後之 PSNR(相位展開) 圖 3.15 Hologram 4 嵌入浮水印後還原出的影像(相位展開)

(a) 用m

8儲存後之相位展開還原結果 (b) 用m

18儲存後之相位展開還原結果

接下來對於 Hologram 4 還原出的相位展開影像我們做進一步的討論,與前

接下來對於 Hologram 4 還原出的相位展開影像我們做進一步的討論,與前

相關文件