• 沒有找到結果。

使用兩階式降低差值及調整參考像素值的灰階圖像隱寫術

N/A
N/A
Protected

Academic year: 2021

Share "使用兩階式降低差值及調整參考像素值的灰階圖像隱寫術"

Copied!
71
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文 指導教授: 紀博文 博士. 使用兩階式降低差值及調整參考像素值的灰階圖 像隱寫術. An Steganographic Approach Using Two Reducing Phases and Adaptive Reference Pixel in Grayscale Images. 研究生: 中華民國. 方友群 一零九. 年. 撰 二. 月.

(2) 摘要 在網路方便又快速的時代,許多人可自由上傳、下載想要的多媒體檔案,但 同時造成數位盜版等問題。為解決這些問題,有許多學者提出了資訊安全的方法 來保護原作者的檔案,藉此保障他們的權利。幾年前,有幾位學著更提出了隱寫 術(Steganography)等資料隱藏演算法,嵌入數位簽章或其他檔案,以保護作者的 所有權。另外同時兼顧輸出後檔案的品質以及將嵌入能力提升,是在設計一個隱 寫術演算法時所要面臨的一個極大挑戰。 差值擴張(Difference Expansion)是在隱寫術界中應用較廣泛演算法之一,其方 法是透過圖像像素之間的差來儲存隱藏資料,以達到隱寫的效果。本文提出了一 個灰階圖像隱寫術演算法,它使用了改良過的差值擴張演算法,並從方法內部做 一些優化改良。此演算法可以進一步地縮小圖片破損並使得輸出後圖片的像素更 接近於原始像素,進而達到提高圖片品質的效果。研究結果證明我們修改的方法 確實可以再降低像素的變動幅度,能夠比前人方法輸出更高品質的圖片。. 關鍵詞:圖像隱寫術、資料隱藏、差值擴張、降低差值擴張.

(3) 致謝 首先我要感謝在研究撰寫論文的期間中一路指導我、輔導我的指導老師-紀 博文老師。從碩一下正式進入老師的實驗室起,我對碩士論文的研究概念還算矇 矇糊糊,是這位老師主動開導我、校正我、教會我一些碩士研究所隱含的意義, 讓我可以漸漸地進入情況,逐步地將我的研究給完成。雖然在我所研究的領域 上,仍然跟老師他的拿手領域有些出入,但在我撰寫論文研究中提供了我一些建 議,讓我有了想法將我的論文成果達到最好。在寫作文法、簡報撰寫上他也給了 我一些糾正修改建議,讓我可以盡可能地將研究內容描述可以讓人看得懂,這使 得原本中文文法本身就不太好的我得到了一些救濟。在這兩年的漫長歲月,紀博 文老師帶領我、幫助我解決了許多我在研究生涯上所遇到的種種問題,也督促我 使我成為了一個好的研究生。老師,辛苦您了! 最後我要感謝鼓勵我完成論文的家人們,適時給了我有關製作論文的意見。 有了他們的支持、鼓勵與督促,我才能建立起自己的信心,並順利地靠我自己的 力量完成我的研究,一路順利地取得碩士學位。. 方友群 謹誌 國立臺灣師範大學 資訊工程研究所. iii.

(4) 目錄 附表目錄 .......................................................................................................................... v 附圖目錄 ......................................................................................................................... vi 第一章 緒論 .............................................................................................................. 1 研究背景 ...............................................................................................1 隱寫術概觀 ...........................................................................................1 隱寫術特性 ...........................................................................................3 研究目標及計劃 ...................................................................................4 章節說明 ...............................................................................................5 第二章 文獻回顧 ...................................................................................................... 6. 第三章. 差值擴張相關文獻 ...............................................................................6 差值擴張 (Difference Expansion)........................................................7 降低差值擴張 (Reduced Difference Expansion) ...............................13 4 個像素為一組的差值擴張 (DE of Quads) .....................................14 RDE 跟 Quads 結合的降低差值擴張 (RDE of quads).....................16 16 個像素為一組的降低差值擴張 (RDE of block 16) ....................18 4×1 新降低差值擴張 (Enhance-RDE of quads) ...............................19 文獻總結 .............................................................................................21 改良式圖像隱寫術 .................................................................................... 24 針對 Enhance-RDE of Quads 的修正方式.........................................24. 加強兩階段式降低差值收斂 .............................................................31 交換像素值以降低原差值 .................................................................36 其他細節 .............................................................................................39 第四章 實驗結果 .................................................................................................... 43 實驗環境 .............................................................................................43 嵌入一層資料的比較 .........................................................................46 嵌入多層資料的比較 .........................................................................47 實驗數據跟圖片的關係 .....................................................................59 第五章 結論及未來展望 ........................................................................................ 61 參考著作 ........................................................................................................................ 62. iv.

(5) 附表目錄 表 表 表 表 表. 1 各嵌入模式標籤定義 .......................................................................................... 28 2 Fixed Enhance-RDE of Quads 各位置地圖參數功能定義 ................................. 28 3 Fixed Enhance-RDE of Quads 各嵌入模式所需位置地圖參數及其使用空間 . 28 4 Improved Two-Steps-RDE of Quads 各位置地圖參數功能定義 ........................ 39 5 Improved Two-Steps-RDE of Quads 各嵌入模式所需位置地圖參數及使用空間. ........................................................................................................................................ 40 表 6 嵌入一層資料的場合上,兩個方法製造出來的圖片各種數值上的比較 ...... 46 表 7 以 baboon 為例,嵌入多層資料時各層各數值的比較 .................................... 48 表 8 以 car 為例,嵌入多層資料時各層各數值的比較 ........................................... 50 表 表 表 表. 9 以 elaine 為例,嵌入多層資料時各層各數值的比較....................................... 51 10 以 flower 為例,嵌入多層資料時各層各數值的比較 .................................... 53 11 以 fruits 為例,嵌入多層資料時各層各數值的比較 ...................................... 54 12 以 lena 為例,嵌入多層資料時各層各數值的比較 ....................................... 56. v.

(6) 附圖目錄 圖 圖 圖 圖 圖 圖 圖 圖 圖. 1 資料隱藏技術及其衍生分支技術 ........................................................................ 2 2 隱寫術資料嵌入及解嵌入步驟 ............................................................................ 2 3 隱寫術三大特性矛盾關係示意圖 ........................................................................ 4 4 DE 演算法運作示意圖 ........................................................................................... 8 5 像素組在圖片分割示意圖 .................................................................................... 8 6 DE 簡易多重嵌入機制判斷架構 ..........................................................................11 7 DE 隱寫演算法簡易架構(嵌入側) .......................................................................11 8 DE 隱寫演算法簡易架構(解嵌入側) .................................................................. 12 9 RDE 演算法差值變更步驟示意圖 ...................................................................... 13. 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. 10 RDE 演算法差值還原步驟示意圖 .................................................................... 14 11 DE of quads 演算法示意圖 ................................................................................ 15 12 RDE of quads 簡易步驟構造圖 ......................................................................... 17 13 RDE of quads(左)跟 RDE of block 16(右)之間的像素組差異 ......................... 18 14 Enhance-RDE of Quads 降低差值的修正方案結構 ......................................... 24 15 Fixed Enhance-RDE of Quads 降低差值演算法架構 ....................................... 25 16 Fixed Enhance-RDE of Quads 嵌入模式判斷架構 ........................................... 26 17 Fixed Enhance-RDE of Quads 嵌入模式判斷作法 ........................................... 27 18 Fixed Enhance-RDE of Quads 嵌入資料側構造 ............................................... 29 19 Fixed Enhance-RDE of Quads 提取資料側構造 ............................................... 30. 圖 20 Improved Two-Steps-RDE of Quads 降低差值演算法結構 .............................. 31 圖 21 餘數微調方法示意圖 ........................................................................................ 33 圖 22 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = 1~255,𝑏 = 1) ................................................................................. 34 圖 23 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = −1~ − 255,𝑏 = 1) ......................................................................... 34 圖 24 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = 1~255,𝑏 = 0) ................................................................................. 35 圖 25 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = −1~ − 255,𝑏 = 0) ......................................................................... 35 圖 26 Improved Two-Steps-RDE of Quads 差值變更幅度及其趨勢線的走向 (𝑧 = 1~255,𝑏 = 0,橘色實線為實際的差值變更幅度、藍色虛線為趨勢線走向) ..... 36 圖 27 交換像素值方法原理 ......................................................................................... 37 圖 28 主導像素的理想狀況 ........................................................................................ 38 圖 29 交換像素值流程圖(嵌入側) ............................................................................. 38 圖 30 交換像素值流程圖(解嵌入側) ......................................................................... 39 圖 31 Improved Two-Steps-RDE of Quads 嵌入資料側構造 ...................................... 41. vi.

(7) 圖 32 Improved Two-Steps-RDE of Quads 提取資料側構造 ...................................... 42 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. 33 34 35 36 37 38 39 40 41 42. 實驗用載體圖片 ................................................................................................ 44 原圖與雙方演算法輸出圖片比較(以 baboon 為例) ........................................ 45 原圖與雙方演算法輸出圖片比較(以 elaine 為例) .......................................... 45 以 baboon 為例,嵌入多層資料時 PSNR 的比較 .......................................... 48 以 baboon 為例,嵌入多層資料時各層資料容量比較(最後一層除外) ........ 49 以 car 為例,嵌入多層資料時 PSNR 的比較 ................................................. 49 以 car 為例,嵌入多層資料時各層資料容量比較(最後一層除外)............... 51 以 elaine 為例,嵌入多層資料時 PSNR 的比較............................................. 51 以 elaine 為例,嵌入多層資料時各層資料容量比較(最後一層除外) .......... 52 以 flower 為例,嵌入多層資料時 PSNR 的比較 ............................................ 53. 圖 圖 圖 圖 圖. 43 44 45 46 47. 以 flower 為例,嵌入多層資料時各層資料容量比較(最後一層除外) ......... 54 以 fruits 為例,嵌入多層資料時 PSNR 的比較 .............................................. 54 以 fruits 為例,嵌入多層資料時各層資料容量比較(最後一層除外) ........... 55 以 lena 為例,嵌入多層資料時 PSNR 的比較 ............................................... 56 以 lena 為例,嵌入多層資料時各層資料容量比較(最後一層除外) ............. 57. vii.

(8) 第一章. 緒論 研究背景. 拜高科技所賜,近代的網路發展日漸快速。有許多人藉由高速網路將自己喜 愛的多媒體檔案上傳至雲端服務並加以共享。但在現代網路普及的同時,也因為 有人的貪圖方便,藉由網路擅自分享他人的創作物,衍生出數位盜版、抄襲等ㄧ 些不合法的舉動出現,導致創作者的數位版權無意間地被侵犯,造成創作者的權 益損失。因此,數位版權管理是一個相當重要的議題。 為解決這些問題,學者使用資料隱藏(Information Hiding)技術來保護資料。 資料隱藏技術是在幾十年前由 D. Parnas 所提出的概念 [1],將訊息或數位簽章嵌 入在創作物上,其外表用肉眼看起來跟原本的創作物沒什麼不同,但再次使用演 算法反過來提取資料,以聲明此創作物的所有權,這能有效防止第三方非法竊 取、擅自分享原作等問題,藉以保障創作者的權益。. 隱寫術概觀 如圖 1 [2]所示,資料隱藏技術之下被分為幾個分支技術,如:浮水印 (Watermarking)、隱寫術(Steganography)、匿名(Anonymity)等,隱寫術即是其中之 一。隱寫術的概念是由「眼見為憑(What You See Is What You Get)」 [3]這個觀念 引申而來。因為有的時候只憑靠事情的表面也不能完全知道真正的實情,而隱寫 術即是利用這一點,使用「以假亂真」的手法蒙騙了常人的感官,並藉此達到隱 藏資料的效果。. 1.

(9) Information hiding. Covert channels. Steganography. Linguistic steganography. Copyright marking. Anonymity. Technical steganography. Robust copyright marking. Fingerprinting. Fragile watermarking. Watermarking. Imperceptible watermarking. Visible watermarking. 圖 1 資料隱藏技術及其衍生分支技術 隱寫術這一詞源自於兩個希臘詞:「封面(stegos)」以及「寫作(grafia)」 [3], 所以它也可以另稱為「封面寫入演算法」。就如同名稱上的意思一樣,隱寫術即 是將要隱藏的訊息寫入在某一個物體表面上,使訊息與之完全融入。加入訊息後 該物體表面上用人類的感官不易辨認出隱藏訊息的存在,但只要拿出補助工具或 是解碼線索,就可以從該物體表面得知當初寫入的隱藏訊息 [4]。隱藏訊息在隱 寫術領域上非常的重要,所以隱寫術必定要做到取出來的隱藏訊息要跟原本的訊 息完全一模一樣 [4]。 傳送端. Cover File. 接收端. Embed. Retrieve. Program. Program. Recovered File (Optional). Stego File. Secret Data Secret Data. 圖 2 隱寫術資料嵌入及解嵌入步驟 2.

(10) 隱寫術通常做法如圖 2 所示 [3],傳送端將隱藏資料(Secret Data)及準備好的 多媒體載體(Cover File),透過嵌入演算法將資料嵌入載體,使其變成新的檔案 (Stego File)。接收端要取回原隱藏資料時再使用解嵌入演算法取回即可。 可逆式隱寫術(Reversible Steganography)是一個比較特殊的隱寫術。在可逆式 隱寫術的場合下,接收端使用解嵌入演算法取回資料的同時也可以恢復原本嵌入 前的檔案載體(Recovered File)。這類技術有著讓載體完全無損(lossless)地還原的 特性,非常適合用在醫療用圖片上,可確保醫療上的正確性,免得造成醫生的誤 判而導致不可彌補的後果 [5] [6]。 對於隱寫術演算法的設計,學者們歸納了一套隱寫術的設計特性規則,我們 會在下一節去做說明。. 隱寫術特性 隱寫術有三大特性 [4] [7]: 1.. 隱蔽性(Imperceptibility):嵌入隱藏資料之後,載體本質難免會有一些失 真。隱寫術最主要的特性即是盡量讓輸出載體的失真程度降低,做到在 外觀上「幾乎」看不出甚麼破綻,以防被第三方察覺。. 2.. 穩健性(Robustness):檔案在傳輸的過程中,有可能會造成接收到的檔案 有缺失不完整或被惡意竄改的情形。穩健性就是在於在檔案被破壞的情 況下也能把資料提取出來,這有助於降低惡意攻擊的影響。. 3.. 容量(Capacity):在現代隱寫術,載體高容量性是必須考慮的要素。因為 演算法主要注重於內部的隱藏資料,載體必須有辦法騰出如一整個要隱 藏資料的大小甚至更大的空間來寫入資料。. 但是對於任何隱寫術(或是跟任何資料隱藏相關的技術)而言,這三種特性是 無法同時並存的。. 3.

(11) 隱蔽性. 穩健性. 容量. 圖 3 隱寫術三大特性矛盾關係示意圖 如圖 3 所示,隱寫術的三大特性實際上是處於互相矛盾的狀態 [8]。若是要 讓其中一個特性效益最大化時,必定會干擾到其餘的兩個特性。同時將其中兩個 特性增強時,很有可能會導致剩餘的一個特性無效化。譬如在提升載體品質的同 時,很有可能導致載體可塞的資料量變少。或者若將穩健性提升,相對的可能要 浪費更多載體的空間或要素拿去設定並加強資料的穩健度等。在現代要製作有效 率的隱寫術,必須同時兼顧載體隱蔽性及容量是設計隱寫術演算法的一大課題。 所以在本論文的隱寫術將只針對其中兩大特性:隱蔽性、容量去做設計。. 研究目標及計劃 隱寫術應時代變遷而推陳出新,在現代的隱寫術領域中流行使用多個既有的 隱寫術或演算法進行組合,為的就是追求良好的嵌入品質以及特性。本論文主要 以研究圖像隱寫術為主,是以圖像裡的像素值做為載體來嵌入資料。 我們使用了由 J. Tian 提出的差值擴張演算法(Difference Expansion,簡稱 DE) [9]以及從其衍生出來的改良演算法如:降低差值擴張演算法(Reduced Difference Expansion,簡稱 RDE) [10]、DE of quads [11]以及其它衍生的隱寫術文獻 [12] [13] [14]等作為研究對象。並從 DE 演算法領域中挑出其中一篇隱寫術論文 [14],再從其演算法進行改良。在隱寫術的三大特性中,我們以隱蔽性及容量作 為改善對象,以盡量提升圖片載體品質為主要目標。最後的實驗部分將我們的方 法以及前人的方法 [14]做測試,並在品質與容量上做比較。. 4.

(12) 章節說明 在接下來的幾個章節,我們會在第二章回顧一下前人所提出的 DE 演算法及 其相關的隱寫術演算法,第三章講述我們的方法,第四章將會列出實驗比較結 果,並以第五章總結。. 5.

(13) 第二章. 文獻回顧. 在這一章下面會一一介紹前人所提過的隱寫術文獻。以下介紹的前人方法全 部都是以圖像像素作為載體的可逆式隱寫術,並跟 DE 演算法相互關聯,且有幾 個方法之間有被引用的關聯性。在此章的最後一節,我們會再度探討前人方法的 優缺點,以及解釋我們想改良前人演算法的原因。. 差值擴張相關文獻 據演算法做法,隱寫術可分為空間域(spatial domain)及頻域(frequency domain)兩大做法 [15]。其空間域是直接在圖片本身的「長度」要素上(如:像素 等)做一些調整,以達到藏匿資料的目的 [16]。而頻域則可視需要利用圖片上的 像素作為函數,並使用傅立葉變換(Fourier transform)、小波轉換(Wavelet transform)等頻率轉換運算式,將頻率可視化至像素上,並再用空間域作法藏匿資 料即可 [16]。而從第二章第二節介紹的差值擴張(DE)即是空間域的做法。 在比較上,空間域的做法比較直接、容易理解且運作較快,而頻域的演算法 雖然穩健性強,但演算法較複雜、需要花額外的運作時間在頻域的轉換上 [16]。 以下我們舉了以 DE 演算法做為參考的前人文獻作舉例: 1.. Firmansyah 等人提出了使用從圖片的 LSB 上執行 DE 隱藏資料的空間域 隱寫術 [17]。其作法是將圖片上所有像素的 LSB 另外拼湊成一張矩 陣,並在該矩陣上執行 DE 藏匿資料,其後把新算好的矩陣算回至圖片 上,以達到隱寫的效果。雖然不適合儲存較大的檔案,但步驟及演算法 非常明瞭。. 2.. Angreni 等人提出了使用共同數值的 DE 改良空間域隱寫術 [18]。其作 法是提出一個隨機的共同數值,使所有圖片中的像素值跟該共同數值之 間求出差值,並用這些差值套用 DE 演算法的嵌入資料方式。這個方法 聲稱可做到將資料完全塞滿至整張圖片,同時也可增加圖片品質,但圖 片品質、容量的多寡仍必須視使用者訂出的共同數值而定。 6.

(14) 3.. 葉氏提出了搭配小波轉換的 DE 改良頻域隱寫術 [19]。其作法是先將圖 片作小波轉換,並為每個像素作類似差值擴張的隱寫方法。雖然隱蔽性 提高,但因為該文獻的差值擴張算法稍微跟原 DE 演算法不同,且嵌入 完成後使用反小波轉換時可能會有像素值溢位的情形,必須額外空出圖 片空間去紀錄溢位還原資訊,工程相對比較複雜,演算法較不穩定。. 4.. Gao 等人提出了搭配離散餘弦變換(Discrete cosine transform)的 DE 改良 頻域浮水印演算法 [20]。其作法是先在圖片上各像素組上做離散餘弦變 換,再用 DE 的方式在像素組其中兩個像素嵌入資料。雖然增強了隱蔽 性,也可保有高品質的圖片,不過因為僅取少量的像素來藏匿資料,所 以不支援高容量,同時工程也比較複雜,容量甚至取決於使用者設定的 門檻值而定。. 而在第二章第三節要介紹的降低差值擴張(RDE)也是屬於空間域隱寫術,所 以演算法也是相對比較容易理解、速度也比較快的那一型,同時也具備了比 DE 還要高的圖片品質、容量等優點。另外 RDE 演算法的構成是以步驟行的方法所 組成,其相鄰步驟之間的互相影響力並不會太重,改良演算法時可以直接修改其 中的步驟或添加穿插新步驟即可。這也是我們採用了以 RDE 演算法為基底的隱 寫術作為研究改善對象的原因。. 差值擴張 (Difference Expansion) 差值擴張(DE)是由 J. Tian 在 2003 年提出的一項灰階圖像隱寫術演算法 [9], 它是基於圖像中的像素差分(pixel value differencing,簡稱 PVD) [3]的方法,在一 張圖片的兩個像素的差值中修改、嵌入要隱藏的訊息。它也是一個可逆式隱寫 術,所以取出原本的隱藏資料的同時也可以恢復原本的圖像。DE 演算法的好處 在於可以放寬容量限制以及降低演算法複雜度。 就因為具有低複雜、高容量性等優點,DE 演算法在隱寫術界上引用次數甚 廣,可以算是隱寫術的主流之一。DE 演算法的大略運作示意圖如圖 4。. 7.

(15) 圖 4 DE 演算法運作示意圖 下面介紹 DE 演算法的主要作法:首先在圖片載體上分割成若干個不相重疊 的像素組,其每個像素組皆由相鄰的兩個像素構成,如圖 5。. 𝑘1. …. 𝑘2. … 圖 5 像素組在圖片分割示意圖 在像素組中索取兩個像素的數值𝑘1 & 𝑘2 ,並從中計算兩個像素之間的平均 值 w 跟差值 z: 𝑤=⌊. 𝑘1 + 𝑘2 ⌋, 2. 𝑧 = 𝑘1 − 𝑘2. (2.1). 其中平均值 w 是作為在差值 z 儲存好資料後回復成像素的必備數據。算出來 的差值 z 之後要擴張至 2 倍,並將隱藏資料的其中一個位元(𝑏 = [0,1] )嵌入,規 劃出新的差值𝑧 ′ : 𝑧′ = 2 × 𝑧 + 𝑏. (2.2). 再計算新的像素值𝑘′1 & 𝑘′2 來取代原本的兩個像素值: 𝑘′1 = 𝑤 + ⌊. 𝑧′ + 1 ⌋, 2. 𝑧′ 𝑘′2 = 𝑤 − ⌊ ⌋ 2 8. (2.3).

(16) 但要特別注意的是,新的像素值不能超過色階數值的範圍(灰階色階數值定在 0~255 之間),所以在儲存像素值之前,會先使用以下方程式檢查新的像素值是否 會溢位: 0≤ 𝑤+⌊. 𝑧′ + 1 ⌋ ≤ 255, 2. 𝑧′ 0 ≤ 𝑤 − ⌊ ⌋ ≤ 255 2. (2.4). 透過(2.4)這方程式,我們可以再簡寫成(2.5),將新的差值𝑧 ′ 及平均 w 直接套 用,檢查(2.2)所製造的新差值𝑧 ′ 是否會造成新像素值溢位,若通過了即可用(2.3) 寫回像素內: |𝑧 ′ | ≤ min(2(255 − 𝑤), 2𝑤 + 1). (2.5). 若要將隱藏資料提取出來時,可以再使用(2.1)重新提取兩個像素的平均值𝑤′ 及差值𝑧 ′ ,從差值取出最低有效位(least significant bit,簡稱 LSB)即可取得隱藏資 料 b,之後再將差值𝑧 ′ 縮減成一半,就能回復成原來的差值 z,並使用(2.3)恢復原 圖的像素值: 𝑏 = LSB(𝑧 ′ ),. 𝑧′ 𝑧=⌊ ⌋ 2. (2.6). 以上的擴張並嵌入差值方式我們簡稱為「可擴張(Expandable)」,新的差值𝑧 ′ 若符合(2.5)的條件時,可以稱𝑧 ′ 或該像素組為 expandable。 不過,expandable 方法在多數的情況都會造成差值變大導致溢位,間接導致 圖片載體空間不足,所以在 DE 演算法內加入了「多重嵌入」機制,以預防因 expandable 的缺點造成空間不足的缺陷。從 DE 演算法開始,就採用了一個像素 組可以採用不同模式來嵌入隱藏資料的機制,有一些引用此演算法的隱寫術文 獻,也有將這個機制再度引用或做一些改良。在 DE 演算法中,一個像素組有三 種可套用的嵌入模式: 1.. 可擴張(Expandable):使用 DE 演算法的擴展方程式(2.2)擴張差值並嵌入 資料的方式,即以上我們講過的 DE 嵌入方法跟解嵌入方法。. 2.. 可變動(Changeable):同樣基於 PVD 的方法,在差值上的 LSB 上直接儲 存資料。 9.

(17) 3.. 不可變動(Non-changeable):不儲存資料、保持像素組原封不動。. 其中 changeable 的嵌入跟解嵌入方法跟 expandable 類似,只不過在嵌入資料 之前會先將原差值 z 的 LSB 部分提取並儲存一個額外的位元(bs),以便在恢復原 圖像時可以回復原圖的差值: 𝑏𝑠 = LSB(𝑧) where 𝑏𝑠 = [0,1]. (2.7). 在嵌入方法的(2.2)換成此方程式,直接將差值 z 的 LSB 替換成隱藏資料 b: 𝑧 𝑧′ = 2 × ⌊ ⌋ + 𝑏 2. (2.8). 在 changeable 同樣也要注意寫回的像素不可以超越色階數值範圍,只要經過 (2.5)方程式的檢查通過,新差值𝑧 ′ 或該像素組就可以被稱為 changeable。 在解嵌入演算法中,回復差值的(2.6)將會以下列方程式代替,用原本用(2.7) 提取的 bs 替換回原本的差值: 𝑏 = LSB(𝑧 ′ ),. 𝑧′ 𝑧 = 2 × ⌊ ⌋ + 𝑏𝑠 2. (2.9). 從這裡再度回到多重嵌入機制的話題:在 DE 演算法設計多重嵌入機制的功 能主要是為了若 expandable 嵌入資料發生數值溢位等問題時,還有其他的方法可 以走,changeable 同時也避免了差值過大而導致圖片過度失真的問題,進而提升 圖片載體品質,也有助於增加圖片載體容量。 另外在多重嵌入機制下,儲存各個像素組的嵌入模式是使用位置地圖 (Location map)的方式,在每個位置地圖單位資料(嵌入模式)上都各自對應所屬的 像素組。由 DE 演算法自行判斷該像素組適合使用哪一種嵌入模式,同時採用的 模式將以代號的方式記錄在位置地圖上,以供使用解嵌入演算法時,即可呼叫這 些位置地圖的代號記錄來使用對應的解嵌入方程式,補助取回隱藏資料及還原圖 像。此外,使用 changeable 模式的(2.7)所紀錄的額外資料 bs 也可以使用位置地圖 的方式儲存,在各自對應的 changeable 像素組使用對應的 bs 值來還原原本的差 值。 透過以上對 expandable、changeable 跟多重嵌入機制的說明,我們可以將整 10.

(18) 個嵌入模式判斷系統簡化成如圖 6 描述的步驟結構。 1. 開始. 3. 新差值z’符. No. 合 expandable? No. 2. 原差值z = 0 or − 1?. Yes. 4. 新差值z’符. Yes. Yes. changeable. expandable. No. 合 changeable?. non-changeable. 圖 6 DE 簡易多重嵌入機制判斷架構 其中步驟 3 及步驟 4 即是利用(2.5)檢查在 expandable 及 changeable 方程式下 是否不會導致溢位。步驟 2 是因為在原差值為 0 或-1 的情況下,expandable 及 changeable 都會求到相同的新差值,為降低演算法複雜度,遇到這個情況一律把 該像素組視為 expandable。 總結以上 DE 演算法的差值嵌入計算過程,我們將它畫成簡易的有限順序架 構圖: 圖片載體. 2. 分割成多個像素組. 1. 開始. 3. 索取像素值. 5. 新差值算回至像素. 並計算差值、平均. 要隱藏的資料. 4. 資料位元嵌入差值內. 6. 是否嵌入. No. 所有資料? 嵌入階段 (for 所有像素組). 嵌入後(Stego)圖片. Yes. 位置地圖. 圖 7 DE 隱寫演算法簡易架構(嵌入側) 圖 7 是 DE 隱寫術中的嵌入步驟圖,將圖片分成數個像素組後,每個像素組. 11.

(19) 都將做一次嵌入差值的一系列步驟,直到所有資料被寫進去為止。至於在 DE 演 算法所介紹的多重嵌入判斷機制,因為其中的溢位判斷機制(2.5)是透過 expandable 及 changeable 的嵌入方程式(2.2)/(2.8)衍生而來,此判斷機制可以在步 驟 3 以後就判斷差值是否使用哪一個機制,或者是跟步驟 4 一起配合使用(在原 DE 隱寫術文獻是直接從原差值做判斷)。另外步驟 4 會根據該像素組套用了哪種 嵌入模式(non-changeable 除外)來使用不同的嵌入方程式來寫入隱藏資料。 嵌入後(Stego)圖片. 3. 判斷該像素組的. 1. 開始. 2. 分割成多個像素組. If “non-changeable”. 還原階段 (for 所有像素組). 嵌入模式 6. 新差值算回至像素 4. 索取像素值 並計算差值、平均 7. 檢查完 5. 取出資料位元. No. 所有像素組?. 並回復差值 Yes. 位置地圖. (已恢復)原圖像. 原隱藏資料. 圖 8 DE 隱寫演算法簡易架構(解嵌入側) 圖 8 是 DE 隱寫術中的解嵌入步驟圖,跟圖 7 的嵌入側不一樣的是,除分割 及輸出圖像及資料外,像素組解嵌入側動作是跟嵌入側採用相反順序的:嵌入側 是將資料寫入、改變差值,而解嵌入側是將資料提出、還原差值。步驟 3 的地方 即是將像素組解嵌入前,就得透過位置地圖判斷其嵌入模式了。另外,若該像素 組是 non-changeable 的話,該像素組會直接略過,直接檢測下一組像素組,因為 基本上該像素組沒有做甚麼變動,也沒有塞入隱藏資料。 DE 演算法同時也採用了「多層嵌入」的方式,用來應付塞入更多隱藏資 料。對於已經嵌入資料完的圖片,或者是已檢查所有像素組並全部嵌入完成的圖 12.

(20) 片,可以再針對這張圖片作為載體繼續塞資料做為第二層,塞完後可再拿此圖片 繼續塞資料做為第三層,以此類推。但是原則上已嵌入的圖片再拿來做載體時, 因為該圖片像素之間的差值曾被擴張過,所剩空間可能會隨著嵌入的層數增加而 減少。. 降低差值擴張 (Reduced Difference Expansion) 2008 年,D. C. Lou 等人對 J. Tian 的 DE 演算法進行改良,提出了降低差值 擴張(RDE)演算法 [10]。. 圖 9 RDE 演算法差值變更步驟示意圖 修改的地方在於如圖 9 的差值變更步驟部分上,比 DE 演算法多了減少差值 的動作(如紅框部分),在資料嵌入差值之前會先將差值減少,其目的是減少使用 擴張差值的方法後隨時會造成新像素值溢位的機率。因為依序減少再擴張差值的 關係,新計算差值會比較接近原圖像差值,這同時也改善了因差值過度擴張而導 致圖片載體像素值相差過大等問題,進而提升圖片品質。 Expandable 的方法上,在經過使用(2.1)將差值及平均算出來後,原差值 z 會 被方程式(2.10)降低至約原差值 1/2 倍的值,製作出中間差值𝑧′,之後才利用(2.2) 將差值擴張及嵌入隱藏資料位元(𝑧 ′ → 𝑧 ′′ ),製造新的差值𝑧′′: 𝑧 𝑧′ = { ⌊log2 𝑧⌋−1 𝑧−2. , if 𝑧 < 2 , otherwise. (2.10). 為了成功恢復差值,在 RDE 演算法另外新增了一個位置地圖,專門記錄恢 復中間差值𝑧 ′ 到原差值所用到的額外資訊位元(𝐿𝑀 = [0,1]):. 13.

(21) 0 𝐿𝑀 = { 1. ′. , if 2⌊log2 𝑧 ⌋ = 2⌊log2 𝑧⌋ 𝑜𝑟 𝑧 ′ = 𝑧 ′ , if 2⌊log2 𝑧 ⌋ ≠ 2⌊log2 𝑧⌋. (2.11). 在解嵌入演算法上,從更改後的圖片載體提取出來的差值𝑧′′,則是反過來先 用原 DE 演算法的方程式(2.6)提取資料及恢復成中間差值(𝑧 ′′ → 𝑧′),之後用 RDE 的方法將原本縮減的中間差值𝑧 ′ 恢復成原差值(𝑧 ′ → 𝑧)。如下圖(紅框是增加的步 驟):. 圖 10 RDE 演算法差值還原步驟示意圖 在中間差值𝑧 ′ 還原成原差值𝑧的步驟上是以方程式(2.12)來還原,其中有使用 在 RDE 嵌入演算法使用(2.11)所記錄的位置地圖資訊(LM)來補助還原差值: 𝑧={. 𝑧 ′ + 2⌊log2 𝑧 ′. ′ ⌋−1. ⌊log2 𝑧 ′ ⌋. 𝑧 +2. , 𝑖𝑓 𝐿𝑀 = 0. (2.12). , 𝑖𝑓 𝐿𝑀 = 1. 在原 RDE 文獻有提到:DE 演算法通常會讓像素變更幅度到|𝑧|/2,而在 RDE 演算法上最壞狀況下也頂多讓像素的變更幅度到|𝑧|/4,最好情況甚至做到完 全沒有變更像素值。使用 RDE 演算法後差值擴張的狀況推估會比 DE 演算法還要 減少至少1/2~1倍。從此得知 RDE 演算法對差值擴張的抑制是挺有幫助的。. 4 個像素為一組的差值擴張 (DE of Quads) 2004 年,A.M. Alattar 基於 DE 演算法做了修改,提供了 DE of quads 方法 [11]。其作法是將原本的 2 個像素為一組變成 4 個像素作為一組,藉此增加單一 圖片可以塞進的位元數,有助於提升載體容量。在 DE of quads 方法中,一個像 素組可以在 4 個像素之間算出 3 個差值,並能夠嵌入 3 個隱藏資料位元,如圖 3. 11。在一個圖片載體上最大的像素平均容量為0.75 (= 4) bpp (bit per pixel),比 DE 演算法的0.5 (2 個像素可允許塞入 1bit 資料) bpp還要大。 14.

(22) 圖 11 DE of quads 演算法示意圖 DE of quads 在 DE 演算法主要修改的地方是在計算差值及恢復至像素這兩個 地方上修改。提供一組向量數據𝒛 = (𝑧0 , 𝑧1 , 𝑧2 , 𝑧3 ),其中𝑧0 , 𝑧1 , 𝑧2分別儲存三個差 值,𝑧3 則是記錄平均,計算方程式如(2.13)所示。 𝑧0 = 𝑘1 − 𝑘0 𝑧1 = 𝑘2 − 𝑘1 𝑧2 = 𝑘3 − 𝑘2 (2.13) 𝑘0 + 𝑘1 + 𝑘2 + 𝑘3 ⌋ {𝑧3 = ⌊ 4 差值嵌入方式是引用原本 DE 演算法所用過的(2.2)跟(2.8),但因為一組像素 組允許使用 3 個差值儲存資料,所以各差值將各自嵌入隱藏資料 3 個位元𝒃 = (𝑏0 , 𝑏1 , 𝑏2 )中的一個位元,嵌入方程式將被整理成如(2.14)(2.15)所示(各自代表 expandable 跟 changeable 的方式): 𝑧′0 = 2 × 𝑧0 + 𝑏0 { 𝑧′1 = 2 × 𝑧1 + 𝑏1 𝑧′2 = 2 × 𝑧2 + 𝑏2. (2.14). 𝑧0 𝑧′0 = 2 × ⌊ ⌋ + 𝑏0 2 𝑧1 𝑧′1 = 2 × ⌊ ⌋ + 𝑏1 2 𝑧2 {𝑧′2 = 2 × ⌊ 2 ⌋ + 𝑏2. (2.15). 寫回像素的方程式有一些改變,使用的是跟(2.13)對應的反轉換方程式,如 (2.16)。. 15.

(23) 3𝑧′ 0 + 2𝑧′1 + 𝑧′2 𝑘′0 = 𝑧′3 − ⌊ ⌋ 4 𝑘′1 = 𝑧′0 + 𝑘′0 𝑘′2 = 𝑧′1 + 𝑘′1 { 𝑘′3 = 𝑧′2 + 𝑘′2. (2.16). 同樣的,在 DE of quads 演算法中,新的像素組中所有像素值不能超過灰階 像素值所定義的範圍。一旦有其中一個以上的像素值不符合,整個像素組就會被 判定有溢位問題,不能取代原本的像素組的數值。 同時 DE of quads 也支援在 DE 演算法上的多重嵌入模式的機制,可搭配圖 6 的順序圖表使用來做嵌入模式的判斷。只不過要注意的是:一個像素組僅支援一 種嵌入模式,像素組中的所有像素值都必須同時支援同一組模式(expandable 或 changeable),該像素組才可以使用該模式並記錄在位置地圖上。 解嵌入演算法也跟 DE 演算法大同小異,搭配圖 8 的步驟確認嵌入模式後, 使用(2.13)提取差值再引用 DE 的方法(2.6)或(2.9)提取隱藏資料並回復至原差值, 隨後用(2.16)恢復成原像素值即可。. RDE 跟 Quads 結合的降低差值擴張 (RDE of quads) 2013 年,T. Ahmad 等人結合了 D. C. Lou 的 RDE 及 A.M. Alattar 的 DE of quads 這兩種方法,提出了新的改良隱寫術 [12],透過結合 RDE 的降低差值及 DE of quads 的增加可使用差值數這兩種優點,可同時增加載體容量以及提高圖片 品質。為方便起見,在本文獻上我們簡稱此隱寫術為「RDE of quads」。. 16.

(24) 圖片載體. 2. 分割成多個像素組. 1. 開始. 3. 索取像素值 並計算多個差值. 要隱藏的資料. 5. 資料位元嵌入差值內. 6. 新差值算回至像素. 4. 降低差值. 7. 是否嵌入 所有資料? Yes. 嵌入階段 (for 所有像素組). 嵌入後(Stego)圖片. No. 位置地圖. 圖 12 RDE of quads 簡易步驟構造圖 如圖 12 所示,RDE of quads 是同時結合了 RDE 及 DE of quads 的技術所構 成的新隱寫術。其中步驟 3 及步驟 6(橘色框部分)是取自 DE of quads 採用 4 個像 素組成一組的機制,但在 RDE of quads 的文獻中,步驟 3 只使用了 DE of quads 演算法中(2.13)計算三個差值部分,不計算平均: 𝑧0 = 𝑘1 − 𝑘0 {𝑧1 = 𝑘2 − 𝑘1 𝑧2 = 𝑘3 − 𝑘2. (2.17). 並在步驟 6 上改成使用下列方程式來恢復像素值,其中一個新像素值以原像 素值替換: 𝑘′0 = 𝑘0 𝑘′1 = 𝑧′0 + 𝑘′0 𝑘′2 = 𝑧′1 + 𝑘′1 {𝑘′3 = 𝑧′2 + 𝑘′2. (2.18). 步驟 4(綠框部分)即是 RDE 中 expandable 方法上的降低差值機制,一個像素 組的 3 個差值都要套用 RDE 的方法(2.10)。相對地,每個像素組在位置地圖上都 需要使用(2.11)儲存 3 位元恢復降低差值的額外資料(𝑳𝑴 = (𝐿𝑀0 , 𝐿𝑀1 , 𝐿𝑀2 ) 𝑤ℎ𝑒𝑟𝑒 𝐿𝑀𝑛 = [0,1]),以用來個別恢復 3 個差值(2.12)。 17.

(25) 順帶一提,RDE of quads 演算法因為使用了 RDE 降低差值的方法,減少了差 值會發生溢位的機率,間接提高可嵌入資料的差值數量,跟 DE of quads 比起 來,此演算法更能提高載體的容量。 RDE of quads 被提出之後,T. Ahmad 等人又在後來的幾年又提出了幾篇以 RDE of quads 為基礎優化的隱寫術,我們索取了其中的兩篇在以下兩節做說明:. 16 個像素為一組的降低差值擴張 (RDE of block 16) 2015 年,T. Ahmad 等人以 RDE of quads 演算法為基礎提出了一個改良的隱 寫術 [13],其作法是從原本只有 4 個像素的 quads 擴張成 16 個像素為一組,並 在降低差值的方法上下功夫,目的是為了進一步地增加載體容量,同時提高圖片 的質量。在本文獻我們簡稱此隱寫術為「RDE of block 16」。. 圖 13 RDE of quads(左)跟 RDE of block 16(右)之間的像素組差異 如圖 13 所示,RDE of block 16 演算法擴大了像素組的大小,每個像素組包 含了 16(4 × 4)個像素,可允許儲存隱藏資料的差值就有 15 個,相當於可以嵌入 15. 15 位元的資料,最大像素平均容量也被擴增到0.9375 (= 16) bpp,比 RDE of quads 的 0.75 bpp 還要大。 計算差值及差值算回像素的方程式皆繼續採用 RDE of quads 的方式,不計算 平均值,且其中一個新像素值皆以原像素值代替,如(2.19)及(2.20): 𝑧0 = 𝑘1 − 𝑘0 𝑧 = 𝑘2 − 𝑘1 { 1 ⋮ 𝑧14 = 𝑘15 − 𝑘14 18. (2.19).

(26) 𝑘′0 = 𝑘0 𝑘′1 = 𝑧′0 + 𝑘′0 𝑘′2 = 𝑧′1 + 𝑘′1 ⋮ {𝑘′15 = 𝑧′14 + 𝑘′14. (2.20). 跟 RDE 一樣,在嵌入演算法的 expandable 方法中,擴增差值前會先將差值 減少,但在 RDE of block 16 的降低差值方法有些變更。為防止圖片便失真幅度變 大,降低差值方程式不僅引用原 RDE 演算法的(2.10),還多減掉了[log 2 𝑧𝑛 ⌋(𝑧𝑛 代 表第 n 個差值,𝑛 = 0,1,2, … ,14),如下列方程式所示: 𝑧𝑛′ = {. 𝑧𝑛 − (2⌊log2 𝑧𝑛⌋ + [log 2 𝑧𝑛 ⌋) ,if 𝑧𝑛 > 1 𝑧𝑛 + (2⌊log2 𝑧𝑛⌋ ) + ([log 2 𝑧𝑛 ⌋) ,if 𝑧𝑛 < −1. (2.21). 一個像素組總共要記錄 15 個恢復降低差值的額外資料(𝑳𝑴 = (𝐿𝑀0 , 𝐿𝑀1 , 𝐿𝑀2 , … , 𝐿𝑀14 )),在這裡也同樣使用位置地圖的方式記錄,如下列方程 式所示: ′. if 𝑧𝑛′ ± (2𝑙𝑜𝑔2(⌊𝑧𝑛⌋)−1 ) = 𝑧𝑛. 0 𝐿𝑀𝑛 = { 1. ′. if 𝑧𝑛′ ± (2𝑙𝑜𝑔2(⌊𝑧𝑛⌋)−1 ) ≠ 𝑧𝑛. (2.22). 在解嵌入演算法恢復降低差值至原差值時,改用(2.23)方程式,這同時搭配從 (2.22)計算而來的位置地圖(𝐿𝑀𝑛 )來補助恢復差值((2.23)中的±符號是在𝑧𝑛′ 分別為> 1或< −1的情況下,就分別使用+或−): ′. 𝑧𝑛′ ± (2log2(⌊𝑧𝑛⌋)−1 + log 2 (⌊𝑧𝑛′ ⌋)) − 1 if 𝐿𝑀𝑛 = 0 𝑧𝑛 = { ′ 𝑧𝑛′ ± (2log2(⌊𝑧𝑛⌋) + log 2 (⌊𝑧𝑛′ ⌋)) if 𝐿𝑀𝑛 = 1. (2.23). 在該文獻上結果顯示:RDE of block 16 雖然可以擴增圖片載體容量,但因為 單位像素組擴大至 16 個像素的關係,增加了被覆寫的像素數量,導致平均每個 像素值的變更量比 RDE of quads 更大,圖片載體的失真率變得更嚴重。. 4×1 新降低差值擴張 (Enhance-RDE of quads) 2017 年,同一個作者又在 RDE of quads 演算法做了一些優化修正,提出了另 一個改良隱寫術 [14]。他們提議了類似垂直掃描的機制,在每一像素組的長寬設 定被改成4 × 1的方式,並從降低差值及計算差值的方法修改,為的就是盡可能地 19.

(27) 縮小差值以及將資料嵌入至更小的差值內,以提高圖像的品質、容量。在本文獻 我們簡稱此隱寫術為「Enhance-RDE of quads」。 在計算差值的部分上,改成每個差值都是以最後一個像素為準,如方程式 (2.24);將差值寫回像素的方法則改成對應(2.24)的反轉換方程式,如(2.25): 𝑧0 = 𝑘0 − 𝑘3 {𝑧1 = 𝑘1 − 𝑘3 𝑧2 = 𝑘2 − 𝑘3. (2.24). 𝑘 ′ 0 = 𝑧 ′1 + 𝑘3 𝑘 ′1 = 𝑧 ′1 + 𝑘3 𝑘 ′ 2 = 𝑧 ′ 2 + 𝑘3 { 𝑘 ′ 3 = 𝑘3. (2.25). 改成上列兩個方程式的目的可能是為了修正在差值被放大的情況下,原本 RDE of block 16 方法中(2.19)與(2.20)因像素之間的牽連而導致像素變動幅度一個 比一個大等問題。使用(2.24)與(2.25)的話,因為各個差值是從一個像素值與指定 的像素值之間計算出來的,變動差值只會影響一個像素值,不會影響到其他像 素,在一個圖片中的像素值平均變動幅度就會少一些。 Expandable 方法中的降低差值方法參考了從 RDE of block 16 的方程式(2.21) 並經過一些修改,可以進一步將差值縮小,也能將隱藏資料位元嵌入至更小的差 值中,如(2.26)所示。 𝑧. ′. 𝑛. 𝑧𝑛 + ⌊log 2 𝑧𝑛 − 1⌋) = {𝑧𝑛 − (2 𝑧𝑛 + (2⌊log2 𝑧𝑛⌋ + ⌊log 2 𝑧𝑛 ⌋) ⌊log2 𝑧𝑛 −1⌋. , 𝑖𝑓 − 1 ≤ 𝑧𝑛 ≤ 1 , 𝑖𝑓 𝑧𝑛 > 2. (2.26). , 𝑖𝑓 𝑧𝑛 < −2. 恢復降低差值的額外資訊(𝐿𝑀𝑛 where 𝑛 = 0,1,2)改使用(2.27)此方程式計算並 記錄在位置地圖上: ′. 𝐿𝑀𝑛 = {. 0 if 𝑧𝑛′ ± (2log2(⌊𝑧𝑛⌋)−1 ) + 2(⌊log 2 𝑧′𝑛 ⌋) = 𝑧𝑛 ′. 1 if 𝑧𝑛′ ± (2log2(⌊𝑧𝑛⌋)−1 ) + 2(⌊log 2 𝑧′𝑛 ⌋) ≠ 𝑧𝑛. 恢復降低差值至原差值的方程式改用下列兩個方程式: 1.. 若𝑧𝑛′ ≥ 2的話:. 20. (2.27).

(28) ′. 𝑧𝑛′ + (2⌊log2|𝑧𝑛|⌋−1 + ⌊log 2 2𝑧′𝑛 ⌋ − 1) 𝑧𝑛 = { ′ 𝑧𝑛′ + (2⌊log2|𝑧𝑛|⌋ + ⌊log 2 2𝑧′𝑛 ⌋) 2.. if 𝐿𝑀𝑛 = 1 if 𝐿𝑀𝑛 = 0. (2.28). 若𝑧𝑛′ ≤ 2的話: ′. 𝑧𝑛′ + (2⌊log2|𝑧𝑛|⌋ + ⌊log 2 2𝑧′𝑛 ⌋) 𝑧𝑛 = { ′ ′ 𝑧𝑛 − (2⌊log2|𝑧𝑛|⌋ + ⌊log 2 2𝑧′𝑛 ⌋). if 𝐿𝑀𝑛 = 0 if 𝐿𝑀𝑛 = 1. (2.29). 該文獻宣稱 Enhance-RDE of quads 會比 RDE of block 16 的嵌入效果更好,不 僅在緩和差值擴張方面上有所幫助,提升嵌入資料後圖片的品質,同時也間接提 升圖片載體容量。. 文獻總結 我們總結前人的成果特點如下: 1.. 差值擴張(DE) [9]:雖然 DE 演算法,在當代的隱寫術領域中是被聲稱有 複雜度低、高容量等優點,但在擴張差值的特性上,有些比較大的差值 經擴張後會造成對應的像素值變動幅度過大,甚至造成溢位等問題,對 比現代的演算法仍然沒那麼出色。. 2.. 降低差值擴張(RDE) [10]:RDE 改善了原 DE 所存在的像素值變動幅度 大的缺點,提升了圖片品質及容量。但相對的,它比 DE 演算法要多做 降低差值的步驟,需額外儲存位置地圖數據作為恢復降低差值的額外資 訊。. 3.. DE of Quads [11]:它比傳統 DE 演算法增加圖片載體平均一個像素可儲 存的最大容量。但是一個像素組僅能使用一個嵌入模式,並且所有像素 值必須符合該嵌入模式的條件,自由度比 DE 的還要低。. 4.. RDE of Quads [12]:它是結合了 RDE 及 DE of Quads 兩大演算法做出來 的隱寫術,所以同時兼具了高品質、高容量兩大優點。但我們認為其演 算法輸出圖片的載體容量、品質仍然還有待改進的空間。. 5.. RDE of Block 16 [13]:使用了 RDE of Quads 為底製作的隱寫術,比. 21.

(29) RDE of Quads 更能儲存更多資料容量。但因像素組的過度放大,造成演 算結果顯示像素平均變動量比 RDE of Quads 增得更大,導致圖片品質下 降。 6.. Enhance-RDE of Quads [14]:從 RDE of Quads 演算法調整改良計算差值 的方式,使得在計算差值時能有助於緩和初始差值的大小,改善圖片品 質。. 不過,在 RDE of Block 16 及 Enhance-RDE of Quads 這兩個演算法文獻中我 們發現:雙方的降低差值演算法基本上都是採用同一種降低模式,都是搭載 RDE 的降低方程式(2.10)再多降低一些數值的手法,而兩邊演算法上的降低差值方程式 在式子構成上有一些問題,經過我們的驗算,有部分差值會無法恢復原差值,很 有可能導致無法將嵌入後的圖片恢復成原圖片。 比如 Enhance-RDE of Quads 上的(2.26)及(2.28)(2.29):對可逆式演算法而言, 解嵌入演算法必須有辦法將嵌入演算法製造出來的新圖片還原成原本載體圖片的 本質,所以解嵌入演算法相當於嵌入演算法的反函數。作為恢復降低差值演算法 的(2.28)跟(2.29)照理來說應該跟(2.26)有所相關,其方程式應該大致寫成𝑧𝑛 = 𝑧𝑛′ + (2⌊log2 𝑧. ′. 𝑛 ⌋−1. + ⌊log 2 𝑧′𝑛 ⌋ − 1)及𝑧𝑛 = 𝑧𝑛′ − (2⌊log2 𝑧. ′. 𝑛⌋. + ⌊log 2 𝑧′𝑛 ⌋)才對。. 還有一個例子,就是在恢復降低差值用的位置地圖(𝐿𝑀𝑛 )參數部分:通常在 RDE of Block 16 的(2.22)及 Enhance-RDE of Quads 的(2.27)是用來儲存在降低演算 法((2.21) & (2.26))上降低的差值幅度方便地將幅度再加回去((2.23) & (2.28) & (2.29))的補助資訊,其方程式必定跟原降低差值方程式相關。在 RDE of Block 16 及 Enhance-RDE of Quads 的場合下,計算恢復降低差值額外資訊的方程式大致上 應為(2.30)才對。 𝐿𝑀𝑛 = {. 0 if 𝑧𝑛′ ± (2⌊log2 𝑧. ′. 𝑛 ⌋−1. + ⌊log 2 𝑧 ′ 𝑛 ⌋ − 1) = 𝑧𝑛. 1 if 𝑧𝑛′ ± (2⌊log2 𝑧. ′. 𝑛 ⌋−1. + ⌊log 2 𝑧 ′ 𝑛 ⌋ − 1) ≠ 𝑧𝑛. (2.30). 就算在 RDE of Block 16 及 Enhance-RDE of Quads 的降低差值部分沒有式子 構成上的問題,降低差值演算法仍然還是無法恢復部分差值至原差值,尤其是在 22.

(30) 原差值為2𝑥 (where 𝑥 ∈ N)的情況下:因為計算恢復降低差值額外資訊的方程式 1. (2.30)允許恢復的差值變更幅度介於0~ 2 𝑧𝑛 之間,而使用降低差值方程式((2.21)或 (2.26))會使得計算出來的差值小於2(𝑥−1) ,相對地差值變更幅度會大於2(𝑥−1) (= 1. 𝑧 ),這已經超過了(2.30)允許的差值變更幅度,表示該差值若使用在 2 𝑛. RDE of. Block 16 或 Enhance-RDE of Quads 的降低差值模式時會無法恢復原差值。 另外,我們認為使用 RDE of Block 16 或 Enhance-RDE of Quads 的降低差值 演算法有可能造成降低的差值不夠收斂,即是沒有將降低過後的差值接近原差值 的一半。以上這些問題都是我們想要修正及改良前人演算法的原因。. 23.

(31) 第三章. 改良式圖像隱寫術. 本論文提出了一種演算法,它是基於 Enhance-RDE of Quads [14]隱寫術方法 做一部份的演算法內部改良,主要目的是以改善輸出後圖片品質最為優先。在該 演算法我們使用特殊方法來優化降低差值演算法的收斂度。 另外,在上一章我們提到 Enhance-RDE of Quads [14]原本的演算法有部分方 程式有問題,導致其演算法是無法在所有差值的情況下,都能經過嵌入跟解嵌入 步驟後,完全恢復為原本差值的。為此,我們也在此章節提出了我們的修正方 案,用來解決我們對 Enhance-RDE of Quads 所提過的問題。 以下是我們對 Enhance-RDE of Quads 提出的修正方案及我們提出的改良方 案:. 針對 Enhance-RDE of Quads 的修正方式 在 Enhance-RDE of Quads 的降低差值演算法中,我們將替換成如圖 14 所表 示的方案:. 圖 14 Enhance-RDE of Quads 降低差值的修正方案結構 同樣是先沿用了(2.10)再降一點數值的手法,在我們的修正方案上改成了雙階 段的方式,將2⌊log2 𝑧𝑛⌋−1與⌊log 2 𝑧′𝑛 ⌋這兩個部分分開並在各自的階段分別計算,以 便容易處理。同時將位置地圖(LM)的數量改為每個差值各有兩個(𝐿𝑀2𝑛 , 𝐿𝑀3𝑛 ), 一個像素組就需要儲存 6 個位置地圖數值:𝑳𝑴𝟐 = (𝐿𝑀20 , 𝐿𝑀21 , 𝐿𝑀22 )、𝑳𝑴𝟑 = (𝐿𝑀30 , 𝐿𝑀31 , 𝐿𝑀32 )。這麼做是為了避免 LM 只有一個的情況下造成有一些差值 跟降低差值演算法不相容的狀況。雖然這個修正方案跟原本 Enhance-RDE of 24.

(32) Quads 的文獻 [14]上所使用的降低差值做法(2.26)仍然有形式上的差異,但在功能 及成效上都差不多。所以我們認為,我們的修正方案確實可以套用在 EnhanceRDE of Quads 上。為方便稱呼,我們把 Enhance-RDE of Quads 套用過我們降低差 值做法的新修正演算法為「Fixed Enhance-RDE of Quads」。 在 Fixed Enhance-RDE of Quads 嵌入側的降低差值演算法架構可以用圖 15 來顯示(紅框為變動部分):. 圖 15 Fixed Enhance-RDE of Quads 降低差值演算法架構 其中𝑧′′′𝑛 是經過 Fixed Enhance-RDE of Quads 雙階段手法降低差值,並經過 擴張差值並嵌入資料之後的新差值。𝑧′′′𝑛 其功能跟 RDE 的𝑧′′𝑛 一樣,都是經嵌入 處理過後準備存入至像素的預備數值。 透過圖 14 的這一整串的方程式,我們可以再轉換為下列兩個算式: 𝑧′𝑛 = 𝑧𝑛 − {. 2⌊log2 𝑧𝑛⌋−1 , if 𝑧𝑛 ≥ 2 , if 𝑧𝑛 < 2 0. (3.1). ⌊log 2 𝑧′𝑛 ⌋ , if 𝑧′𝑛 ≥ 2 , if 𝑧′𝑛 < 2 0. (3.2). 𝑧′′𝑛 = 𝑧′𝑛 − {. 將像素組中求出來的差值依序用(3.1)跟(3.2)來減少差值,此後再用下列方程 式計算恢復降低差值的額外資訊𝐿𝑀2𝑛 , 𝐿𝑀3𝑛 並儲存至位置地圖內,才能繼續執行 接下來的嵌入差值動作(2.14)(𝑧′′𝑛 → 𝑧′′′𝑛 ): 𝐿𝑀2𝑛 = ⌊log 2 𝑧𝑛 ⌋ − ⌊log 2 𝑧 ′ 𝑛 ⌋, 𝐿𝑀3𝑛 = ⌊log 2 𝑧′𝑛 ⌋ − ⌊log 2 𝑧′′𝑛 ⌋. (3.3). 在解嵌入演算法上的恢復降低差值演算法中,則是採用原圖 15 降低差值演 算法的相反步驟。在經過(2.6)取出隱藏資料、還原差值(𝑧′′′𝑛 → 𝑧′′𝑛 )之後,搭配從 (3.3)算出來的位置地圖資訊𝐿𝑀2𝑛 , 𝐿𝑀3𝑛 ,先後使用(3.4)與(3.5)來還原至原本的差 值: 25.

(33) 𝑧 ′ 𝑛 = 𝑧 ′′ 𝑛 + (⌊log 2 𝑧 ′′ 𝑛 ⌋ + 𝐿𝑀3𝑛 ) 𝑧𝑛 = 𝑧 ′ 𝑛 + 2⌊log2 𝑧. ′. (3.4) (3.5). 𝑛 ⌋−1+𝐿𝑀2𝑛. 另外,在我們提出的修正演算法中,降低及還原差值的方程式(3.1)、(3.2)、 (3.4)跟(3.5)只適用於正數的差值,所以使用該方程式之前,先記錄原差值是正數 還是負數,並將原差值一律轉為正數: 0, 𝑧𝑛 𝑖𝑠𝑁, 𝑧𝑛 = { 1, −𝑧𝑛. if 𝑧𝑛 ≥ 0 if 𝑧𝑛 < 0. (3.6). 待計算完成後,再次將原本的差值轉回原本的正數或負數: 𝑧𝑛 = {. 𝑧𝑛 −𝑧𝑛. if 𝑖𝑠𝑁 = 0 if 𝑖𝑠𝑁 = 1. (3.7). Fixed Enhance-RDE of Quads 使用了跟圖 6 類似的像素組嵌入模式判斷架 構,但判斷方式有些不同,如圖 16:. 3. 新差值z’符. 1. 開始. 合 expandable?. No. expandable Yes. No. 2. 原差值. 4. 新差值z’符. z=0?. 合 changeable?. Yes. non-changeable No. Yes changeable. 圖 16 Fixed Enhance-RDE of Quads 嵌入模式判斷架構 其中 expandable 即是我們在這一節所說的兩階段式降低差值方法以及擴張嵌 入差值演算法的所屬模式。Changeable、non-changeable 繼續保有原本 DE 演算法 所擁有的 Changeable、non-changeable 步驟。另外,步驟 2 則改為差值 z 為 0 的 時候,直接判定成 changeable。雖然說差值為 0 時,使用 expandable 仍然可以使 嵌入並還原的差值變成 0,但是考慮到在降低差值部分只使用第一階段方程式 (3.1)時,原差值 0 經嵌入並還原的差值會變成−∞,怕很有可能造成還原差值不 26.

(34) 穩定的問題而特地設了這個條件。 另外,在 changeable 模式下,同樣是套用原本 DE 演算法所提過的 changeable 步驟,只不過因為在一個像素組中,總共要使用三個差值嵌入資料, 所以在嵌入資料時,每個差值都要套用此方程式(2.8)各自嵌入要隱藏的資料其中 一個位元,同時也套用了(2.7)在嵌入差值之前先將原差值的 LSB 提取的機制。在 一個像素組中,總共需要計算三個 BS 參數(𝑩𝑺 = (𝑏𝑠0 , 𝑏𝑠1 , 𝑏𝑠2 ))並儲存至位置地 圖內,每一個 BS 參數各自對應像素組其中一個差值。在解嵌入演算法同樣在像 素組三個差值中,搭配從位置地圖儲存下來的三個 BS 參數,使用(2.9)在每個差 值上提取資料、回復原差值即可。 順帶一提,在嵌入演算法中判斷符合嵌入模式,我們是採用先計算再判定的 模式的方法來做判斷檢查,如圖 17。我們使用了如圖 16 所提及的檢查順序: expandable → changeable → non-changeable 如同多重關卡般那樣地檢查,為該像 素組尋找適合地嵌入模式。在每個關卡上,先將新的像素值算出來,事後再檢查 新的像素值是否有溢位。若沒有溢位,就適用該嵌入模式,同時也將原像素值覆 寫成新的像素值,並儲存該模式所用到的位置地圖資料;若有像素值溢位則跳到 下一關卡,以此類推,直到 non-changeable 為止。. 圖 17 Fixed Enhance-RDE of Quads 嵌入模式判斷作法 像素組嵌入模式的紀錄上,我們使用 CH、LM1 (= [0,1])參數作為像素組嵌 27.

(35) 入模式的判斷標籤,儲存在位置地圖內,其個別模式中標籤標示如表 1 所示: 表 1 各嵌入模式標籤定義 模式種類. CH. LM1. non-changeable. 0. 0. changeable. 1. 0. expandable. 1. 1. 在嵌入演算法上可用表 1 上的標籤定義儲存該像素組的嵌入模式,解嵌入演 算法則是使用同樣的表來參考,判定該像素組用了甚麼嵌入模式。 在 Fixed Enhance-RDE of Quads 上用到的位置地圖資料參數總共有五種,各 參數功能如表 2 所示: 表 2 Fixed Enhance-RDE of Quads 各位置地圖參數功能定義 容量 參數. 功能 (每個像素組). 𝐶𝐻, 𝐿𝑀1 各1 bit. 紀錄像素組的嵌入模式,標籤定義請參考表 1。. 𝑳𝑴𝟐. 1 bit × 3. 紀錄 expandable 模式第一階段用位置地圖(LM)參數. 𝑳𝑴𝟑. 1 bit × 3. 紀錄 expandable 模式第二階段用位置地圖(LM)參數. 𝑩𝑺. 1 bit × 3. 紀錄 changeable 模式時各差值的 LSB. 其中𝑳𝑴𝟐、𝑳𝑴𝟑跟𝑩𝑺皆是由 3 個數值所組成的向量,每一個數值各自對應 像素組的每一個差值。另外𝑳𝑴𝟐、𝑳𝑴𝟑跟𝑩𝑺在一個像素組中不會同時存在:使 用 expandable 模式只儲存𝑳𝑴𝟐、𝑳𝑴𝟑這兩組參數,而 changeable 只要儲存𝑩𝑺這 一組即可。下面我們再整理出了每個嵌入模式所用到的位置地圖參數,以及其所 需要的儲存空間,如表 3: 表 3 Fixed Enhance-RDE of Quads 各嵌入模式所需位置地圖參數及其使用空間 參數名稱 𝐶𝐻. 𝐿𝑀1. 𝑳𝑴𝟐. 嵌入模式. 28. 𝑳𝑴𝟑. 𝑩𝑺. 所需容量.

(36) Expandable. 8 bits. Changeable. 5 bits. Non-changeable. 2 bits. 總結以上講過的修正方案、原 Enhance-RDE of Quads 演算法及其它我們所提 過的一些細節,我們可以統整出 Fixed Enhance-RDE of Quads 演算法的構造。. 圖 18 Fixed Enhance-RDE of Quads 嵌入資料側構造 在嵌入資料側,先將一張灰階圖片分成分成若干組4 × 1的像素組,並將每個 像素組都做出如圖 18 嵌入資料的動作,全部像素組嵌入後若資料還有剩,就再 用此圖片繼續嵌入,直到所有資料嵌入為止。其中圖 18 的嵌入階段部分,除了 「計算差值」及「略過該像素組」這兩個步驟,整體演算法是採用圖 17 使用的 嵌入模式檢查手法,邊計算新像素值邊檢查有無溢位,確定套用某特定嵌入模式 就直接儲存運算過的新像素值及位置地圖資料,不必再計算第二次。而「兩階段 式降低差值」即是使用我們在這一節提過的降低差值修正方案。. 29.

(37) 圖 19 Fixed Enhance-RDE of Quads 提取資料側構造 提取資料側的作法是採用嵌入資料側完全反方向的步驟。同樣先把一張已嵌 入資料的灰階圖片分成若干組4 × 1的像素組,並從上一次儲存的像素組位置開始 如圖 19 做提取資料的動作,若還沒取完所有隱藏資料就再拿此圖片從最後一個 像素組開始檢查,直到檢查過所有像素組為止。其中「還原降低差值至原差值」 即是使用我們在這一節提過的兩階段式降低差值修正方案中的還原差值方式,即 (3.4)跟(3.5)。另外在該像素組為 Non-changeable 的情況下就直接略過該像素組, 跳到上一個像素組繼續。. 30.

(38) 接下來介紹的是我們的改良演算法,它是針對我們從 Enhance-RDE of Quads 演算法修正而來的 Fixed Enhance-RDE of Quads 作為基礎,在內部改寫其部分演 算法來加強差值的收斂,以提升輸出圖片的品質。要記住:差值是由兩個像素值 之間求出來的差距大小,只要隱寫演算法有辦法將新差值收斂到一定的程度,使 得新的差值近似於原差值,那麼之後計算出來的新像素值相對於原像素值的變更 幅度就不會太大。 為達成目的,在下面我們介紹兩個我們提出的改良方案: 1. 加強兩階段式降低差值收斂 2. 交換像素值以降低原差值 在此論文,我們將我們所提出的改良演算法稱為「Improved Two-Steps-RDE of Quads」。. 加強兩階段式降低差值收斂 透過圖 15 我們可以知道,Fixed Enhance-RDE of Quads 的降低差值方式是使 用兩個階段方式將差值降低再降低,但對我們而言,這樣的方法仍然不夠收斂。 所以在 Improved Two-Steps-RDE of Quads 上,我們再次運用 Fixed Enhance-RDE of Quads 降低差值的方法,並嘗試在其中一個降低階段做改良,使用了類似除法 的商數餘數概念方法來加強差值的收斂度,使降低過後的差值更接近原差值的一 半。 改良過的降低差值演算法如圖 20 所示:. 圖 20 Improved Two-Steps-RDE of Quads 降低差值演算法結構 31.

(39) 其中圖 20 上的第二降低差值階段(2nd layer,即紅框部分)是在原本圖 14 中 的第二階段再多加了乘積參數(𝑚𝑢𝑙𝑛 )。這個點子是透過原 Fixed Enhance-RDE of Quads 的第二降低差值階段(3.2)只降低一點點差值的特性而想到的點子,目的是 為了藉由多次使用第二階段降低差值,使降低後差值𝑧′′𝑛 漸漸趨近原差值的一半 1. (亦即𝑧′′𝑛 ≈ 2 𝑧𝑛 ),製造出來的新差值𝑧′′′𝑛 才會更接近原差值𝑧𝑛 。 透過圖 20,我們可以在區分為下列兩個方程式: 2⌊log2 𝑧𝑛⌋−1 , if 𝑧𝑛 ≥ 2 𝑧′𝑛 = 𝑧𝑛 − { , if 𝑧𝑛 < 2 0 ⌊log 2 𝑧′𝑛 ⌋ × 𝑚𝑢𝑙𝑛 , if 𝑧′𝑛 ≥ 2 𝑧′′𝑛 = 𝑧′𝑛 − { , if 𝑧′𝑛 < 2 0. (3.8) (3.9). 在 Improved Two-Steps-RDE of Quads 的降低差值演算法中,乘積參數(𝑚𝑢𝑙𝑛 ) 成為了收斂差值的關鍵,因為它決定了第二降低差值階段的使用次數。要達成收 斂的目的,需要使用一系列演算法來計算𝑚𝑢𝑙𝑛 。經過第一降低差值階段(1st layer)(3.8)計算出中間差值𝑧′𝑛 ,並使用(3.3)計算出位置地圖𝐿𝑀2𝑛 後,繼續依照以 下步驟執行第二降低差值階段,同時計算𝑚𝑢𝑙𝑛 參數: 1.. 1. 計算中間差值𝑧′𝑛 與原差值一半(2 𝑧𝑛 )的差距(在這裡我們稱此參數為 offset): 𝑧𝑛 𝑜𝑓𝑓𝑠𝑒𝑡 = 𝑧 ′ 𝑛 − ⌊ ⌋ 2. 2.. (3.10). 若𝑜𝑓𝑓𝑠𝑒𝑡 > 0,且中間差值𝑧′𝑛 ≥ 2,即可繼續下一步。否則的話𝑚𝑢𝑙𝑛 跟 𝐿𝑀3𝑛 直接為 0,並略過其他步驟。. 3.. 暫時求出𝑚𝑢𝑙𝑛 參數: 𝑚𝑢𝑙𝑛 = ⌊. 4.. 𝑜𝑓𝑓𝑠𝑒𝑡 ⌋ ⌊log 2 𝑧 ′ 𝑛 ⌋. (3.11) 1. 為了要讓(3.9)計算過後的差值𝑧′′𝑛 更接近2 𝑧𝑛 ,𝑚𝑢𝑙𝑛 會被做調整。先求出 1. 目前用(3.9)計算過後的差值𝑧′′𝑛 跟2 𝑧𝑛 的距離,也就是餘數(remainder)參 數: 32.

(40) 𝑟𝑒𝑚𝑎𝑖𝑛𝑑𝑒𝑟 = 𝑜𝑓𝑓𝑠𝑒𝑡 − 𝑚𝑢𝑙𝑛 × ⌊log 2 𝑧 ′ 𝑛 ⌋ 5.. (3.12). 假使餘數比⌊⌊log 2 𝑧 ′ 𝑛 ⌋⁄2⌋還要小的話(如圖 21 所說的狀況),𝑚𝑢𝑙𝑛 參數 就要+1,如方程式(3.13)。此時𝑚𝑢𝑙𝑛 才算是正式計算完成。. 圖 21 餘數微調方法示意圖 1 𝑚𝑢𝑙𝑛 = 𝑚𝑢𝑙𝑛 + { 0 6.. ⌊log 2 𝑧 ′ 𝑛 ⌋ ⌋ 2 , otherwise. , if 𝑟𝑒𝑚𝑎𝑖𝑛𝑑𝑒𝑟 > ⌊. (3.13). 計算完乘數參數𝑚𝑢𝑙𝑛 之後,再使用(3.9)配合𝑚𝑢𝑙𝑛 參數降低差值,並使用 (3.3)計算位置地圖𝐿𝑀3𝑛 即可。. 另外,𝑚𝑢𝑙𝑛 參數也需要透過位置地圖的方式儲存。在一個像素組中,需要儲 存 3 個乘積參數,每一個參數對應一個差值(即𝒎𝒖𝒍 = (𝑚𝑢𝑙0 , 𝑚𝑢𝑙1 , 𝑚𝑢𝑙2 ))。等第 二降低差值階段完成之後,𝒎𝒖𝒍參數也會連同其他位置地圖參數一樣儲存於位置 地圖內。還有,在執行 Improved Two-Steps-RDE of Quads 的第二降低差值階段 (圖 20 上的 2nd layer)步驟之前,也要跟之前我們講過的 Fixed Enhance-RDE of Quads 一樣,使用(3.6)將差值轉成正數,待第二階段做完後再用(3.7)將差值轉回 原本的正數或負數。 在解嵌入演算法也是同樣套用 Fixed Enhance-RDE of Quads 的恢復降低差值 演算法(即(3.4)→(3.5)),但其中一個方程式(3.4)因應第二降低差值階段的方式的修 改而被替換成(3.14),這個需要搭配從第二降低差值階段計算而來的位置地圖參數 𝑳𝑴𝟑跟𝒎𝒖𝒍。 𝑧 ′ 𝑛 = 𝑧 ′′ 𝑛 + (⌊log 2 𝑧 ′′ 𝑛 ⌋ + 𝐿𝑀3𝑛 ) × 𝑚𝑢𝑙𝑛. (3.14). 為證明該改良過後的兩階式降低差值演算法的成效,在做正式實驗之前,我 們做了一個廣域測試,計算在各種可能差值的場合上(𝑧 = 1~255, −1~ − 255), 33.

(41) 比較 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 套用各自 的 expandable 的嵌入演算法之後,差值的變更幅度有多少(亦即原差值𝑧𝑛 減掉新差 值𝑧 ′′′ 𝑛 後的絕對差距): 120. 與新差值的絕對差距. 100 80 60 40 20. 1 9 17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177 185 193 201 209 217 225 233 241 249. 0. 原差值 Fixed Enhance-RDE of Quads. Improved Two-Steps-RDE of Quads. 圖 22 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = 1~255,𝑏 = 1) 120. 與新差值的絕對差距. 100 80 60 40 20. -1 -9 -17 -25 -33 -41 -49 -57 -65 -73 -81 -89 -97 -105 -113 -121 -129 -137 -145 -153 -161 -169 -177 -185 -193 -201 -209 -217 -225 -233 -241 -249. 0. 原差值 Fixed Enhance-RDE of Quads. Improved Two-Steps-RDE of Quads. 圖 23 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = −1~ − 255,𝑏 = 1) 34.

(42) 120. 與新差值的絕對差距. 100 80 60 40 20. 1 9 17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177 185 193 201 209 217 225 233 241 249. 0. 原差值 Fixed Enhance-RDE of Quads. Improved Two-Steps-RDE of Quads. 圖 24 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = 1~255,𝑏 = 0) 120. 與新差值的絕對差距. 100 80 60 40 20. -1 -9 -17 -25 -33 -41 -49 -57 -65 -73 -81 -89 -97 -105 -113 -121 -129 -137 -145 -153 -161 -169 -177 -185 -193 -201 -209 -217 -225 -233 -241 -249. 0. 原差值 Fixed Enhance-RDE of Quads. Improved Two-Steps-RDE of Quads. 圖 25 Fixed Enhance-RDE of Quads 跟 Improved Two-Steps-RDE of Quads 的差值變 更幅度比較(𝑧 = −1~ − 255,𝑏 = 0) 從以上圖 22~圖 25 的測試結果可以得知:使用 Fixed Enhance-RDE of Quads 的 expandable 嵌入方法,新差值跟原差值的最大差距雖然是比原差值一半 還要減少一些,但仍然接近原差值的一半。尤其是當原差值越大時,新差值所造 35.

(43) 成的變動幅度就越大。反之若使用 Improved Two-Steps-RDE of Quads 的 expandable 嵌入方法,搭配在此章節所介紹的改良降低差值演算法,在我們限制 的原差值範圍內,其新差值跟原差值的最大差距只介於十位數以下。就結果的成 效來說:在加入改良版的降低差值法之後,Improved Two-Steps-RDE of Quads 的 expandable 嵌入方法比 Fixed Enhance-RDE of Quads 的更能有效縮減原差值與新 差值之間的變化量,其變化量約可以縮減至幾倍甚至到十幾倍的程度,這證明了 改良演算法更能有效減少新差值與原差值之間的差異擴大程度。透過這次證明, 我們可以確定我們的方法能有效達成差值的收斂,使新差值更接近原差值,進而 降低輸出圖片像素值的失真程度。. 交換像素值以降低原差值 在改良雙階段降低差值演算法過後,我們從圖 22~圖 25 發現 Improved Two-Steps-RDE of Quads 仍然繼續保留若原差值絕對大小增加,新差值幅度也會 跟著增加的特性。我們另外從趨勢線的角度來看(如圖 26),可以得知差值變更幅 度會隨著原差值減少而變小的趨勢:. 與新差值的絕對差距. 8 7 6 5 4 3 2 1. 1 9 17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177 185 193 201 209 217 225 233 241 249. 0. 原差值. 圖 26 Improved Two-Steps-RDE of Quads 差值變更幅度及其趨勢線的走向 (𝑧 = 1~255,𝑏 = 0,橘色實線為實際的差值變更幅度、藍色虛線為趨勢線走向) 在 Fixed Enhance-RDE of Quads 的製造差值的方程式(2.24) (也同時是原本 Enhance-RDE of Quads 的製造差值方程式)上,求取差值皆由像素組中最後一個像 36.

(44) 素(𝑘3 )為準,所求到的差都是𝑘3 跟其他像素之間的差值,所以我們特地提出了 「交換像素值」這個優化機制。 設計此機制為的就是在計算差值前先將兩個像素互換在像素組中的位置,這 樣在為像素組做一次計算差值的動作後,該像素組的差值平均會比沒有加入交換 像素值機制的還要來得更小。同時因為從圖 26 知道原差值越小、新差值變更幅 度也會跟著變小的原理,只要藉由這個原理,加上交換像素值的機制,可以降低 大部分的原差值,來減少輸出後新差值的整體平均,進而達成減少圖片的失真程 度。 我們設定一個主導像素(dominant pixel)機制,此機制是類似在一像素組中找 一個像素代替(2.24)裡的𝑘3 來做𝑘3 的工作。找到的主導像素必須跟其它像素值之間 的差值和達到最小,如圖 27 所表示的情況。. 圖 27 交換像素值方法原理 研究發現如圖 28,在理想情況下,假使主導像素越處於中間值,也就是在 該像素值最接近像素組中最大像素值(Max)及最小像素值(Min)其兩個數值之間的 中間值的時候,所有求出來的差值和將會達到最小。這樣的話,使用 Improved Two-Steps-RDE of Quads 的嵌入演算法後,新差值的平均變更幅度將會被再度降 低。. 37.

(45) 圖 28 主導像素的理想狀況 在此演算法,我們設定讓演算法來尋找最靠近該像素組中間值的像素,作為 我們需要的主導像素。在嵌入演算法中,首先我們定義距離平方和公式,計算每 個像素的距離參數(𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑛 ): 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑛 = (𝑀𝑖𝑛 − 𝑘𝑛 )2 + (𝑀𝑎𝑥 − 𝑘𝑛 )2. (3.15). where 𝑀𝑖𝑛 = min(𝑘0 , 𝑘1 , 𝑘2 , 𝑘3 ) , 𝑀𝑎𝑥 = max(𝑘0 , 𝑘1 , 𝑘2 , 𝑘3 ) 有最小距離(𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑛 )的像素將被定義為主導像素,該主導像素的編號將會 被另外記錄成參數(dPixel),如下列方程式: 𝑑𝑃𝑖𝑥𝑒𝑙 = argmin(𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑛 ). (3.16). 𝑛=[0,3]. 接下來在計算差值開始之前,先把主導像素的值(𝑘𝑑𝑃𝑖𝑥𝑒𝑙 )跟最後一個像素的 值(𝑘3 )做交換,等嵌入資料並算回至像素值之後再交換回來,並同時將主導像素 的編號(dPixel)儲存在位置地圖上。此時一個像素組中整個嵌入演算法結構將會變 成如圖 29 所示:. 圖 29 交換像素值流程圖(嵌入側) 在解嵌入演算法也同樣,先將原本用(3.15)(3.16)所算出來的主導像素編號 (dPixel)從位置地圖取回,並在計算差值前,先把主導像素的值跟最後一個像素的 值做交換,等取出資料、將差值回復完成並算回至像素值之後再交換回來。如圖 30 所示:. 38.

(46) 圖 30 交換像素值流程圖(解嵌入側). 其他細節 我們所提出的改良演算法-Improved Two-Steps-RDE of Quads,基本上除了 增加上述我們所講過的兩個改正方案之外,整體演算法架構直接使用了跟 Fixed Enhance-RDE of Quads 一樣的演算法架構。在像素組的配置,我們依舊保持 Enhance-RDE of Quads 的 4×1 像素為一組的方式。同時計算差值的演算法依舊採 用 Enhance-RDE of Quads 的方式。 像素組嵌入模式仍舊採用跟 Fixed Enhance-RDE of Quads 一樣的判定順序(即 圖 16),但仍舊使用步驟 2 原本的判定條件(若𝑧𝑛 = 0,直接跳至 changeable)則是 考慮到若在差值𝑧𝑛 為 0 的情況下使用 expandable 嵌入模式,會導致log 2 𝑧𝑛 變成 −∞,此時再使用 Improved Two-Steps-RDE of Quads 的降低差值演算法就沒意義 可言了,所以繼續保留步驟 2 的條件以預防降低差值時有錯誤發生。而像素組嵌 入模式判定方式也同樣採用 Fixed Enhance-RDE of Quads 所使用的圖 17 那樣, 邊計算新差值邊檢測像素是否會溢位的手法。 在 Improved Two-Steps-RDE of Quads 所用到的位置地圖參數總共有七種,各 嵌入模式如表 4 所示: 表 4 Improved Two-Steps-RDE of Quads 各位置地圖參數功能定義 容量 參數. 功能 (每個像素組). 𝑑𝑃𝑖𝑥𝑒𝑙. 2 bits. 𝐶𝐻, 𝐿𝑀1 各1 bit. 紀錄主導像素的編號 紀錄像素組的嵌入模式,標籤定義請參考表 1。. 𝑳𝑴𝟐. 1 bit × 3. 紀錄 expandable 模式第一階段用位置地圖(LM)參數. 𝑳𝑴𝟑. 1 bit × 3. 紀錄 expandable 模式第二階段用位置地圖(LM)參數. 39.

參考文獻

相關文件

以下簡單介紹魔術三角形: 如圖 1, 若三角形每邊有 三個數且數字和都是定值, 稱為 3 階 (傳統) 魔術三角形; 如圖 2, 若每邊有三 個數且較大兩數和減最小數的差都是定值, 稱為

在這一節裡會提到,即使沒辦法解得實際的解函數,我們也 可以利用方程式藉由圖形(方向場)或者數值上的計算(歐拉法) 來得到逼近的解。..

◦ 金屬介電層 (inter-metal dielectric, IMD) 是介於兩 個金屬層中間,就像兩個導電的金屬或是兩條鄰 近的金屬線之間的絕緣薄膜,並以階梯覆蓋 (step

階段一 .小數為分數的另一記數方法 階段二 .認識小數部分各數字的數值 階段三 .比較小數的大小.

地函、地核。所 謂 的地殼,就是 一層 由堅硬的 岩石所 構 成的薄殼,只 不過 這 層薄殼並 不是完 整 的一片,而是 像一 塊大拼圖,由 數十 片稱為「板塊 」的 薄 殼拼合而 成,雖 說

但它不屬於水果或蔬菜 類。因為它沒有蔬菜或水 果般的營養價值。 它比較 應該像食用油 少量使 –

疊對(overlay)的方式是指兩層的定位與相互考量的 x 和 y 方向,如果所有的疊對 層在晶圓上沒有偏移,亦即代表 overlay value=0 ,通常 overlay =0 是目標值。而 overlay

決定隱藏層神經元數,對一層隱藏層觀察神經元數 1~10 個之測試 範例誤差均方根 RMS 最小者,結果取隱藏層觀察神經元數為 10