午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種識(shí)別圓形公章中文字的方法

文檔序號(hào):9866171閱讀:1179來(lái)源:國(guó)知局
一種識(shí)別圓形公章中文字的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于圖像處理、文字識(shí)別技術(shù)領(lǐng)域,尤其涉及一種識(shí)別圓形公章中文字的方法。
【背景技術(shù)】
[0002]目前0CR(0pticalCharacter Recognit1n,光學(xué)字符識(shí)別)技術(shù)已經(jīng)相當(dāng)成熟并應(yīng)用在各個(gè)領(lǐng)域。如手機(jī)上的各種拍攝名片即可將名片內(nèi)容導(dǎo)入通訊錄的程序、高速公路上拍攝車牌進(jìn)行號(hào)牌識(shí)別的儀器、掃描文檔將文檔圖片轉(zhuǎn)化為文字的程序等等。這些應(yīng)用都是借助OCR技術(shù)對(duì)相關(guān)文字圖片進(jìn)行分析轉(zhuǎn)化為文字信息,極大地降低了人們的工作量。
[0003]電信運(yùn)營(yíng)商也應(yīng)用了此技術(shù)來(lái)提高工作效率。如目前集團(tuán)業(yè)務(wù)占電信運(yùn)營(yíng)商的業(yè)務(wù)比重非常高,有的電信運(yùn)營(yíng)商派出客戶經(jīng)理去企業(yè)辦理集團(tuán)類業(yè)務(wù)時(shí),集團(tuán)企業(yè)需要簽訂相關(guān)的紙質(zhì)協(xié)議單,運(yùn)營(yíng)商的客戶經(jīng)理只要用手機(jī)拍攝協(xié)議單,利用OCR技術(shù),就可將協(xié)議單上的關(guān)鍵信息錄入運(yùn)營(yíng)商的后臺(tái)管理系統(tǒng),提高了客戶經(jīng)理的工作效率。同時(shí)集團(tuán)客戶簽訂的協(xié)議單作為回執(zhí)保留在客戶處,運(yùn)營(yíng)商不再需要保留紙質(zhì)的協(xié)議單,節(jié)省了 50%的協(xié)議單印刷量,實(shí)現(xiàn)了一定的節(jié)能減排。
[0004]這里存在的問題是,集團(tuán)類業(yè)務(wù)需要加蓋企業(yè)的公章,業(yè)務(wù)系統(tǒng)OCR只會(huì)識(shí)別正規(guī)的印刷體,而無(wú)法識(shí)別圓形的印章內(nèi)容,也就無(wú)法從協(xié)議單上讀出辦理業(yè)務(wù)的企業(yè)名稱,還是要靠客戶經(jīng)理手工輸入企業(yè)名稱,沒有實(shí)現(xiàn)完全的自動(dòng)化,工作效率還有待提高。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的不足,而提供一種識(shí)別圓形公章中文字的方法,使業(yè)務(wù)系統(tǒng)自動(dòng)識(shí)別出企業(yè)的名稱,進(jìn)一步提高運(yùn)營(yíng)商業(yè)務(wù)系統(tǒng)的工作效率。
[0006]本發(fā)明的目的是通過如下技術(shù)方案來(lái)完成的。這種識(shí)別圓形公章中文字的方法,步驟如下:
[0007]第I步:裁剪出一個(gè)覆蓋了蓋章位置的盡量小的圖片I。
[0008]第2步:在圖片I中,利用Hough變換找圓。
[0009]第3步:根據(jù)找到的圓形的圓心和半徑從圖片I中再次裁剪出一個(gè)只含有圓形的圖片2
[0010]第4步:二值化圖片2;
[0011]第5步,根據(jù)發(fā)明的算法將二值化后的圍繞圓心的文字圖像按順序“拉直”;
[0012]第6步:將“拉直”后的圖像內(nèi)容送入通用OCR模塊進(jìn)行文字識(shí)別。
[0013]其中,除了“步驟5”外,其它步驟都是成熟的技術(shù)。簡(jiǎn)單介紹如下:
[0014]Hough變換,將圖像空間內(nèi)具有一定關(guān)系的像元進(jìn)行聚類,尋找能把這些像元用某一解析形式聯(lián)系起來(lái)的參數(shù)空間累積對(duì)應(yīng)點(diǎn),用來(lái)找圖像中的直線和圓比較理想。
[0015]圖像的二值化,就是將圖像上的像素點(diǎn)的灰度值根據(jù)一定的閾值設(shè)置為O或255,也就是將整個(gè)圖像呈現(xiàn)出只有黑和白的視覺效果。實(shí)際應(yīng)用為便于分析,一般白色空白用O表示,黑色有效像素用I表示。
[0016]故本發(fā)明只討論如何將二值化后的公章內(nèi)圓形的文字“拉直”并重新組合為“平直”的文字。
[0017]二值化后的印章圖片采用一維數(shù)組存儲(chǔ),圖片的原點(diǎn)在左上角,按行存儲(chǔ),其中值為O表示空白像素,值為I表示黑色像素。
[0018]I,計(jì)算印章文字形成的圓圈底部和頂部到圓心的距離rl,r2;
[0019]2,計(jì)算印章文字形成的圓圈的開始和結(jié)束角度bl、b2
[0020]3,計(jì)算印章圈中每個(gè)文字的開始、結(jié)束角度al、a2
[0021]4,根據(jù)每個(gè)文字的角度al,a2和半徑rl,r2,經(jīng)過3次坐標(biāo)變換,可算得“擺正”后的點(diǎn)陣數(shù)據(jù)
[0022]5,按順序拼接每個(gè)“擺正”后的文字,形成“拉直”后的文字點(diǎn)陣數(shù)據(jù)。
[0023]下面分別介紹每一個(gè)步驟。
[0024]第一節(jié):計(jì)算印章文字形成的圓圈底部和頂部到圓心的距離rl,r2;
[°°25] 圓的直角坐標(biāo)圓心為(x0,y0),半徑為r。
[0026]采用圓心處的極坐標(biāo)分析,其和圖片實(shí)際存儲(chǔ)數(shù)據(jù)的直角坐標(biāo)轉(zhuǎn)換關(guān)系如下:
[0027]x = r*cos(0)+xO;
[0028]y = yO-r*sin(0);
[0029]設(shè):Rsum[]數(shù)組,記錄半徑從I到r的圓上的,360度內(nèi)整數(shù)度數(shù)對(duì)應(yīng)的有效點(diǎn)數(shù),數(shù)組下標(biāo)為半徑;
[0030]Data[]數(shù)組,存儲(chǔ)二值化后的印章圖片數(shù)據(jù),其中值為O表示空白像素,值為I表示黑色像素;
[0031]Width為印章圖片的點(diǎn)陣寬度;
[0032]步驟如下:
[0033]I,初始化半徑變量R為I;
[0034]2,判斷R是否小于印章半徑r;若小于r則進(jìn)入下一步,否則進(jìn)入步驟10
[0035]3,初始化角度變量A為O,計(jì)數(shù)器Sum為O;
[0036]4,判斷角度變量A是否小于360;若小于360則進(jìn)入步驟7,否則進(jìn)入步驟5
[0037]5,半徑R的圓上的點(diǎn)數(shù)已經(jīng)計(jì)算完畢,保存該半徑圓上的有效點(diǎn)數(shù)RSum[R]=Sum;
[0038]6,計(jì)算下一個(gè)半徑R上的點(diǎn)數(shù):半徑R遞增I,進(jìn)入步驟2;
[0039]7,對(duì)當(dāng)前的半徑R和角度A,進(jìn)行極坐標(biāo)和實(shí)際存儲(chǔ)數(shù)據(jù)的直角坐標(biāo)之間的轉(zhuǎn)化:X,y為直角坐標(biāo)的坐標(biāo)值,其中:x = R*cos(A*Vl80)+x0;y = y0-R*sin(A*3r/180);
[0040]8,判斷公章原始數(shù)據(jù)Data□中,該(x,y)對(duì)應(yīng)的值是否為有效像素;即判斷Data[y*width+x]是否為I,若為I,則計(jì)數(shù)器Sum遞增I并進(jìn)入下一步;否則直接進(jìn)入下一步;
[0041 ] 9,角度A遞增I度,進(jìn)入步驟4;
[0042]10,得到了半徑從I到r的各個(gè)圓上的整數(shù)角度對(duì)應(yīng)的點(diǎn)數(shù),即Rsum[]數(shù)組
[0043]11,在Rsum[]中,從半徑R為5開始向外遍歷每個(gè)半徑圓上的點(diǎn)數(shù),當(dāng)Rsum[R]為O時(shí),停止遍歷。此時(shí)求得的Rsum的下標(biāo)R為公章中心五角星的半徑;
[0044]12,繼續(xù)向外遍歷半徑R,當(dāng)Rsum[R]大于1時(shí),停止遍歷,記錄此時(shí)R為;rl,則rl為公章文字形成的圓圈底部的半徑;
[0045]13,繼續(xù)向外遍歷半徑1?,當(dāng)1?811111[1?]小于10時(shí),停止遍歷,記錄此時(shí)的1?為12,貝1扣2為公章文字形成的圓圈頂部的半徑;
[0046]至此,得到了印章文字形成的圓圈底部和頂部到圓心的距離rl,r2;
[0047]第二節(jié):計(jì)算印章文字形成的圓圈的開始和結(jié)束角度bl、b2;
[0048]設(shè):
[0049]JDArray□為標(biāo)記360度內(nèi)每個(gè)角度上是否有有效點(diǎn)的數(shù)組。數(shù)組下標(biāo)為角度,當(dāng)對(duì)應(yīng)角度A上無(wú)有效點(diǎn)時(shí),JDArray[A]為I;否則JDArray[A]為O。
[0050]步驟如下:
[0051 ] I)初始化角度A為0,掃描的半徑R為(rl+r2)/2;
[0052]2)判斷角度A是否小于360,若小于,則繼續(xù);否則進(jìn)入步驟9;
[0053]3)對(duì)當(dāng)前的半徑R和角度A,進(jìn)行極坐標(biāo)和實(shí)際存儲(chǔ)數(shù)據(jù)的直角坐標(biāo)之間的轉(zhuǎn)化:X,y為直角坐標(biāo)的坐標(biāo)值,其中:x = R*cos(A*Vl80)+x0;y = y0-R*sin(A*3r/180);
[0054]4)判斷公章原始數(shù)據(jù)Data□中,該(x,y)對(duì)應(yīng)的值是否為有效像素;即判斷Data[y*width+x]是否為1,若為1,則角度A遞增1,進(jìn)入步驟2;否則進(jìn)入下一步;
[0055]5)將掃描半徑R向r2增長(zhǎng),檢查是否存在有效點(diǎn)。設(shè)置TmpRSR;
[0056]6)判斷TmpR是否小于r2,若小于r2,則進(jìn)入下一步;否則說(shuō)明該角度上無(wú)有效點(diǎn),JDArray[A]設(shè)置為1,掃描下一個(gè)角度,角度A遞增1,進(jìn)入步驟2;
[0057]7)對(duì)當(dāng)前的半徑TmpR和角度A,進(jìn)行極坐標(biāo)和實(shí)際存儲(chǔ)數(shù)據(jù)的直角坐標(biāo)之間的轉(zhuǎn)化:x,y為直角坐標(biāo)的坐標(biāo)值,其中:x = TmpR*cos(A*3i/180)+x0 ; y = yO-TmpR*sin(A*jr/180);
[0058]8)判斷公章原始數(shù)據(jù)Data□中,該(x,y)對(duì)應(yīng)的值是否為有效像素;即判斷Data[y*width+x]是否為1,若為1,則說(shuō)明該角度上存在有效點(diǎn),需要掃描下一個(gè)角度,角度A遞增I,進(jìn)入步驟2;否則掃描半徑TmpR遞增I,進(jìn)入步驟6;
[0059]9)得到填充后的JDArray [],當(dāng)該數(shù)組對(duì)應(yīng)下標(biāo)角度A上無(wú)有效點(diǎn)時(shí),JDArray [A]為I;否則JDArray[A]為O;
[0060]10)遍歷JDArray [],當(dāng)JDArray[A]為I時(shí),JDArray [A] = JDArray [A-1 ] +1;即將空白區(qū)域連接起來(lái);顯然,若JDArray [A]非O,JDArray [A+1 ]為O,則JDArray [A]的值為角度A前連續(xù)空白的角度數(shù);
[0061 ] 11)設(shè)最大的連續(xù)空白角度值JdMax為O;開始角度值JdStart為O;
[0062]12)令角度A從359度向O度后向遍歷JDArray [],當(dāng)JDArray [A]為O時(shí),說(shuō)明該角度為文字區(qū)域,繼續(xù)遍歷JDArray[];否則進(jìn)入下一步;
[0063]13)判斷JdMax是否小于當(dāng)前的JDArray[A],若小于,貝丨』更新JdMax為JDArray[A];記錄JdStart=A-JDArray[A];
[0064]14)循環(huán)變量A = A-JDArray[A],跳過連續(xù)的空白,進(jìn)入第12步,繼續(xù)遍歷JDArray[];
[0065]15)當(dāng)JDArray[]遍歷結(jié)束時(shí),此時(shí)JdStart指示文字開始的角度bl ,JdStart+JdMax則指示文字結(jié)束的角度b2;
[0066]至此,得到了印章文字形成的圓圈的開始角度bl,結(jié)束角度b2
[0067]第三節(jié):計(jì)算印章圈中每個(gè)文字的開始、結(jié)束角度al、a2
[0068]設(shè):
[0069 ]AI Array []為文字的開始角度數(shù)組,A2Array []為文字的結(jié)束角度數(shù)組;
[0070]Count為文字的個(gè)數(shù);
[0071 ]Step為掃描經(jīng)過O度的次數(shù);
[0072]計(jì)算每個(gè)文字的角度步驟如下:
[0073]I)設(shè)置A為bl,即文字圈開始的角度;
[0074]2)判斷A是否小于結(jié)束角度b2,若小于,則進(jìn)入下一步;否則進(jìn)入步驟7;
[0075]3)記錄此時(shí)一個(gè)文字的開始角度,AlArray[Count] =A;同時(shí)設(shè)置Step為O;
[0076]4)判斷JDArray [A]是否為O并且Step小于2。若條件不滿足,則記錄此時(shí)一個(gè)文字的結(jié)束角度A2Array[Count] =A,文字個(gè)數(shù)Count遞增I,掃描角度A = A_JDArray[A],即跳過連續(xù)空白區(qū)域,進(jìn)入步驟2;若條件滿足,則進(jìn)入下一步;
[0077]5)掃描角度A遞減I;
[0078]6)判斷A是否小于0,若小于,則令A(yù)為359,Step為I,進(jìn)入步驟4;否則直接進(jìn)入步驟4;
[0079]7)此時(shí)得到每個(gè)文字的開始角度數(shù)組AlArray[]、結(jié)束角度數(shù)組A2Array[]和文字的個(gè)數(shù)Count
[0080]至此,得到了印章中每個(gè)文字的開始角度al數(shù)組AlArray[]、結(jié)束角度a2數(shù)組A2Array[]以及文字?jǐn)?shù)量Count
[0081]第四節(jié):根據(jù)每個(gè)文字的角度al,a2和半徑rl,r2,經(jīng)過3次坐標(biāo)變換,可算得“擺正”后的點(diǎn)陣數(shù)據(jù)
[0082]各關(guān)鍵點(diǎn)和線段介紹如下:
[0083]公章的圓心在(x2,y2)坐標(biāo)系的原點(diǎn);
[0084]粗體框內(nèi)為傾斜的文字,其所處直角坐標(biāo)系為(x,y)坐標(biāo)系;
[0085]傾斜的文字左側(cè)底部和x2軸的夾角為Al,右側(cè)底部和x2軸的夾角為A2;
[0086]作一條射線平分文字左側(cè)和右側(cè)的夾角,該射線垂直于文字的(x,y)坐標(biāo)系內(nèi)的X軸;
[0087]圓心到文字底部即X軸的距離為rl,到文字頂部的距離為r2;
[0088]文字底部中心到y(tǒng)2軸的距離為L(zhǎng)I,到x2軸的距離為L(zhǎng)4;
[0089]文字底部寬度的一半為L(zhǎng)2;
[0090]由于三角形的平行關(guān)系,L2,L3,L5構(gòu)成一個(gè)直角三角形;
[0091]算法的目標(biāo)是:求得(x,y)坐標(biāo)系內(nèi)的點(diǎn)陣數(shù)據(jù),印章文字在該坐標(biāo)系是“正”的。
[0092]這里存在4個(gè)坐標(biāo)系:
[0093]I,傾斜的文字本身的坐標(biāo)系(X,y);
[0094]2,(x,y)坐標(biāo)系順時(shí)針旋轉(zhuǎn)Θ角后變?yōu)樗降?Xl,yl)坐標(biāo)系;
[0095]3,(Xl,yl)坐標(biāo)系水平平移L1-L3,垂直平移L4+L5后變?yōu)閳A心處的(x2,y2)坐標(biāo)系;
[0096]4,( x2,y2)坐標(biāo)系根據(jù)圓心的坐標(biāo)(x0,y0)變換為(x3,y3)坐標(biāo)系[0097 ](x3,y3)坐標(biāo)系內(nèi)存儲(chǔ)原始的點(diǎn)陣數(shù)據(jù)
[0098]其中:
[0099]Al,A2為第三節(jié)求得的單個(gè)文字的開始、結(jié)束角度al,a2;
[0100]rl,r2為第一節(jié)求得的文字圈底部和頂部到圓心處的距離;
[0101]α為Al和A2的夾角的一半,值為(Al-A2)/2
[0102]Θ為(x,y)坐標(biāo)系順時(shí)針旋轉(zhuǎn)到(Xl,yl)坐標(biāo)系的角度,值為(Α1+Α2-π)/2;
[0103]LI =rl*cos( (Al+A2)/2);
[0104]L2 = rl*tan(a);
[0105]L3 = L2*cos(231-0);
[0106]L4 = rl*sin( (Al+A2)/2);
[0107]L
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1