張 巖,申 鵬,韓家寧,韓 超*
(1. 華北理工大學(xué) 化學(xué)工程學(xué)院,河北 唐山 063000;2. 哈爾濱商業(yè)大學(xué) 計算機與信息工程學(xué)院,黑龍江 哈爾濱 150000)
文物修復(fù)、虛擬考古、司法物證鑒定等領(lǐng)域廣泛存在著碎片拼接問題,大都可以近似歸結(jié)為二維碎片的拼接問題[1],將其抽象,可以近似看作輪廓曲線的匹配的一種特殊形式,而且目前大部分對碎片拼接復(fù)原方法的研究也主要集中輪廓曲線匹配上[2],如,賈海燕等[3]人研究了碎紙片輪廓提取技術(shù),通過碎紙片評分的大小來實現(xiàn)對碎紙片的拼接。朱延娟等[4]人提出基于 Hausdorffig 距離的多尺度輪廓匹配算法來解決碎片拼接問題。周豐等[5]人提出了基于角序列的與多尺度空間相結(jié)合的輪廓曲線匹配算法,也能很好的實現(xiàn)碎片的拼接問題。從理論上講在物體拼接中,應(yīng)用輪廓曲線的匹配關(guān)系,能夠?qū)崿F(xiàn)二維破碎物體的拼接[6-8],其原理就是對邊緣特征的識別與匹配[9],但由于碎紙機的發(fā)明,碎片邊緣正整齊,很難通過邊緣識別技術(shù)對文件進行修復(fù),所以形狀在碎紙機粉碎的碎紙片的拼接中不能發(fā)揮作用。因此許多學(xué)者針對文檔特征提取了不同的文本特征來進行拼接,王玉霞等[10]人根據(jù)碎紙片的左右邊緣像素的相關(guān)性來實現(xiàn)碎紙片的拼接,羅智中等[9]人則利用多數(shù)文檔的文字行方向和表格線方向平行且單一的特征來進行拼接,但由于采用的特征單一,匹配規(guī)則單一,匹配精度較低,人工干預(yù)幾率大,而且單頁文檔經(jīng)碎紙機破碎后其碎片都是成百上千個,計算量大、人工干預(yù)次數(shù)多且極易產(chǎn)生錯誤的匹配[11],為此有必要進一步選擇匹配特征和優(yōu)化匹配原則。由于碎紙片大多來自同一頁印刷文字文件被橫切縱切為若干數(shù)量,形狀均為相同的矩形,且兩個碎紙片對象邊界之間的破碎字符具有一定的相似性[12]。為此引入圖像的灰度矩陣,灰度矩陣的每個元素對應(yīng)到圖像上的每個像素點,每個碎片均可以確定一個同型的灰度矩陣,灰度矩陣的特征反映了圖像的特征。用matlab 的imread 函數(shù)讀取圖片的灰度信息,顏色越深,灰度值越大。為保證灰度匹配模型中絕對值的和不受這個約束的影響,同時簡便計算,需將灰度值矩陣進行轉(zhuǎn)化為0-1 矩陣,若灰度值矩陣中某個元素灰度值小于255,則0-1 矩陣中相同位置的元素值記為0,否則記為1。
由于英文按照四線三格的書寫規(guī)則書寫,因此行高可分占中間一格、上中兩格和中下兩格三類,如圖1 所示。
圖1 碎紙片的英文字母行高特征 Fig.1 The character of the letter height of a scrap of paper in English
經(jīng)過對英文碎片和英文文檔統(tǒng)計發(fā)現(xiàn),只有每句開頭和人名地名等是大寫,其余均為小寫,而在小寫字母中,中間一格的使用率遠遠高于上下兩格的使用率,故行高定義為中間一格豎直方向像素點之和,不同字母占格與使用率情況如表1 所示。由于中間一格的每行黑色像素點之和要遠大于上下兩格中每行黑色像素點之和,故可通過碎紙片上每行黑色像素點之和定位四線三格的位置。
表1 不同字母占格與使用率 Table 1 The occupancy and usage of different letters
觀察統(tǒng)計碎紙片上文字的字體及大小,找到某一臨界值x(一行黑色像素點的和),假設(shè)碎紙片共有m行像素點,每行黑色像素點之和為,若,則i,j 為上中下三格的分界線,為行高。
碎紙片確定行高之后,行與行之間的空白即為行間留白,行間留白高度為豎直方向像素點之和。
由于文檔的書寫規(guī)則,都會留有頁邊距,而文檔的內(nèi)部相對緊湊,故可通過左右兩個方向的留白找出文檔的最左和最右兩側(cè)的碎紙片,且相同一側(cè)的留白大小應(yīng)該相同。
將行及行間留白向右側(cè)投影,如圖2 所示,若遇到空白行超過行間留白高度時應(yīng)按相應(yīng)規(guī)則將其填補,如圖3 所示。
本來介于碎紙片最上端和最下端之間的行高或行間留白的高度是固定的,但由于一些碎紙片的上下兩格中的某些行黑色像素點之和大于臨界值x,導(dǎo)致部分介于碎紙片最上端和最下端之間的行高或行間留白的高度有偏差,為解決這個問題,可先確定行高p 和行間留白高度q,并在每一個碎紙片中找到符合的最優(yōu)行高(或最優(yōu)行間留白高度),以此為據(jù)向上和向下的q個像素點為行間留白(或p個像素點為行高),以次劃分行和行間留白的位置。
圖2 文字行及行間留白的右側(cè)投影 Fig.2 Right side projection of text line and space between lines
圖3 規(guī)則填補 Fig.3 Replenish regularly
由投影可得出碎紙片的特征行向量,通過對特征行向量的相關(guān)性分析,可將碎紙片分成n 類,每一類即為文檔的一大行。
基于最小距離的邊緣匹配度:
(1)由于文檔的書寫習(xí)慣,每段的最后一行通常會出現(xiàn)一部分空白行,若恰巧在此處被切割開,很難匹配到一起;
(2)由于兩個字母(單詞)之間有空白,恰巧挨著一個字母的結(jié)尾或另一個字母的開始切開,一側(cè)有黑色像素點,一側(cè)沒有,也很難匹配到一起;
(3)由于某些文字的書寫特征,如h,兩豎和一橫相連,若在相連的結(jié)點切開,也很難匹配在一起,如圖4,此類英文字母還b,d,f,h,k,l,m,n,p,q,t,w,B,D,E,F(xiàn),G,H,J,K,M,N,P,R,T,W,Y 等。
為此我們把基于最小距離的邊緣匹配度進行優(yōu)化,由于每類的行間留白的位置相同,故將每類中的碎紙片從行間留白的中線處切開,分成m 段,在計算匹配度時,分別計算兩個碎紙片的每一段的邊緣匹配度。并取其中最優(yōu)值作為兩個碎紙片的分段最優(yōu)邊緣匹配度。
第ij 碎紙片的第k 段邊緣匹配度:
但應(yīng)注意,若進行匹配的兩個邊緣皆為空白,應(yīng)剔除,不并入計算。
在計算邊緣匹配度時發(fā)現(xiàn)出兩側(cè)留白外,經(jīng)常有左或右邊緣沒有黑色像素點的情況,如圖5 所示。
圖4 匹配效果 Fig.4 The matching effect
圖5 段落左側(cè)或右側(cè)邊緣無黑色像素點情況 Fig.5 No black pixels on the left or right edge of the paragraph
此時邊緣匹配度為0,但出現(xiàn)匹配錯誤,為解決此類問題引入分段空白列寬匹配度,即兩個單詞之間的空白像素點之和Vk 是固定的,以此來推斷空白列的匹配問題。同樣將每類中的碎紙片從行間留白的中線處切開,分成m 段,分別計算兩個碎紙片的每一段的空白列寬匹配度,并取最差值作為兩個碎紙片的分段空白列寬匹配度。
則ij 碎紙片第k 段空白列寬匹配度:
本模型采用雙適應(yīng)度遺傳算法來解決多目標(biāo)優(yōu)化,其中拼接方案的兩個適應(yīng)度Fs和Fv分別依據(jù)分段最優(yōu)邊緣匹配度和分段空白列寬匹配度設(shè)計,具體流程如下圖6。
初始種群p0的生成:根據(jù)分段最優(yōu)邊緣匹配度生成初始種群p0,大小為50。
交叉:將父代與適應(yīng)度函數(shù)值相近的父代進行配對,再采用單點交叉,交叉率為1。
變異:本模型采用的變異率為0.05,隨機地取兩個在0到17之間的整數(shù),對這兩個數(shù)對應(yīng)位置的基因進行變異,得到新的染色體。
具體計算步驟如下:
Step1:計算行高和行間留白;
Step2:通過規(guī)則填補后的投影進行字符定位及碎紙片的聚類;
Step3:計算分段最優(yōu)邊緣匹配度和分段空白列寬匹配度;
Step4:找出兩側(cè)留白,確定每一大行的開頭結(jié)尾;
Step5:將所有類按碎紙片數(shù)量進行排序,根據(jù)分段最優(yōu)邊緣匹配度和分段空白列寬匹配度調(diào)用雙適應(yīng)度遺傳算法并由從多到少的順序?qū)γ款愡M行拼接,多余的碎紙片并入下一類;
Step6:每類拼接完后,進行橫向拼接,方法同上。
圖6 雙適應(yīng)度遺傳算法流程圖 Fig.6 Flow chart of dual fitness genetic algorithm
(1)計算行高和行間留白,通過規(guī)則填補后的投影進行字符定位及碎紙片的聚類,共分12 類,其中19 個碎紙片占10 組,18 個占1 組,1 個占1 組。
(2)找出兩側(cè)留白,確定每一大行的開頭結(jié)尾,開頭碎紙片編號為19,20,70,81,86,132,159,171,191,201,208,結(jié)尾碎紙片編號為31,44,82,109,112,115,127,143,146,147,178。
(3)將只含1 個碎紙片的那類并入碎紙片少的一類,調(diào)用雙適應(yīng)度遺傳算法對每類碎紙片進行拼接,人工干預(yù)后,進行橫向拼接,結(jié)果如表2 所示。
表2 拼接結(jié)果 Table 2 Stitching result
在進行人工干預(yù)之前,共有4 個碎紙片拼接錯誤,準(zhǔn)確率達到98.1%,人工干預(yù)后準(zhǔn)確率達到100%。其中拼接錯誤主要出現(xiàn)在一個碎紙片上文字信息過少或者一行中四線三格的上下兩格使用率過高,導(dǎo)致字符定位不準(zhǔn)確,為后續(xù)拼接帶來了麻煩。
也應(yīng)注意,在碎片拼接后,需要字符識別技術(shù)的支持,通過光學(xué)字符識別模型,將碎片拼接圖像中的文字處理成可編輯的文本格式[12],才能進一步提高碎片拼接的高效性。
(1)通過對英文碎紙片的行高、行間和兩側(cè)留白分析,得到了對碎紙片字母利用率和占格分布情況統(tǒng)計的一般方法;
(2)通過設(shè)計規(guī)則填補而進一步定位字符位置,并通過最有行高(最優(yōu)行間留白)優(yōu)化字符位置,使得準(zhǔn)確率達到了98%;
(3)設(shè)計并優(yōu)化了分段最優(yōu)邊緣匹配度,避免了由于切割線兩側(cè)部分位置匹配度過低而導(dǎo)致的整體匹配度下降問題;
(4)設(shè)計了分段空白列寬匹配度,解決了由于進行邊緣匹配計算的兩個碎片邊緣皆為空白而引起的分段最優(yōu)邊緣匹配度失靈的問題,建立了基于雙適應(yīng)度遺傳算法的碎紙片拼接模型,得到了一般規(guī)則碎片的拼接方法;
(5)基于本文的研究,碎紙機可進行升級優(yōu)化,以避免碎紙片拼接帶來的不良影響,可變換切割矩形的大小,也可盡可能多的從空白處切開等。