張茗茗,周 詮,呼延烺
(西安空間無線電技術研究所 空間微波技術國家級重點實驗室,陜西 西安 710100)
可見水印是秘密信息嵌入到載體圖像后,水印圖像中的秘密信息以可見的形式顯示出來,這主要應用于版權維護和紀念留影[1-3]。相比較不可見水印,可見水印更能反映圖像的所有權信息,同時能夠抵抗壓縮、噪聲、旋轉等各種攻擊[4,5]。
為了能夠實現載體圖像的恢復,Hu等[6]提出可見水印可逆提取的方法,原始圖像中的顯著位平面被修改,并將修改后的位平面壓縮到非水印區域。Lin等[7]提出了一種采用子采樣技術的對比自適應可見水印機制,從而得到更滿意的透明性。Zhang等[8]提出了一種用于加密圖像的可逆可見水印方案。該方案中的原始圖像用逐位異或運算加密,并且修改了對應于二進制水印標志的黑色像素的加密數據的一部分以嵌入可見水印。Santhoshi等[9]提出一種識別算法,利用SIFT算子來實現可見數字的識別,并利用LSB模型來實現數字的提取。Weng等[10]提出了一種基于動態圖像并保持上下文完整性的可視水印方案,隱藏信息不同位置提取方式和恢復方式各不相同。Chen等[11]提出了一種基于差分擴展的可逆宿主圖像的可見水印方案,宿主圖像被分割成非重疊塊,秘密信息嵌入到每一個塊中。Tian等[12]提出CTPN的開源文本檢測模型,通過CNN+RNN的組合方式可以很好地將數字檢測出來,然而其運算規模龐大,對計算機要求性能較高。
然而,當嵌入信息為數字并且水印算法未知,文獻[6-11]的載體圖像的恢復效果不佳,而Tian等[12]利用深度學習訓練開銷又過于龐大。針對以上問題,本文提出一種可見水印彩色圖像恢復方法。通過自建數字庫和多重匹配檢測數字,并利用自適應插值來恢復被數字破壞的區域,數字識別的準確率高,水印圖像恢復效果好并且計算簡單。
KAZE算子是由Perona等[13]提出的,其包括構造非線性尺度空間,特征點檢測與主方向分配,特征描述符的生成過程。通過利用AOS算子來迭代出最優主方向,并得出該方向下的描述符。
模板匹配算法一般是通過滑窗的方式在待匹配的圖像上滑動,通過比較模板與子圖的相似度,找到相似度最大的子圖。模板匹配最核心部分在于如何設計一個相似性函數,而歐式距離是應用最普遍的相似性函數

將這個相似性函數展開,可以得

對于歐式距離相似函數,值越大表示越不相似。將第二項進行歸一化

當R(i,j) 為1時,表示模板與子圖完全相等。
透射變換是將一個平面的信息通過矩陣變換投射到另外一個平面上,具備3個特性,線性變換,平移變換和投射變換。所以透射變換后平面信息的相關性根據需要在某一個方向得到保留。
通用的變換公式為

其中,x,y,w為源平面坐標,x′,y′,w′為透射平面坐標。
原始圖像在嵌入數字后,發生了不可逆的變化,并且位置,數量,角度,字體大小都無法獲知,本文通過自建數字庫來降低匹配中特征點選擇帶來的復雜度和不準確性,多重匹配來自適應地提取和定位數字矩形區域,然后實現水印圖像的恢復。本文的算法實驗流程如圖1所示。

圖1 實驗流程
彩色圖像經過二值化處理,維度得到降低,同時可見水印部分的對比度得到加強。KAZE算子具有旋轉不變性,尺度不變性和變換不變性的優點,當圖像旋轉或者字體大小發生改變時,待檢測部分仍然能夠較為準確地顯示出來,然而數字本身相比于自然景觀,或者人臉等圖像特征較小,提取的特征值對于旋轉,噪聲和尺度干擾的魯棒性較差,這樣會造成數字區域檢測的偏差以及識別錯誤。為了提升KAZE算子的魯棒性,進而使得數字能夠準確識別,本文對其進行改進:
(1)對于數字模板,提取N(N>10)個特征點,對待檢測圖像進行特征點匹配,統計匹配后的特征點的分布情況。利用K-means聚類算法對這些特征點進行分類,得到最大的一類特征點。
本文采用二分類的K-means聚類算法,數字區域和非數字區域粗略分為各一類。特征值距離最小的特征點作為數字區域的起始特征點,特征值距離最大的特征點作為非數字區域的起始特征點
μ1=x(i),dist(x(i))=minDist
μ2=x(j),dist(x(j))=maxDist

具體步驟為:
1)選取兩個聚類中心點(cluster centroids)為u1,u2;
2)重復下面過程直到收斂{


}
(2)統計該類下的特征點,當這些特征點都在一連通區域內,說明這些特征點為數字的可能性較高,反之將不在該連通區域內的特征點去除。這樣保證所有的特征點都在一連通區域,如圖2所示。

圖2 特征點匹配
圓圈“1”表示已經劃為數字“4”的特征點,可以看到在數字“4”的連通區域內有7個特征點,而圓圈“1”沒有在數字“4”的連通區域內,所以可以認定該點不屬于“4”的特征點。圓圈“2”表示野點,它與特征點的中心的距離大于閾值30,所以拋棄。圖2右下角為干擾區域,二值化處理并未將圖像的原始信息濾除掉,KAZE特征提取還有若干特征點,聚類后與數字區域分為兩類,但是特征點數目較少,被省去。干擾區域和數字之間有一條判別曲線。
利用最終得到的真實特征點進行透射變換,數字模板在之前的KAZE匹配中由于KAZE算子的特性,需要將模板增大,保證數字的有效區域能夠準確提取出特征,而在特征點確定后,透射變換的矩陣參數就確定下來,只需要將數字的有效區域的4個頂點映射。然后將頂點包圍的輪廓進行透射變換,得到變換后的數字圖像。
為了進一步提升識別的準確率,需要用模板匹配作為補充。本文建立了一個數字庫實現模板匹配,大小為36,0到9一共10個數字。每個數字各向外延伸兩個像素作為矩形框,為了方便后續的識別,保證相鄰數字有效區域不重疊,以及圖像的自適應恢復。
適當的數字大小保證了數字特征信息的完整性,同時避免匹配中字體大小相差太大造成的誤差,字體相同的數字模板大小有著細微的差別,大小為36的0-9長寬見表1。

表1 0-9數字模板實際大小
表1中,長用long表示,寬用wide表示。
本文采用最小距離作為判定條件,采用二范數表示,當圖像與模板某一數字接近時,其距離小于該距離閾值threshold,該區域被劃分為數字

其中,xm,n為圖像在 (m,n) 處的像素值,ym,n為模板在 (m,n) 處的像素值,Th為圖像與模板的偏差。當滿足此條件時,該圖像被分割出來,為數字區域。
相同數字,不同風格有一定干擾的差異不明顯,可以通過提高距離閾值threshold來實現,但是當圖像不是該模板時,其距離遠遠大于設定的距離閾值threshold。這樣既可以允許不同風格字體以及矩形框內噪點帶來的誤差,提高了魯棒性,同時避免了不同大小的數字被錯誤分割,降低了誤判率。
對于已經分割的圖像,其二值化處理只是大概反映了數字的范圍,與模板數字有一定的差別,并不能夠具體地分割出來,需要進行后續操作。首先需要對分割的矩形區域內的噪點濾波,如果某一點25鄰域內沒有相同像素值,則該點可以視為噪點,應將其去除。
去除噪點后的矩形區域在保證數字的有效部分的同時,盡可能降低原始圖像對于數字的影響。為了滿足不同字體之間的差異和可見水印嵌入時邊沿的像素值漸變特性,需要進行自適應膨脹,如圖3所示,對二值矩形區域內所有非0像素點,統計該點的8鄰域的像素值為0的個數num,當其num大于2時,說明該點周圍為數字的像素點較多,該點為數字的可能性較大,可以將該點膨脹為數字。否則說明該點周圍為數字的數目較少,該點為數字的可能性不大,可以視該點為原始圖像的像素點


圖3 8鄰域像素
利用已經確定為數字的二值圖像,對水印圖像進行掩模操作,得到去除數字部分的原始圖像,接下來需要對其進行恢復。
對圖3的8鄰域子圖像,m0,0為摳掉的像素點,對該點進行數據恢復。以待恢復的像素點為中心,統計真實的有值的像素點的個數,當其個數大于3,說明周圍的有用像素點較為充分,該點可以插值,求其平均值作為該點的像素值,否則有用信息較少,容易引起較大誤差,該點像素值仍為0,等待下一輪預測

建立預測循環,統計需要預測的總的像素點個數sum_predict,每次循環所利用的非0值的有用信息,都是上一次循環的非0預測值和原始圖像像素值,剛剛預測的像素不能用來預測同一次循環的像素,這樣避免了剛擬合出的點來預測下一個點,造成像素插值不夠準確。當預測的像素點個數達到sum_predict,結束插值過程,保留這些插值點,得到最終的恢復圖像,而水印圖像的沒有被摳掉部分的像素點灰度值不發生改變,保證只擬合被破壞的區域,這樣得到的插值圖像盡可能接近原始圖像。插值流程如圖4所示。

圖4 插值流程
圖像質量,檢測數字的準確率以及運行時間是本文判斷算法有效性的3個標準。圖像質量采用主觀肉眼和客觀評價兩個方面,肉眼檢測數字破壞區域的恢復情況,是否與周圍背景有差異,以及是否存在噪點。客觀采用PSNR來衡量原始圖像和恢復圖像的相似程度,PSNR值越高,恢復效果越好。準確率是來判斷水印數字能正確檢測出來的概率,一般而言,水印圖像的破壞程度越大,數字的翻轉越明顯,數字字體越小,數字特征點的提取就越困難,識別的概率越低,能在這樣的條件下仍然正確識別出來,說明算法的魯棒性越好,能夠抵抗各種攻擊。運行速度也是一個衡量標準,對于一個較小的應用,采用很大規模的計算是不恰當的,而為了能夠快速完成識別和恢復的任務,一定的運算是必不可少的。好的算法是能在完成要求的情況下盡可能降低計算開銷。
本文建立數字庫采用的格式為Calibri,測試圖像采用一幅彩色山水圖像,格式為BMP,大小為550×262,隨意在圖像上分別書寫字體大小為18,24,36,48和60的0-9數字,顏色為(0,0,0),字體風格分別采用黑體,TimesNewRoman 和Calibri,旋轉角度不明確,特征點個數為17。二值化閾值為20,將彩色圖像轉化為二值圖像進行特征匹配。原始圖像如圖5所示,水印圖像如圖6所示。

圖5 原始圖像

圖6 可見水印圖像
編程語言采用vc++和opencv混合編程,實驗平臺為Visual Studio2015和opencv3.2,操作系統為64位Windows7,CPU為i5-5200U,主頻為2.2GHz,內存大小為8GB。
首先對其進行二值化操作,得到二值圖像,利用多重匹配算法,可以很準確地數字檢測出來,數字檢測如圖7所示。

圖7 數字檢測效果
經過去除噪點,自適應膨脹和自適應模糊后,將與原始圖像信息無關的數字內容刪去,得到的最終恢復的圖像如圖8所示。

圖8 水印圖像恢復效果
可以看到,去除數字后,原始圖像雖然受到一定的破壞,但是通過后處理得到了很大的恢復,肉眼很難分辨出區別。為了增強對比,本文采用文獻[7,11]作參照,這兩種算法都具有數據的隱藏和提取功能,同時也可以實現不需要知道隱藏算法的盲提取和恢復。文獻[7]的效果如圖9所示,文獻[11]的效果如圖10所示。

圖9 文獻[7]恢復效果

圖10 文獻[11]恢復效果
通過對比,在數字摳掉的區域附近,本文算法恢復的像素值變化更為平緩,特別是在左右兩個瀑布區域,本文恢復的像素值已經與周邊景色融為一體。而文獻[7,11]中,還能看到圖像被修復的痕跡,并且在白云部分,仍有個別像素點的數字信息沒有完整擦除。同時采用PSNR(peak signal to noise ratio)來衡量恢復后的圖像與原始圖像的差異,以此來檢驗恢復的效果,對比見表2。

表2 恢復后的圖像PSNR值
可以看到,本文算法恢復的圖像與原始圖像也更為接近,PSNR更高。
為了進一步驗證本文算法的魯棒性,本文對圖11的水印圖像進行高斯模糊,椒鹽模糊,中值濾波和JPEG壓縮的攻擊,計算恢復的圖像質量。然后對原始圖像添加大量的數字水印統計不同算法識別的準確率。恢復和識別結果見表3,說明本文算法對于可見數字水印有很強的魯棒性,圖像的恢復效果很好。噪聲對圖像的破壞非常明顯,同時也影響著水印數字的識別準確率,在中值濾波和壓縮攻擊方面,本文算法和文獻[7,11]準確率很高。
在利用鄰域內有用信息恢復圖像時,每輪迭代在保證速度的情況下,接近像素真實值。本文為了增強對比,分別采用最鄰近元法,雙線性內插法,三次內插法來比較恢復效果和耗時。對比結果見表4。
可以看到,本文算法雖然耗時最長,增加了1 s,還可以做到實時處理,但是恢復的PSNR最高,被水印數字破壞的區域恢復效果好,以迭代的計算次數作為代價來提升圖像的恢復質量。

表3 水印圖像魯棒性測試

表4 擬合對比結果
相同大小的數字匹配,偏差一般較小,而無法匹配時,數字的大小往往差異較大。但是當距離閾值threshold偏大或者偏小,會出現虛警或者漏警的情況,這時要合理選擇,使得數字區域恰好被正確分割。
本文采用5×5作為窗口大小,充分考慮到數字邊沿較多,數字像素較為分散,并且占用面積較小的特點,既保留數字區域,又將原始圖像的信息剔除。當采用3×3,一部分數字像素被濾除掉,發生漏警,導致恢復后的圖像有像素值為(0,0,0)的椒鹽噪聲。而采用7×7時,原始圖像的像素被誤判為數字,發生虛警,該像素點恢復的是插值后的像素值,不是原有真實值,圖像變得模糊。
閾值過大,對周圍鄰域內數據的真實性要求高,數字區域膨脹有限,漏警率高,恢復后的圖像在摳掉的數字邊沿變化明顯,人眼容易觀察出來。閾值過小,數字區域膨脹明顯,一些原本屬于原始數據的像素被劃分為數字,虛警率高,恢復后的圖像較為模糊。所以閾值選擇既要滿足恢復后人眼無法覺察變化,同時盡可能與原始圖像接近。
本文利用K-means算法對KAZE進行修正,為了進一步對匹配算法進行比較,本文產生大量數字添加到圖像中,并用KAZE,SURF,SIFT特征匹配算法進行比較,對比結果見表5。

表5 特征匹配算法準確率比較
模板數字大小為36,在二值化處理過程中,數字信息會有丟失,這樣會對匹配的準確率有影響,本文算法通過模板匹配進行補充,保證數字不會遺漏,同時所用KAZE算法的準確率有了很大提升。
本文算法具有以下3個特點:
(1)針對數字的特征點較少并且特征值較小的情況,利用K-means算法改進KAZE匹配算法,提升了識別的準確率和抗干擾的魯棒性;
(2)再次用模板匹配進一步保證數字能夠準確識別,將虛警的情況去除,使得劃定的區域剛好是數字覆蓋的區域,避免圖像原始信息被誤判;
(3)利用區域膨脹和自適應模糊覆蓋二值化過程中沒有劃定的數字像素點,而不傷害原始圖像信息,保證修復后的圖像與原始圖像差異盡可能小。
本文提出的恢復方法在不需要知道水印如何添加的前提下,就可以實現圖像中數字的自動識別和分割,同時計算簡單,不需要復雜的計算機硬件,無需大量數字樣本和大規模的迭代學習。只需要建立0-9標準數字庫,減低了識別過程中的復雜度,避免了數字特征點較少而造成在特征匹配過程中無法準確定位的情況。本文算法對于不同風格字體具有很強的魯棒性,數字可以添加在圖像中的任意位置,恢復后的圖像與原始圖像近乎一致,人眼很難分辨出區別,具有很強的實用價值。