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