劉紅雨 王曉磊 張艷明 孫 堯 李巍巍
(黑龍江中醫(yī)藥大學(xué)醫(yī)學(xué)信息工程學(xué)院 哈爾濱 150040)
(liuhongyuyyy@163.com)
圖像信息隱藏主要用于數(shù)據(jù)保護(hù),利用冗余信號和人眼視覺特點,將需要保護(hù)的數(shù)據(jù)隱藏在圖像中,確保圖像傳輸過程中,隱藏信息不易被發(fā)現(xiàn),從而免于破壞和攻擊[1-2].信息隱藏應(yīng)充分保證數(shù)據(jù)的隱蔽性和透明性,盡可能保持原始圖像的原貌,保證嵌入隱藏信息后的圖像與原始圖像相差不大.對信息隱藏算法進(jìn)行研究,對保護(hù)圖像關(guān)鍵信息具有重要意義[3-4].
國內(nèi)信息隱藏算法相關(guān)研究已取得較大發(fā)展.信息隱藏算法就是將圖像作為隱藏數(shù)據(jù)的載體,通過置亂技術(shù),變換像素位置,分析圖像像素位置和灰度變化,使相鄰像素之間沒有任何關(guān)聯(lián),從而實現(xiàn)圖像的不可讀性[5].文獻(xiàn)[6]采用基于進(jìn)制轉(zhuǎn)換的信息隱藏算法,對需要保護(hù)的數(shù)據(jù)進(jìn)行壓縮,將原始圖像信息轉(zhuǎn)換為二進(jìn)制,但該算法轉(zhuǎn)換二進(jìn)制流的量化系數(shù),與載體圖像的子塊類別不相符,加密圖像易被破解.文獻(xiàn)[7]采用基于位平面改進(jìn)的信息隱藏算法,分層公開的圖像數(shù)據(jù),將圖像作為匹配模板,依次嵌入需要保護(hù)的數(shù)據(jù),但該算法嵌入信息所占的序列空間較大,關(guān)鍵信息隱藏后的圖像保密性不高.文獻(xiàn)[8]采用基于二次剩余的信息隱藏算法,定位隱藏數(shù)據(jù)在圖像中的嵌入位置,計算像素的二次剩余值,分析隱藏數(shù)據(jù)與計算值之間的對應(yīng)關(guān)系,但該算法對圖像的主觀質(zhì)量和客觀質(zhì)量影響較大,關(guān)鍵信息同樣易被破解.
針對以上問題,本文提出基于置亂變換的圖像關(guān)鍵信息隱藏算法,對圖像像素點進(jìn)行壓縮,選擇與關(guān)鍵信息配對的像素對,經(jīng)由置亂變換,改變關(guān)鍵信息位置,使其插入像素對,實現(xiàn)信息隱藏,提高關(guān)鍵信息的被破解難度.
提取圖像的分量圖像塊,將其轉(zhuǎn)化為灰度圖像塊,把RGB模型的3個彩色像素通道轉(zhuǎn)換為灰度值.利用壓縮技術(shù)可以減少圖像的像素值,去除圖像中的冗余數(shù)據(jù).通過一維線性預(yù)測方法,利用過去樣點像素值對未來樣點像素值進(jìn)行預(yù)測,預(yù)測樣點的像素值A(chǔ)的計算公式為
(1)
其中:P為樣點像素值的預(yù)測階數(shù);ep為第p階的一維預(yù)測參數(shù);round為四舍五入函數(shù),為了避免四舍五入規(guī)則造成結(jié)果偏高、誤差偏大的現(xiàn)象出現(xiàn),一般采用四舍六入五成雙的規(guī)則;X為過去樣點像素值序列.
將預(yù)測像素值和實際像素值相減,獲得一個具有較小動態(tài)范圍的誤差信號.等比擴大預(yù)測誤差,繪制誤差信號直方圖,清晰體現(xiàn)預(yù)測誤差的總體分布.判定直方圖峰值附近存在大部分的預(yù)測誤差,對預(yù)測誤差進(jìn)行歸一化處理,使其在0~1的范圍內(nèi)浮動.令歸一化為0的誤差值顯示為白色、歸一化為1的誤差值顯示為黑色,獲得清晰的可視化圖像矩陣[9].判定圖像矩陣灰度跳躍較大處、邊緣處的像素點之間相關(guān)性不強,其余像素點之間相關(guān)性較強,根據(jù)這一特點,使用一階線性預(yù)測器編碼誤差信號,減少誤差信號量化所需要的比特數(shù),從而降低圖像像素點的數(shù)量,去除圖像的像素冗余.
僅考慮行像素間的相關(guān)性,將圖像的每行像素點視作一個序列,預(yù)測每行像素點的相鄰像素的像素值,預(yù)測值B的計算公式為
B=fg(x-1,y)+fg(x,y-1)+
fg(x-1,y-1),
(2)
其中,g(x-1,y),g(x,y-1),g(x-1,y-1)分別為圖像中(x-1,y),(x,y-1),(x-1,y-1)處樣點的像素值,f為二維預(yù)測系數(shù)[10].
將預(yù)測值和實際值相減,得到信號誤差,通過計算誤差概率得到直方圖,同樣判定峰值附近的歸一化值為預(yù)測誤差,編碼后把預(yù)測誤差范圍內(nèi)的數(shù)據(jù)集合映射到有限輸出的數(shù)據(jù)集合,減少圖像的心理視覺冗余[11].分層圖像的多個位平面使用比特表示圖像像素點,轉(zhuǎn)換圖像像素點的進(jìn)制數(shù)量.設(shè)原始圖像像素點為t(x,y),其表達(dá)式為
(3)
其中,hj(x,y)為第j個位平面的二進(jìn)制圖像像素點.通過式(3)分解圖像為多個位平面.設(shè)置第6~8個位平面分別表示圖像輪廓、亮度、邊緣等大部分信息數(shù)據(jù);設(shè)置第1~5個位平面的最大像素值為16,令人眼視覺下的可視化圖像接近黑色;對第1~5個位平面進(jìn)行直方圖均衡化處理,擴大分解圖灰度范圍,反映部分區(qū)域的圖像信息,進(jìn)一步消除圖像編碼冗余,降低信息隱藏的復(fù)雜程度.至此完成圖像像素值的壓縮.
基于壓縮圖像像素點,對圖像關(guān)鍵信息進(jìn)行分解和加密可加速圖像關(guān)鍵信息隱藏,提高隱藏后圖像的保密性.
1) 計算低頻子帶頻率,分解圖像關(guān)鍵信息.
分解圖像關(guān)鍵信息時,低頻子帶頻率計算是其中重要步驟.低頻子帶頻率計算步驟為:首先,根據(jù)多普勒效應(yīng)對圖像像素點進(jìn)行壓縮,選擇壓縮后的圖像信息序列中的相鄰像素點作為像素對;其次,根據(jù)多普勒波的頻移特點改變圖像的像素灰度;然后,根據(jù)圖像尺寸大小確定多普勒波的頻率數(shù)組以及與數(shù)組相適應(yīng)的多普勒多項式;最后,由多普勒多項式的周期確定循環(huán)迭代次數(shù),生成多普勒波,利用分解后的多普勒波計算像素灰度,通過波源傳播時間計算圖像低頻子帶頻率.
忽略圖像像素的顏色關(guān)系,將圖像放到多普勒波的頻域中,當(dāng)多普勒波的小波系數(shù)發(fā)生變化時,判定像素灰度隨小波系數(shù)的變化而變化,且兩者之間存在正相關(guān)關(guān)系.因此,增加小波系數(shù)的能量和范圍,改變圖像的大尺度低頻子帶.低頻子帶頻率r的計算公式為
(4)
其中,q為波源運動方向到像素點之間的距離,c為波源傳播時間,k為多普勒波頻率數(shù)組中低頻子帶的數(shù)組頻率,u1和u2分別為多普勒波的周期和長度[12].根據(jù)式(4)可增加r值,擴大圖像的分解層數(shù),直至需要隱藏的關(guān)鍵信息被分解出來.
2) 計算概率分布密度,加密圖像關(guān)鍵信息.
分解圖像關(guān)鍵信息后,根據(jù)壓縮圖像像素點,采用小波變換的方式計算圖像的概率分布密度C,實現(xiàn)圖像關(guān)鍵信息加密.首先,選取用于圖像分解的濾波器;其次,根據(jù)分解的圖像關(guān)鍵信息,結(jié)合近似系數(shù)和細(xì)節(jié)系數(shù)獲取更小的圖像分解分量[13];然后,通過一維映射,提取圖像中的關(guān)鍵信息序列,將此關(guān)鍵信息序列的輸入輸出映射分布至(0,1)上;最后,通過數(shù)學(xué)統(tǒng)計方法,計算關(guān)鍵信息序列的概率分布密度.概率分布密度C計算公式為
(5)
其中,s為數(shù)學(xué)統(tǒng)計的關(guān)鍵信息序列長度.設(shè)定概率分布密度閾值,當(dāng)C小于或等于設(shè)定閾值時,確定關(guān)鍵信息序列完成整個圖像的遍歷,即判定關(guān)鍵信息序列存在于整個區(qū)域.當(dāng)C超過設(shè)定閾值時,判定關(guān)鍵信息序列是否完成整個圖像遍歷,若未完成遍歷,則判定關(guān)鍵信息序列僅存在于局部區(qū)域.此時,需要在所有關(guān)鍵信息中進(jìn)行挑選,獲取用于生成置亂密鑰的生成器,生成置亂密鑰的規(guī)則是通過計算像素對的關(guān)鍵信息嵌入率Q判斷像素對中能否嵌入關(guān)鍵信息像素點.關(guān)鍵信息嵌入率Q計算公式為
(6)
其中,M為圖像關(guān)鍵信息像素點數(shù)量,S為圖像信息像素點全部數(shù)量,I為濾波器分解的圖像塊總數(shù),di為第i個圖像塊在多普勒波中的頻譜,Oi為第i個圖像塊的逆變換矩陣特征值.當(dāng)Q>0.5時,忽略這M個需要隱藏的關(guān)鍵信息像素點;若Q≤0.5,則將這M個關(guān)鍵信息像素點嵌入像素對中,生成置亂密鑰.至此完成圖像關(guān)鍵信息的分解和加密.
分解和加密后的圖像關(guān)鍵信息序列具有一定的隨機性,需采用置亂變換方法對圖像關(guān)鍵信息進(jìn)行隱藏,步驟如下:
1) 利用仿射變換模型l對圖像進(jìn)行微觀置亂,生成微觀置亂變換后的圖像關(guān)鍵信息序列.仿射變換模型l的表達(dá)式為
(7)
其中,V1和V2分別為圖像的長和寬,U為圖像關(guān)鍵信息序列置亂次數(shù),K1和K2分別為圖像信息序列權(quán)值和圖像關(guān)鍵信息序列權(quán)值,J為模乘同余算子,L為關(guān)鍵信息序列置亂周期[14].
2) 在圖像中放入多個關(guān)鍵信息序列.放入第1個關(guān)鍵信息序列時,圖像中的像素點向左平移1個像素;放入第2個關(guān)鍵信息序列時,圖像中的像素點向右平移1個像素;依次循環(huán)實現(xiàn)置亂變換.經(jīng)過反變換法(系統(tǒng)仿真中獲得均勻隨機變量的一種方法)后圖像矩陣的尺寸大小產(chǎn)生變形,因此要對壓縮圖像像素點進(jìn)行反列變換.像素點的反列變換采用混合列變換式,將參與運算的相鄰2個圖像像素點視作具有同一形式的關(guān)鍵信息序列,并通過加權(quán)系數(shù),進(jìn)一步改變圖像關(guān)鍵信息序列的排列形式,確保反列變換后的圖像關(guān)鍵信息序列能夠恢復(fù)為原始尺寸大小.
3) 計算隱寫參數(shù)Z,轉(zhuǎn)換圖像關(guān)鍵信息序列.首先,圖像置亂完畢后,隨機選擇擴展隨機矩陣ρ和隱寫參數(shù)Z,多次迭代置亂變換后,使ρ與Z這2個數(shù)值固定不變.然后,以ρ為基礎(chǔ),修改圖像像素二維矩陣中的元素值,計算Z值,公式為
(8)
其中,D為關(guān)鍵信息的搜索集合;F為置亂密鑰的初始種子,用于生成與提取關(guān)鍵信息序列的隨機數(shù)序列;R為Z在ρ中的對應(yīng)值;T為關(guān)鍵信息數(shù)學(xué)統(tǒng)計特征;o為關(guān)鍵信息壓縮后的低位數(shù)據(jù).最后,按照置亂密鑰的配對規(guī)則,配對置亂后圖像的關(guān)鍵信息與圖像信息序列中隱藏的關(guān)鍵信息像素點[15],即利用Z將關(guān)鍵信息序列的特征統(tǒng)一,完成圖像關(guān)鍵信息序列修改.
4) 重復(fù)步驟1)~3),直至分解的所有關(guān)鍵信息序列都嵌入在像素點的相位分量中.至此完成圖像關(guān)鍵信息的隱藏,實現(xiàn)基于置亂變換的圖像關(guān)鍵信息隱藏算法設(shè)計.
采用MATLAB R2020a軟件對本文算法進(jìn)行模擬.原始圖像為某次醫(yī)學(xué)實驗用到的實驗器材和實驗藥劑,如圖1(a)所示.采用本文算法,利用周期為0.8的多普勒波把圖像分解成14層,提取關(guān)鍵信息,如圖1(b)所示.
圖1 原始圖像及其關(guān)鍵信息
采用本文算法計算出的每層圖像適應(yīng)的近似系數(shù)和細(xì)節(jié)系數(shù)如表1所示:
表1 每層圖像適應(yīng)的近似系數(shù)和細(xì)節(jié)系數(shù)
根據(jù)表1設(shè)置高通濾波器和低通濾波器的相關(guān)參數(shù),獲得原始圖像的小尺度圖像.選擇滿足嵌入條件的像素對,采用本文算法對圖像進(jìn)行宏觀置亂和微觀置亂.宏觀置亂時,把原始圖像劃分為4×5個分塊,如圖2(a)所示.微觀置亂時,首先利用MATLAB軟件的隨機函數(shù)生成插入關(guān)鍵信息的隱寫參數(shù);再配對置亂后圖像的關(guān)鍵信息與圖像信息序列中隱藏的關(guān)鍵信息像素點,將分解的所有關(guān)鍵信息序列都嵌入像素點的相位分量中,得到如圖2(b)所示的微觀置亂結(jié)果.由此采用本文算法實現(xiàn)了圖像關(guān)鍵信息隱藏.
圖2 宏觀置亂和微觀置亂
將本文算法與基于進(jìn)制轉(zhuǎn)換的圖像信息隱藏算法、基于位平面改進(jìn)的圖像信息隱藏算法和基于二次剩余的圖像信息隱藏算法進(jìn)行對比實驗,比較4種圖像信息隱藏算法的圖像保密性.4種圖像信息隱藏算法均采用MATLAB R2020a軟件進(jìn)行模擬.
1) 不動點比.
根據(jù)客戶對圖像的加密要求,設(shè)置關(guān)鍵信息嵌入率Q.將Q作為測試條件,比較4種算法隱藏關(guān)鍵信息后加密圖像的不動點比E.E越小,表明關(guān)鍵信息的隨機擴散效果越好,圖像保密性越優(yōu).E值計算公式為
(9)
其中,m和n分別為加密圖像任意像素點相鄰左右集合中的最大樣點像素值,Wa和Wb分別為關(guān)鍵信息像素點相鄰左右集合中的樣點像素值,G為關(guān)鍵信息像素點相鄰左右集合中的最大樣點像素值.4種算法隱藏關(guān)鍵信息后的加密圖像的不動點比結(jié)果如圖3所示.
圖3 不動點比結(jié)果對比
由圖3可知,當(dāng)Q為20%時,本文算法的加密圖像不動點比為0.369,遠(yuǎn)低于其他3種方法.隨著Q不斷增大,各個算法加密圖像的不動點比都會發(fā)生下降,其中基于進(jìn)制轉(zhuǎn)換的圖像信息隱藏算法的下降速率較為緩慢,本文算法下降速率最快.當(dāng)Q達(dá)到70%時,本文算法加密圖像的不動點比最低,相比其他算法分別減少了0.019,0.044和0.048.可見,本文算法在4種算法中關(guān)鍵信息的隨機擴散效果最好,圖像保密性最優(yōu).
2) 對角方向相關(guān)系數(shù).
圖4 對角方向相關(guān)系數(shù)結(jié)果對比
比較4種算法隱藏關(guān)鍵信息后加密圖像的對角方向相關(guān)系數(shù)H.攻擊者能夠根據(jù)H分析原始圖像的信息,H越低,表明攻擊者分析圖像信息的難度越高.H值計算公式為
(10)
其中,Y1為關(guān)鍵信息像素點相鄰左集合中的樣點a到對角方向的距離,Y2為關(guān)鍵信息像素點相鄰右集合中的樣點b到對角方向的距離,N為隨機抽取的像素數(shù)量.4種算法的對角方向相關(guān)系數(shù)如圖4所示.
由圖4可知,隨著Q不斷增大,各個算法的對角方向相關(guān)系數(shù)變化不大,但本文算法的加密圖像對角方向像素點的平均相關(guān)系數(shù)為0.789,相比其他3種算法分別減少了0.043,0.092和0.147,遠(yuǎn)低于其他3種算法,說明對于用本文算法隱藏關(guān)鍵信息后的加密圖像,攻擊者分析圖像信息的難度最高.
采用本文算法通過置亂變換對圖像關(guān)鍵信息進(jìn)行隱藏,提高了加密圖像的保密性,充分保證了關(guān)鍵信息的共享安全.但本文算法仍存在一定的不足,下一步研究將對原始圖像進(jìn)行縮放和擴大,提高隱藏算法的精度,確保加密圖像的原始信息能夠被充分還原出來.