二. 文獻回顧
2.1 Yoo 等學者所提的方法
Yoo 等學者[8]為了解決溢位的問題,利用 JBIG 無失真壓縮來解決,達到多次藏入機密 資訊並增加隱藏量,產生良好的影像視覺品質。以下為 Yoo 等學者提出機密資訊方法:
機密資訊藏入演算法
輸入:原始影像 𝐼、機密資訊 𝑠。
輸出:偽裝影像 𝐼′、兩個高點ℎ1、ℎ2及溢位像素值位置。
步驟 1:
將 𝐼分割成不重疊2𝑛× 2𝑛影像,並令原始影像像素值為𝑐𝑖𝑗,0 < 𝑖 < 𝑛 − 1,0 < 𝑗 < 𝑛 − 1。
步驟 2:
依原始影像位置由左至右,由上而下依序實施檢查,運用直方圖統計每個像素值的區塊分佈 情形,並找到最高點ℎ1,並令另一個高點 ℎ2 = ℎ1+ 1。
步驟 3:
依原始影像位置由左至右,由上而下依序實施檢查原始影像 𝐼是否有下限(Lower Bound) 0 和 上限(Upper Bound) 2𝑞− 1的像素值,即為位移後的溢位像素值;如果 𝑐𝑖𝑗 = 0,則修改像素 值 𝑐𝑖𝑗′= 𝑐𝑖𝑗+ 1 = 1;如果 𝑐𝑖𝑗 = 2𝑞− 1,則修改像素值為 𝑐𝑖𝑗′= 2𝑞− 1 − 1 = 2𝑞− 2,並 將溢位像素值位置記錄下來。
步驟 4:
依原始影像位置由左至右,由上而下依序實施檢查,針對每一個影像像素值 𝑐𝑖與兩個高點ℎ1和 ℎ2進行比較,如果 𝑐𝑖𝑗′< ℎ1,則像素值皆向直方圖左位移一個單位,即 𝑐𝑖𝑗″ = 𝑐𝑖𝑗′− 1;
步驟 5:
假設要藏入機密資訊為 𝑠, 𝑠𝑘是 𝑠 中第k 個位元,當機密資訊 𝑠𝑘 = 0 時,像素值 𝑐𝑖𝑗‴ = ℎ1或ℎ2, 則 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″;當機密資訊 𝑠𝑘 = 1 時,如果 𝑐𝑖𝑗″ = ℎ1,則將機密資訊藏入到直方圖經步驟 4 位移後所空出的左邊位置中,即 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″− 1;如果 𝑐𝑖𝑗″ = ℎ2,則將機密資訊藏入到直方圖 經 步 驟 4 位 移 後 所 空 出 的 右 邊 位 置 中 , 即 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″+ 1 , 最 後 得 到 偽 裝 影 像 𝐼′ 。
步驟 6:
最後將偽裝影像 𝐼′、雙高點ℎ1、ℎ2及溢位像素值位置傳送給接收方。
機密資訊擷取演算法
接收方收到偽裝影像 𝐼′及兩個高點ℎ1、ℎ2及溢位像素值位置。依照下面步驟擷取機密資 訊並還原原始影像。
輸入:偽裝影像 𝐼′、雙高點ℎ1、ℎ2及溢位像素值位置。
輸出:原始影像 𝐼、機密資訊 𝑠。
步驟 1:
依偽裝影像位置由左至右,由上而下依序實施檢查,擷取機密資訊 𝑠:
(𝑎)如果 𝑐𝑖𝑗‴ = ℎ1或 𝑐𝑖𝑗‴ = ℎ2,則擷取機密資訊位元 0,𝑐𝑖𝑗″保持不變,即 𝑐𝑖𝑗″ = 𝑐𝑖𝑗‴。 (𝑏)如果 𝑐𝑖𝑗‴ = ℎ1− 1值,則擷取機密資訊位元 1,並將 𝑐𝑖𝑗‴值加 1,即 𝑐𝑖𝑗″ = 𝑐𝑖𝑗‴+ 1。
(𝑐)如果 𝑐𝑖𝑗‴ = ℎ2+ 1值,則擷取機密資訊位元 1,並將 𝑐𝑖𝑗‴值減 1,即 𝑐𝑖𝑗″ = 𝑐𝑖𝑗‴− 1。
步驟 2:
依偽裝影像位置由左至右,由上而下依序實施檢查,位移位在兩個高點ℎ1和ℎ2之外的像素值:
(𝑎)如果 𝑐𝑖𝑗″ < ℎ1,則 𝑐𝑖𝑗′ = 𝑐𝑖𝑗″+ 1,表示直方圖中在 ℎ1 左方的像素值 𝑐𝑖𝑗″皆向右位移一 個位置。
(b)如果 cij″ > h2,則 cij′= cij″ − 1,表示直方圖中在 h2 右方的像素值 cij″ 皆向左位移一個 位置。
(𝑎)如果 𝑐𝑖𝑗′ 為 1,則 𝑐𝑖𝑗 = 𝑐𝑖𝑗′− 1。
(𝑏)如果 𝑐𝑖𝑗′ 為 2𝑞− 2,則 𝑐𝑖𝑗 = 𝑐𝑖𝑗′+ 1。
步驟 4:
接收方即可擷取機密資訊 𝑠 與還原原始影像 I。
機密資訊藏入與擷取範例
以圖 1 說明 Yoo 等學者[8]所提出藏入的方法。將影像切割成4 × 4影像,圖 1(𝑎)所示,
進行直方圖統計,可得知最高點為ℎ1 = 4和另一高點 ℎ2 = ℎ1+ 1 = 5,如圖 1(𝑏)所示。
首先檢查原始影像 I 是否有下限 0 和上限 7 的像素值,如果 𝑐𝑖𝑗 = 0,則修改像素值 𝑐𝑖𝑗′ = 𝑐𝑖𝑗 + 1 = 1;如果 𝑐𝑖𝑗 = 7,則修改像素值 𝑐𝑖𝑗′ = 𝑐𝑖𝑗 − 1 = 6,以避免溢位的問題,並 記錄溢位像素值位置。修改後影像如圖 1(𝑐)所示,修改後直方圖區塊如圖 1(𝑑)。
接著進行位移,將兩個高點左右相鄰像素值進行位移,如果 𝑐𝑖𝑗′ < ℎ1,則 𝑐𝑖𝑗″ = 𝑐𝑖𝑗′− 1,
如果 𝑐𝑖𝑗′ > ℎ2,則位移後像素值 𝑐𝑖𝑗″ = 𝑐𝑖𝑗′+ 1,可得到位移後空出位置的影像,如圖 1(𝑒)所 示,位移後直方圖區塊如圖 1(𝑓)。
假設要藏入的機密資訊𝑠 = 101010101。當 𝑐𝑖𝑗″ = 4且藏入機密資訊 𝑠𝑘 = 1時,則偽裝影 像像素值 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″− 1 = 3;如果 𝑐𝑖𝑗″ = 5且藏入機密資訊 𝑠𝑘 = 1時,則偽裝影像像素值 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″+ 1 = 6,如果藏入機密資訊 𝑠𝑘 = 0時,且像素值 𝑐𝑖𝑗‴ = 4 或 5,則 𝑐𝑖𝑗‴ = 𝑐𝑖𝑗″。 最後可以得到偽裝影像 𝐼′如圖 1(𝑔)所示,偽裝影像直方圖區塊則如圖 1(ℎ)。傳送方將偽 裝影像 𝐼′及兩個高點4、5及溢位像素值位置傳送給接收方。
1 3 4 5 5 5 4 2
7 4 4 3
4 5 6 0
(𝑎) 原始影像 (𝑏) 原始影像直方圖區塊
1 3 4 5
5 5 4 2
6 4 4 3
4 5 6 1
(𝑐) 修改後影像 (𝑑) 修改後影像直方圖區塊
0 2 4 5
5 5 4 1
7 4 4 2
4 5 7 0
(𝑒) 位移後影像 (𝑓) 位移後影像直方圖區塊
0 2 3 5
6 5 3 1
7 4 3 2
4 6 7 0
(𝑔) 偽裝影像 (ℎ) 偽裝影像直方圖區塊
圖 1 Yoo 等學者所提出藏入的方法
以圖 2 說明如何擷取機密資訊與還原原始影像,接收方接收到偽裝影像 𝐼′如圖2(𝑎),及 兩個高點ℎ1 = 4、ℎ2 = 5和溢位像素值位置,偽裝影像直方圖區塊則如圖 2(𝑏)。當圖 2(𝑎)中像 素值 𝑐𝑖𝑗‴等於 4 或 5 時,表示藏入的機密資訊為 0;當像素值 𝑐𝑖𝑗‴等於 3 或 6 時,表示藏入的 機密資訊為 1,此時就可以依序擷取機密資訊 𝑠 = 101010101。
當藏入的機密資訊 𝑠𝑘 = 1時,如果偽裝影像像素值為 𝑐𝑖𝑗‴ = 3,則還原位移後像素值 𝑐𝑖𝑗″ = 𝑐𝑖𝑗′+ 1 = 4;如果偽裝影像像素值 𝑐𝑖𝑗‴ = 6,則還原位移後像素值 𝑐𝑖𝑗″ = 𝑐𝑖𝑗′− 1 = 5,
還原成位移後影像如圖2(𝑐),位移後影像直方圖區塊如圖 2(𝑑)。
當位移後像素值 𝑐𝑖𝑗″ < 4時,則修改後像素值 𝑐𝑖𝑗′= 𝑐𝑖𝑗″+ 1;位移後像素值 𝑐𝑖𝑗″ > 5 時,則修改後像素值 𝑐𝑖𝑗′ = 𝑐𝑖𝑗″− 1,即可得到修改後影像如圖 2(𝑒),修改後影像直方圖區 塊如圖2(𝑓)。
最後依據所接收之溢位像素值位置,當溢位位置之修改後影像像素值𝑐𝑖𝑗′= 1時,原始影 像 像 素 值𝑐𝑖𝑗 = 𝑐𝑖𝑗′− 1 = 0 , 溢 位 位 置 之 修 改 後 影 像 值 𝑐𝑖𝑗′= 6 時 , 原 始 影 像 像 素 值 𝑐𝑖𝑗 = 𝑐𝑖𝑗′+ 1 = 7,即可還原回原始影像如圖 2(𝑔),還原後影像直方圖區塊如圖 2(ℎ)。
0 2 3 5
6 5 3 1
7 4 3 2
4 6 7 0
(𝑎) 偽裝影像 (𝑏) 偽裝影像直方圖區塊
0 2 4 5
5 5 4 1
7 4 4 2
4 5 7 0
(𝑐) 位移後影像 (𝑑) 位移後影像直方圖區塊
1 3 4 5
5 5 4 2
6 4 4 3
4 5 6 1
(𝑒) 修改後影像 (𝑓) 修改後影像直方圖區塊
1 3 4 5
5 5 4 2
7 4 4 3
4 5 6 0
(𝑔) 還原後影像 (ℎ) 還原後影像直方圖區塊
圖 2 Yoo 等學者所擷取的方法