付笛,孔平,周亮,張建青,周艷麗,王宏杰,陳立范
(1.上海理工大學(xué) 健康科學(xué)與工程學(xué)院,上海 200093;2.上海健康醫(yī)學(xué)院附屬嘉定區(qū)中心醫(yī)院,上海 201899;3.上海健康醫(yī)學(xué)院 醫(yī)學(xué)影像學(xué)院,上海 201318;4.上海健康醫(yī)學(xué)院 文理教學(xué)部,上海 201318)
信息隱藏作為一種隱私保護(hù)技術(shù),它能夠向載體圖像嵌入一段額外信息并且保證圖像只有很小的改變。但是,這些改變在對圖像質(zhì)量要求特別高的領(lǐng)域比如軍事圖像、醫(yī)學(xué)圖像、法律取證等方面是無法接受的。Barton[1]首次提出了可逆信息隱藏,可以在提取嵌入的信息后可逆恢復(fù)載體圖像。
根據(jù)信息嵌入的機(jī)制,經(jīng)典的可逆信息隱藏算法可以劃分為3 個主要類別:無損壓縮[2]、差值擴(kuò)展[3]和直方圖平移[4]?;跓o損壓縮的可逆信息隱藏算法通過壓縮原始圖像騰出空間;基于差值擴(kuò)展的可逆信息隱藏通過擴(kuò)大相鄰像素值的差進(jìn)行信息嵌入。經(jīng)過廣泛研究后,差值擴(kuò)展發(fā)展出了整型變換[5-7]和預(yù)測誤差擴(kuò)展[8-10]。在直方圖平移算法中,信息隱藏通過平移直方圖的峰值點(diǎn)實(shí)現(xiàn)。近年來,伴隨著云計算和云存儲的飛速發(fā)展,發(fā)送方(圖像擁有者)希望將信息嵌入的操作委托給嵌入方(云服務(wù)器)。但是直接向嵌入方發(fā)送明文圖像存在風(fēng)險,為了避免信息泄漏,有人提出了密文域的可逆信息隱藏算法。在這種機(jī)制中,發(fā)送方先用加密密鑰對圖像進(jìn)行加密,再發(fā)送給嵌入方;嵌入方通過嵌入密鑰將額外信息嵌入到加密圖像中;接收方提取額外信息并解密恢復(fù)原始圖像。
Zhang[11]首次提出了密文域的可逆信息隱藏算法。在該算法中,首先發(fā)送方加密圖像;然后嵌入方通過翻轉(zhuǎn)密文塊的3 個LSB(最低有效位)進(jìn)行信息嵌入;最后接收方解密圖像并提取嵌入的信息。算法整體嵌入容量較小,并且存在一定的信息提取和圖像恢復(fù)錯誤率。針對Zhang 所提出的算法缺陷,Hong等[12]提出的改進(jìn)算法充分利用像素間的相關(guān)性,利用Side-match 技術(shù)計算圖像塊的平滑度并按順序進(jìn)行信息提取和圖像恢復(fù),提高了信息提取和圖像恢復(fù)的正確率。Zhang[13]提出了一種信息提取和圖像恢復(fù)操作可以分離的密文域可逆信息隱藏算法,通過壓縮圖像部分信息以騰出空間。Liu等[14]提出了一種基于冗余轉(zhuǎn)換的密文域可逆信息隱藏算法,將冗余空間從原始圖像傳輸?shù)郊用軋D像。文獻(xiàn)[15]在文獻(xiàn)[14]的基礎(chǔ)上,提升了嵌入率和安全性。文獻(xiàn)[16]基于傅里葉變換和Gyrator 變換對圖像進(jìn)行加密,獲得了較好的解密圖像質(zhì)量和系統(tǒng)安全性。文獻(xiàn)[17]采用塊置亂和流密碼加密技術(shù)對圖像進(jìn)行加密,并通過分析MSB(最高有效位)的分布對其進(jìn)行自適應(yīng)壓縮嵌入信息。文獻(xiàn)[18]用一種特殊的加密方式加密圖像,并根據(jù)閾值將加密后的圖像塊分為平滑區(qū)和復(fù)雜區(qū),通過替換平滑區(qū)部分像素的最高有效位進(jìn)行信息嵌入,并利用LDPC 矩陣壓縮的方式對剩余像素的最低有效位再次進(jìn)行信息嵌入。文獻(xiàn)[19]將可逆信息隱藏算法與不可逆信息隱藏算法相結(jié)合,在失真較小的情況下實(shí)現(xiàn)隱藏更多的秘密信息。但是,這些算法并沒有考慮醫(yī)學(xué)圖像的特點(diǎn)。
DICOM(digital imaging and communications in medical)是醫(yī)學(xué)數(shù)字成像和通信標(biāo)準(zhǔn)[20],為數(shù)字醫(yī)學(xué)影像在電腦和網(wǎng)絡(luò)上的傳輸、存儲提供了規(guī)范。隨著云計算、計算機(jī)網(wǎng)絡(luò)和遠(yuǎn)程醫(yī)療的飛速發(fā)展,醫(yī)學(xué)圖像的安全性越來越受到重視。為了保護(hù)醫(yī)學(xué)圖像的隱私安全,本文提出了一種適用于醫(yī)學(xué)DICOM 圖像的密文域可逆信息隱藏算法,考慮醫(yī)學(xué)DICOM 圖像更大像素深度和像素分布連續(xù)的特點(diǎn),以期在保證圖像格式以及安全性的同時,提升算法的嵌入率。
密文域醫(yī)學(xué)圖像可逆信息隱藏算法包含發(fā)送方、嵌入方以及接收方3 個部分。首先,發(fā)送方采用一種特殊設(shè)計的塊加密算法,能夠在保留部分圖像相關(guān)性的同時獲得較好的安全性;然后,嵌入方采用多高位比特壓縮和塊編碼技術(shù)向加密圖像進(jìn)行信息嵌入;最后,接收方可以通過擁有的密鑰種類對圖像進(jìn)行信息提取、圖像解密和圖像恢復(fù)3 種操作。算法流程如圖1 所示。
圖1 算法流程圖Fig.1 Flowchart of proposed scheme
發(fā)送方首先將圖像劃分為若干個不重疊的塊,為每個塊生成標(biāo)記信息;然后根據(jù)加密密鑰對圖像進(jìn)行加密。用對每個塊的部分位平面進(jìn)行異或加密;用對塊進(jìn)行置亂;用對像素進(jìn)行置亂,得到最終的加密圖像。圖像加密過程如圖2 所示。
圖2 圖像加密流程圖Fig.2 Flowchart of image encryption
定義大小為M×N且像素深度為16 的原始DICOM 圖像為I。將像素值分為12 個區(qū)間T1,T2,···,T12(除了4 個MSB 的其他位平面),統(tǒng)計各個區(qū)間的像素數(shù)并找到最多的4 個區(qū)間Ta,Tb,Tc,Td。將處于4 個區(qū)間以外的其他區(qū)間合并到這4 個區(qū)間中,合并方法如圖3 所示。其中:Ta表示像素值占據(jù)了1 個LSB;Tb表示像素值占據(jù)了4 個LSB;Tc表示像素值占據(jù)了8 個LSB;Td表示像素值占據(jù)了12 個LSB。
圖3 區(qū)間合并示例Fig.3 Example of intervals merging
根據(jù)哈夫曼編碼思想,分別用0,10,110,111 標(biāo)記屬于這4 個區(qū)間的像素。將圖像分為若干個大小為S×S的不重疊塊,然后統(tǒng)計塊內(nèi)所有像素表示的標(biāo)記,記錄其中最大的標(biāo)記,并用該標(biāo)記替換塊中第一個像素的MSB。根據(jù)加密密鑰Ke(1),對每個塊的像素中除了標(biāo)記信息以外的所有比特進(jìn)行異或,定義bi,j為位置(i,j)的像素,bi,j,1,bi,j,2,…,bi,j,u表示像素bi,j中的16 個比特。
式中:ri,j,u為由加密密鑰生成的偽隨機(jī)比特流;ki,j為bi,j中標(biāo)記長度。
嵌入方收到加密圖像后,首先識別標(biāo)記,并將標(biāo)記的長度定義為,然后將圖像分割為若干個大小為S×S的不重疊塊,根據(jù)發(fā)送方額外發(fā)送的信息解析塊中第一個像素的標(biāo)記,計算出像素中加密數(shù)據(jù)的長度。每個塊中可以嵌入的比特數(shù)為S2×(16-嵌入方可以通過嵌入密鑰將額外信息進(jìn)行加密,并將加密后的額外信息嵌入騰出的空間中,得到嵌入信息后的加密圖像。
此外,為了提高嵌入率,嵌入方還可以對加密圖像進(jìn)行塊編碼,并利用嵌入密鑰向騰出的空間嵌入信息。定義Bu,v為坐標(biāo)(u,v)的圖像塊。對于每個塊,找到其中加密數(shù)據(jù)值最大的像素Pm,并用其減去塊內(nèi)剩余像素的加密數(shù)據(jù)值,獲得差值d1,d2,···,dn,其中n=S2-1。按下列方式對塊進(jìn)行重新編碼:用b2表示最大的加密數(shù)據(jù)值,b2的長度l2是該塊中所有標(biāo)記可表示的最大長度;用b3表示最大像素的索引,b3的長度是l3;用b5表示差值的長度,b5的長度為l5;l5的長度用b4表示,b4的長度是l4。
式中,λ表示閾值。
如果Pm≤ λ,則不需要b4,且b5的長度為3,否則需要一個長度為3的l4記錄b5的長度。使用表示差值,最后計算b2,b3,b4,b5,長度的和。如果該和大于原加密數(shù)據(jù)長度的和lm,表示該塊無法進(jìn)行信息嵌入,則b1的值為0,否則值為1。被b1替換的LSB 與額外信息一起嵌入壓縮后騰出的空間內(nèi)。用于嵌入額外信息的bs的長度ls可以用式(5)計算。
圖4 給出了塊編碼的示例,在該示例中,區(qū)間Ta=[2,5],Tb=[1,1],Tc=[11,12],Td=[6,10],并且標(biāo)記分別為0,10,110,111。S=2,因此每個塊由4 個像素組成。第一行表示已加密的4 個像素,其中灰色表示加密后的像素值,藍(lán)色表示標(biāo)記,白色表示已經(jīng)嵌入的額外信息。第二行表示加密數(shù)據(jù)、差值、最大像素值,第三行表示重編碼后的像素。
圖4 塊編碼示例Fig.4 Example of block encoding
該示例中,塊中第一個加密像素的標(biāo)記為10,根據(jù)發(fā)送方額外發(fā)送的信息可以得知,10 標(biāo)記位表示加密像素數(shù)據(jù)占有6 個比特,因此可以獲取加密像素數(shù)據(jù)的位平面是1 至6 位。找出該塊中4 個加密像素數(shù)據(jù)的最大值,并對其他3 個加密像素數(shù)據(jù)作差,經(jīng)過計算后得到l1=1,l2=6,l3=2,l4=0,l5=3,=3,lm=24,ls=lm-(l1+l2+l3+l4+l5+=3,即可以嵌入3 個比特,b1=1。用重編碼后的塊替換原始塊,每個塊中可以嵌入的比特數(shù)為ls。嵌入方可以通過嵌入密鑰將額外信息進(jìn)行加密,并將加密后的額外信息嵌入騰出的空間中,得到嵌入信息后的加密圖像
讀取加密像素數(shù)據(jù),根據(jù)b1的值判斷塊內(nèi)是否被二次嵌入額外信息,如果b1的值為1,則塊內(nèi)存在額外信息。根據(jù)上文的塊編碼方式,解析塊并獲取額外信息bs;最后接收方通過嵌入密鑰生成的偽隨機(jī)比特流對其進(jìn)行異或解密,即可提取嵌入的信息。
實(shí)驗所用硬件系統(tǒng)為4.2 GHz Intel i7 處理器、16.00 GB 內(nèi)存、Windows 10 操作系統(tǒng)的臺式電腦,算法軟件應(yīng)用Matlab R2018b。實(shí)驗針對一個DICOM 圖像庫進(jìn)行,圖5 為其中的4 張CT 圖像。以下從各個方面對實(shí)驗結(jié)果進(jìn)行分析。
圖6 給出了圖5(a)的原始圖像以及3 次加密后的圖像,根據(jù)圖7 的直方圖分析可以看出,無法從直方圖分布中獲取明文圖像的信息。
圖5 DICOM 圖像庫中的4 張CT 圖像Fig.5 Four CT images in DICOM image library
圖6 原始CT 圖像與經(jīng)過異或、塊置亂和像素置亂加密后的圖像Fig.6 Original CT image and images encrypted by bit xor,block scrambling and pixel scrambling
由圖7 可以看出,原始CT 圖像中,像素主要分布于0 附近,而加密后的密文圖像直方圖分布均勻,保護(hù)了明文信息的安全,從視覺和像素分布上都不能得到原圖像的信息。
圖7 原始CT 圖像和最終加密圖像的直方圖Fig.7 Histograms of original CT image and encrypted image
圖8 給出了圖5(a)的水平相關(guān)性以及3 次加密后的水平相關(guān)性。從圖8 可以看出,原始圖像具有很強(qiáng)的水平相關(guān)性,加密后圖像雖然仍有一定的水平相關(guān)性,但是相較原始圖像,降低了很多。表1 中給出了圖5 中4 張CT 圖像加密前后圖像的一維熵,原始圖像和加密圖像的像素深度都是16,從表中可以看出,原始圖像的熵值較低,經(jīng)過加密后圖像的熵值接近16,證明了算法是安全的。
圖8 原始CT 圖像和最終加密圖像的水平相關(guān)性Fig.8 Horizontal correlation of original CT image and encrypted image
表1 加密前后圖像的一維熵Tab.1 Order-1 entropies before and after encryption for images
一維熵的計算公式為
嵌入率(BPP)表示平均每個像素可以嵌入比特數(shù)量,其值越大表示可以嵌入的數(shù)據(jù)越多。峰值信噪比(PSNR)表示解密圖像的質(zhì)量,其值越高表示與原始圖像的差異越小。表2 和表3 分別表示了本算法對圖5 中4 張CT 圖像進(jìn)行實(shí)驗得到的嵌入率和峰值信噪比。其中:嵌入率τ1表示通過壓縮高位MSB 得到的結(jié)果,嵌入率τ2表示通過塊編碼得到的結(jié)果。
從表2 可以看出,本算法能夠獲取良好的嵌入率,特別是壓縮多高位比特時獲得的嵌入率τ1接近8.5 bpp(bit per pixel),而塊編碼獲得的嵌入率受到塊邊長S的影響,S過小或過大時都會降低嵌入率。因為塊邊長過小時,用于壓縮的比特數(shù)目較少導(dǎo)致輔助信息所占比例增加,所以會降低嵌入率;塊邊長S過大時,塊內(nèi)像素的差異會變大,計算得到的差也會變大,同樣導(dǎo)致輔助信息所占比例增加,降低嵌入率。
表2 不同塊邊長下的嵌入率Tab.2 Embedding rates with different block sizes
從表3 可以看出,本算法能夠獲得良好的解密圖像質(zhì)量,此外,如果未采用塊編碼方式進(jìn)行二次信息嵌入,解密圖像將與原始圖像完全相同。
表3 不同塊邊長下的峰值信噪比Tab.3 PSNR with different block sizes
提出了一種基于多高位比特壓縮和塊編碼的密文域醫(yī)學(xué)圖像可逆信息隱藏算法。通過一種獨(dú)特設(shè)計的加密算法,每個圖像塊中的相關(guān)性得到了部分保留。嵌入方可以通過壓縮高位比特對加密圖像進(jìn)行信息嵌入。此外,為了進(jìn)一步提高嵌入率,嵌入方還可以通過塊編碼的方式對加密圖像進(jìn)行二次嵌入。接收方可以根據(jù)自己擁有的密鑰種類進(jìn)行信息提取、圖像解密或圖像恢復(fù)。實(shí)驗結(jié)果表明,該算法獲得了良好的嵌入率以及較好的安全性。