陳 青,宗偲琦
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
近幾年來(lái),網(wǎng)絡(luò)系統(tǒng)的迅速發(fā)展使得醫(yī)學(xué)圖像的傳播交流越來(lái)越便捷.與此同時(shí)也帶來(lái)了許多的隱患.不法分子可能會(huì)竊取或破壞完整的圖像以獲取不正當(dāng)?shù)睦?,這對(duì)醫(yī)學(xué)圖像的完整性、機(jī)密性和真實(shí)性[1]造成了很大的影響.為了使的眾多醫(yī)學(xué)數(shù)字圖像能夠符合醫(yī)學(xué)數(shù)字影像和通訊(DICOM)標(biāo)準(zhǔn)[2],許多科學(xué)有效的方案相繼被提出,而數(shù)字圖像水印是其中最有效的方法之一.為了能讓醫(yī)學(xué)數(shù)字圖像能夠在網(wǎng)絡(luò)上安全地傳輸,人們根據(jù)數(shù)字水印的標(biāo)準(zhǔn)提出了許多數(shù)字水印方案.這些標(biāo)準(zhǔn)包括不可見(jiàn)性和魯棒性等.除此之外,更專業(yè)的數(shù)字水印還要求能夠幫助判斷和定位圖像被篡改的區(qū)域[3],如脆弱水印[4]等.水印要求越高,所用的算法計(jì)算難度就越高.除此之外,對(duì)醫(yī)學(xué)圖像的感興趣區(qū)域(ROI)劃分有助于幫助醫(yī)師判別病情,同時(shí)也有助于醫(yī)學(xué)水印信息的劃分[5].現(xiàn)有的一些醫(yī)學(xué)圖像數(shù)字水印算法由于需要預(yù)處理或是繁瑣的計(jì)算過(guò)程并不適用于批量處理圖像數(shù)據(jù).
目前常見(jiàn)的ROI自動(dòng)劃分方法包括模板定位法和紋理分析法.ShunZhang[6]等人通過(guò)計(jì)算圖像上物體的面積,將最大面積標(biāo)記為ROI并腐蝕出ROI形狀作為模板,在接收端通過(guò)將模板與圖像相乘達(dá)到自動(dòng)選取ROI的目的.該方法僅適用于圖案緊湊、紋理簡(jiǎn)單的醫(yī)學(xué)圖像,且ROI模板需另行存儲(chǔ),對(duì)文件傳輸帶來(lái)一定負(fù)擔(dān).N.Aherrahrou[7]等人使用局部差分法(PDE)、DWT和DFT方法將醫(yī)學(xué)圖像分為結(jié)構(gòu)區(qū)、紋理區(qū)和噪聲區(qū),計(jì)算出醫(yī)學(xué)圖像紋理最為復(fù)雜的區(qū)域并將其設(shè)為ROI.該方法適用于紋理分布集中且變化明顯的醫(yī)學(xué)圖像,但
計(jì)算方法較為復(fù)雜.在選擇水印嵌入方案時(shí),針對(duì)醫(yī)學(xué)圖像要求水印嵌入方案可逆、對(duì)原圖質(zhì)量影響小,結(jié)合水印的魯棒性和不可見(jiàn)性等要求,現(xiàn)有的數(shù)字水印嵌入算法一般選擇將水印嵌入至變換域中,以此來(lái)提高水印的隱蔽性和抗攻擊能力.小波變換(WT)、離散余弦變換(DCT)等頻域變換一直都是研究的熱點(diǎn),而輪廓波(Contourlet)變換[8]由于具有良好的方向性和各向異性[9]而被認(rèn)為是能夠完整描述圖像特性的變換方法.此外,由于圖像在輪廓域經(jīng)過(guò)多次分解可以得到一個(gè)逼近子圖和多個(gè)帶通方向子帶,這就為水印的嵌入位置帶來(lái)多種選擇方式,一定程度上擴(kuò)展了數(shù)字水印的負(fù)載能力.
本文將提出一種基于特征值提取的醫(yī)學(xué)圖像雙水印算法.該算法利用Harris角點(diǎn)法[10]從圖像中提取出特征值信息,利用其中最穩(wěn)定的特征點(diǎn)坐標(biāo)定位圖像ROI區(qū)域,實(shí)現(xiàn)接收端自動(dòng)選取ROI的功能.病人信息和從ROI提取出的特征點(diǎn)像素值經(jīng)過(guò)壓縮編碼后將以二進(jìn)制的形式嵌入至輪廓波分解后的RONI中頻子帶和高頻子帶中.選取認(rèn)證水印,將ROI圖像經(jīng)過(guò)輪廓波分解后,使用SVD奇異值分解法[11]將水印嵌入到ROI區(qū)域的逼近子圖內(nèi)完成圖像版權(quán)認(rèn)證.通過(guò)驗(yàn)證接收端得到圖像和原圖特征點(diǎn)匹配程度可以鑒別圖像是否遭到篡改.本文在大量實(shí)驗(yàn)基礎(chǔ)上選定合適的特征值數(shù)量值,并選取最穩(wěn)定的特征值以保證在接收端對(duì)特征區(qū)域的提取與原圖特征區(qū)域提取相匹配.結(jié)合輪廓波分解和SVD奇異值分解的優(yōu)點(diǎn),保證了水印的不可見(jiàn)性和魯棒性.實(shí)驗(yàn)結(jié)果表明該方法操作簡(jiǎn)單,對(duì)原圖影響小,篡改探測(cè)精確度高.
Contourlet變換,又稱輪廓波變換,是由Do和Vetterli首先提出的一種多尺度、多方向的信號(hào)表示方法[12].輪廓波分解具有很好的方向性和各向異性,能準(zhǔn)確地將圖像的邊緣捕獲到不同尺度、不同方向的子帶中[13],因此能夠很好地滿足醫(yī)學(xué)圖像處理要求.圖像經(jīng)過(guò)輪廓波分解時(shí),首先由拉普拉斯金字塔濾波器(Laplasse Pyramid,LP)分解出低頻逼近子圖,描述圖像大致輪廓,再經(jīng)過(guò)方向?yàn)V波器組(Directional Filter Bank,DFB)分解出方向子帶,用于描述圖像細(xì)節(jié)信息[14].輪廓波變換過(guò)程如圖1所示.圖像經(jīng)過(guò)一次輪廓波分解后可以得到一個(gè)低頻逼近子圖、一個(gè)中頻子圖以及兩個(gè)高頻方向子帶,可根據(jù)水印特性選擇不同的子帶進(jìn)行嵌入.
圖1 輪廓波分解示意圖Fig.1 Contourlet transform
本文使用Harris角點(diǎn)法提取醫(yī)學(xué)圖像特征點(diǎn).角點(diǎn)包括局部窗口移動(dòng)變化較大的點(diǎn)和局部曲率突變的圖像點(diǎn)兩類[15].醫(yī)學(xué)圖像特征點(diǎn)主要分布于圖案交界處以及紋理復(fù)雜區(qū)域,這些區(qū)域通常聚集著圖像關(guān)鍵信息.一張圖像角點(diǎn)有多個(gè),本算法需要提取出特征點(diǎn)用于ROI定位,因此要求篩選出具有很高的重復(fù)檢測(cè)率,以及對(duì)噪聲和攻擊具有魯棒性的角點(diǎn)作為特征點(diǎn).檢測(cè)算法的步驟如下:
1) 對(duì)原圖分別進(jìn)行X和Y方向上的高斯濾波.此步驟目的為改進(jìn)Harris角點(diǎn)法的精度.對(duì)濾波后的像素矩陣求解其自相關(guān)矩陣,再次進(jìn)行高斯濾波,得到由經(jīng)過(guò)兩次濾波后的像素值組成的矩陣M.
2) 構(gòu)建與原圖尺寸大小一致的零矩陣用于存放計(jì)算出的權(quán)值R(i,j).R(i,j)的計(jì)算公式為
R(i,j)=det(M)-k×(tr(M))2
(1)
矩陣R中最大像素值為Rmax,閾值T的計(jì)算公式為T=0.08Rmax,其中0.08為經(jīng)過(guò)多次實(shí)驗(yàn)后得到的經(jīng)驗(yàn)常數(shù).當(dāng)R(i,j)>T時(shí)則判定該位置為一個(gè)候選角點(diǎn).
3) 對(duì)初步計(jì)算出的角點(diǎn)進(jìn)行局部非極大值抑制計(jì)算(NMS)[16].
4) 去掉圖像邊緣處的角點(diǎn).
5) 將圖像劃分為8×8的小塊,對(duì)每個(gè)子塊進(jìn)行編號(hào)并記錄每個(gè)子塊的中心點(diǎn)坐標(biāo).
6) 根據(jù)子塊中心點(diǎn)位置與圖像中心點(diǎn)的距離和每個(gè)子塊內(nèi)角點(diǎn)的數(shù)量對(duì)每個(gè)子塊進(jìn)行排序,選取距圖像中心最近的且角點(diǎn)數(shù)量最多的N個(gè)子塊作為特征塊用于ROI的定位.子塊的數(shù)量N由水印圖像大小來(lái)決定.
7) 劃定ROI區(qū)域,該區(qū)域需包含所有選定的子塊,因此分別計(jì)算每個(gè)子塊中心點(diǎn)橫坐標(biāo)、縱坐標(biāo)與圖像中心點(diǎn)橫、縱坐標(biāo)的差值,取其中最大值M作為ROI區(qū)域長(zhǎng)寬值,得到大小為M×M的正方形ROI區(qū)域.接收端可通過(guò)重新檢測(cè)特征角點(diǎn)步驟重新獲取ROI.具體ROI選取步驟如下:
a) N個(gè)特征塊坐標(biāo)分別為(r1,l1), (r2,l2),…,(rn,ln),圖像中心點(diǎn)坐標(biāo)為O(o1,o2),計(jì)算R=(r1-o1,r2-o1,…rn-o1),L=(l1-o2,l2-o2,…ln-o2)和差值絕對(duì)值R′=(|r1-o1|,|r2-o1|,…|rn-o1|), L′=(|l1-o2|,|l2-o2|,…|ln-o2|).
b) 將R和L中元素按從大到小排序,計(jì)算兩個(gè)數(shù)組中最大元素與最小元素的差值r和l. 比較兩者大小,取M=max(r,l).
c) 將R′和 L′元素從大到小排列,分別取與中心點(diǎn)橫坐標(biāo)和縱坐標(biāo)差值最大的橫坐標(biāo)rm和lm,若rm-o1>0,則取橫坐標(biāo)從rm至rm±M,縱坐標(biāo)lm±M(rm-o1和lm-o2大于0時(shí)取-,小于0時(shí)取+)的所有坐標(biāo)點(diǎn)的像素值構(gòu)成ROI區(qū)域圖像矩陣IR.
水印內(nèi)容包含用于鑒別篡改的ROI信息、病人信息和版權(quán)認(rèn)證信息.從ROI 提取出的穩(wěn)定特征點(diǎn)將作為鑒別篡改的依據(jù).認(rèn)證水印為二值圖像.詳細(xì)步驟如下:
2) 選取認(rèn)證水印圖像IA,圖像尺寸為N1×N2.對(duì)IA進(jìn)行k次Arnold置亂[17].
4) 計(jì)算Qij=round(S(1,1)∕q),round為四舍五入運(yùn)算,q為可調(diào)節(jié)的水印嵌入強(qiáng)度系數(shù),計(jì)算Ti=mod(Q+wi,j,2),其中wi,j為水印像素值,再根據(jù)以下公式計(jì)算嵌入水印后的奇異值
(2)
6) 從原圖RONI部分選取M×M尺寸的區(qū)域IN,記錄區(qū)域所在位置.對(duì)IN進(jìn)行一次輪廓波變換,得到逼近子圖、中頻子帶IN1和高頻子帶IN2.
8) 將嵌入水印后的RONI和ROI重新拼合,得到嵌入水印后的圖像.
圖2 特征塊的選取及ROI和RONI的劃分Fig.2 Characteristic blocks and dividing ROI
特征塊和ROI選取如圖2所示.整體方案流程見(jiàn)圖3.
在水印提取之前先要對(duì)嵌入水印的圖像進(jìn)行特征值提取,還原ROI和RONI的劃分.水印提取即為水印嵌入的逆過(guò)程,具體步驟如下:
(3)
4) 定位RONI水印嵌入位置IN,對(duì)其進(jìn)行一次輪廓波變換,使用步驟3和步驟4中的方法從中頻和高頻子帶中提取出病人信息和ROI特征值.
圖3 水印嵌入流程圖Fig.3 Flow chart of watermark embedding
本文提出的算法以Matlab2016為運(yùn)行平臺(tái),實(shí)驗(yàn)需驗(yàn)證特征點(diǎn)提取穩(wěn)定性能、嵌入水印后圖像PSNR值以及篡改檢測(cè)性能.實(shí)驗(yàn)選取了臨床上常見(jiàn)的醫(yī)學(xué)CT掃描圖像為載體圖像,認(rèn)證水印圖像為64×64二值圖像并經(jīng)過(guò)Arnold置亂,嵌入到經(jīng)過(guò)輪廓波分解后的ROI低頻子圖內(nèi).同時(shí)將病人信息嵌入RONI中頻子帶,選取30個(gè)特征點(diǎn)嵌入RONI高頻子帶區(qū)域用于鑒別篡改.當(dāng)特征點(diǎn)匹配率小于90%時(shí)即認(rèn)為圖像遭到篡改.原圖像及嵌入水印圖像如圖4所示.
圖4 原始圖像、水印圖像及嵌入水印后的圖像Fig.4 Original images,watermark image, watermark-embedded images
根據(jù)PSNR值計(jì)算公式
(4)
對(duì)三張嵌入水印的圖像進(jìn)行PSNR值計(jì)算,值分別為42.43db,43.82db,43.98db,可見(jiàn)水印嵌入對(duì)原圖影響不大.對(duì)嵌入水印后的圖像進(jìn)行添加噪聲、JEPG壓縮、剪切等常見(jiàn)攻擊,在接收端仍然可以提取出水印信息.未受攻擊和遭到攻擊時(shí)提取水印實(shí)驗(yàn)結(jié)果如圖5所示,提取的水印NC值實(shí)驗(yàn)結(jié)果如表1所示.由實(shí)驗(yàn)結(jié)果可見(jiàn)水印具有較好的魯棒性.
圖5 未受攻擊和遭到攻擊時(shí)提取的水印圖像
Fig.5 Extracted watermark images without and under attack
驗(yàn)證特征點(diǎn)的穩(wěn)定性,實(shí)驗(yàn)對(duì)多組原始圖像和嵌入水印后圖像進(jìn)行特征值提取,將兩者結(jié)果進(jìn)行比對(duì),考慮到存在噪聲的情況,設(shè)定兩者像素差值小于10%即認(rèn)為兩者相匹配.實(shí)驗(yàn)結(jié)果如表2所示.可見(jiàn)在沒(méi)有遭受攻擊的情況下,兩者特征點(diǎn)匹配率均大于92%.
表1 水印算法魯棒性實(shí)驗(yàn)結(jié)果
表2 篡改鑒別實(shí)驗(yàn)結(jié)果
本文算法通過(guò)對(duì)醫(yī)學(xué)圖像特征值的提取,完成了ROI區(qū)域自動(dòng)選擇和篡改鑒別.實(shí)驗(yàn)數(shù)據(jù)表明,該算法提取特征點(diǎn)準(zhǔn)確、特征點(diǎn)重復(fù)檢測(cè)率高,且不需要復(fù)雜的圖像預(yù)處理程序,實(shí)際應(yīng)用中可提高批量處理圖像效率.使用奇異值分解法將認(rèn)證水印、病人信息以及篡改鑒別信息分別嵌入至輪廓波分解后的不同子帶中,提高了原圖水印負(fù)載能力.提取接收端圖像的水印并計(jì)算與原水印的NC值來(lái)驗(yàn)證水印具有較好魯棒性,通過(guò)PSNR值計(jì)算證明水印嵌入對(duì)原圖質(zhì)量影響較小.在篡改鑒定階段,為了驗(yàn)證篡改鑒定的性能,分別對(duì)真實(shí)篡改圖像和添加噪聲圖像進(jìn)行特征值提取匹配實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果證明了算法探測(cè)篡改的精度較高、誤差率較小.在算法實(shí)現(xiàn)設(shè)計(jì)階段,將提取圖像特征值數(shù)量設(shè)計(jì)為可控,以便后續(xù)對(duì)特征點(diǎn)數(shù)量進(jìn)行調(diào)整.理論上特征值數(shù)量越多,篡改探測(cè)的精度越高,且還可以用作篡改恢復(fù).但考慮到水印容量以及批量處理圖像效率問(wèn)題,今后還需要在探測(cè)精度和處理效率兩者間尋求平衡,這也是后續(xù)研究的重點(diǎn)之一.