張國(guó)梅,鄒華興,吳 迪
(1.廣州理工學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣東 廣州 510540;2.南昌大學(xué) 信息工程學(xué)院,江西 南昌 330031;3.哈爾濱工程大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
圖像水印[1]是圖像處理技術(shù)和信息安全的重要研究領(lǐng)域,圖像水印通過(guò)嵌入隱藏信息,具有聲明所有權(quán)、提高安全性、驗(yàn)證圖像的數(shù)值完整性等作用[2]。由于通信信道會(huì)產(chǎn)生噪聲,且易受網(wǎng)絡(luò)攻擊,因此良好的圖像水印技術(shù)是實(shí)現(xiàn)遠(yuǎn)程信息交流的最有效手段。
目前,針對(duì)該領(lǐng)域的研究已取得一些成果。文獻(xiàn)[3]中提出了混合多重水印方案,通過(guò)合并離散小波變換(discrete wavelet transform,DWT)、離散余弦變換(discrete cosine transform,DCT)和奇異值分解(singular value decomposition,SVD)而不是分別應(yīng)用DWT、DCT和SVD,在測(cè)試圖像中隱藏多個(gè)水印。文獻(xiàn)[4]中提出一種將紋理復(fù)雜度和DCT域最小可覺(jué)差(just noticeable difference,JND)模型相結(jié)合的圖像水印算法,利用各子塊灰度共生矩陣的4個(gè)紋理特性計(jì)算紋理復(fù)雜度,以提高隱藏信息容量和安全性。文獻(xiàn)[5]中提出了2種使用DCT的醫(yī)療影像水印方法,第1種方法將水印隱藏在整張測(cè)試圖像中,第2種方法則將醫(yī)療影像分割為感興趣區(qū)域(region of interest,ROI)和不感興趣區(qū)域(regions of not interest,RONI)2個(gè)部分,水印僅隱藏在測(cè)試醫(yī)療影像的RONI。文獻(xiàn)[6]中基于容量評(píng)估與徑向和諧傅里葉變換的圖像水印算法,引入徑向和諧傅里葉矩快速計(jì)算載體圖像的傅里葉矩,設(shè)計(jì)水印容量與評(píng)估。文獻(xiàn)[7]中提出了一種抗組合幾何攻擊且嵌入容量較大的水印算法,針對(duì)多種組合攻擊的特性進(jìn)行算法設(shè)計(jì)。文獻(xiàn)[8]中將待測(cè)試的醫(yī)療影像分為3組像素,即ROI的像素、RONI的像素和邊框區(qū)域的像素,然后將ROI像素的認(rèn)證相關(guān)的信息隱藏在邊框區(qū)域的像素中,該方案能夠識(shí)別和限制ROI內(nèi)被篡改的區(qū)塊。文獻(xiàn)[9]中通過(guò)DCT將水印的主成分隱藏到測(cè)試圖像中,以保持一致性,通過(guò)DWT將水印主成分嵌入測(cè)試圖像。文獻(xiàn)[10]中提出一種基于不可見(jiàn)Unicode字符的文本水印算法,通過(guò)編碼的方式轉(zhuǎn)換水印信息為不可見(jiàn)字符串。
圖像信息一般由ROI和RONI這2個(gè)部分組成[11]。在各種水印系統(tǒng)中,優(yōu)化方法可以確保水印系統(tǒng)約束(例如魯棒性和隱蔽性)與凈負(fù)荷容量之間的平衡,其作用至關(guān)重要。當(dāng)前,啟發(fā)式優(yōu)化算法種類較多,如遺傳算法(genetic algorithm,GA)、神經(jīng)網(wǎng)絡(luò)(neural network,NN)、差分進(jìn)化(differential evolution,DE)和粒子群優(yōu)化(particle swarm optimization,PSO)、支持向量機(jī)等[12-15]。為了得到滿足水印系統(tǒng)約束的最優(yōu)數(shù)值,本文中提出一種結(jié)合量子粒子群優(yōu)化(quantum particle swarm optimization,QPSO)與細(xì)菌覓食優(yōu)化[16](bacterial foraging optimization,BFO)的混合優(yōu)化算法(QPSO-BFO算法),用于識(shí)別ROI內(nèi)的篡改,以期具有較好的安全性和定位篡改能力。
BFO算法是關(guān)于消除搜索能力較差細(xì)菌的選擇過(guò)程。很多代細(xì)菌被剝奪覓食權(quán)利并被丟棄,僅保留搜索能力良好的個(gè)體。BFO算法是一種非梯度優(yōu)化方法,利用大腸桿菌的細(xì)菌探索行為,在覓食中努力滿足每個(gè)單位時(shí)間間隔中的最大食物消耗。每個(gè)區(qū)域中,所有細(xì)菌有3個(gè)功能階段,即趨化、群集和變異復(fù)制。由于細(xì)菌尋找營(yíng)養(yǎng)的移動(dòng)行為是隨機(jī)的,因此在成本函數(shù)的梯度不明確時(shí),BFO算法是有效的,且數(shù)學(xué)復(fù)雜度較低。
1)趨化。大腸桿菌的非系統(tǒng)性移動(dòng)行為可描述為前進(jìn)和翻轉(zhuǎn)。大腸肝菌的非系統(tǒng)性移動(dòng)行為進(jìn)展可分為2種:一是在特定時(shí)間段內(nèi),按單獨(dú)路徑前進(jìn);二是離開(kāi)原路徑并改善路徑。大腸桿菌在這2種進(jìn)展之間變化,以完善大腸桿菌菌群的存在。大腸桿菌的虛擬趨化進(jìn)展也可能表現(xiàn)為任意的登山過(guò)程。
2)群集。大腸桿菌的前進(jìn)活動(dòng)是經(jīng)驗(yàn)性的,大腸桿菌時(shí)空集合在半固態(tài)營(yíng)養(yǎng)介質(zhì)中產(chǎn)生。大腸桿菌將自身塑造成環(huán)形,然后向富營(yíng)養(yǎng)區(qū)域方向移動(dòng)。受到刺激后,大腸桿菌釋放吸引劑,由此組織為群集,并以緊湊的形式同軸前進(jìn)。在大腸桿菌菌群中,可通過(guò)Rosenbrock函數(shù)評(píng)估細(xì)胞之間的信號(hào)傳遞。
3)變異復(fù)制。驅(qū)除有害細(xì)菌,留下的具有較大價(jià)值的細(xì)菌則無(wú)性分裂為2個(gè)細(xì)菌,并位于相關(guān)位置,因此整個(gè)細(xì)菌菌群的規(guī)模不斷增長(zhǎng)。
PSO算法的缺點(diǎn)較多,如難以保證收斂到全局最優(yōu),收斂慢,不能完全表征粒子行為特征。QPSO算法是Sun等[17]對(duì)粒子收斂行為進(jìn)行研究后提出的。該算法認(rèn)為粒子具有量子行為特征,取消了粒子的移動(dòng)方向?qū)傩裕沟昧W游恢酶屡c之前的運(yùn)動(dòng)沒(méi)有必然的關(guān)系,保證了粒子屬性更加貼合實(shí)際情況,從而具有速度和位置不可確定性。由于粒子位置和速度在量子空間中不能同時(shí)確定,因此通常情況下用波函數(shù)X(t)表示粒子位置,計(jì)算公式[17]為
(1)
QPSO算法的特點(diǎn)是彌補(bǔ)了PSO算法的一些缺點(diǎn),但很多時(shí)候依然難以跳出局部最優(yōu);BFO算法的缺點(diǎn)是匯集率很差,但不會(huì)陷入局部最優(yōu)。由于QPSO算法和BFO算法具有一定的互補(bǔ)性,而且QPSO算法一般進(jìn)行全局搜索,BFO算法在一定范圍內(nèi)搜索,群體最優(yōu)位置abest和最優(yōu)閾值T均在各自算法中具有明確地位,因此可以合并。為了彌補(bǔ)各自缺點(diǎn),本文中將BFO與QPSO相結(jié)合,提出QPSO-BFO算法。
該算法包含2個(gè)基本階段:1)通過(guò)QPSO算法對(duì)全局搜索進(jìn)行監(jiān)視;2)通過(guò)BFO算法趨化完成局部搜索。通過(guò)QPSO-BFO算法,QPSO算法執(zhí)行全局搜索,并快速建立初步結(jié)果;BFO算法在有限范圍內(nèi)搜索,調(diào)整結(jié)果并提供盡可能高的精度。在經(jīng)歷趨化階段時(shí),所有細(xì)菌都通過(guò)QPSO算法發(fā)生變異。該階段中,所有細(xì)菌都應(yīng)關(guān)注并移至abest位置,并通過(guò)BFO算法在不相似區(qū)域中進(jìn)行局部搜索。這種結(jié)合不僅可以避免算法陷入局部極小值,而且加快了收斂。值得一提的是,QPSO-BFO算法的重點(diǎn)是在將水印隱藏到測(cè)試圖像的過(guò)程中選擇最優(yōu)閾值T。
一般水印的嵌入與提取過(guò)程如圖1所示。本文中遵循該思路探討水印的嵌入和提取。
圖1 一般水印的嵌入與提取過(guò)程
本文中利用視覺(jué)熵和邊緣熵[18],提取用于嵌入水印的區(qū)域,將圖像中所有區(qū)塊的熵之和按升序排列。為了實(shí)現(xiàn)更好的隱蔽性和魯棒性,選擇數(shù)值最小的區(qū)塊以嵌入雙水印,即患者電子記錄(PER)和ROI水印。初始時(shí),將測(cè)試圖像分為ROI和RONI共2個(gè)區(qū)域。其中,RONI是包含隱性信息的圖像部分,因此隱藏在RONI中的信息能夠提供更好的安全性。首先應(yīng)用DWT分割出測(cè)試圖像的RONI部分,然后在DWT測(cè)試圖像的選定子帶LH2、HL2上應(yīng)用Schur變換。
基于邊緣熵和視覺(jué)熵的視覺(jué)特性,在子帶中選擇合適區(qū)塊。此外,在將水印嵌入測(cè)試圖像的RONI之前,利用無(wú)損編碼方法,即Lempel-Ziv-Welch(LZW)算法[19],計(jì)算出測(cè)試圖像的ROI部分的壓縮圖像及密鑰,以避免當(dāng)測(cè)試圖像內(nèi)包含凈負(fù)荷較大的水印時(shí)圖像感知質(zhì)量的下降。
2.2.1 水印嵌入
步驟1 彩色測(cè)試影像F具有3個(gè)獨(dú)立的色彩平面,即紅色R、綠色G和藍(lán)色B。當(dāng)水印嵌入時(shí),與色度分量(Cb,Cr)相比,色彩空間YCbCr中的亮度分量Y受圖像改動(dòng)的影響較小,因此,將色彩平面RGB轉(zhuǎn)換為YCbCr色彩空間。
步驟2 將雙水印PER和ROI隱藏在原始影像F的RONI部分。先利用無(wú)損LZW算法對(duì)PER水印wk,l(k、l為[1,4]中的整數(shù))進(jìn)行壓縮,然后,以一維模式排列水印信息量。PER水印為灰度圖像,分辨率為160像素×240像素;ROI水印是彩色圖像的一部分,空間分辨率為128像素×128像素(通道個(gè)數(shù)為3)。在原始圖像的個(gè)體平面的ROI部分,即YROI、Cb,ROI和Cr,ROI上應(yīng)用LZW算法,無(wú)損地減少冗余。由于無(wú)損壓縮是可逆的,因此可以從壓縮水印中重建原始ROI水印。與PER水印相似,將原始圖像的YROI轉(zhuǎn)換為一維信息量。
步驟3 在RONI部分上應(yīng)用DWT,以得到子帶LL2、LH2、HL2和HH2。4個(gè)子帶中,LH2和HL2被分割為4×4型非重疊區(qū)塊。從中選出m×m個(gè)區(qū)塊,以進(jìn)行基于視覺(jué)熵和邊緣熵的水印嵌入。
步驟4 在選定區(qū)塊Nk×l上實(shí)施Schur變換,將Nk×l分解為2個(gè)矩陣Uk×l和Sk×l,
(Uk×l,Sk×l)=Schur(Nk×l)。
(2)
如果wk,l滿足|u3,1-u4,1| (3) 如果wk,l滿足|u4,1-u3,1|≥T,則 (4) 當(dāng)前大多水印方法對(duì)閾值T進(jìn)行手動(dòng)調(diào)整,造成數(shù)學(xué)復(fù)雜度較高,而且不利于水印的隱蔽性和魯棒性。本文中則基于高效的QPSO-BFO算法生成的目標(biāo)函數(shù)計(jì)算閾值T,提高了水印系統(tǒng)的隱蔽性和魯棒性。 (5) 步驟7 得到修改后的水平子帶LH′和修改后的垂直子帶HL′,然后應(yīng)用逆DWT得到新的亮度通道值Ynew。 步驟8 合并色度分量Cb和Cr,并轉(zhuǎn)換回真彩色圖像,以得到測(cè)試水印彩色圖像Ftest。 2.2.2 水印提取 在提出的盲水印方法中,僅需水印圖像即可進(jìn)行水印提取。PER、ROI水印提取步驟如下。 步驟1 將彩色圖像從色彩平面RGB轉(zhuǎn)換為色彩空間YCbCr。 步驟2 提取該圖像的水印亮度Ywater,并將Ywater分為ROI和RONI這2個(gè)部分。 步驟3 在RONI上應(yīng)用DWT,將RONI分為子帶LLwa、LHwa、HLwa和HHwa。 步驟4 提取LHwa和HLwa。 步驟6 從相同位置提取出PER水印和ROI的亮度YROI,ext。 (6) 步驟8 在得出的一維信息量流上應(yīng)用逆LZW。 步驟9 將提取出的一維信息量流轉(zhuǎn)換為二維數(shù)組,以得到提取出的PER水印和YROI部分。將YROI與Cb,ROI、Cr,ROI合并,然后將色彩空間YCbCr轉(zhuǎn)換為色彩平面RGB以得到提取出的ROI水印。 水印算法中,隱蔽性和魯棒性是相互沖突的。當(dāng)閾值T較大時(shí),魯棒性較高,但隱蔽性較差;T較小時(shí),隱蔽性更好,但魯棒性較差。以原始彩色圖像與水印彩色圖像之間的峰值信噪比(peak signal to noise ratio,PSNR),以及嵌入水印與提取水印之間的歸一化互相關(guān)(NCC)值為基礎(chǔ),構(gòu)造適應(yīng)度函數(shù)fmin,以實(shí)現(xiàn)隱蔽性與魯棒性之間的平衡,即 , (7) 式中:n為水印方法受到的攻擊總次數(shù);qj為與第j次攻擊對(duì)應(yīng)的提取水印的NCC值;γ、γopt為PSNR及其預(yù)期值。 通過(guò)最優(yōu)PSNR對(duì)優(yōu)化進(jìn)行糾正,以確保滿足最低圖像質(zhì)量要求。隨著適應(yīng)度函數(shù)值減小,PSNR向最優(yōu)值方向發(fā)展,同時(shí)qj均值接近1.0。 本文中通過(guò)QPSO-BFO算法得到最優(yōu)閾值參數(shù)T,具體計(jì)算流程如圖2所示。 圖2 利用結(jié)合量子粒子群優(yōu)化(QPSO)與細(xì)菌覓食優(yōu)化(BFO)的混合優(yōu)化算法(QPSO-BFO算法)獲得最優(yōu)閾值的計(jì)算流程 在MATLAB R2011b平臺(tái)上實(shí)施QPSO-BFO算法。硬件平臺(tái)采用Windows 8操作系統(tǒng),配置內(nèi)存容量為4 GB的隨機(jī)存儲(chǔ)器(RAM)的Intel i5型雙核處理器,以測(cè)試算法的隱蔽性、魯棒性和處理速度。在水印嵌入前,將可逆LZW壓縮應(yīng)用到PER、ROI水印,提升了嵌入能力。PER水印的壓縮方式類似于ROI水印。其后,將多個(gè)水印與認(rèn)證碼(散列值)共同隱藏到圖像的RONI部分。實(shí)驗(yàn)中圖片來(lái)自標(biāo)準(zhǔn)圖像數(shù)據(jù)庫(kù)[8]和物聯(lián)網(wǎng)云端。 利用醫(yī)學(xué)影像的ROI部分生成散列值進(jìn)行認(rèn)證,采用基于SVD的散列算法[21],對(duì)發(fā)送端與接收端的測(cè)試圖像的散列值進(jìn)行比較。若兩者相同,則未發(fā)生篡改;若不同,則圖像已收到篡改,需要將被篡改部分替換為原始ROI。散列值為十六進(jìn)制格式,共128位,為Aabeee123ff44566ab3451234gsfs1578。計(jì)算PSNR,以評(píng)估篡改圖像和復(fù)原圖像的質(zhì)量。表1所示為不同醫(yī)學(xué)影像的水印圖像PSMR及復(fù)原圖像效果。測(cè)試圖像包括計(jì)算機(jī)體層成像(CT)掃描圖、超聲波圖像、磁共振成像(MRI)影像、X光片等。從表中可以看出,PSNR均大于33 dB。若PSNR小于32 dB,則圖像發(fā)生較大圖像畸變,無(wú)法用于診斷檢查。圖3所示為MRI影像的篡改識(shí)別和無(wú)損恢復(fù)。由圖3和表1可知,基于QPSO-BFO算法的水印系統(tǒng)能夠以100%的準(zhǔn)確度識(shí)別篡改并無(wú)損恢復(fù)ROI部分。 表1 不同醫(yī)學(xué)影像的水印圖像峰值信噪比及復(fù)原圖像效果 使用200張彩色和灰度圖像對(duì)QPSO-BFO算法進(jìn)行驗(yàn)證,其中灰度圖像和彩色圖像的分辨率為1 024像素×1 024像素。對(duì)于彩色圖像,考慮每個(gè)通道的PSNR均值。加水印前、后圖像的差異性對(duì)比如圖4所示。由圖可以看出,測(cè)試圖像與相應(yīng)的水印圖像之間無(wú)明顯差異。QPSO-BFO算法得到的PSNR均值大于32 dB,證明能夠生成高質(zhì)量水印圖像。 3.3.1 魯棒性和凈負(fù)荷 QPSO-BFO算法與其他相關(guān)方法[5,9]在不同攻擊情形下嵌入水印后的PSNR如表2所示。與其他方法相比,QPSO-BFO算法具有更好的魯棒性。文獻(xiàn)[5]中的方法采用手動(dòng)選擇嵌入因數(shù),且水印算法約束相關(guān)的結(jié)果并非最優(yōu)。文獻(xiàn)[9]中利用PSO計(jì)算尺度因子,并將水印隱藏在DWT系數(shù)中,結(jié)果優(yōu)于非優(yōu)化方法。仿真結(jié)果表明,如果采用GA或DE法,則結(jié)果稍優(yōu)于PSO。對(duì)于QPSO-BFO算法,當(dāng)閾值T較大時(shí),魯棒性較好,但隱蔽性較差;當(dāng)T較小時(shí),隱蔽性更好,但魯棒性較差。由于本文中的閾值T并非手動(dòng)選擇,而是利用QPSO-BFO算法獲得的,因此可以實(shí)現(xiàn)更好的隱蔽性和魯棒性。 表2 不同方法在嵌入水印后的峰值信噪比(PSNR) 表3所示為在不同攻擊情形下QPSO-BFO算法與其他方法提取出的ROI水印和PER水印的NCC值。從表中可以看出,QPSO-BFO算法的NCC值優(yōu)于其他方法的。在文獻(xiàn)[5,9]中的方法中,NCC值隨著噪聲密度的增大而減小,此外,提取出的水印質(zhì)量也隨聯(lián)合圖像專家組(JPEG)圖像質(zhì)量因子的減小而顯著減小,因此這些方法不適用于壓縮比較大或噪聲密度較大的情況。本文中同時(shí)結(jié)合DWT、Schur變換以及QPSO-BFO算法,獲得了更好的隱蔽性和魯棒性。 表3 不同攻擊情形下感興趣區(qū)域水印和 與其他方法相比,QPSO-BFO算法在凈負(fù)荷方面有很大改善,表4所示為不同醫(yī)學(xué)影像的凈負(fù)荷容量。由于QPSO-BFO算法在將水印嵌入圖像前,先利用LZW算法對(duì)2個(gè)水印進(jìn)行無(wú)損壓縮,減少了冗余信息量,且通過(guò)LZW算法可無(wú)損隱藏更多信息量,因此提升了凈負(fù)荷容量。 表4 不同醫(yī)學(xué)影像的凈負(fù)荷容量 3.3.2 有效性分析 本文中針對(duì)圖像水印的不同攻擊,基于受試者工作特征曲線(ROC)進(jìn)行統(tǒng)計(jì)分析,以進(jìn)一步驗(yàn)證QPSO-BFO算法的有效性。虛警率是指圖像實(shí)際未加水印而識(shí)別到水印的概率。不同攻擊情形下的ROC曲線如圖5所示。由圖5(a)可知,在縮放攻擊時(shí)的ROC曲線中,文獻(xiàn)[5]中方法的檢測(cè)概率為0.91,文獻(xiàn)[9]中方法的檢測(cè)概率為0.9,QPSO-BFO算法的檢測(cè)概率為1,表明這3種方法均能很好地抵御縮放攻擊。由圖5(b)可知,當(dāng)水印圖像旋轉(zhuǎn)45°時(shí),文獻(xiàn)[5]、[9]中的方法與QPSO-BFO算法的檢測(cè)概率分別為0.39、 0.28和0.97,說(shuō)明QPSO-BFO算法能很好地抵御此類攻擊,性能明顯優(yōu)于對(duì)比方法。由圖5(c)可以看出,當(dāng)水印圖像剪切0.25%(剪切的水印圖像面積占原水印圖像面積的分?jǐn)?shù))時(shí),文獻(xiàn)[5]、[9]中的方法和QPSO-BFO算法的檢測(cè)概率分別為0.25、0.2和0.97,同樣說(shuō)明QPSO-BFO算法能夠很好地抵御剪切攻擊。從圖5(d)、(e)、(f)、(g)中可以看出,ROC曲線反映了敏感性和特異性持續(xù)變量的綜合特征。綜上,對(duì)于7種不同攻擊,ROC曲線完全遠(yuǎn)離對(duì)角線純機(jī)遇線,并且QPSO-BFO算法的平均檢測(cè)概率非常大,約為0.98,都能很好地抵御各種攻擊,明顯優(yōu)于文獻(xiàn)[5]、[9]中的方法。 本文中提出了安全、魯棒的圖像盲水印方法,結(jié)合DWT、Schur轉(zhuǎn)換與QPSO-BFO算法對(duì)雙水印PER和ROI進(jìn)行隱藏,以實(shí)現(xiàn)篡改檢測(cè)和認(rèn)證。為了保持影像質(zhì)量和水印的隱蔽性,在隱藏水印前,對(duì)水印上應(yīng)用LZW無(wú)損壓縮算法,提高了凈負(fù)荷容量,同時(shí)保持了圖像質(zhì)量。在水印隱藏過(guò)程中,通過(guò)結(jié)合不同的轉(zhuǎn)換方法得到最優(yōu)結(jié)果并滿足水印系統(tǒng)約束,利用QPSO-BFO算法得到最優(yōu)閾值,實(shí)驗(yàn)結(jié)果驗(yàn)證了該算法在隱蔽性、抵御攻擊魯棒性和安全性方面的優(yōu)越性能。 在今后的混合優(yōu)化算法研究中,將進(jìn)一步減少計(jì)算時(shí)間和優(yōu)化代數(shù),此外,還可加入深度學(xué)習(xí)框架,實(shí)現(xiàn)對(duì)新型攻擊的自適應(yīng)能力。2.3 利用QPSO-BFO算法找到最優(yōu)約束
3 仿真結(jié)果與分析
3.1 認(rèn)證、篡改識(shí)別和無(wú)損恢復(fù)
3.2 隱蔽性
3.3 方法比較
4 結(jié)論