付笛,孔平,周亮,張建青,周艷麗,王宏杰,陳立范
(1.上海理工大學 健康科學與工程學院,上海 200093;2.上海健康醫學院附屬嘉定區中心醫院,上海 201899;3.上海健康醫學院 醫學影像學院,上海 201318;4.上海健康醫學院 文理教學部,上海 201318)
信息隱藏作為一種隱私保護技術,它能夠向載體圖像嵌入一段額外信息并且保證圖像只有很小的改變。但是,這些改變在對圖像質量要求特別高的領域比如軍事圖像、醫學圖像、法律取證等方面是無法接受的。Barton[1]首次提出了可逆信息隱藏,可以在提取嵌入的信息后可逆恢復載體圖像。
根據信息嵌入的機制,經典的可逆信息隱藏算法可以劃分為3 個主要類別:無損壓縮[2]、差值擴展[3]和直方圖平移[4]。基于無損壓縮的可逆信息隱藏算法通過壓縮原始圖像騰出空間;基于差值擴展的可逆信息隱藏通過擴大相鄰像素值的差進行信息嵌入。經過廣泛研究后,差值擴展發展出了整型變換[5-7]和預測誤差擴展[8-10]。在直方圖平移算法中,信息隱藏通過平移直方圖的峰值點實現。近年來,伴隨著云計算和云存儲的飛速發展,發送方(圖像擁有者)希望將信息嵌入的操作委托給嵌入方(云服務器)。但是直接向嵌入方發送明文圖像存在風險,為了避免信息泄漏,有人提出了密文域的可逆信息隱藏算法。在這種機制中,發送方先用加密密鑰對圖像進行加密,再發送給嵌入方;嵌入方通過嵌入密鑰將額外信息嵌入到加密圖像中;接收方提取額外信息并解密恢復原始圖像。
Zhang[11]首次提出了密文域的可逆信息隱藏算法。在該算法中,首先發送方加密圖像;然后嵌入方通過翻轉密文塊的3 個LSB(最低有效位)進行信息嵌入;最后接收方解密圖像并提取嵌入的信息。算法整體嵌入容量較小,并且存在一定的信息提取和圖像恢復錯誤率。針對Zhang 所提出的算法缺陷,Hong等[12]提出的改進算法充分利用像素間的相關性,利用Side-match 技術計算圖像塊的平滑度并按順序進行信息提取和圖像恢復,提高了信息提取和圖像恢復的正確率。Zhang[13]提出了一種信息提取和圖像恢復操作可以分離的密文域可逆信息隱藏算法,通過壓縮圖像部分信息以騰出空間。Liu等[14]提出了一種基于冗余轉換的密文域可逆信息隱藏算法,將冗余空間從原始圖像傳輸到加密圖像。文獻[15]在文獻[14]的基礎上,提升了嵌入率和安全性。文獻[16]基于傅里葉變換和Gyrator 變換對圖像進行加密,獲得了較好的解密圖像質量和系統安全性。文獻[17]采用塊置亂和流密碼加密技術對圖像進行加密,并通過分析MSB(最高有效位)的分布對其進行自適應壓縮嵌入信息。文獻[18]用一種特殊的加密方式加密圖像,并根據閾值將加密后的圖像塊分為平滑區和復雜區,通過替換平滑區部分像素的最高有效位進行信息嵌入,并利用LDPC 矩陣壓縮的方式對剩余像素的最低有效位再次進行信息嵌入。文獻[19]將可逆信息隱藏算法與不可逆信息隱藏算法相結合,在失真較小的情況下實現隱藏更多的秘密信息。但是,這些算法并沒有考慮醫學圖像的特點。
DICOM(digital imaging and communications in medical)是醫學數字成像和通信標準[20],為數字醫學影像在電腦和網絡上的傳輸、存儲提供了規范。隨著云計算、計算機網絡和遠程醫療的飛速發展,醫學圖像的安全性越來越受到重視。為了保護醫學圖像的隱私安全,本文提出了一種適用于醫學DICOM 圖像的密文域可逆信息隱藏算法,考慮醫學DICOM 圖像更大像素深度和像素分布連續的特點,以期在保證圖像格式以及安全性的同時,提升算法的嵌入率。
密文域醫學圖像可逆信息隱藏算法包含發送方、嵌入方以及接收方3 個部分。首先,發送方采用一種特殊設計的塊加密算法,能夠在保留部分圖像相關性的同時獲得較好的安全性;然后,嵌入方采用多高位比特壓縮和塊編碼技術向加密圖像進行信息嵌入;最后,接收方可以通過擁有的密鑰種類對圖像進行信息提取、圖像解密和圖像恢復3 種操作。算法流程如圖1 所示。

圖1 算法流程圖Fig.1 Flowchart of proposed scheme
發送方首先將圖像劃分為若干個不重疊的塊,為每個塊生成標記信息;然后根據加密密鑰對圖像進行加密。用對每個塊的部分位平面進行異或加密;用對塊進行置亂;用對像素進行置亂,得到最終的加密圖像。圖像加密過程如圖2 所示。

圖2 圖像加密流程圖Fig.2 Flowchart of image encryption
定義大小為M×N且像素深度為16 的原始DICOM 圖像為I。將像素值分為12 個區間T1,T2,···,T12(除了4 個MSB 的其他位平面),統計各個區間的像素數并找到最多的4 個區間Ta,Tb,Tc,Td。將處于4 個區間以外的其他區間合并到這4 個區間中,合并方法如圖3 所示。其中:Ta表示像素值占據了1 個LSB;Tb表示像素值占據了4 個LSB;Tc表示像素值占據了8 個LSB;Td表示像素值占據了12 個LSB。

圖3 區間合并示例Fig.3 Example of intervals merging
根據哈夫曼編碼思想,分別用0,10,110,111 標記屬于這4 個區間的像素。將圖像分為若干個大小為S×S的不重疊塊,然后統計塊內所有像素表示的標記,記錄其中最大的標記,并用該標記替換塊中第一個像素的MSB。根據加密密鑰Ke(1),對每個塊的像素中除了標記信息以外的所有比特進行異或,定義bi,j為位置(i,j)的像素,bi,j,1,bi,j,2,…,bi,j,u表示像素bi,j中的16 個比特。

式中:ri,j,u為由加密密鑰生成的偽隨機比特流;ki,j為bi,j中標記長度。
嵌入方收到加密圖像后,首先識別標記,并將標記的長度定義為,然后將圖像分割為若干個大小為S×S的不重疊塊,根據發送方額外發送的信息解析塊中第一個像素的標記,計算出像素中加密數據的長度。每個塊中可以嵌入的比特數為S2×(16-嵌入方可以通過嵌入密鑰將額外信息進行加密,并將加密后的額外信息嵌入騰出的空間中,得到嵌入信息后的加密圖像。
此外,為了提高嵌入率,嵌入方還可以對加密圖像進行塊編碼,并利用嵌入密鑰向騰出的空間嵌入信息。定義Bu,v為坐標(u,v)的圖像塊。對于每個塊,找到其中加密數據值最大的像素Pm,并用其減去塊內剩余像素的加密數據值,獲得差值d1,d2,···,dn,其中n=S2-1。按下列方式對塊進行重新編碼:用b2表示最大的加密數據值,b2的長度l2是該塊中所有標記可表示的最大長度;用b3表示最大像素的索引,b3的長度是l3;用b5表示差值的長度,b5的長度為l5;l5的長度用b4表示,b4的長度是l4。


式中,λ表示閾值。
如果Pm≤ λ,則不需要b4,且b5的長度為3,否則需要一個長度為3的l4記錄b5的長度。使用表示差值,最后計算b2,b3,b4,b5,長度的和。如果該和大于原加密數據長度的和lm,表示該塊無法進行信息嵌入,則b1的值為0,否則值為1。被b1替換的LSB 與額外信息一起嵌入壓縮后騰出的空間內。用于嵌入額外信息的bs的長度ls可以用式(5)計算。

圖4 給出了塊編碼的示例,在該示例中,區間Ta=[2,5],Tb=[1,1],Tc=[11,12],Td=[6,10],并且標記分別為0,10,110,111。S=2,因此每個塊由4 個像素組成。第一行表示已加密的4 個像素,其中灰色表示加密后的像素值,藍色表示標記,白色表示已經嵌入的額外信息。第二行表示加密數據、差值、最大像素值,第三行表示重編碼后的像素。

圖4 塊編碼示例Fig.4 Example of block encoding
該示例中,塊中第一個加密像素的標記為10,根據發送方額外發送的信息可以得知,10 標記位表示加密像素數據占有6 個比特,因此可以獲取加密像素數據的位平面是1 至6 位。找出該塊中4 個加密像素數據的最大值,并對其他3 個加密像素數據作差,經過計算后得到l1=1,l2=6,l3=2,l4=0,l5=3,=3,lm=24,ls=lm-(l1+l2+l3+l4+l5+=3,即可以嵌入3 個比特,b1=1。用重編碼后的塊替換原始塊,每個塊中可以嵌入的比特數為ls。嵌入方可以通過嵌入密鑰將額外信息進行加密,并將加密后的額外信息嵌入騰出的空間中,得到嵌入信息后的加密圖像
讀取加密像素數據,根據b1的值判斷塊內是否被二次嵌入額外信息,如果b1的值為1,則塊內存在額外信息。根據上文的塊編碼方式,解析塊并獲取額外信息bs;最后接收方通過嵌入密鑰生成的偽隨機比特流對其進行異或解密,即可提取嵌入的信息。
實驗所用硬件系統為4.2 GHz Intel i7 處理器、16.00 GB 內存、Windows 10 操作系統的臺式電腦,算法軟件應用Matlab R2018b。實驗針對一個DICOM 圖像庫進行,圖5 為其中的4 張CT 圖像。以下從各個方面對實驗結果進行分析。
圖6 給出了圖5(a)的原始圖像以及3 次加密后的圖像,根據圖7 的直方圖分析可以看出,無法從直方圖分布中獲取明文圖像的信息。

圖5 DICOM 圖像庫中的4 張CT 圖像Fig.5 Four CT images in DICOM image library

圖6 原始CT 圖像與經過異或、塊置亂和像素置亂加密后的圖像Fig.6 Original CT image and images encrypted by bit xor,block scrambling and pixel scrambling
由圖7 可以看出,原始CT 圖像中,像素主要分布于0 附近,而加密后的密文圖像直方圖分布均勻,保護了明文信息的安全,從視覺和像素分布上都不能得到原圖像的信息。

圖7 原始CT 圖像和最終加密圖像的直方圖Fig.7 Histograms of original CT image and encrypted image
圖8 給出了圖5(a)的水平相關性以及3 次加密后的水平相關性。從圖8 可以看出,原始圖像具有很強的水平相關性,加密后圖像雖然仍有一定的水平相關性,但是相較原始圖像,降低了很多。表1 中給出了圖5 中4 張CT 圖像加密前后圖像的一維熵,原始圖像和加密圖像的像素深度都是16,從表中可以看出,原始圖像的熵值較低,經過加密后圖像的熵值接近16,證明了算法是安全的。

圖8 原始CT 圖像和最終加密圖像的水平相關性Fig.8 Horizontal correlation of original CT image and encrypted image

表1 加密前后圖像的一維熵Tab.1 Order-1 entropies before and after encryption for images
一維熵的計算公式為

嵌入率(BPP)表示平均每個像素可以嵌入比特數量,其值越大表示可以嵌入的數據越多。峰值信噪比(PSNR)表示解密圖像的質量,其值越高表示與原始圖像的差異越小。表2 和表3 分別表示了本算法對圖5 中4 張CT 圖像進行實驗得到的嵌入率和峰值信噪比。其中:嵌入率τ1表示通過壓縮高位MSB 得到的結果,嵌入率τ2表示通過塊編碼得到的結果。
從表2 可以看出,本算法能夠獲取良好的嵌入率,特別是壓縮多高位比特時獲得的嵌入率τ1接近8.5 bpp(bit per pixel),而塊編碼獲得的嵌入率受到塊邊長S的影響,S過小或過大時都會降低嵌入率。因為塊邊長過小時,用于壓縮的比特數目較少導致輔助信息所占比例增加,所以會降低嵌入率;塊邊長S過大時,塊內像素的差異會變大,計算得到的差也會變大,同樣導致輔助信息所占比例增加,降低嵌入率。

表2 不同塊邊長下的嵌入率Tab.2 Embedding rates with different block sizes
從表3 可以看出,本算法能夠獲得良好的解密圖像質量,此外,如果未采用塊編碼方式進行二次信息嵌入,解密圖像將與原始圖像完全相同。

表3 不同塊邊長下的峰值信噪比Tab.3 PSNR with different block sizes
提出了一種基于多高位比特壓縮和塊編碼的密文域醫學圖像可逆信息隱藏算法。通過一種獨特設計的加密算法,每個圖像塊中的相關性得到了部分保留。嵌入方可以通過壓縮高位比特對加密圖像進行信息嵌入。此外,為了進一步提高嵌入率,嵌入方還可以通過塊編碼的方式對加密圖像進行二次嵌入。接收方可以根據自己擁有的密鑰種類進行信息提取、圖像解密或圖像恢復。實驗結果表明,該算法獲得了良好的嵌入率以及較好的安全性。