一種圖像識(shí)別中傾斜文字判斷方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖像識(shí)別領(lǐng)域,特別涉及一種圖像識(shí)別中傾斜文字判斷方法。
【背景技術(shù)】
[0002] 隨著社會(huì)的發(fā)展和科技的進(jìn)度,種類繁多的視聽(tīng)設(shè)備豐富了人們的日常生活;具 有拍照、攝像功能的電子設(shè)備隨處可見(jiàn),并隨著智能手機(jī)的普及逐漸滲透到每個(gè)人的日常 生活中,大量的視聽(tīng)設(shè)備產(chǎn)生了數(shù)量巨大的圖像、影像,并伴隨著網(wǎng)絡(luò)的發(fā)展和社交平臺(tái)的 分享而快速傳播;大量的圖像傳播的同時(shí),人們對(duì)于圖像識(shí)別和圖像搜索技術(shù)的需求也在 快速增長(zhǎng),可以說(shuō)圖像識(shí)別和圖像搜索將成為搜索技術(shù)的發(fā)展方向。
[0003] 在眾多的圖像識(shí)別技術(shù)中,對(duì)圖像文字的識(shí)別技術(shù)顯得尤為重要,這是因?yàn)閳D像 文字往往比單純圖像包含更加重要的可利用信息,而且圖像文字識(shí)別技術(shù)所應(yīng)用的領(lǐng)域也 很重要,比如說(shuō):銀行簽名的識(shí)別,交通管理網(wǎng)絡(luò)中對(duì)于車牌號(hào)的追蹤和識(shí)別,網(wǎng)絡(luò)安全中 對(duì)于驗(yàn)證碼的識(shí)別;這些應(yīng)用都關(guān)系到重要的經(jīng)濟(jì)活動(dòng)或者社會(huì)管理活動(dòng)。
[0004] 目前圖像文字識(shí)別中的難點(diǎn)在于:常見(jiàn)的待識(shí)別圖像文字中往往包含各種噪聲的 干擾,比如說(shuō)背景噪聲、線條噪聲、污染物噪聲等;而且圖像中的文字往往還具有一些扭曲 特征,比如說(shuō)旋轉(zhuǎn)、傾斜等,目前在去除噪聲干擾方面已經(jīng)取得了良好的效果;但是對(duì)于傾 斜等扭曲特征的判斷和矯正仍然困難重重;而且現(xiàn)有技術(shù)中在進(jìn)行圖像中文字的識(shí)別時(shí), 首先需要將圖像中的字符串切分開,形成包含單個(gè)文字的小圖片,然后使用一定的方法對(duì) 切分后的文字進(jìn)行識(shí)別。而進(jìn)行文字切分最常用的方法為投影法,即是將圖像文字二值化 處理后,通過(guò)垂直投影找到兩個(gè)文字之間的分界線,根據(jù)分界線將文字切分開來(lái)。這樣的 切分方式在文字有傾斜的情況下,會(huì)變得比較復(fù)雜;因?yàn)槲淖謨A斜的時(shí)候,相鄰文字間經(jīng)過(guò) 垂直投影后的像素點(diǎn)可能會(huì)有重疊,這樣就無(wú)法找到兩個(gè)文字之間正常的界限;進(jìn)而不能 有效的對(duì)文字進(jìn)行切分。
[0005] 將傾斜的文字矯正,對(duì)于圖像識(shí)別的意義重大;想要矯正傾斜文字,首先需要識(shí)別 出文字傾斜方向和角度。目前有采用Hough變換的方法來(lái)得到傾斜的角度,進(jìn)而對(duì)文字進(jìn)行 矯正,但是該方法的計(jì)算量特別大,很難滿足識(shí)別的實(shí)時(shí)性的需求。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)中所存在的上述不足,提供一種圖像識(shí)別中傾斜 文字判斷方法。本方法在圖像中選取一行向量,通過(guò)將該行向量與文字每個(gè)筆畫上的左右 兩側(cè)的交點(diǎn)作為起始點(diǎn),分別向左右兩個(gè)方向追蹤筆畫的邊緣點(diǎn)。如果筆畫向左(或向右) 傾斜,那么向右(或向左)尋找的像素?cái)?shù)量就非常有限,若追蹤到的像素點(diǎn)數(shù)量達(dá)到設(shè)置的 閾值,則認(rèn)為此次追蹤有效;計(jì)算每次追蹤的起點(diǎn)到終點(diǎn)的傾斜角度,通過(guò)分別統(tǒng)計(jì)向左和 向右有效追蹤類元素的個(gè)數(shù),確定文字的傾斜方向。在此基礎(chǔ)上,將對(duì)應(yīng)類中最小的角度確 定為文字的傾斜角度。通過(guò)本發(fā)明方法來(lái)判斷文字傾斜角度的計(jì)算量較小,科學(xué)準(zhǔn)確,實(shí)現(xiàn) 過(guò)程簡(jiǎn)單,便于使用,具有較好的實(shí)時(shí)性。
[0007] 為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了以下技術(shù)方案:
[0008] 一種圖像識(shí)別中傾斜文字判斷方法,包含以下實(shí)現(xiàn)步驟:
[0009] (1-1)在圖像中選擇一行向量,確定該行向量與圖像中文字每個(gè)筆畫相交的最左 側(cè)像素點(diǎn)坐標(biāo)值和最右側(cè)像素點(diǎn)坐標(biāo)值。
[0010] (1-2)以所述行向量與每個(gè)筆畫相交的最左側(cè)像素點(diǎn)為起點(diǎn),向左上方追蹤對(duì)應(yīng) 筆畫的邊緣點(diǎn),并將判斷結(jié)果存于Vectorl中;具體的判斷過(guò)程如下:
[0011]以所述行向量與每個(gè)相交筆畫的最左側(cè)像素點(diǎn)為起點(diǎn);優(yōu)先判斷與其相鄰的左上 方像素點(diǎn)是否為〇;如果為〇,則以上一像素點(diǎn)為基礎(chǔ)繼續(xù)判斷與其相鄰的左上方像素點(diǎn)是 否為〇;
[0012]否則,以上一像素點(diǎn)為基礎(chǔ)判斷其正上方的像素點(diǎn)是否為0;依次循環(huán),直到某點(diǎn) 相鄰的左上方和正上方像素點(diǎn)均不為0,結(jié)束判斷;并將該點(diǎn)作為此次判斷的終點(diǎn)。
[0013] 下面以其中一個(gè)最左側(cè)像素點(diǎn)(第一左側(cè)交點(diǎn)A)坐標(biāo)(Xa,Ya)為例說(shuō)明判斷過(guò)程:
[0014] (1-2-1)以第一左側(cè)交點(diǎn)A點(diǎn)為起點(diǎn),首先判斷A點(diǎn)的相鄰左上方像素點(diǎn)A1的灰度 值是否為〇(灰度值為〇表示該像素點(diǎn)顏色為黑色);如果為〇,則以A1點(diǎn)為新的起點(diǎn),繼續(xù)判 斷該點(diǎn)A1相鄰的左上方像素點(diǎn)All的灰度值是否為0;
[0015] 否則,以第一左側(cè)交點(diǎn)A為基礎(chǔ)判斷該點(diǎn)(A)的正上方像素點(diǎn)A2的灰度值是否為0, 如果為0,則以A2為基礎(chǔ)判斷其左上方像素點(diǎn)(A21)的坐標(biāo)值是否為0;依次循環(huán);
[0016] (1-2-2)直到判斷出某點(diǎn)的左上方像素點(diǎn)和正上方像素點(diǎn)的灰度值均不為0,結(jié)束 判斷,并以該點(diǎn)為本次判斷的終點(diǎn)(第一左側(cè)終點(diǎn)A_),假設(shè)坐標(biāo)值為(夂
[0017] (1-2-3)判斷Α,Α?兩點(diǎn)之間的距離h是否達(dá)到Q預(yù)設(shè)的閾值Q;如果達(dá)到閾值,則認(rèn) 為該終點(diǎn)為有效終點(diǎn)Aend有效;
[0018] (1-2-4)計(jì)算A,AEND兩點(diǎn)之間的正切值:
,并將該值存于類 Vectorl 中。
[0019] (1-3)以所述行向量與每個(gè)筆畫相交的最右側(cè)坐標(biāo)為起點(diǎn),向右上方追蹤對(duì)應(yīng)筆 畫的邊緣點(diǎn),并將判斷結(jié)果存于Vectorf中;具體的判斷過(guò)程如下:
[0020] 以所述行向量與每個(gè)相交筆畫的最右側(cè)像素點(diǎn)為起點(diǎn);優(yōu)先判斷與其相鄰的右上 方像素點(diǎn)是否為〇;如果為〇,則以上一像素點(diǎn)為基礎(chǔ)判斷與其相鄰的右上方像素點(diǎn)是否為 〇;
[0021] 否則,以上一像素點(diǎn)為基礎(chǔ)判斷與其相鄰的正上方像素點(diǎn)是否為0;依次循環(huán),直 到某點(diǎn)相鄰的右上方和正上方像素點(diǎn)均不為〇,結(jié)束判斷;并將該點(diǎn)作為此次判斷的終點(diǎn)。 [0022]下面以其中一個(gè)最右側(cè)交點(diǎn)(第一右側(cè)交點(diǎn)B)坐標(biāo)(Xb,Yb)為起點(diǎn)為例說(shuō)明判斷過(guò) 程:
[0023] (1-3-1)首先判斷與B點(diǎn)相鄰的右上方像素點(diǎn)B1的灰度值是否為0;如果為0,判斷 該點(diǎn)(B1)相鄰的右上方像素點(diǎn)B11的灰度值是否為0;
[0024]否則,以B點(diǎn)為基礎(chǔ),判斷與其相鄰的正上方像素點(diǎn)B2的灰度值是否為0;如果為0, 則以B2為基礎(chǔ)判斷與其相鄰的右上方像素點(diǎn)B21的坐標(biāo)值是否為0;依次循環(huán);
[0025] (1-3-2)直到判斷出某點(diǎn)的右上方像素點(diǎn)和正上方像素點(diǎn)的灰度值均不為0,結(jié)束 判斷,并以該點(diǎn)為終點(diǎn)(第一右側(cè)終點(diǎn)Bend),假設(shè)坐標(biāo)值為
[0026] (1-3-3)判斷B,BEND兩點(diǎn)之間的距離h是否達(dá)到預(yù)設(shè)的閾值Q;如果達(dá)到閾值,則認(rèn) 為該終點(diǎn)為有效終點(diǎn)B?有效;
[0027] (1-3-4)計(jì)算B,BEND兩點(diǎn)之間的正切值:
,并將該值存于類 Vector2 中。
[0028] (1-4)比較Vectorl與Vector2的元素個(gè)數(shù);如果Vectorl >Vector2,則判定文字向 左傾斜;如果Vectorl <Vector2,則判定文字向右傾斜。
[0029] (1-5)將選擇所述Vectorl與Vector2中元素較多的類,作為傾斜角度判斷的依據(jù); 選擇其中正切值最小的對(duì)應(yīng)角度值Θ作為文字的傾斜角度。
[0030] 在判斷出文字的傾斜方向和傾斜角度的基礎(chǔ)上,本發(fā)明提供一種圖像識(shí)別中傾斜 文字的矯正方法,在傾斜角度Θ的基礎(chǔ)上,通過(guò)仿射變換來(lái)實(shí)現(xiàn)傾斜文字的矯正。具體的過(guò) 程包含以下實(shí)現(xiàn)步驟:
[0031] (2-1)在源圖像上選擇3組坐標(biāo)值,根據(jù)傾斜角度,計(jì)算出矯正后的目標(biāo)圖像上的 對(duì)應(yīng)坐標(biāo)值。
[0032]作為一種優(yōu)選,若文字向左傾斜Θ,則源圖像上的三組點(diǎn)坐標(biāo)為:(〇,〇), (image, cols-1,0),(image, cols-1,image .rows-l);對(duì)應(yīng)(第一行,第一列)、(第一行,最后 一列)、(最后一行,最后一列)坐標(biāo)目標(biāo)圖像上的三組坐標(biāo)為:((image · rows-1 )*tan9/2, 0),( image .cols_l,0),(image · cols_l-( image ·rows-1 )*tan9/2,image ·rows-1),其中 image .rows-l是圖像最后一行的行坐標(biāo)值,image .cols-1是圖像最后一列的列坐標(biāo)值。 [0033]或者,若文字向右傾斜,則源圖像上的三組點(diǎn)坐標(biāo)為:(0,0),( image · cols-1,0), (0,image.rows-l);目標(biāo)圖像上對(duì)應(yīng)的三組 *#S:(0,0),((image.cols-1-((image.rows-l)*tan9/2),0),((image.rows-l)*tan9/2,image.rows-l)〇
[0034] (2-2)根據(jù)目標(biāo)圖像和源圖像的坐標(biāo)對(duì)應(yīng)關(guān)系,計(jì)算出對(duì)應(yīng)的仿射變換矩陣M。
[0035] (2-3)利用計(jì)算出來(lái)的仿射變換矩陣Μ將源圖像的對(duì)應(yīng)像素點(diǎn)映射到目標(biāo)圖像上, 實(shí)現(xiàn)對(duì)傾斜文字圖像的矯正。
[0036] 作為一種優(yōu)選,所述步驟(2-2)中仿射變換矩陣Μ的計(jì)算采用getAffineTransform 函數(shù)。
[0037]作為一種優(yōu)選,所述步驟(2-3)中的矯正映射采用warpAffine函數(shù)來(lái)實(shí)現(xiàn)。
[0038]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:本發(fā)明提供一種圖像識(shí)別中傾斜文字判斷 方法,通過(guò)在圖像文字選擇一個(gè)行向量,找出所述行向量與文字每個(gè)筆畫相交的最左側(cè)像 素點(diǎn)和最右側(cè)像素點(diǎn),以上述像素點(diǎn)為基礎(chǔ),分別向左上方和右上方追蹤對(duì)應(yīng)筆畫的邊緣 點(diǎn),判斷方式簡(jiǎn)單可行,可靠性高;當(dāng)追蹤距離大于設(shè)定的閾值時(shí),判斷該次追蹤有效,通過(guò) 設(shè)置閾