本發(fā)明屬于場景圖像文本行定位領(lǐng)域,具體涉及一種基于二叉樹的文本行精確定位方法。
背景技術(shù):
場景圖像中的文本行定位是一種在自然場景環(huán)境中拍攝的圖片中對文本行進(jìn)行定位的技術(shù)。該技術(shù)針對多語種翻譯、基于內(nèi)容的網(wǎng)絡(luò)搜索、視覺輔助以及無人駕駛等領(lǐng)域均有廣泛的應(yīng)用。然而在文本行定位過程中,經(jīng)常會發(fā)生文本行的過分割問題,即原本應(yīng)被檢測為單獨(dú)一個文本行的區(qū)域,因為定位方法不夠魯棒或場景圖像中非文字噪音與文本行粘連等原因,而被分割成若干不完整的部分,從而造成很多誤檢,使得后續(xù)的文字識別效果較差。另外還有一種情況是為了避免文本行趨向欠分割,通常定位方法也會專門令文本行定位過分割化,這是因為文本行的欠分割很難被糾正,而過分割問題卻能夠通過后續(xù)的合并等操作對文本行定位進(jìn)行重置和改善。
為了解決文本行過分割的問題,領(lǐng)域內(nèi)通常采用的方法是為所有文本行的組合方式構(gòu)建起一個搜索空間,從中選擇出一條最優(yōu)路徑作為重置后的文本行定位結(jié)果,例如集束搜索(beam search)方法。但這類方法存在以下缺陷:首先沒有考慮到文本行合并過程的特點,因此沒有構(gòu)建符合這些特性的數(shù)據(jù)結(jié)構(gòu)來表示搜索空間?,F(xiàn)有的搜索空間通常是利用近乎全排序的方式來對文本行的所有組合方式進(jìn)行遍歷,然后從中選出一條最優(yōu)路徑。若有n個文本行,則時間復(fù)雜度高達(dá)O(n(n-1)/2)=O(n2);此外這些方法還缺乏高效的剪枝、融合策略。領(lǐng)域內(nèi)文本行重定位方法通常是在搜索空間的每一層中對所有結(jié)點排序,然后設(shè)定一個固定閾值t作為搜索空間寬度,接著將每層中結(jié)點序號排到寬度值之外的結(jié)點全部剪去。這種設(shè)定固定閾值的剪枝、和并方法缺乏靈活性和合理性,無法高效在搜索空間中搜尋到最優(yōu)路徑。
技術(shù)實現(xiàn)要素:
本發(fā)明針對上述問題,提供了一種基于二叉樹的文本行精確定位方法,該方法首先為過分割的文本行構(gòu)建二叉樹搜索空間,然后模擬后序遍歷訪問方式以O(shè)log(n)的復(fù)雜度來搜索路徑,接著執(zhí)行剪枝、合并操作來高效的得到解決過分割問題的最優(yōu)路徑,該路徑對應(yīng)著重置、優(yōu)化后的文本行精確定位結(jié)果。
為了達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種基于二叉樹的文本行精確定位方法,包括以下步驟:
步驟A:對于一副輸入的文本行區(qū)域被過度分割的自然場景圖像,為所有這些被過度分割的文本行建立搜索空間;其中,文本行被過度分割是指文本行定位過程中產(chǎn)生過多的行分割線,導(dǎo)致單個文本行過度分割成若干部分;行分割線用于標(biāo)注文本行的邊界位置以同背景區(qū)域區(qū)分開來;得到用二叉樹表示的搜索空間;
步驟B:對于一個用二叉樹表示的搜索空間,二叉樹的結(jié)點用邊界位置這個屬性來表示該結(jié)點指代的文本行區(qū)域組合的范圍,并在待合并位置處分成左、右兩個子結(jié)點;所有文本行區(qū)域的組合方式都以結(jié)點的形式被納入該搜索空間;然后通過模擬二叉樹后序遍歷的方式從搜索空間中構(gòu)建路徑,其中每條路徑表示一種特定的文本行組合方式;本步驟的目標(biāo)是從這些路徑中搜索出一條最優(yōu)路徑來重置文本行的定位,以解決文本行過分割問題;
步驟C:對于二叉樹搜索空間中某條路徑上包含的每個結(jié)點集,據(jù)結(jié)點集中父結(jié)點及左、右子結(jié)點的置信度比較結(jié)果可在八種剪枝、合并策略中選擇一種合適的情況進(jìn)行處理,最終得到解決過分割問題的最優(yōu)路徑,該路徑對應(yīng)著重置后的文本行精確定位結(jié)果。
所述步驟A的具體步驟如下:
步驟A01:輸入文本行被過度分割的自然場景圖像g,其中行分割線包含兩個屬性:位置l(指代行分割線位于輸入圖像g中第幾行),置信度p(指代行分割線的梯度值,置信度越小則行分割線分離開來的兩文本區(qū)域間的差異也越小,故該行分割線越容易導(dǎo)致過分割問題);將二叉樹搜索空間中的結(jié)點同g中的文本行區(qū)域一一對應(yīng),其中結(jié)點包含兩個屬性:邊界位置(結(jié)點的左邊界位置ll和右邊界位置lr對應(yīng)著某一文本行組合的邊界分割線,故邊界位置定義了該文本行組合的范圍),待合并位置(結(jié)點的邊界位置內(nèi)部,具有最大置信度pmax的行分割線的位置lm);
步驟A02:在當(dāng)前文本行范圍內(nèi)構(gòu)建父結(jié)點np,首先在所有行分割線中選出最外圍的首尾行分割線l1,lend的位置作為父結(jié)點的邊界位置ll,lr,由邊界位置可確定該父結(jié)點所對應(yīng)的文本行區(qū)域組合的范圍;然后在此范圍內(nèi)(不包含邊界位置)找到置信度最高pmax的行分割線的位置作為待合并位置lm;
步驟A03:構(gòu)建父結(jié)點np的左子結(jié)點nl和右子結(jié)點nr,用父結(jié)點np的待合并位置lm將父結(jié)點代表的文本行區(qū)域范圍分成左部分partl和右部分partr,分別用左子結(jié)點nl和右子結(jié)點nr來表示;其中左子結(jié)點nl的邊界位置ll*,lr*由父結(jié)點的左邊界位置ll及待合并位置lm構(gòu)成,左子結(jié)點nl的待合并位置lm*由左部分partl中置信度最高的行分割線位置獲得;右子結(jié)點nr的邊界位置由父結(jié)點的待合并位置lm及右邊界位置lr構(gòu)成,右子結(jié)點nr的待合并位置由右部分partr中置信度最高的行分割線位置獲得;
步驟A04:將左子結(jié)點nl代表的文本行區(qū)域范圍作為當(dāng)前文本行范圍,返回到步驟A02并遞歸地構(gòu)建二叉樹搜索空間中的結(jié)點,直到構(gòu)建到某一左子結(jié)點只存在邊界位置而不含待合并位置時,則令該結(jié)點為葉子節(jié)點nleaf(不可再分的文本行單位),并返回到該結(jié)點的父節(jié)點np處;
步驟A05:將右子結(jié)點nr代表的文本行區(qū)域范圍作為當(dāng)前文本行范圍,返回到步驟A02并遞歸地構(gòu)建二叉樹搜索空間中的結(jié)點,直到構(gòu)建到某一右子結(jié)點只存在邊界位置而不含待合并位置時,則令該結(jié)點為葉子節(jié)點nleaf(不可再分的文本行單位),并返回到該結(jié)點的父節(jié)點np處;
步驟A06:通過上述步驟,自上而下、自左向右遞歸地構(gòu)建二叉樹搜索空間,直到最右一個文本行單元作為葉子節(jié)點被納入該搜索空間,即建立起覆蓋了所有文本行組合方式的二叉樹搜索空間。
所述步驟B具體步驟如下:
步驟B01:對二叉樹搜索空間進(jìn)行后序遍歷,得到對所有結(jié)點的訪問順序序列{n1,n2,...,nt},其中nt是根結(jié)點,在后續(xù)遍歷中被最后訪問到;
步驟B02:據(jù)二叉樹結(jié)構(gòu)特性及后序遍歷規(guī)則可將{n1,n2,...,nt-1}按照每三個結(jié)點劃為一組的方式分成組,再加上根結(jié)點nt及其子節(jié)點構(gòu)成的一組,得到共組結(jié)點集合,在此過程結(jié)點排列順序不變;其中每個集合s都包含一個父結(jié)點及其按待合并位置分開的左、右子結(jié)點,得到結(jié)點集序列
步驟B03:對于每個結(jié)點集用分類器對中的父結(jié)點、子結(jié)點代表的文本行判斷其屬于完整文本行的置信度(過分割文本行的置信度較低),然后按照置信度進(jìn)行剪枝或合并操作(具體的剪枝、合并策略在步驟C中詳解),使得每個結(jié)點集si只保留一個結(jié)點,則此時結(jié)點集序列S即為在剪枝、合并策略下選擇出的最優(yōu)路徑,從而得到重置的文本行精確定位結(jié)果,以解決過分割問題。
所述步驟C具體步驟如下:
步驟C01:分類器判別階段,對結(jié)點集si中的父結(jié)點及左、右子結(jié)點分別用分類器判斷該結(jié)點所指代的文本行是否屬于完整的文本行(即沒有被過度分割的文本行),同時給出該文本行非過分割的置信度;每個結(jié)點集根據(jù)所含三個結(jié)點的判別結(jié)果從八種情況中選擇合適的一種,進(jìn)行后續(xù)處理;
步驟C02:八種分類器判別情況中,有五種情況無需進(jìn)行結(jié)點置信度比較就可直接根據(jù)分類器判別結(jié)果來執(zhí)行決策階段的剪枝或合并操作;剩下三種情況還需要進(jìn)一步在結(jié)點置信度比較階段,根據(jù)父結(jié)點、左子結(jié)點及右子結(jié)點的置信度比較結(jié)果,來對結(jié)點所指代的文本行區(qū)域執(zhí)行剪枝或合并操作;最終在剪枝、合并策略下處理過的結(jié)點集,構(gòu)成了二叉樹搜索空間中的最優(yōu)路徑,對應(yīng)著重置后的文本行精確定位結(jié)果,解決了文本行的過分割問題。
本發(fā)明技術(shù)方案具備以下技術(shù)效果:針對場景圖像中文本行過分割的特征,提出構(gòu)建二叉樹搜索空間。其中,將所有不可再分的文本行單元作為葉子結(jié)點(分割置信度為0),將覆蓋了若干文本行區(qū)域的文本行組合作為中間結(jié)點(分割置信度漸高),將整個文本行區(qū)域作為根結(jié)點(分割置信度最高),即把所有過分割的文本行納入了二叉樹體系。構(gòu)建二叉樹的過程是自上而下、自左向右的,而在二叉樹搜索空間中搜索路徑采用的后后序遍歷是自底向上的,即剪枝、合并操作時從分割置信度較小朝往較大的方向進(jìn)行,這符合在過分割的文本行中應(yīng)先合并差異(差異度由分割置信度指代)較小的文本行的規(guī)律,因此二叉樹這種數(shù)據(jù)結(jié)構(gòu)很適合作為處理過分割文本行的搜索空間。另外根據(jù)二叉樹結(jié)構(gòu)特性可知該方法的時間復(fù)雜度為Olog(n),相比于其它用排序方法構(gòu)建的搜索空間O(n2)的復(fù)雜度要高效得多。最后本方法采用了符合二叉樹特性的一整套自適應(yīng)地剪枝、合并策略,相比于固定閾值的剪枝方案能夠加速文本行精確定位過程,并更精準(zhǔn)的解決文本行過分割問題。
附圖說明
圖1是在輸入原圖中被過度分割的文本行定位。
圖2是為定位出的文本行構(gòu)建二叉樹搜索空間。
圖3是模擬后序遍歷搜索策略在二叉樹搜索空間中構(gòu)建路徑。
圖4是剪枝、合并策略。
圖5是文本行精確定位效果圖(解決了文本行過分割問題)。
具體實施方式
下面結(jié)合附圖詳細(xì)介紹本發(fā)明各步驟中的具體細(xì)節(jié)。
本發(fā)明提出了一種基于二叉樹的文本行精確定位方法,具體包括以下步驟:
步驟A:輸入文本行被過度分割的自然場景圖像(如圖1所示),其中行分割線的位置及置信度已經(jīng)給出(如圖2(a)所示),要為被過度分割的文本行構(gòu)建二叉樹搜索空間(如圖2(b)所示)。二叉樹中的結(jié)點包含三個屬性,分別是結(jié)點所指代文本行的左邊界位置、右邊界位置及置信度。具體實現(xiàn)時用圖2(c)所示的表格來存儲二叉樹搜索空間及結(jié)點。其具體實施方式的步驟與權(quán)利要求書步驟大體一致,不同之處是增加了構(gòu)造表格的過程。
步驟A具體步驟如下:
步驟A01:構(gòu)建一張表來表示二叉樹搜索空間,命名為二叉樹表。二叉樹表中每行代表一個結(jié)點,一行包含四個字段(屬性),其中結(jié)點序號唯一標(biāo)識一個結(jié)點(由序號可看出二叉樹中結(jié)點的構(gòu)建過程是自上而下、自左向右),左、右邊界位置可確定結(jié)點所代表文本行區(qū)域的范圍,結(jié)點置信度在后續(xù)的路徑搜索步驟中起作用。二叉樹表的行數(shù)由行分割線的數(shù)目num來確定,根據(jù)二叉樹的結(jié)構(gòu)特性知有num-1個葉子結(jié)點及num-2個中間結(jié)點,則二叉樹表的行數(shù)(也就是結(jié)點的個數(shù))為N=(2×num-3)行,因此初始化大小為N×4,值均為0的二叉樹表來實現(xiàn)二叉樹搜索空間。已知結(jié)點序號i=1,2,...,N,那么首先從i=1的結(jié)點(根結(jié)點,也是表中首行)開始構(gòu)造。
步驟A02:在當(dāng)前文本行范圍內(nèi)構(gòu)建父結(jié)點np,首先在所有行分割線中選出最外圍的首尾行分割線l1,lnum的位置作為父結(jié)點的邊界位置ll,lr,由邊界位置可確定父結(jié)點所對應(yīng)的文本行區(qū)域組合的范圍。然后在此范圍內(nèi)(不包含邊界位置)找到置信度最高pmax的行分割線的位置作為待合并位置lm。接著在二叉樹表中第i行,將ll,lr,pmax分別賦予左子結(jié)點位置、右子結(jié)點位置及結(jié)點置信度字段,即完成了當(dāng)前結(jié)點np的構(gòu)建。令i=i+1,即準(zhǔn)備構(gòu)造二叉樹表的下一行。
步驟A03:構(gòu)建父結(jié)點np的左右子結(jié)點nl,nr,用父結(jié)點np的待合并位置lm將父結(jié)點代表的文本行區(qū)域范圍分成左右兩部分partl,partr,分別用左子結(jié)點nl和右子結(jié)點nr來表示,其中左子結(jié)點nl的邊界位置ll*,lr*由父結(jié)點的左邊界位置ll及待合并位置lm構(gòu)成,nl的待合并位置lm*由partl中置信度最高p*max的行分割線位置獲得,則在二叉樹表中第i行將ll*,lr*,p*max分別賦予左子結(jié)點位置、右子結(jié)點位置及結(jié)點置信度字段,即完成了當(dāng)前結(jié)點nl的構(gòu)建,然后令i=i+1,準(zhǔn)備構(gòu)造二叉樹表的下一行。同理,右子結(jié)點nr的邊界位置ll*,lr*由父結(jié)點的待合并位置lm及右邊界位置lr構(gòu)成,nr的待合并位置lm*由partr中置信度最高p*max的行分割線位置獲得,則在二叉樹表中第i行將ll*,lr*,p*max分別賦予左子結(jié)點位置、右子結(jié)點位置及結(jié)點置信度字段,即完成了當(dāng)前結(jié)點nr的構(gòu)建,然后令i=i+1,準(zhǔn)備構(gòu)造二叉樹表的下一行。
步驟A04:將左子結(jié)點nl代表的文本行區(qū)域范圍作為當(dāng)前文本行范圍,返回到步驟A02并遞歸地構(gòu)建二叉樹搜索空間中的第i個結(jié)點,直到構(gòu)建到某一左子結(jié)點只存在邊界位置而不含待合并位置時,則令該結(jié)點為葉子節(jié)點nleaf(不可再分的文本行單位),接著在二叉樹表中第i行將分別賦予左子結(jié)點位置和右子結(jié)點位置字段,并在結(jié)點置信度字段賦予0,然后返回到該結(jié)點的父節(jié)點np處。
步驟A05:將右子結(jié)點nr代表的文本行區(qū)域范圍作為當(dāng)前文本行范圍,返回到步驟A02并遞歸地構(gòu)建二叉樹搜索空間中的第i個結(jié)點,直到構(gòu)建到某一右子結(jié)點只存在邊界位置而不含待合并位置時,則令該結(jié)點為葉子節(jié)點nleaf(不可再分的文本行單位),接著在二叉樹表中第i行將分別賦予左子結(jié)點位置和右子結(jié)點位置字段,并在結(jié)點置信度字段賦予0,并返回到該結(jié)點的父節(jié)點np處。
步驟A06:通過上述步驟,自上而下、自左向右遞歸地構(gòu)建二叉樹搜索空間,直到最右一個文本行單元作為葉子節(jié)點被納入該搜索空間(即當(dāng)i=N時),則建立起覆蓋了所有文本行組合方式的二叉樹搜索空間。
步驟B:在通過步驟A已經(jīng)構(gòu)建好的二叉樹搜索空間中模擬后序遍歷的訪問方式來搜索路徑,其中每條路徑都是一個結(jié)點集,而最優(yōu)路徑是對所有結(jié)點集來執(zhí)行剪枝、融合操作(具體操作見步驟C)后得到的結(jié)點集序列。構(gòu)建路徑的具體實現(xiàn)是:將二叉樹搜索空間中的每個結(jié)點的置信度字段設(shè)置為臟位(如圖3(a)所示),然后結(jié)合圖3(b)的搜索策略來近似模擬后序遍歷,最終構(gòu)建出圖3(c)所示的路徑表,表中每行的結(jié)點集都代表一條路徑。
步驟B具體步驟如下:
步驟B01:利用臟位(即二叉樹表中一行的結(jié)點置信度字段)和搜索策略來模擬后序遍歷,從而自底向上地構(gòu)建二叉樹搜索空間中的路徑。在二叉樹表中,找臟位中具有非負(fù)最小值的結(jié)點作為父節(jié)點np,然后搜索np的左、右子結(jié)點。搜索策略如圖3(b)所示,其具體操作是在所有臟位為0的結(jié)點中尋找左邊界位置與np的左邊界位置相同的作為左子結(jié)點nl,右邊界位置與np的右邊界位置相同的作為右子結(jié)點nr,接著在圖3(c)的路徑表中將np,nl,nr分別賦予左子結(jié)點、右子結(jié)點及父結(jié)點字段。
其中,找臟位中具有非負(fù)最小值的結(jié)點作為父節(jié)點np是因為臟位值非負(fù)的結(jié)點是中間結(jié)點,而只有中間結(jié)點才能成為候選父結(jié)點。然后在候選父結(jié)點中選臟位值最小的結(jié)點,是因為臟位值(也就是結(jié)點置信度值)越小,說明該候選父結(jié)點的左、右子結(jié)點所代表的文本行被分割開來的可能性越低,則應(yīng)當(dāng)越早的接受合并處理。
在所有臟位為0的結(jié)點中尋找np的左、右子結(jié)點,是因為臟位為0的結(jié)點是葉子結(jié)點,然后根據(jù)邊界位置相同的條件來在葉子結(jié)點中搜索np的子結(jié)點。
路徑表存儲的是在二叉樹搜索空間中搜索得到的輸出結(jié)果,路徑表中每行代表一組結(jié)點集(即一條路徑),包含左子結(jié)點、右子結(jié)點及父節(jié)點三個字段。路徑表的行數(shù)與二叉樹內(nèi)中間結(jié)點的個數(shù)相同,有num-2個(在步驟A01中已知,num是行分割線的個數(shù))。因此路徑表是(num-2)×3的二維表。
步驟B02:搜索出步驟B01中所述的一組結(jié)點集(路徑)后,應(yīng)當(dāng)改變臟位(即二叉樹表中的結(jié)點置信度字段)的數(shù)值,以進(jìn)行下一組結(jié)點集的搜索。其具體操作是:將np所在臟位設(shè)為0,也就是使np由中間結(jié)點變?yōu)槿~子結(jié)點,然后將nl,nr的臟位設(shè)為-1,相當(dāng)于把這兩個葉子結(jié)點剪去,在后續(xù)的搜索過程中不予考慮。經(jīng)過上述的臟位設(shè)置,np改為葉子結(jié)點參與后續(xù)的路徑構(gòu)建,執(zhí)行自底向上的搜索過程。
步驟B03:在臟位被重置后,重復(fù)從B01到B03的步驟,直到二叉樹表中的臟位值除根結(jié)點(即序號為1的結(jié)點)外均為-1,則得到路徑表中num-2個結(jié)點集,即為在二叉樹搜索空間中搜尋得到的所有路徑。
步驟C:對于二叉樹搜索空間中某條路徑上包含的每個結(jié)點集,據(jù)結(jié)點集中父結(jié)點及左、右子結(jié)點的置信度比較結(jié)果(父結(jié)點及左、右子結(jié)點所代表的文本行如圖4(a)所示),可在八種剪枝、合并策略中選擇一種合適的情況進(jìn)行處理(分類器判別、置信度比較及決策階段如圖4(b)所示),最終得到解決過分割問題的最優(yōu)路徑,該路徑對應(yīng)著重置后的文本行精確定位結(jié)果。
步驟C具體步驟如下:
步驟C01:分類器判別階段,對結(jié)點集s中的父結(jié)點及左、右子結(jié)點分別用分類器判斷該結(jié)點所指代的文本行是否屬于完整的文本行(即沒有被過度分割的文本行),同時給出該文本行非過分割的置信度;每個結(jié)點集根據(jù)所含三個結(jié)點的判別結(jié)果從八種情況中選擇合適的一種,進(jìn)行后續(xù)處理;
步驟C02:八種分類器判別情況中,有五種情況無需進(jìn)行結(jié)點置信度比較就可直接根據(jù)分類器判別結(jié)果來執(zhí)行決策階段的剪枝或合并操作;剩下三種情況還需要進(jìn)一步在結(jié)點置信度比較階段,根據(jù)父結(jié)點、左子結(jié)點及右子結(jié)點的置信度比較結(jié)果,來對結(jié)點所指代的文本行區(qū)域執(zhí)行剪枝或合并操作;最終在剪枝、合并策略下處理過的結(jié)點集,構(gòu)成了二叉樹搜索空間中的最優(yōu)路徑,對應(yīng)著重置后的文本行精確定位結(jié)果,解決了文本行的過分割問題,如圖5所示。