[0068] 圖2為本發(fā)明的實施例的圖像識別方法中3X3的圖像區(qū)域的示意圖。
[0069] 圖3為本發(fā)明的實施例的圖像識別方法中字符的示意圖。
[0070] 圖4為本發(fā)明的實施例的圖像識別系統(tǒng)的系統(tǒng)框圖。
【具體實施方式】
[0071] 下面通過實施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實 施例范圍之中。
[0072] 實施例1
[0073] -種圖像識別方法,如圖1所示,該圖像識別方法包括:
[0074] 步驟101、將待識別的圖片進(jìn)行灰度處理。
[0075] 步驟102、將灰度處理后的圖片進(jìn)行二值化處理。
[0076] 步驟103、對二值化處理后的圖片包含的圖像進(jìn)行描邊處理。具體地,將圖像的邊 緣涂成白色。
[0077] 步驟104、去除該圖像中孤立的像素點。去除孤立的像素點的過程如下:將該圖像 劃分為多個3X3的圖像區(qū)域。對于每一 3X3的圖像區(qū)域,若位于中間位置的像素點為白 色且與位于中間位置的像素點相鄰的8個像素點均為黑色,則將位于中間位置的像素點改 為黑色;若位于中間位置的像素點為黑色且與位于中間位置的像素點相鄰的8個像素點均 為白色,則將位于中間位置的像素點改為白色。如圖2所示,圖中示意性地繪出了一個圖像 區(qū)域,每一個方格代表一個像素點,方格中的數(shù)字表不像素點的編號。若像素點5為白色且 與像素點5相鄰的8個像素點(即像素點1-4, 6-9)都為黑色,那么將像素點5改為黑色; 若像素點5為黑色且與像素點5相鄰的8個像素點(即像素點1-4, 6-9)都為白色,那么將 像素點5改為白色。
[0078] 步驟105、補齊該圖像的邊緣。對于每一 3X3的圖像區(qū)域,若位于中間位置的像 素點與處于同一直線的兩個像素點的像素值不同且與位于中間位置的像素點處于同一直 線的兩個像素點的像素值相同,則將位于中間位置的像素點的像素值改為與處于同一直線 的兩個像素點的像素值相同。同樣以圖2中示出的圖像區(qū)域為例,像素點1,5, 9處于同一 直線上,像素點3, 5, 7處于同一直線上,像素點2, 5, 8處于同一直線上,像素點4, 5, 6處于 同一直線上。對于像素點1,5, 9來說,若位于中間位置的像素點5為黑色且像素點1,9均 為白色,那么將像素點5改為白色,若位于中間位置的像素點5為白色且像素點1,9均為黑 色,那么將像素點5改為黑色,若像素點1,9的像素值不同,那么不管像素點5為黑色還是 白色均不改變像素點5的像素值。
[0079] 通過步驟101-105,該圖像識別方法能夠從待識別的圖片中獲取該圖片包含的圖 像,該圖像也就是包含了字符的圖像。
[0080] 步驟106、將該圖像切分成若干切片,每個切片包含一個字符。具體地,首先根據(jù)聯(lián) 通分量將該圖像切分成X個切片,X為正整數(shù),然后若X等于該圖像包含的字符數(shù),則表明 每個切片中只包含了一個字符,故執(zhí)行步驟107,若X小于該圖像包含的字符數(shù),則表明有 的切片包含了兩個或兩個以上的字符,故根據(jù)橫向投影將該X個切片進(jìn)一步切分成若干個 切片,直至每個切片只包含一個字符。根據(jù)橫向投影切分時被切分的每個切片左右會進(jìn)行 適當(dāng)?shù)姆糯?,以確保字符包含在內(nèi)。所述橫向投影是將圖片中每一列的像素點數(shù)進(jìn)行統(tǒng)計, 根據(jù)字符的最大最小寬度以及像素點數(shù)來劃分。
[0081] 步驟107、根據(jù)每一切片的像素點,分別計算每一切片對應(yīng)的形狀上下文。具體地, 步驟107包括對每一切片分別執(zhí)行以下步驟1071-1073 :
[0082] 步驟1071、將切片中每一像素點分別轉(zhuǎn)換成對數(shù)極坐標(biāo)。其中將待轉(zhuǎn)換為對數(shù)極 坐標(biāo)的像素點作為極坐標(biāo)的圓心,半徑為切片中像素點之間的最大距離max (distance),并 對半徑進(jìn)行歸一化處理。
[0083] 直角坐標(biāo)(X,y)轉(zhuǎn)換成極坐標(biāo)(P,Θ )的公式為:
[0084]
[0085] 步驟1072、將每一對數(shù)極坐標(biāo)分別轉(zhuǎn)換為一維矩陣。其中,步驟1072通過以下步 驟將對數(shù)極坐標(biāo)轉(zhuǎn)換為一維矩陣:
[0086] 步驟10721、將極坐標(biāo)圓的半徑和角度進(jìn)行等量劃分;
[0087] 步驟10722、根據(jù)劃分后每個區(qū)域內(nèi)的像素點數(shù)得出二維矩陣,如圖3中所示的字 符,其中菱形內(nèi)的點轉(zhuǎn)化的二維矩陣為
[0088] 步驟10723、將步驟10722得到的二維矩陣轉(zhuǎn)化成一維矩陣;
[0089] 步驟10724、將一維矩陣進(jìn)行一維傅里葉變換。
[0090] 通過步驟1072將所有的對數(shù)極坐標(biāo)轉(zhuǎn)換為一維矩陣之后,執(zhí)行:
[0091] 步驟1073、將所有的一維矩陣合并成一 m*n的二維矩陣,m為切片的像素點數(shù),η 為一維矩陣的長度,該m*n的二維矩陣為切片對應(yīng)的形狀上下文。
[0092] 步驟108、根據(jù)形狀上下文的特征值進(jìn)行搜索,找到與切片所包含的字符最接近的 樣本作為識別結(jié)果。本實施例中步驟108根據(jù)形狀上下文的特征值在樣本庫中進(jìn)行搜索, 利用匈牙利算法進(jìn)行二分圖匹配,找到距離最近的樣本作為識別結(jié)果。其中,
[0093] 首先,將切片和樣本庫中的樣本作為待匹配的二分圖點集合,每個點代表一維矩 陣,計算每個點與樣本中所有點的距離,當(dāng)距離小于minCost,則認(rèn)為兩點是可匹配的;
[0094] 然后,利用匈牙利算法求出切片與樣本間可匹配的最大值;
[0095] 最后,將切片與所有的樣本圖片進(jìn)行匹配,計算出所有的可匹配的最大值,將可匹 配的最大值中的最大值作為識別結(jié)果。
[0096] 本實施例的圖像識別系統(tǒng),如圖4所示,該圖像識別系統(tǒng)包括:一獲取單元201、一 切分單元202、一計算單元203和一識別單元204。
[0097] 該獲取單元201,用于從待識別的圖片中獲取該圖片包含的圖像,該圖像也就是包 含了字符的圖像。該獲取單元201包括:
[0098] -灰度處理模塊2011,用于將待識別的圖片進(jìn)行灰度處理。
[0099] 一二值化處理模塊2012,用于將灰度處理后的圖片進(jìn)行二值化處理。
[0100] 一描邊模塊2013,用于對二值化處理后的圖片包含的圖像進(jìn)行描邊處理。具體地, 將圖像的邊緣涂成白色。
[0101] 一去除模塊2014,用于去除該圖像中孤立的像素點。去除孤立的像素點的過程如 下:將該圖像劃分為多個3X3的圖像區(qū)域。對于每一 3X3的圖像區(qū)域,若位于中間位置的 像素點為白色且與位于中間位置的像素點相鄰的8個像素點均為黑色,則將位于中間位置 的像素點改為黑色;若位于中間位置的像素點為黑色且與位于中間位置的像素點相鄰的8 個像素點均為白色,則將位于中間位置的像素點改為白色。
[0102] 一圖像生長模塊2015,用于補齊該圖像的邊緣。對于每一 3X3的圖像區(qū)域,若位 于中間位置的像素點與處于同一直線的兩個像素點的像素值不同且與位于中間位置的像 素點處于同一直線的兩個像素點的像素值相同,則將位于中間位置的像素點的像素值改為 與處于同一直線的兩個像素點的像素值相同。
[0103] 該切分單元202,用于將該圖像切分成若干切片,每個切片包含一個字符。具體地, 該切分單元202包括:
[0104] -切片模塊2021,用于根據(jù)聯(lián)通分量將該圖像切分成X個切片,X為正整數(shù)。
[0105] -比較模塊2022,用于在X等于該圖像包含的字符數(shù)時調(diào)用該計算單元,以及在X 小于該圖像包含的字符數(shù)時根據(jù)橫向投影將該X個切片切分成若干個切片,直至每個切片 只包含一個字符。根據(jù)橫向投影切分時被切分的每個切片左右會進(jìn)行適當(dāng)?shù)姆糯?,以確保 字符包含在內(nèi)。所述橫向投影是將圖片中每一列的像素點數(shù)進(jìn)行統(tǒng)計,根據(jù)字符的最大最 小寬度以及像素點數(shù)來劃分。
[0106] 該計算單元203,用于根據(jù)每一切片的像素點,分別計算每一切片對應(yīng)的形狀上下 文。具體地,該計算單元用于對每一切片分別調(diào)用以下模塊:
[0107] -坐標(biāo)轉(zhuǎn)換模塊2031,用于將切片中每一像素點分別轉(zhuǎn)換成對數(shù)極坐標(biāo)。其中 將待轉(zhuǎn)換為對數(shù)