本發(fā)明涉及圖像處理領(lǐng)域,具體而言,涉及一種文本圖像的分割方法及裝置。
背景技術(shù):
在對掃描文本圖像進行文字分割、字符識別之前,需要先對文本圖像中的每一個文本行進行分割。現(xiàn)有的文本行分割方法是通過對原文本圖像的二值圖像進行水平投影,找到投影圖像的波峰波谷,這類算法需要文本行沒有傾斜,行與行之間沒有重疊的部分。然而,實際應用中,掃描文本圖像可能會因為一些外部原因造成圖像中的文本行發(fā)生傾斜、扭曲的情況。因此,當掃描文本圖像中存在發(fā)生傾斜、扭曲的文本行時,將無法得到較準確的行分割結(jié)果。
技術(shù)實現(xiàn)要素:
鑒于此,本發(fā)明的目的在于提供一種文本圖像的分割方法及裝置,能夠較準確地對文本行發(fā)生傾斜、扭曲的文本圖像進行行分割。
為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
第一方面,本發(fā)明實施例提供了一種文本圖像的分割方法,所述方法包括:對文本圖像進行二值化處理獲取二值化圖像,其中,所述文本圖像包括多個文本行;獲取所述二值化圖像中滿足預設(shè)的閾值條件的連通區(qū)域;獲取所述連通區(qū)域的字符節(jié)點構(gòu)建有向圖;對所述有向圖進行最短路徑搜索得到所述文本圖像中屬于每一個所述文本行的字符節(jié)點序列;根據(jù)所得到的字符節(jié)點序列對所述文本圖像進行分割。
第二方面,本發(fā)明實施例還提供了一種文本圖像的分割裝置,所述裝置包括二值化圖像獲取模塊、連通區(qū)域獲取模塊、有向圖構(gòu)建模塊及分割模塊。二值化圖像獲取模塊用于對文本圖像進行二值化處理獲取二值化圖像,其中,所述文本圖像包括多個文本行。連通區(qū)域獲取模塊用于獲取所述二值化圖像中滿足預設(shè)的閾值條件的連通區(qū)域。有向圖構(gòu)建模塊用于獲取所述連通區(qū)域的字符節(jié)點構(gòu)建有向圖。字符節(jié)點序列獲取模塊用于對所述有向圖進行最短路徑搜索得到所述文本圖像中屬于每一個所述文本行的字符節(jié)點序列。分割模塊用于根據(jù)所得到的字符節(jié)點序列對所述文本圖像進行分割。
本發(fā)明實施例提供的文本圖像的分割方法及裝置將文本圖像進而二值化處理,根據(jù)滿足閾值條件的連通區(qū)域的字符節(jié)點構(gòu)建有向圖,然后對所構(gòu)建的有向圖進行最短路徑搜索得到屬于每一個文本行的字符節(jié)點序列,進而根據(jù)所述字符節(jié)點序列對所述文本圖像進行分割。因此,對于文本行存在傾斜、扭曲的文本圖像,通過本發(fā)明實施例提供的文本圖像的分割方法及裝置也能夠快速且準確地查找到屬于每一行的字符節(jié)點序列,從而再根據(jù)所得到的字符節(jié)點序列對文本圖像進行行分割。相比于現(xiàn)有的文本行分割方法,有效地提高了對文本行存在傾斜、扭曲的文本圖像進行行分割的正確率。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明較佳實施例提供的計算機的方框示意圖;
圖2示出了文本行發(fā)生傾斜、扭曲的文本圖像的示意圖;
圖3示出了本發(fā)明較佳實施例提供的一種文本圖像的分割方法的流程圖;
圖4示出了本發(fā)明較佳實施例提供的文本圖像的分割方法中有向圖構(gòu)建方法的流程圖;
圖5示出了本發(fā)明較佳實施例提供的文本圖像的分割方法中字符節(jié)點序列獲取方法的流程圖;
圖6示出了本發(fā)明較佳實施例提供的文本圖像的分割方法中的最短路徑搜索示例圖;
圖7示出了本發(fā)明較佳實施例提供的文本圖像的分割方法對圖2所示的文本圖像的分割結(jié)果示意圖;
圖8示出了本發(fā)明較佳實施例提供的一種文本圖像的分割裝置的結(jié)構(gòu)框圖;
圖9示出了本發(fā)明較佳實施例提供的一種文本圖像的分割裝置的向圖構(gòu)建模塊的結(jié)構(gòu)框圖;
圖10示出了本發(fā)明較佳實施例提供的一種文本圖像的分割裝置的字符節(jié)點序列獲取模塊的結(jié)構(gòu)框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設(shè)計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。同時,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對重要性。
如圖1所示,是本發(fā)明較佳的實施例提供的計算機100的方框示意圖。所述計算機100包括文本圖像的分割裝置200、存儲器101、存儲控制器102、處理器103、外設(shè)接口104、輸入輸出單元105。
所述存儲器101、存儲控制器102、處理器103、外設(shè)接口104、輸入輸出單元105各元件相互之間直接或間接地電性連接,以實現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過一條或多條通訊總線或信號線實現(xiàn)電性連接。所述文本圖像的分割裝置200包括至少一個可以軟件或固件(firmware)的形式存儲于所述存儲器101中的軟件功能模塊。所述處理器103用于執(zhí)行存儲器101中存儲的可執(zhí)行模塊,例如,所述文本圖像的分割裝置200包括的軟件功能模塊或計算機100程序。
其中,存儲器101可以是,但不限于,隨機存取存儲器(Random Access Memory,RAM),只讀存儲器(Read Only Memory,ROM),可編程只讀存儲器(Programmable Read-Only Memory,PROM),可擦除只讀存儲器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲器101用于存儲程序,所述處理器103在接收到執(zhí)行指令后,執(zhí)行所述程序,前述本發(fā)明實施例任一實施例揭示的流過程定義的服務器所執(zhí)行的方法可以應用于處理器103中,或者由處理器103實現(xiàn)。
處理器103可能是一種集成電路芯片,具有信號的處理能力。上述的處理器103可以是通用處理器,包括中央處理器(Central Processing Unit,簡稱CPU)、網(wǎng)絡處理器(Network Processor,簡稱NP)等;還可以是數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫崿F(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器103也可以是任何常規(guī)的處理器等。
所述外設(shè)接口104將各種輸入/輸入裝置耦合至處理器103以及存儲器101。在一些實施例中,外設(shè)接口104,處理器103以及存儲控制器102可以在單個芯片中實現(xiàn)。在其他一些實例中,他們可以分別由獨立的芯片實現(xiàn)。
輸入輸出單元105用于提供給用戶輸入數(shù)據(jù)實現(xiàn)用戶與所述服務器(或本地終端)的交互。所述輸入輸出單元105可以是,但不限于,鼠標和鍵盤等。
實際應用中,掃描文本圖像可能會因為一些外部原因造成圖像中的文本行發(fā)生傾斜、扭曲的情況,如圖2所示?,F(xiàn)有的文本行分割方法無法快速且準確的對這些發(fā)生傾斜、扭曲的文本行進行分割。鑒于此,本發(fā)明實施例提供了一種文本圖像的分割方法,能夠快速且準確地分割發(fā)生傾斜、扭曲的文本行。
圖3示出了本發(fā)明實施例提供的文本圖像的分割方法的流程圖。請參照圖3,該方法包括:
步驟S310:對文本圖像進行二值化處理獲取二值化圖像,其中,所述文本圖像包括多個文本行;
獲取文本圖像,其中,所述文本圖像可以包括發(fā)生傾斜或扭曲的多個文本行,如圖2所示。每一個文本行包括一個或多個字符。獲取文本圖像的具體方式可以為通過掃描的方式獲取,也可以是通過拍照的方式獲取。
文本圖像包括背景區(qū)域及目標區(qū)域,所述目標區(qū)域由本文圖像中字符對應的像素點構(gòu)成。預設(shè)一個灰度閾值,根據(jù)所述灰度閾值對所獲取的文本圖像進行二值化處理得到所述本文圖像的二值化圖像。將文本圖像中的每一個像素點的灰度值與所述灰度閾值進行比較,當像素點的灰度值大于所述灰度閾值時,將該像素點的灰度值重新設(shè)置為第一灰度值,當像素點的灰度值小于或等于所述灰度閾值時,將該像素點的灰度值重新設(shè)置為第二灰度值。其中,第一灰度值可以為0,第二灰度值可以設(shè)置為255,當然,也可以將第一灰度值設(shè)置為255,第二灰度值設(shè)置為0。對所述文本圖像進行二值化處理得到二值化圖像,就可以將文本圖像中的背景區(qū)域與目標區(qū)域分離開。
其中,所述灰度閾值可以為預先存儲在計算機中的一個多次試驗得到的經(jīng)驗值,也可以通過輸入輸出單元105實時輸入,還可以通過預設(shè)規(guī)則對具體的文本圖像進行處理自適應的獲取對應的灰度閾值。為了使得二值化處理過程具有自適應性,以得到更準確的二值化處理結(jié)果,本發(fā)明實施例優(yōu)選通過預設(shè)規(guī)則對具體的文本圖像進行處理自適應的獲取對應的灰度閾值。例如,所述預設(shè)規(guī)則可以為大津法。
步驟S320:獲取二值化圖像中滿足預設(shè)的閾值條件的連通區(qū)域;
獲取到文本圖像的二值化圖像后,查找二值化圖像中的連通區(qū)域,并對查找到的連通區(qū)域進行標記。例如,可以查找二值化圖像中的4鄰域連通區(qū)域,或者也可以查找二值化圖像中的8鄰域連通區(qū)域。為了盡量使得文本圖像中的單個字符合并成一個連通區(qū)域以簡化計算過程,本實施例優(yōu)選查找二值化圖像中的8鄰域連通區(qū)域。
文本圖像中的字符一般包括文字字符和標點字符。因此,所獲取到的連通區(qū)域包括文字字符所對應的連通區(qū)域及標點字符所對應的連通區(qū)域。進一步地,根據(jù)預設(shè)的閾值條件對所獲得的連通區(qū)域進行篩選,剔除不滿足所述閾值條件的連通區(qū)域。也就是說,將不滿足所述閾值條件的連通區(qū)域的灰度值也設(shè)置為背景區(qū)域。其中,不滿足所述閾值條件的連通區(qū)域包括二值化圖像中標點字符對應的連通區(qū)域及二值化圖像中可能存在的噪聲點所對應的連通區(qū)域。
其中,閾值條件可以根據(jù)連通區(qū)域的面積設(shè)定。連通區(qū)域的面積即為連通區(qū)域所包括的像素點的個數(shù)。具體的,將二值化圖像中所獲取到的每一個連通區(qū)域的面積與預設(shè)的面積閾值比較,當當前連通區(qū)域的面積小于預設(shè)面積閾值時,將當前連通區(qū)域剔除,當當前連通區(qū)域的面積大于或等于預設(shè)面積閾值時,則保留當前連通區(qū)域。其中,所述面積閾值可以根據(jù)二值化圖像中所有連通區(qū)域的平均面積設(shè)置。經(jīng)過多次試驗,本實施例中,所述面積閾值可以優(yōu)選為所述平均面積的四分之一倍。
另外,所述閾值條件也可以根據(jù)連通區(qū)域的高度設(shè)定。其中,連通區(qū)域的高度可以為連通區(qū)域的外接矩形的高度,即連通區(qū)域的外接矩形中沿文本圖像列方向的一條邊所包含的像素點個數(shù)。具體的,將二值化圖像中所獲取到的每一個連通區(qū)域的高度與預設(shè)高度閾值比較,當當前連通區(qū)域的高度小于預設(shè)高度閾值時,將當前連通區(qū)域剔除,當當前連通區(qū)域的高度大于或等于預設(shè)高度閾值時,則保留當前連通區(qū)域。其中,所述高度閾值可以為通過多次試驗得到的經(jīng)驗值。
需要說明的是,在本發(fā)明較佳的實施例中,在執(zhí)行完步驟S310,獲得二值化圖像后,可以預先對二值化圖像進行閉運算,然后再對執(zhí)行閉運算操作后的二值化圖像進行連通區(qū)域標記及篩選。對二值化圖像進行閉運算的目的在于去掉目標區(qū)域內(nèi)的孔,使得單個字符合并成一個連通區(qū)域。本實施例優(yōu)選采用線性結(jié)構(gòu)元素對上述二值化圖像進行閉運算。所述線性結(jié)構(gòu)元素的長度可以根據(jù)二值化圖像中所有連通區(qū)域的寬度的平均值設(shè)置。其中,所述連通區(qū)域的寬度具體為連通區(qū)域的外接矩形中沿文本圖像行方向的一條邊所包含的像素點個數(shù)。經(jīng)過多次試驗,本實施例中,線性結(jié)構(gòu)元素的長度可以優(yōu)選設(shè)置為所有連通區(qū)域的寬度的平均值的五分之一倍。
例如,執(zhí)行完步驟S310,獲得的二值化圖像為A,采用線性結(jié)構(gòu)元素對上述二值化圖像A進行閉運算后得到二值化圖像B,具體算法為:
步驟S330:獲取連通區(qū)域的字符節(jié)點構(gòu)建有向圖;
對二值化圖像執(zhí)行完步驟S320的操作后,獲取步驟S320所得到的連通區(qū)域的字符節(jié)點。本實施中,所述字符節(jié)點為所述連通區(qū)域的外接矩形中,沿文本圖像行方向的兩條邊上的任意一個像素點。為了簡化計算過程,可以優(yōu)選將所述連通區(qū)域的外接矩形的角點作為字符節(jié)點。例如,可以采用所述連通區(qū)域的外接矩形的左上角的像素點作為該連通區(qū)域的字符節(jié)點。
進一步的,根據(jù)所獲取到的字符節(jié)點構(gòu)建有向圖。如圖4所示,步驟S330中,構(gòu)建有向圖的具體實施方法可以包括步驟S331至步驟S335。
步驟S331:獲取連通區(qū)域的字符節(jié)點;
構(gòu)建第一集合Z,第一集合包括S320所獲取到的所有連通區(qū)域的字符節(jié)點的像素坐標。例如,假設(shè)步驟S320所獲取到的連通區(qū)域的個數(shù)為N,則字符節(jié)點的個數(shù)也為N。此時,可以將第一集合表示為:Z={zi|i=1,...,N},其中,zi表示每一個字符節(jié)點。
步驟S332:根據(jù)所述二值化圖像的像素點獲取多個引導節(jié)點和一個終止節(jié)點;
為了確保后續(xù)對所構(gòu)建的有向圖進行最短路徑搜索時,每次都能準確的從位于每一個文本行最左邊的一個文本字符對應的字符節(jié)點開始搜索,需要設(shè)置多個引導節(jié)點。
本實施例中,多個引導節(jié)點及終止節(jié)點的一種設(shè)置方式為:對二值化圖像進行垂直投影,可以得到所述二值化圖像中目標區(qū)域所在的起始列像素點和終止列像素點。具體的,當二值化圖像中的背景區(qū)域所包括的像素點的灰度值為0,目標區(qū)域的像素點的灰度值為255時,對該二值化圖像進行垂直積分投影。根據(jù)得到的垂直積分投影曲線即可以得到該二值化圖像中,從第一列像素點到最后一列像素點,第一個垂直積分投影值大于預設(shè)積分值的像素列,該像素列即為二值化圖像中目標區(qū)域所在的起始像素列。此外,還可以得到最后一個垂直積分投影值大于預設(shè)積分值的像素列,該像素列即為二值化圖像中目標區(qū)域所在的終止像素列。其中,所述預設(shè)積分值可以根據(jù)多次試驗的經(jīng)驗值設(shè)置。此時,所述多個引導節(jié)點可以為二值化圖像的第一列像素點、二值化圖像中目標區(qū)域所在的起始像素列或第一列像素點到起始像素列之間的任意一列像素點,所述終止節(jié)點可以為二值化圖像的最后一列像素點、二值化圖像中目標區(qū)域所在的終止像素列或終止像素列到最后一列像素點之間的任意一列像素點中的任意一個。當然,為了簡化計算過程,可以直接獲取二值化圖像的第一列像素點最為引導節(jié)點,獲取二值化圖像的最后一行且最后一列的像素點作為終止節(jié)點。
另外,本實施例還提供了多個引導節(jié)點及終止節(jié)點的另一種設(shè)置方式:多個引導節(jié)點為增設(shè)在所述二值化圖像的第一列像素點之前的一列像素點,終止節(jié)點為增設(shè)在所述二值化圖像的最后一列像素點之后的一列像素點中的其中一個像素點。為了方便計算,本實施例中,可以將增設(shè)在所述二值化圖像的最后一列像素點之后的一列像素點中位于最后一行的像素點作為終止節(jié)點。
本實施例中,多個引導節(jié)點及終止節(jié)點優(yōu)選采用上述的另一種設(shè)置方式,簡單方便,可以有效地簡化計算過程,有利于快速且準確地對文本圖像進行行分割。
步驟S333:根據(jù)連通區(qū)域的字符節(jié)點、多個引導節(jié)點及終止節(jié)點構(gòu)建節(jié)點集;
構(gòu)建第二集合和第三集合,其中,所述第二集合包括所有引導節(jié)點,所述第三集合包括終止節(jié)點。根據(jù)所述連通區(qū)域的字符節(jié)點、所述多個引導節(jié)點及所述終止節(jié)點構(gòu)建節(jié)點集,即根據(jù)上述第一集合、第二集合和第三集合構(gòu)建節(jié)點集。
假設(shè)第一集合為Z,第二集合為P,第三集合為Q,節(jié)點集為V。其中,V={vi|i=1,...,M},Z={zi|i=1,...,N},P={pi|i=1,...,M0},Q={q},V=P∪Z∪Q,M=M0+N+1,M0表示二值化圖像中每一列的像素點個數(shù)。
步驟S334:獲取節(jié)點集中每個點與節(jié)點集中所有點之間的權(quán)值;
具體的,步驟S334包括:獲取節(jié)點集中每個字符節(jié)點與節(jié)點集中所有點之間的權(quán)值,即獲取第一集合中每個點與節(jié)點集中所有點之間的權(quán)值;獲取節(jié)點集中的每個引導節(jié)點與節(jié)點集中所有點之間的權(quán)值,即獲取第二集合中每個點與節(jié)點集中所有點之間的權(quán)值;獲取節(jié)點集中的終止節(jié)點與節(jié)點集中所有點之間的權(quán)值,即獲取第三集合中每個點與節(jié)點集中所有點之間的權(quán)值。
本實施例中,獲取節(jié)點集中每個字符節(jié)點與節(jié)點集中所有點之間的權(quán)值的具體方法可以為:
在節(jié)點集所包括的第一集合中查找與當前字符節(jié)點的縱向距離小于預設(shè)距離閾值的所有字符節(jié)點。然后,在所查找到的所有字符節(jié)點中查找與當前字符節(jié)點距離最近的字符節(jié)點。將所述當前字符節(jié)點與距離其最近的字符節(jié)點之間的距離作為當前字符節(jié)點到與之最近的字符節(jié)點的權(quán)值。將當前字符節(jié)點與終止節(jié)點之間的距離作為當前字符節(jié)點與終止節(jié)點之間的權(quán)值。將當前字符節(jié)點與節(jié)點集中的其它字符節(jié)點及所有引導節(jié)點之間的權(quán)值設(shè)置為第一預設(shè)權(quán)值。可以理解的是,當前字符節(jié)點與當前字符節(jié)點自身的權(quán)值可以設(shè)置為0。其中,所述預設(shè)距離閾值可以根據(jù)步驟S320所獲取到的所有連通區(qū)域的平均高度設(shè)定。例如,本實施例中,預設(shè)距離閾值可以是但不限于所有連通區(qū)域的平均高度的0.86倍。
例如,節(jié)點集所包括的第一集合可以表示為:Z={zi|i=1,...,N}。根據(jù)式(2)即可以找到與第一集合中當前字符節(jié)點的縱向距離小于預設(shè)距離閾值的所有字符節(jié)點。
其中,表示第一集合中當前字符節(jié)點zi的像素坐標投影到圖像坐標系中對應的y軸坐標,表示第一集合中除當前字符節(jié)點以外的其它字符節(jié)點zj的像素坐標投影到圖像坐標系中對應的y軸坐標。ρ表示預設(shè)距離閾值。然后,再根據(jù)式(3)計算滿足式(2)的所有字符節(jié)點與當前字符節(jié)點zi的距離λ。
其中,表示當前字符節(jié)點的像素坐標投影到圖像坐標系中對應的x軸坐標,表示滿足式(2)的任意一個字符節(jié)點zg的像素坐標投影到圖像坐標系中對應的x軸坐標,表示字符節(jié)點zg的像素坐標投影到圖像坐標系中對應的y軸坐標,Z1為滿足式(2)的所有字符節(jié)點構(gòu)成的集合。對比滿足式(2)的所有字符節(jié)點與當前字符節(jié)點zi的距離λ,可以得到滿足式(2)且距離當前字符節(jié)點最近的字符節(jié)點zm。將當前字符節(jié)點與字符節(jié)點zm之間的距離設(shè)置為當前字符節(jié)點zi與字符節(jié)點zm之間的權(quán)值。
因此,將第一集合中每個字符節(jié)點作為當前字符節(jié)點,根據(jù)上述方法,就可以獲取到第一集合中每個字符節(jié)點與節(jié)點集中所有點之間的權(quán)值。本實施例對每個字符節(jié)點到節(jié)點集中所有點之間的權(quán)值的設(shè)置可以有效地保證對應于同一個文本行的字符節(jié)點之間的權(quán)值最小。
本實施例中,獲取所述節(jié)點集中的每個引導節(jié)點與節(jié)點集中所有點之間的權(quán)值的具體方法可以為:
在所述節(jié)點集所包括的第一集合中查找與節(jié)點集中每個引導節(jié)點距離最近的字符節(jié)點。獲取當前引導節(jié)點與對應與之最近的字符節(jié)點之間的距離作為當前引導節(jié)點與該字符節(jié)點之間的權(quán)值。將當前引導節(jié)點與節(jié)點集中除所述最近的字符節(jié)點之外的其它字符節(jié)點之間的權(quán)值及當前引導節(jié)點與終止節(jié)點之間的權(quán)值均設(shè)置為第一預設(shè)權(quán)值;將當前引導節(jié)點與節(jié)點集所包括的第二集合中的其它引導節(jié)點之間的權(quán)值設(shè)置為第二預設(shè)權(quán)值??梢岳斫獾氖?,當前引導節(jié)點與當前引導節(jié)點自身的權(quán)值可以設(shè)置為0。
假設(shè)節(jié)點集所包括的第二集合為:P={pi|i=1,...,M0},計算第二集合中的每個引導節(jié)點pi與節(jié)點集所包括的第一集合中所有字符節(jié)點之間的距離。進而分別查找與每一個引導節(jié)點pi距離最近的字符節(jié)點zk。將當前引導節(jié)點到與所查找到的距離該當前引導節(jié)點最近的字符節(jié)點之間的距離設(shè)置為當前引導節(jié)點與該字符節(jié)點之間的權(quán)值。進而,就可以得到每個引導節(jié)點pi與距離其最近的字符節(jié)點之間的權(quán)值。
本實施例對每一個引導節(jié)點與節(jié)點集中所有點之間的權(quán)值的設(shè)置可以有效地保證后續(xù)每一次對有向圖執(zhí)行最短路徑搜索操作時均能準確的從節(jié)點集中位于同一文本行的第一個字符節(jié)點開始搜索。
本實施例中,獲取節(jié)點集中的終止節(jié)點與節(jié)點集中所有點之間的權(quán)值的具體方法可以為:將終止節(jié)點與節(jié)點集中除了該終止節(jié)點之外的點之間的權(quán)值均設(shè)置為第一預設(shè)權(quán)值??梢岳斫獾氖牵K止節(jié)點與終止節(jié)點自身的權(quán)值可以設(shè)置為0。
其中,第一預設(shè)權(quán)值和第二預設(shè)權(quán)值可以根據(jù)節(jié)點集中任意兩個點的坐標在二值化圖像中的歐式距離設(shè)定。具體的,第二預設(shè)權(quán)值遠小于節(jié)點集中任意兩個點的坐標在二值化圖像中的歐式距離,而第一預設(shè)權(quán)值遠大于節(jié)點集中任意兩個點的坐標在二值化圖像中的距離。例如,節(jié)點集中任意兩個點的坐標在二值化圖像中的歐式距離在2-20范圍內(nèi)時,可以將第一預設(shè)權(quán)值設(shè)置為10000,第二預設(shè)權(quán)值可以設(shè)置為0.01。
步驟S335:根據(jù)節(jié)點集及節(jié)點集中每個點與節(jié)點集中所有點之間的權(quán)值構(gòu)建有向圖。
根據(jù)節(jié)點集及節(jié)點集中每個點與節(jié)點集中所有點之間的權(quán)值構(gòu)建有向圖G={V,E}。其中,V={vi|i=1,...,M}為節(jié)點集,即該有向圖的節(jié)點的集合,E={ei,j|vi,vj∈V}是該有向圖的邊的集合。根據(jù)獲取到的節(jié)點集中每個點與節(jié)點集中所有點之間的權(quán)值構(gòu)建該有向圖G的鄰接矩陣。例如,鄰接矩陣可以表示為:W={wi,j|i=1,...,M,j=1,...,M},其中,wi,j有向圖G中第i個節(jié)點與第j個節(jié)點之間的權(quán)值。
步驟S340:對有向圖進行最短路徑搜索得到文本圖像中屬于每一個文本行的字符節(jié)點序列;
根據(jù)步驟S330完成有向圖的構(gòu)建后,可以通過對所構(gòu)建的有向圖進行最短路徑搜索得到所述文本圖像中屬于每一個所述文本行的字符節(jié)點序列。具體的,如圖5所示,步驟S340可以包括步驟S341至步驟S346。
步驟S341:獲取有向圖的起始節(jié)點。
其中,所述起始節(jié)點為所述多個引導節(jié)點中的一個,即從上述第二集合中獲取一個點作為起始節(jié)點。本實施例中,為了便于計算,優(yōu)選將像素坐標位于二值化圖像第一行的引導節(jié)點作為起始節(jié)點。
步驟S342:查找有向圖中起始節(jié)點到終止節(jié)點之間的最短路徑。
從起始節(jié)點開始,根據(jù)有向圖的每一條邊所對應的權(quán)值,即根據(jù)有向圖的鄰接矩陣查找所述有向圖中連接起始節(jié)點與終止節(jié)點的最短路徑。例如,可以利用狄杰斯特拉(Dijkstra)算法查找所述有向圖中起始節(jié)點到終止節(jié)點之間的最短路徑。
步驟S343:根據(jù)所述最短路徑得到節(jié)點集中屬于當前文本行的字符節(jié)點序列。
每一次最短路徑搜索操作所得到的最短路徑通常由順序排列的起始節(jié)點、引導節(jié)點、字符節(jié)點和終止節(jié)點構(gòu)成。進一步,按最短路徑順序提取其中的字符節(jié)點構(gòu)建字符節(jié)點序列。所得到的字符節(jié)點序列中的字符節(jié)點均屬于同一文本行中。字符節(jié)點序列中字符節(jié)點的排布順序即為該文本行中對應的文字字符的排布順序。
具體的,如圖6所示,每一個方格表示一個像素點,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9表示引導節(jié)點,其中,D0為起始節(jié)點。A1至A7為屬于當前文本行的字符節(jié)點,B1至B7為屬于當前文本行的下一文本行的字符節(jié)點,E為終止節(jié)點。當有向圖中的節(jié)點包括圖6所示D0至D9、A1至A7及B1至B7時,查找該有向圖中起始節(jié)點D0到終止節(jié)點E之間的進行最短路徑搜索可以得到最短路徑(D0,D1,A1,A2,A3,A4,A5,A6,A7,E)。進一步,就可以提取出對應于當前文本行字符節(jié)點序列{A1,A2,A3,A4,A5,A6,A7}。
步驟S344:將字符節(jié)點序列中的所有字符節(jié)點從節(jié)點集中刪除。
節(jié)點集包括由字符節(jié)點組成的第一集合、由引導節(jié)點組成的第二集和以及由終止節(jié)點組成的第三集合。將字符節(jié)點序列中的所有字符節(jié)點從節(jié)點集中刪除,也就是將字符節(jié)點序列中的所有字符節(jié)點從第一集合中刪除。
步驟S345:判斷節(jié)點集中是否存在字符節(jié)點。
當所述節(jié)點集中存在字符節(jié)點時,即第一集合不為空集時,執(zhí)行步驟S346,當所述節(jié)點集中不存在字符節(jié)點時,即第一集合為空集時,表示已完成文本圖像所包括的每一個文本行對應的字符節(jié)點序列的獲取,繼續(xù)執(zhí)行步驟S350,以根據(jù)所得到的所有字符節(jié)點序列對文本圖像中的每一個文本行進行分割。
步驟S346:更新有向圖。
執(zhí)行完步驟S344,按照上述步驟S330的方法,根據(jù)當前節(jié)點集重新構(gòu)建有向圖,返回執(zhí)行步驟S342,以得到第一集合中屬于下一文本行的字符節(jié)點序列。
例如,如圖6所示,將A1,A2,A3,A4,A5,A6,A7從第一集合中刪除后,判斷節(jié)點集中存在字符節(jié)點,根據(jù)當前節(jié)點集重新構(gòu)建有向圖,返回執(zhí)行步驟S342,可以得到起始節(jié)點D0到終止節(jié)點E之間新的最短路徑(D0,D5,B1,B2,B3,B4,B5,B6,B7,E),從而就可以提取出對應于下一文本行的字符節(jié)點序列{B1,B2,B3,B4,B5,B6,B7}。
重復執(zhí)行步驟S342至步驟S346,直至完成文本圖像所包括的每一個文本行對應的字符節(jié)點序列的獲取。
步驟S350:根據(jù)所得到的字符節(jié)點序列對文本圖像進行分割。
根據(jù)上述步驟S350得到文本圖像中的各個文本行所對應的字符節(jié)點序列后,連接每個字符節(jié)點序列中的所有字符節(jié)點即可以對所述文本圖像的文本行進行分割。例如,可以利用折線連接每個字符節(jié)點序列中的所有字符節(jié)點以對文本圖像的文本行進行分割。
根據(jù)上述步驟S310至步驟S350對圖2所示的文本圖像進行處理后,為了查看分割效果,可以用折線連接每個字符節(jié)點序列中的所有字符節(jié)點并顯示在圖2所示的文本圖像上,如圖7所示。
另外,本發(fā)明實施例還提供了一種文本圖像的分割裝置200,如圖8所示,該裝置包括:
二值化圖像獲取模塊210,用于對文本圖像進行二值化處理獲取二值化圖像,其中,所述文本圖像包括多個文本行。
連通區(qū)域獲取模塊220,用于獲取所述二值化圖像中滿足預設(shè)的閾值條件的連通區(qū)域。
有向圖構(gòu)建模塊230,用于獲取所述連通區(qū)域的字符節(jié)點構(gòu)建有向圖。
字符節(jié)點序列獲取模塊240,用于對所述有向圖進行最短路徑搜索得到所述文本圖像中屬于每一個所述文本行的字符節(jié)點序列。
分割模塊250,用于根據(jù)所得到的字符節(jié)點序列對所述文本圖像進行分割。
進一步的,為了將文本圖像中的單個文本字符合并成一個連通區(qū)域,本文本圖像的分割裝置還包括預處理模塊,用于利用線性結(jié)構(gòu)元素對所述二值化圖像進行閉運算操作。
具體的,如圖9所示,所述有向圖構(gòu)建模塊230包括:
第一獲取子模塊231,用于獲取所述連通區(qū)域的字符節(jié)點。
第二獲取子模塊232,用于根據(jù)所述二值化圖像的像素點獲取多個引導節(jié)點和一個終止節(jié)點。
第一構(gòu)建子模塊233,用于根據(jù)所述連通區(qū)域的字符節(jié)點、所述多個引導節(jié)點及所述終止節(jié)點構(gòu)建節(jié)點集。
權(quán)值獲取子模塊234,用于獲取所述節(jié)點集中每個點與所述節(jié)點集中所有點之間的權(quán)值。
第二構(gòu)建子模塊235,用于根據(jù)所述節(jié)點集及所述節(jié)點集中每個點與所述節(jié)點集中所有點之間的權(quán)值構(gòu)建有向圖。
具體的,權(quán)值獲取子模塊234具體用于獲取所述節(jié)點集中的每個所述字符節(jié)點與所述節(jié)點集中所有點之間的權(quán)值,獲取所述節(jié)點集中的每個所述引導節(jié)點與所述節(jié)點集中所有點之間的權(quán)值,獲取所述節(jié)點集中的所述終止節(jié)點與所述節(jié)點集中所有點之間的權(quán)值。
進一步的,如圖10所示,所述字符節(jié)點序列獲取模塊240包括:
起始節(jié)點獲取子模塊241,用于獲取所述有向圖的起始節(jié)點,其中,所述起始節(jié)點為所述多個引導節(jié)點中的一個。
最短路徑查找子模塊242,用于查找所述有向圖中所述起始節(jié)點到所述終止節(jié)點之間的最短路徑。
字符節(jié)點序列獲取子模塊243,用于根據(jù)所述最短路徑得到所述節(jié)點集中屬于當前文本行的字符節(jié)點序列。
刪除子模塊244,用于將所述字符節(jié)點序列中的所有字符節(jié)點從所述節(jié)點集中刪除。
判斷子模塊245,用于判斷所述節(jié)點集中是否存在字符節(jié)點,當所述節(jié)點集中存在字符節(jié)點時,更新所述有向圖;再次執(zhí)行查找所述有向圖中所述起始節(jié)點到所述終止節(jié)點之間的最短路徑,根據(jù)所述最短路徑得到所述節(jié)點集中屬于下一文本行的字符節(jié)點序列,將所述字符節(jié)點序列中的所有字符節(jié)點從所述節(jié)點集中刪除,直至所述節(jié)點集中沒有字符節(jié)點存在。當所述節(jié)點集中不存在字符節(jié)點時,根據(jù)所得到的所有字符節(jié)點序列對文本圖像中的每一個文本行進行分割。
綜上所述,對于文本行存在傾斜、扭曲的文本圖像中,通過本發(fā)明實施例提供的文本圖像的分割方法及裝置也能夠快速且準確地查找到屬于每一行的字符節(jié)點序列,從而再根據(jù)所得到的字符節(jié)點序列對文本圖像進行行分割。相比于現(xiàn)有的文本行分割方法,有效地提高了對文本行存在傾斜、扭曲的文本圖像進行行分割的正確率。
在本申請所提供的實施例中,應該理解到,所揭露的裝置和方法,也可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的裝置、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)方式中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。
所述功能如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務器,或者網(wǎng)絡設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器301(ROM,Read-Only Memory)、隨機存取存儲器301(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個…...”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。