版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> (二零 屆)</b></p><p> 手寫數(shù)字識別技術(shù)研究</p><p> 所在學(xué)院 </p><p> 專業(yè)班級 計(jì)算機(jī)科學(xué)與技術(shù) </p>&
2、lt;p> 學(xué)生姓名 學(xué)號 </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p> 摘要:手寫數(shù)字識別是光學(xué)字符識別技術(shù)的一個(gè)分支,它研究的對象是:如何利用電子計(jì)算機(jī)自動(dòng)辨認(rèn)人手寫在紙張
3、上的阿拉伯?dāng)?shù)字。</p><p> 手寫體數(shù)字識別是自動(dòng)模式識別中一個(gè)非?;钴S的研究領(lǐng)域。本文針對原有數(shù)字識別處理技術(shù)中識別特征向量單一的問題,提出了基于模板匹配的方法,來提高數(shù)字識別系統(tǒng)的識別速度和識別率。本文首先對數(shù)字識別處理技術(shù)及處理流程進(jìn)行了概述,對模板匹配及其他常規(guī)算法進(jìn)行介紹,并對算法的權(quán)值、激活函數(shù)等進(jìn)行了改進(jìn)。使其能夠適應(yīng)噪聲干擾,其二值化后的字符圖像能夠很好地保持本來形態(tài)。最后,對基于模板匹配
4、的數(shù)字識別系統(tǒng)進(jìn)行了實(shí)現(xiàn)。在已有的通用評價(jià)標(biāo)準(zhǔn)下,通過對其識別率的分析,證實(shí)該系統(tǒng)提高了數(shù)字識別的準(zhǔn)確率。同時(shí),對比于單一識別器,經(jīng)系統(tǒng)集成后測試,其識別速度也有所提高。</p><p> 關(guān)鍵詞:手寫數(shù)字識別;模式識別;樣本庫</p><p> Abstract:Handwritten numerals recognition is optical character recogni
5、tion technology, it is a branch of the object of study is: how to use electronic computer automatically recognized people handwritten on paper Arabic numerals.</p><p> The handwritten digits identification
6、is automatic recognition of a very active field of research. Based on the original digital identification processing recognition feature vector single problems, and put forward based on template matching method, to impro
7、ve digital identification system identification speed and recognition rate. In this paper, first digital identification processing technology and process were summarized, and the other for template matching conventional
8、algorithm for algorith</p><p> Key words: Handwritten numeral recognition; Pattern recognition; Sample library </p><p><b> 目錄</b></p><p> 1 字符識別概述1</p><p
9、> 1.1 課題研究背景意義1</p><p> 1.2 字符識別概述1</p><p> 1.3 字符識別的分類2</p><p> 1.4 研究的對象及目標(biāo)2</p><p> 1.4.1研究的對象2</p><p> 1.4.2研究的目標(biāo)2</p><p>
10、; 2 模板匹配算法及改進(jìn)3</p><p> 2.1 模板匹配算法的描述3</p><p> 2.2 圖像匹配的數(shù)學(xué)描述4</p><p> 2.3 算法的改進(jìn)及圖示5</p><p> 3 圖像的預(yù)處理8</p><p> 3.1 圖像的平滑去噪8</p><
11、;p> 3.2 BMP圖像的存儲(chǔ)結(jié)構(gòu)9</p><p> 3.3 圖像的顏色處理11</p><p> 3.4 圖像的二值化11</p><p> 3.5 圖像的細(xì)化16</p><p> 3.5.1 細(xì)化的定義16</p><p> 3.5.2 細(xì)化的要求16</p>
12、<p> 4 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)15</p><p> 4.1 Visual C++ 6.0簡介15</p><p> 4.1.1 運(yùn)行環(huán)境安裝:15</p><p> 4.1.2 MFC概述15</p><p> 4.2 系統(tǒng)界面按扭的生成15</p><p> 4.3 模
13、板計(jì)算的過程17</p><p> 4.3.1模板計(jì)算設(shè)計(jì)思想17</p><p> 4.3.2 代碼實(shí)現(xiàn)17</p><p> 4.4 樣本測試的實(shí)現(xiàn)19</p><p> 4.4.1 樣本測試設(shè)計(jì)思想19</p><p> 4.4.2 代碼實(shí)現(xiàn)19</p><p>
14、 5 系統(tǒng)運(yùn)行及測試24</p><p> 5.1 系統(tǒng)的運(yùn)行24</p><p> 5.2 系統(tǒng)的測試24</p><p> 5.3 系統(tǒng)的評價(jià)25</p><p><b> 致謝25</b></p><p><b> 參考文獻(xiàn):28</b>&
15、lt;/p><p> 附 錄29</p><p><b> 1 字符識別概述</b></p><p> 1.1 課題研究背景意義</p><p> 手寫數(shù)字識別(Handwritten Numeral Recognition)是光學(xué)字符識別技術(shù)(Optical Character Recognition,
16、簡稱OCR)的一個(gè)分支,它研究的對象是:如何利用電子計(jì)算機(jī)自動(dòng)辨認(rèn)人手寫在紙張上的阿拉伯?dāng)?shù)字。</p><p> OCR是模式識別的一個(gè)分支,按字體分類主要分為印刷體識別和手寫體識別兩大類.而手寫體識別又可分為受限手寫體和不受限識別體,按識別方式有課分為在線識別和脫機(jī)識別。在整個(gè)OCR領(lǐng)域中,最為困難的就是脫機(jī)手寫字符的識別。到目前為止,盡管人們在脫機(jī)手寫英文,漢字識別的研究中已取得很多可喜成就,但距實(shí)用還有一
17、定距離。而在手寫數(shù)字識別這個(gè)方向上,經(jīng)過多年研究,研究工作者已經(jīng)開始把它向各種實(shí)際應(yīng)用推廣,為手寫數(shù)據(jù)的高速自動(dòng)輸入提供了一種解決方案。</p><p> 字符識別處理的信息可分為兩大類:一類是文字信息,處理的主要是用各國家,各民族的文字(如:漢字,英文等)書寫或印刷的文本信息,目前在印刷體和聯(lián)機(jī)手寫方面技術(shù)已趨向成熟,并推出了很多應(yīng)用系統(tǒng);另一類是數(shù)據(jù)信息,主要是由阿拉伯?dāng)?shù)字及少量特殊符號組成的各種編號和統(tǒng)計(jì)
18、數(shù)據(jù),如:郵政編碼,統(tǒng)計(jì)報(bào)表,財(cái)務(wù)報(bào)表,銀行票據(jù)等等,處理這類信息的核心技術(shù)是手寫數(shù)字識別。因此,手寫數(shù)字的識別研究有著重大的現(xiàn)實(shí)意義,一旦研究成功并投入應(yīng)用,將產(chǎn)生巨大的社會(huì)和經(jīng)濟(jì)效益。</p><p> 1.2 字符識別概述</p><p> 計(jì)算機(jī)硬件的迅速發(fā)展以及計(jì)算機(jī)應(yīng)用領(lǐng)域的不斷開拓,急切地需要計(jì)算機(jī)能夠更有效的感知諸如聲音、文字、圖像等人類賴以發(fā)展自身、改造環(huán)境所運(yùn)用的信
19、息資料。但就一般意義來說,目前計(jì)算機(jī)卻無法感知他們,鍵盤,鼠標(biāo)等輸入設(shè)備,對于五花八門的外部世界顯得無能為力。雖然電視攝象機(jī)、圖文掃描儀、話筒等設(shè)備已解決了上述非電信號的轉(zhuǎn)換,并與計(jì)算機(jī)聯(lián)機(jī),但這并不能使計(jì)算機(jī)真正知道所接受的究竟是什么信息。計(jì)算機(jī)對外部世界感知能力的低下,成為開拓計(jì)算機(jī)應(yīng)用的瓶頸,也與其高超的運(yùn)算能力形成強(qiáng)烈的對比。因此,著眼與提高計(jì)算機(jī)感知外部信息能力的學(xué)科----模式識別得到了迅速的發(fā)展。在模式識別領(lǐng)域中,手寫字符
20、的識別是一個(gè)非?;钴S的研究方向。但這方面的研究工作已有很多,其中不少成果得到了廣泛的應(yīng)用。但是由于手寫字符拓?fù)浣Y(jié)構(gòu)的多樣性,目前已有的手寫字符識別體統(tǒng)在對無限制手寫字符進(jìn)行分類時(shí),始終存在這樣或那樣的缺陷。</p><p> 字符識別是模式識別領(lǐng)域中的一個(gè)非?;钴S的分支。這一方面是由于問題本身的難度使之成為一個(gè)極具挑戰(zhàn)性的課題。另一方面,是因?yàn)樽址R別不是一項(xiàng)孤立的應(yīng)用技術(shù),其中包含了模式識別領(lǐng)域中其它分之都會(huì)
21、遇到的一些最基本的和共性的問題。也正是由于字符識別技術(shù)的飛速發(fā)展,才促使識別領(lǐng)域和圖像分析發(fā)展為一個(gè)成熟的科學(xué)領(lǐng)域。</p><p> 字符識別技術(shù)的研究主要集中在特征抽取和模式匹配兩個(gè)方面,這一直是光學(xué)字符識別(OCR)技術(shù)的兩大關(guān)鍵所在。由掃描儀轉(zhuǎn)化后的字符二值圖像中各點(diǎn)的值,可以看成是該字符的一組特征。但由于這組特征的數(shù)量較大,而每個(gè)特征所含的信息量很少,因此有必要通過映射或變換的方法將信息集中到少量的特
22、征中。這個(gè)過程就叫特征抽取。選擇穩(wěn)定的,分類能力強(qiáng)的特征是字符識別系統(tǒng)的核心。</p><p> 在識別過程中,對待識別的字符進(jìn)行特征抽取后,就要將這些特征與特征庫中的特征進(jìn)行比較,進(jìn)行分類,這個(gè)過程稱為特征匹配。特征匹配方法可分為完全匹配法和近似匹配法。完全匹配法就是將為未知的字符的特征向量X與特征庫中的所有特征向量(Yj, j=1,2,…n)逐一進(jìn)行比較,若X=Yi,則Yi所對應(yīng)的字符就是識別結(jié)果。否則,就
23、拒識。近似匹配法可進(jìn)一步分為相關(guān)性匹配法,馳豫匹配法和樹搜索法。</p><p> 1.3 字符識別的分類</p><p> 字符識別按輸入方式的不同可分為聯(lián)機(jī)識別(也稱為在線識別)和脫機(jī)識別(也稱為離線識別)。聯(lián)機(jī)識別是對所書寫的字符進(jìn)行實(shí)時(shí)識別,即寫即識。所以聯(lián)機(jī)識別技術(shù)往往結(jié)合字符的筆劃順序來進(jìn)行識別。脫機(jī)識別方法中,首先對已經(jīng)寫在紙上的字符通過掃描儀轉(zhuǎn)化為二值圖像,然后再對字
24、符的二值圖像進(jìn)行識別。書寫與識別可以分開進(jìn)行。因此,脫機(jī)識別技術(shù)中不涉及字符的書寫順序。</p><p> 字符識別技術(shù)根據(jù)別識別的字符的類型通??煞譃橛∷Ⅲw識別和手寫體識別兩大類,而手寫體識別又可分為限制手寫體識別和無限制手寫體識別(也稱為自由手寫體識別)。印刷體識別是將印刷刊物上的字符掃描轉(zhuǎn)化為二值圖象并進(jìn)行識別,是將已有刊物上的數(shù)據(jù)大量輸入計(jì)算機(jī)的最有效的方法。</p><p>
25、 1.4 研究的對象及目標(biāo)</p><p> 1.4.1研究的對象</p><p> 我們的研究對象是無限制手寫數(shù)字,這方面目前已經(jīng)有大量的研究成果。但是,由于手寫數(shù)字不同數(shù)字之間字形相差不大,使得準(zhǔn)確區(qū)分某些數(shù)字相當(dāng)困難;而且數(shù)字雖然只有十種,筆劃簡單,但同一數(shù)字寫法千差萬別,全世界各個(gè)國家各個(gè)地區(qū)的人都用,其書寫上帶有明顯的區(qū)域特性,很難完全做到兼顧世界各種寫法的極高識別率的通用
26、性數(shù)字識別系統(tǒng)。正因?yàn)槿绱?,手寫字符識別對于廣大研究者來說,是一個(gè)充滿魅力的領(lǐng)域。</p><p> 1.4.2研究的目標(biāo)</p><p> 我認(rèn)為,手寫數(shù)字識別應(yīng)用系統(tǒng)性能的關(guān)鍵與瓶頸仍然在于手寫數(shù)字識別核心算法的性能上,怎么解決手寫數(shù)字識別系統(tǒng)應(yīng)用中的難點(diǎn),以改善核心算法,突破瓶頸是我們要首先考慮的問題,只有解決了難點(diǎn),在核心算法上有了新的突破,才能研究出零誤識率和底拒識率的高速識
27、別算法,達(dá)到我們的最終目標(biāo)。 </p><p> 2 模板匹配算法及改進(jìn)</p><p> 2.1 模板匹配算法的描述</p><p> 在機(jī)器識別事物的過程中,常需把不同傳感器或同一傳感器在不同時(shí)間、不同成像條件下對同一景物獲取的兩幅或多幅圖像在空間上對準(zhǔn),或根據(jù)己知模式到另一幅圖中尋找相應(yīng)的模式,這就叫做匹配。若將已知模式的圖像稱為模板(如圖2—1)
28、,在左側(cè)的待匹配圖像中找到對應(yīng)于右側(cè)模板圖像的過程即為模板匹配。因?yàn)橹挥挟?dāng)同一場景的兩幅圖像在同一坐標(biāo)系下時(shí),才能進(jìn)行</p><p> 待匹配圖像 模板</p><p> 圖2—1 待匹配圖像和模板圖像的示意圖</p><p> 相似性比較,所以模板匹配的過程實(shí)際上也就是把一幅圖像變換到另一
29、幅圖像的坐標(biāo)系過程。圖像的模板匹配就是先給定一幅圖像,然后到另一幅圖像中去查找這幅圖像,如果找到了,則匹配成功。這看起來好像很簡單,因?yàn)槲覀円谎劬湍芸闯鲆环鶊D中是否包含另一幅圖像,遺憾的是電腦并不具有人眼的強(qiáng)大的視覺的功能,因而需要電腦去判定一幅圖片中是否包含另一幅圖片是件不容易的事情。對于機(jī)器視覺系統(tǒng)而言,實(shí)現(xiàn)匹配首先要對圖像進(jìn)行預(yù)處理。先計(jì)算模板圖片的特征值,并存儲(chǔ)到計(jì)算機(jī)中。然后計(jì)算待測試樣板圖片的特征值,與計(jì)算機(jī)中模板進(jìn)行比較,
30、運(yùn)用匹配算法實(shí)現(xiàn)匹配。整個(gè)過程如圖2—2所示。</p><p> 圖2—2 圖像匹配系統(tǒng)示意圖 </p><p> 從上述圖像匹配系統(tǒng)結(jié)構(gòu)圖中可以看出實(shí)現(xiàn)匹配要考慮以下幾方面內(nèi)容:</p><p> (1)圖像的數(shù)據(jù)結(jié)構(gòu)類型:即描述像素灰度值和像素光學(xué)特征值之間的信息。</p><p> (2)圖像的特征空間:由特征數(shù)據(jù)組成,這
31、些特征數(shù)據(jù)可以是原始像素?cái)?shù)據(jù),也可以是經(jīng)過處理后提取的圖像特征數(shù)據(jù)。</p><p> (3)存儲(chǔ):將圖像處理的一些相關(guān)信息資料存儲(chǔ)在計(jì)算機(jī)中,了解其在計(jì)算機(jī)中存儲(chǔ)的結(jié)構(gòu)。</p><p> (4)匹配算法:是實(shí)現(xiàn)匹配的基本思想和方法,是解決匹配問題的關(guān)鍵所在。算法的實(shí)現(xiàn)涉及到相似性度量函數(shù)的正確選擇,相似性度量函數(shù)是兩幅圖像相比較的相似性度量,直接影響著匹配的速度和精度。</p
32、><p> (5)搜索方法:即遍歷圖像時(shí)的查找策略,正確的選擇搜索方法直接影響到匹配的速度。</p><p> 在基于圖像處理的應(yīng)用領(lǐng)域中,對于圖像匹配的研究可以說一直都是數(shù)字圖像處理技術(shù)和計(jì)算機(jī)視覺理解的重要研究內(nèi)容。圖像匹配在機(jī)器視覺、工業(yè)自動(dòng)模式識別、醫(yī)學(xué)圖像的定位等方面都有著重要意義。</p><p> 2.2 圖像匹配的數(shù)學(xué)描述
33、 </p><p> 以傳統(tǒng)的相關(guān)算法為例對圖像匹配進(jìn)行數(shù)學(xué)描述。如圖2—3所示,搜索圖即待匹配圖像S為一方形區(qū)域,邊長為N,模板圖像T也是一個(gè)方形區(qū)域,邊長為M 。設(shè)模板T疊放在搜索圖S上平移,模板覆蓋下的那塊搜索圖(即圖中的陰影部分
34、)叫做子圖S, (i,j)為子圖S的左下角在搜索圖S中的坐標(biāo)為:</p><p> 1< i,j <N-M+1 </p><p><b> (b) </b></p><p> 圖2—3 被搜索圖(a)和模板(b)</p><p><b> 匹配過程如下所示:</b><
35、/p><p> 假設(shè)模板T從待匹配圖像S的左下角開始逐點(diǎn)遍歷圖像,比較T和S的內(nèi)容。如果兩者一致,則差值為零,可以用下面的測度來衡量T和S的內(nèi)容如果兩者一致,則差值為零,可以用下面的測度來衡量T和S的相似程度,如公式(1—1)所示。</p><p> D(i,j)= --公式(1—1)</p><p><
36、b> 展開后有:</b></p><p> D(i,j)=--公式(1—2) </p><p> 公式(1—2)右邊第三項(xiàng)代表模板的總能量,與(i,j)無關(guān),是一個(gè)常數(shù);第一項(xiàng)是子圖能量,隨(i,j)而改變,T和S匹配時(shí)這一項(xiàng)的取值最大,可以用下面的互相關(guān)系作相似性測度:</p><p> R(i,j)==
37、 --公式(1—3)</p><p><b> 或歸一化為:</b></p><p> R(i,j)= --公式(1—4)</p><p> 顯然R(i,j)越大,模板T和子圖S就越相似,使得R(i,j)取得最大值的位置即為最佳匹配位置,(i,j)也就是我們要搜索的匹配點(diǎn)。</p>
38、;<p> 2.3 算法的改進(jìn)及圖示</p><p> 根據(jù)以上對模板匹配的介紹,可以對字符圖像進(jìn)行識別。但是求相似性度量函數(shù),求待匹配圖像和模板之間的相似性映射關(guān)系均比較復(fù)雜。上一節(jié)知識的介紹中,也看到了其過程比較麻煩。</p><p> 本系統(tǒng)中識別的圖像均為2036大小的。即模板圖像和待測圖像大小相同。即會(huì)從圖像的左下角一直順著搜索一直至全圖結(jié)束。而且映射關(guān)系及
39、相似性函數(shù)均比較復(fù)雜,不是數(shù)量級上的關(guān)系。此時(shí)識別效率就不明顯。顯得木訥不靈巧。并非像前面介紹的在待測圖片中搜索,并返回得到匹配點(diǎn)。因此需要基于此模板匹配算法原理的基礎(chǔ)上,對算法進(jìn)行改進(jìn),才能更有效的去完成識別的功能及簡化其識別的過程。提高識別速度。即將圖片區(qū)域化。</p><p> 算法改進(jìn)的思想:將圖片(34)分為12塊區(qū)域,具體區(qū)域的劃分如圖2—4所示。</p><p> 圖2—
40、4 算法改進(jìn)的圖像示意圖</p><p> 再加上5條交線。共記有17個(gè)特征值。模板訓(xùn)練時(shí),將數(shù)字模板圖片17個(gè)特征值的信息記下并存儲(chǔ)在數(shù)組中。當(dāng)進(jìn)行樣本訓(xùn)練的時(shí)候,用同樣的算法計(jì)算圖片中數(shù)字的17個(gè)特征值,并到計(jì)算機(jī)存儲(chǔ)區(qū)中去匹配,直接利用象素灰度值的差異,找到特征值最接近的一個(gè)圖片數(shù)字,便完成匹配識別的過程。得到匹配的結(jié)果。這樣變簡單多。算法改進(jìn)后圖像的17個(gè)特征值計(jì)算的程序代碼,如附錄中所示。先讓計(jì)算機(jī)
41、學(xué)習(xí),先計(jì)算素材T中模板圖片0~9總共10個(gè)數(shù)字的特征值,每一個(gè)特征值顯示如下所示:</p><p> 數(shù)字0的特征值為:4.000000,9.000000,9.000000,4.000000,6.000000,0.000000,0.000000,6.000000,4.000000, 9.000000,9.000000,4.000000,2.000000,2.000000,2.000000,2.000000,2
42、.000000,</p><p><b> 數(shù)字1的特征值為:</b></p><p> 0.000000,1.000000,0.000000,0.000000,6.000000,9.000000,9.000000,5.000000,0.000000, 0.000000,0.000000,0.000000,1.000000,0.000000,2.000000,1.
43、000000,1.000000,</p><p><b> 數(shù)字2的特征值為:</b></p><p> 2.000000,3.000000,0.000000,5.000000,6.000000,0.000000,8.000000,6.000000,4.000000, 9.000000,1.000000,3.000000,4.000000,3.000000,2.0
44、00000,1.000000,1.000000,</p><p><b> 數(shù)字3的特征值為:</b></p><p> 3.000000,0.000000,0.000000,3.000000,7.000000,7.000000,0.000000,6.000000,2.000000, 2.000000,9.000000,6.000000,2.000000,4.00
45、0000,1.000000,1.000000,2.000000,</p><p><b> 數(shù)字4的特征值為:</b></p><p> 0.000000,0.000000,8.000000,0.000000,0.000000,10.000000,1.000000,6.000000,5.000000, 5.000000,9.000000,4.000000,3.00
46、0000,11.000000,1.000000,2.000000,6.000000,</p><p><b> 數(shù)字5的特征值為:</b></p><p> 5.000000,7.000000,0.000000,2.000000,6.000000,6.000000,0.000000,6.000000,2.000000, 2.000000,9.000000,4.00
47、0000,3.000000,3.000000,1.000000,1.000000,1.000000,</p><p><b> 數(shù)字6的特征值為:</b></p><p> 3.000000,9.000000,9.000000,3.000000,6.000000,6.000000,0.000000,6.000000,3.000000, 2.000000,9.000
48、000,5.000000,3.000000,3.000000,1.000000,2.000000,2.000000,</p><p><b> 數(shù)字7的特征值為:</b></p><p> 3.000000,0.000000,0.000000,0.000000,6.000000,4.000000,9.000000,4.000000,5.000000, 5.0000
49、00,0.000000,0.000000,1.000000,4.000000,1.000000,1.000000,1.000000,</p><p><b> 數(shù)字8的特征值為:</b></p><p> 3.000000,8.000000,8.000000,4.000000,6.000000,2.000000,5.000000,6.000000,3.000000
50、, 8.000000,9.000000,5.000000,4.000000,4.000000,2.000000,6.000000,2.000000,</p><p><b> 數(shù)字9的特征值為:</b></p><p> 6.000000,8.000000,0.000000,0.000000,6.000000,7.000000,4.000000,5.000000,
51、3.000000, 6.000000,5.000000,0.000000,2.000000,10.000000,2.000000,1.000000,1.000000,</p><p><b> 3 圖像的預(yù)處理</b></p><p> 一般說來,被觀測的圖像中含有這種各樣的噪聲和畸變,去掉這些噪聲和畸變,并將圖像變成某種標(biāo)準(zhǔn)形式進(jìn)行加工,使得特征的提取和識別變
52、的容易進(jìn)行,這些處理稱為字符識別預(yù)處理。預(yù)處理是識別字符前的重要的一步,預(yù)處理的好壞直接影響著識別方法的難易及識別結(jié)構(gòu)的好壞。預(yù)處理工作做的好,使反映字符本質(zhì)特征的部分得到保留甚至突出出來,識別就容易進(jìn)行,識別率高且識別速度快。反之,就會(huì)使識別變的困難,甚至造成識別誤識等不良后果。</p><p> 3.1 圖像的平滑去噪</p><p><b> 平滑處理:</b&
53、gt;</p><p> 字符圖像經(jīng)過平滑處理,能夠去掉孤立噪聲干擾,平滑筆劃邊沿??捎闷交惴?。設(shè)有33 窗口如圖3—1所示:</p><p><b> 圖3—1平滑算法 </b></p><p> 其中P為當(dāng)前點(diǎn),N0-N7為其8個(gè)鄰接點(diǎn),平滑準(zhǔn)則為:</p><p> (1) 當(dāng)P為白時(shí),N0,N2,N4,
54、N6中至少有三個(gè)元素為黑,則,將P改為黑,否則不變。</p><p> (2)當(dāng)P為黑時(shí),如果:</p><p> (a)N4,N3,N2中至少有1個(gè)為黑,同時(shí)N6,N7和N0中也至少有一個(gè)為黑;</p><p> (b)N2,N1,N0中至少有一個(gè)為黑,同時(shí)N4,N5和N6中也至少有一個(gè)為黑,則P不變,否則改為白。</p><p>&
55、lt;b> 噪聲處理</b></p><p> 噪聲處理是一個(gè)重要而復(fù)雜的工作,通過掃描得到的字符圖像有時(shí)含有噪聲,這些噪聲可能是因?yàn)榧垙堎|(zhì)量,污點(diǎn),掃描通道的碎物或其它干擾造成的。這些噪聲的存在,增加了數(shù)字識別的難度,較容易導(dǎo)致誤識,拒識。如能較好地濾除噪聲,無疑會(huì)為正確識別帶來方便。</p><p> 由于阿拉伯?dāng)?shù)字0~9和英文大寫字母均為由連續(xù)筆劃組成的字符,
56、因此若檢測到字符掃描圖像中的筆劃數(shù)超過1,則認(rèn)為該字符圖像中肯定存在噪聲或者斷筆,需加以去噪聲或連斷筆處理。將多余的噪聲去掉,或?qū)喙P連在主體筆劃上。而噪聲和斷筆的區(qū)分則可通過設(shè)定閾值來實(shí)現(xiàn)。具體的方法如下:</p><p> 設(shè)F(i,j),0 im,0jn,,為二值圖象,令A(yù)為二值圖象平面上的一個(gè)NN的窗口區(qū)域,令A(yù)為包含A的(N+2)(N+2)的窗口區(qū)域,若</p><p><
57、;b> =0 </b></p><p> 則我們認(rèn)為窗口區(qū)域A中的筆劃為噪聲或斷筆。通過讓窗口A在圖像平面上浮動(dòng),可檢測到的筆劃判斷為噪聲;另N=5,并將檢測到的筆劃判斷為斷筆。對于檢測到的噪聲,只需要對應(yīng)的窗口區(qū)域A中所有的黑點(diǎn)變?yōu)榘c(diǎn),即可將噪聲去除。</p><p> 3.2 BMP圖像的存儲(chǔ)結(jié)構(gòu)</p><p> 設(shè)備無關(guān)位圖(
58、Device-Independent Bitmap)DIB是標(biāo)準(zhǔn)的Windows位圖格式,DIB自帶顏色信息,因此調(diào)色板管理非常容易。任何運(yùn)行Windows的計(jì)算機(jī)都可以處理DIB,它通常以BMP文件的形式被保存在磁盤中。BMP文件中包含了一個(gè)DIB,一個(gè)BPM文件大體上分成如下4個(gè)部分。如表3—1所示:</p><p> 表3—1 Windows DIB的組成</p><p>
59、位圖文件頭:主要用于識別位圖文件,下面是位圖文件頭結(jié)構(gòu)定義:</p><p> Typedef struct tagBITMAPFILEHEADER</p><p><b> {</b></p><p> UNIT bfType;</p><p> DWORD bfSize;</p><p&g
60、t; UNIT bfReserved1;</p><p> UNIT bfReserved2;</p><p> DWORD bfOffbits;</p><p> } BITMAPFILEHEADER;</p><p> 其中,bfType表示文件類型,必須是0X424D,即值應(yīng)該是“BM”,標(biāo)志該文件是BMP位圖文件。bfSiz
61、e的值是位圖文件的大小。bfReserved1和bfReserved2為保留字,不用考慮。bfOffbits為從文件頭到實(shí)際的位圖的數(shù)據(jù)的偏移字節(jié)數(shù)。</p><p> 位圖信息頭:包含了單個(gè)象素所用字節(jié)數(shù)以及描述顏色的格式,此外還包括位圖的寬度、高度、目標(biāo)設(shè)備的位圖平面書、圖像的壓縮格式。以下是位圖信息頭結(jié)構(gòu)的定義:</p><p> Typedef struct tagBITMAP
62、INFOHEADER</p><p><b> {</b></p><p> DWORS biSize;</p><p> LONG biWidth;</p><p> LONG biHeight;</p><p> WORD biplanes;</p><p>
63、 WORD biBicCount;</p><p> DWORD biCompression;</p><p> DWORD biSizeImage;</p><p> LONG biXPelPerMeter;</p><p> LONG biYPelsPerMeter;</p><p> DWORD bi
64、ClrUsed;</p><p> DWORD biClrImportant;</p><p> } BITMAPINFOHEADER;</p><p> 表3—2 是對上述結(jié)構(gòu)體中各個(gè)成員的說明。</p><p><b> 表 3—2</b></p><p> 其中,biBitCoun
65、t分別有如下的意義:</p><p> 0:用在JPEG格式中。</p><p> 1:單色圖,調(diào)色板中含有兩種顏色,通常說的黑白二色圖。</p><p><b> 4:16色圖。</b></p><p> 8:256色圖,通常說的灰度圖。</p><p> 16:64K圖,一般沒有調(diào)色
66、板,圖像數(shù)據(jù)中每兩個(gè)字節(jié)表示一個(gè)象素。</p><p> 24:16M真彩色圖,沒有調(diào)色板,圖像數(shù)據(jù)中每3個(gè)字節(jié)表示一個(gè)象素。</p><p> 32:4G真彩色,一般沒有調(diào)色板,每4個(gè)字表表示一個(gè)象素,相對24位</p><p> 真彩色圖而言,加入了一個(gè)透明度,即RGBA模式。</p><p> biClrused:這個(gè)值通常為0
67、,表示使用biBitCount確定的全部顏色。</p><p> biClrImportant:這個(gè)值通常為0,表示所有顏色都是必須的。</p><p> 調(diào)色板(Palette):有些位圖需要調(diào)色板,有些位圖,如真彩色圖,不需要調(diào)色板,它們的BITMAPINFOHEADER后面直接是位圖數(shù)據(jù)。調(diào)色板實(shí)際上是一個(gè)數(shù)組,調(diào)色板是由顏色表項(xiàng)組成的,調(diào)色板結(jié)構(gòu)如下:</p>&
68、lt;p> Typedef struct tagRGBQUAD</p><p><b> {</b></p><p> BYTE rgbBlue;</p><p> BYTE rgbGreen;</p><p> BYTE rgbRed;</p><p> BYTE rgbRes
69、erved;</p><p> } RGBQUAD;</p><p> 需要注意的是,RGBQUARD結(jié)構(gòu)中的顏色順序是BGR。</p><p> 位圖數(shù)據(jù):在位圖頭文件、位圖信息頭、調(diào)色板之后,便是位圖的主體部分:位圖數(shù)據(jù)。根據(jù)不同的位圖,位圖數(shù)據(jù)所占據(jù)的字節(jié)數(shù)也是不同的,比如,對于8位位圖,每個(gè)字節(jié)代表了一個(gè)象素,對于16位位圖,每兩個(gè)字節(jié)代表了一個(gè)象素,
70、對于24位位圖,每三個(gè)字節(jié)代表了1個(gè)象素,對于32位位圖,每4個(gè)字節(jié)代表了一個(gè)象素。</p><p> 3.3 圖像的顏色處理</p><p> 在真彩色系統(tǒng)中,圖像的顏色與真實(shí)世界中的顏色非常自然逼近,人眼難以區(qū)分他們的差別,通常使用RGB表示法來表現(xiàn)真彩色圖像,每一個(gè)象素的值用24位表示,紅、綠、藍(lán)三原色的濃度分別用一個(gè)字節(jié)來表示。但對于僅能同時(shí)顯示16色或者256色的系統(tǒng),每一
71、個(gè)象素僅能分別采用4位或者8位表示,象素值與真彩色的顏色值不能一一對應(yīng),這時(shí)就必須采用調(diào)色板技術(shù)。所謂調(diào)色板就是在16色或者256色的顯示系統(tǒng)中,由圖像出現(xiàn)的最頻繁的16中顏色或者256種顏色所組成的頻色表,顏色表中的值是某種顏色在顏色查找表中的索引值。當(dāng)需要對顏色位數(shù)進(jìn)行轉(zhuǎn)換時(shí),可用八叉樹顏色量化算法進(jìn)行轉(zhuǎn)換。這種方法首先掃描所有的象素,每遇到一種新的顏色就把它放到八叉樹中,并創(chuàng)建一個(gè)葉子節(jié)點(diǎn),圖像掃描結(jié)束后,如果葉節(jié)點(diǎn)的數(shù)量大于調(diào)色
72、板所需的顏色數(shù),就將某些葉節(jié)點(diǎn)合并到其上一層節(jié)點(diǎn)中(父節(jié)點(diǎn))去,并將父節(jié)點(diǎn)變?yōu)槿~節(jié)點(diǎn),這樣進(jìn)行下去直到葉節(jié)點(diǎn)的數(shù)量等于或者小于調(diào)色板所需的顏色數(shù),之后遍歷八叉樹,將葉節(jié)點(diǎn)的顏色填入調(diào)色板的顏色表中。</p><p> 3.4 圖像的二值化</p><p> 實(shí)際上在使用的圖像處理系統(tǒng)中,處理的對象主要是二值圖像。這是因?yàn)樵谑褂玫南到y(tǒng)中,要求處理的速度高、成本低,所以信息量大的灰階圖像
73、的處理占用太大的部分不是好辦法。因此希望盡可能用二值圖像的形式進(jìn)行處理。圖像信息和背景信息分別對應(yīng)圖像灰度直方圖,因此可以通過灰度直方圖選擇一個(gè)閾值把整個(gè)圖像分成圖像信息和背景信息兩部分,從而把灰度圖像轉(zhuǎn)化為黑白二值圖像。圖像的灰度直方圖是將圖像中的象素按其灰度值大小進(jìn)行組合,所構(gòu)成的象素?cái)?shù)量隨灰度級變化的函數(shù)的圖形形式。通常,灰度直方圖的橫軸表示灰度值,縱軸用來表示頻度。頻度,是指具有某一灰度值的象素在圖像中出現(xiàn)的次數(shù)或者在圖像中占總
74、象素的百分比。如圖3—2所示。</p><p> 圖3—2 具有二值傾向的灰度直方圖</p><p> 圖像二值化可根據(jù)下面的閾值處理來進(jìn)行:</p><p> 一般采用設(shè)定某一閾值,用閾值將圖像的數(shù)據(jù)分成大于閾值和小于閾值的象素群。例如,輸入的函數(shù)是f(x,y),輸出的圖像是f(x,y)。如果用灰度變換的方法來研究f(x,y),其灰度變換函數(shù)為:</p
75、><p> f(x,y)= 其中:為閾值。</p><p> 輸出的圖像的灰度值大于閾值,其數(shù)據(jù)點(diǎn)值取1;反之取0。這種灰度變換的方法,成為圖像的二值化。二值化處理就是把圖像f(x,y)分為對象物和背景兩個(gè)領(lǐng)域,然后求其閾值。在數(shù)字化的圖像數(shù)據(jù)中,無用的背景數(shù)據(jù)和對象物的數(shù)據(jù)常?;煸谝黄稹3沃?,在圖像中還含有其它的各種噪聲。所以閾值選取必須根據(jù)實(shí)際情況進(jìn)行調(diào)節(jié)。</p&g
76、t;<p> 這里的關(guān)鍵問題是閾值的確定方法。因?yàn)榛叶葓D像二值化后可能丟失掉原圖像中的一些信息,如果閾值選擇不當(dāng),二值化后的圖像有可能與原圖像相差很大,不能正確的反映原圖像,這樣,二值化就失去了意義/因?yàn)閳D像二值化的目的是要在盡可能多的保留原圖像特征的前提下舍棄冗余信息。所以閾值的正確選擇很重要。</p><p> 系統(tǒng)中二值化的代碼實(shí)現(xiàn)如下:</p><p> voi
77、d CDigitClass::BinaryDigit(BYTE thre) </p><p><b> {</b></p><p> digitWidth = digitdib.GetWidth();</p><p> digitHeight = digitdib.GetHeight();</p><p> LO
78、NG x, y;</p><p> for(x=0; x<digitWidth; x++)</p><p><b> {</b></p><p> for(y=0; y<digitHeight; y++)</p><p><b> {</b></p><p&g
79、t; if(digitarray[x][y] >= thre)</p><p> digitarray[x][y]=(BYTE)1;</p><p><b> else</b></p><p> digitarray[x][y]=(BYTE)0;</p><p><b> }</b>
80、</p><p><b> }</b></p><p><b> }</b></p><p> 3.5 圖像的細(xì)化</p><p> 3.5.1 細(xì)化的定義</p><p> 經(jīng)過預(yù)處理,待細(xì)化的圖像是0,1二值圖象。象素值為1的是需要細(xì)化的部分,象素值為0的是背
81、景區(qū)域。一個(gè)圖像的“骨架”是指圖像的中央的骨骼部分,可以理解為圖像的中軸。例如一個(gè)長方形的骨架是它的長方向上的中軸線;正方形的骨架是他的中心點(diǎn);圓的骨架是他的圓心;直線的骨架是它自身;孤立點(diǎn)的骨架也是它自身。骨架是描述圖像幾何及拓?fù)湫再|(zhì)的重要特征之一。求圖像骨架的過程通常稱為對圖像“細(xì)化”的過程。</p><p> 3.5.2 細(xì)化的要求</p><p> 在字符識別系統(tǒng)中,為減少數(shù)據(jù)
82、量,準(zhǔn)確提取特征,常常需要采用細(xì)化算法。不過字符經(jīng)過細(xì)化后,將不可避免地丟失部分信息。因此是否細(xì)化應(yīng)根據(jù)實(shí)際情況而定。但一旦決定對字符進(jìn)行細(xì)化,則對細(xì)化結(jié)果的好壞,將直接影響著識別率。</p><p> 一般來說,細(xì)化有以下的基本的要求:</p><p> (1)細(xì)化要保持原有字符的連續(xù)性,不能使本來相連的筆劃斷開。</p><p> (2)要細(xì)化成1象素的骨
83、架,骨架應(yīng)接近原筆劃的中心線。</p><p> (3)不要產(chǎn)生嚴(yán)重的畸變,對噪聲不敏感。</p><p> (4)保留字符原有的拓?fù)?,幾何特征,特別是一些明顯的拐角不應(yīng)被光滑掉。</p><p> Hilditch細(xì)化算法描述</p><p> Hilditch 提出了一種串行細(xì)化算法,由于該算法是Hilditch提出的,就叫做Hi
84、lditch算法。Hilditch詳細(xì)講述了該算法的思想,但沒有給出這種算法地一個(gè)簡潔的表達(dá)式。</p><p> Hilditch細(xì)化算法是一種串行算法。這種方法需要對整幅圖像作多次掃描,在每一次掃描過程中。一些滿足給定條件的象素點(diǎn)將被標(biāo)記,在本次掃描結(jié)束后,再將這些標(biāo)記的象素點(diǎn)刪除,然后開始下一次掃描,直到在某一次掃描過程中,再?zèng)]有象素點(diǎn)被標(biāo)記,整個(gè)細(xì)化過程結(jié)束。通常在二值圖象中,象素點(diǎn)的值為1或者0,值為
85、1的點(diǎn),稱為黑點(diǎn),也是前景點(diǎn),即圖形象素;值為0的點(diǎn),稱為白點(diǎn),也是背景點(diǎn)。在細(xì)化算法中,每一次掃描過程中,一個(gè)黑點(diǎn),即圖形象素點(diǎn)必須滿足下面的條件才能被刪除:</p><p> (1)該點(diǎn)是一個(gè)邊界點(diǎn)。</p><p> (2)該點(diǎn)不是一個(gè)端點(diǎn)。</p><p> (3)該點(diǎn)不是一個(gè)斷點(diǎn)。</p><p> (4)該點(diǎn)的刪除不應(yīng)該造
86、成過度侵蝕。</p><p> 圖像未經(jīng)細(xì)化時(shí)模板訓(xùn)練的效果如圖3—3所示</p><p> 圖片3—3 細(xì)化前的效果</p><p> 如圖3—4所示,當(dāng)前象素點(diǎn)P(值為1)的8領(lǐng)域,以及P為邊界點(diǎn)、端點(diǎn)、斷點(diǎn)時(shí)的一種表現(xiàn)形式。</p><p> 1)P的8領(lǐng)域 2)P為邊界點(diǎn) 3)P為端點(diǎn)
87、 4)P為斷點(diǎn) </p><p> 圖3—4 P的幾種形式</p><p> 為了方便討論,令B(P)為當(dāng)前象素點(diǎn)P的8領(lǐng)域中的黑象素點(diǎn),S4(P)為P的4領(lǐng)域之和,S8(P)為P的8領(lǐng)域之和。</p><p> 次算法在對二值圖像的每一次掃描處理過程中,掃描順序是從左到右,從上到下,一個(gè)黑象素點(diǎn)同時(shí)滿足下列七個(gè)條件將被刪除:</p>
88、<p> (1)P=1。這個(gè)條件保證當(dāng)前處理象素點(diǎn)P為黑點(diǎn),即為圖形信息點(diǎn)。</p><p> (2)S4(P)<=3。這個(gè)條件保證P不是邊界點(diǎn)。</p><p> (3)S8(P)>=2。這個(gè)條件保證P不是端點(diǎn)。</p><p> (4)N(P)>=1。N(P)是P的8領(lǐng)域中沒有被標(biāo)記的黑象素的個(gè)數(shù),這個(gè)條件是為了保證細(xì)線的兩端
89、不被刪除。</p><p> (5)N(P)>=1。N(P)的定義為:X(P)為對bi的求和。(i=1,2,3,4),bi取值:當(dāng)P(2i—1)值為0并且P(2i)的值為1或者P(2i+1)的值取為1,其他情況bi的值為0。 Hilditch定義X(P)為交叉數(shù),交叉數(shù)X(P)的取值總是0-4之間,可以從理論上證明可以刪除的象素與交叉數(shù)為1的情況是一致的。</p><p> (
90、6)X4(P)=1或者P4沒有被標(biāo)志。X4(P)的定義為:假設(shè)P4為0時(shí),求出交叉數(shù)X4(P)。</p><p> (7)X8(P)=1或者P6沒有被標(biāo)志。同上一條。這兩個(gè)條件都是為了防止過度腐蝕。</p><p> 在每一次掃描結(jié)束后,被標(biāo)記的象素點(diǎn)被刪除。在最后一次掃描過程中,若沒有象素點(diǎn)被標(biāo)記,整個(gè)細(xì)化算法結(jié)束。</p><p> 圖片細(xì)化之后,模板訓(xùn)練
91、的效果如圖3—5所示</p><p> 圖3—5 細(xì)化后的效果</p><p> 4 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 4.1 Visual C++ 6.0簡介</p><p> 是一種程序設(shè)計(jì)語言,也是一個(gè)集成開發(fā)軟件,它提供自動(dòng)生成軟件代碼和可視化資源編輯的功能。與Win32緊密相連??伸`活的開發(fā)底層軟件到上層直接面向用
92、戶的軟件。</p><p> 4.1.1 運(yùn)行環(huán)境安裝:</p><p> (a)安裝MICROSOFT公司的Visual C++ 6.0開發(fā)工具。</p><p> (b)安裝Visual Assist V6 編程助手。</p><p> (c)安裝MSDNLibrary。</p><p> 選擇Visua
93、l C++6.0 的原因:</p><p> (1)它是C和C++的混合編譯器,使得Visual C++ 6.0開發(fā)的程序具備了C和C++的高效、簡潔的特點(diǎn)。</p><p> (2)它是一種面向?qū)ο蟮恼Z言,使得軟件能夠在編碼級、類級、控件級等多個(gè)級別上的重用,軟件的開發(fā)效率大為提高。</p><p> (3)借助于Microsoft 基本類庫(Microso
94、ft Foundation Class Library,簡稱MFC)和應(yīng)用程序框架,能夠輕松的開發(fā)出Windows標(biāo)準(zhǔn)界面的應(yīng)用程序。可使用AppWizard生成完整的基于MFC類庫的源文件和資源文件;可使用MFC ActiveX ControlWizard生成創(chuàng)建ActiveX空間所需的開始文件;還可使用ClassWizard來創(chuàng)建新類(Class),定義消息處理函數(shù)(Message Hander),覆蓋虛擬函數(shù)(Virtual
95、Function),從對話框(Dialog Box)的空間中獲取數(shù)據(jù)并驗(yàn)證數(shù)據(jù)的合法性等。其界面更友好,便于操作。</p><p> 4.1.2 MFC概述</p><p> 微軟基礎(chǔ)類庫(MFC,Microsoft Foundation Class)是微軟為Windows程序員提供的一個(gè)面向?qū)ο蟮腤indows編程接口,它大大簡化了Windows編程工作。使用MFC類庫的好處是:首
96、先,MFC提供了一個(gè)標(biāo)準(zhǔn)化的結(jié)構(gòu),這樣開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是“站在巨人的肩膀上”,從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間;其次,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。MFC類庫充分利用了Microsoft開發(fā)人員多年開發(fā)Windows程序的經(jīng)驗(yàn),并可以將這些經(jīng)驗(yàn)融入到用戶自己開發(fā)的應(yīng)用程序中去。</p><p> 4.2 系統(tǒng)界面按扭的
97、生成</p><p> 可以使用上圖的控件調(diào)色板,直接把控件從調(diào)色板上拖到新的對話框中,然后放到合適的位置。并且加以命名。各個(gè)按扭的具體情況如表4—1所示。</p><p> 表4—1 按扭的詳細(xì)定義</p><p> 選中對話框,點(diǎn)擊右鍵點(diǎn)擊類向?qū)В–lassWizard), 根據(jù)上述介紹的原理,打開類向?qū)??;蛘哌x擇“VIEW”菜單中的“ClassWiz
98、ard”菜單項(xiàng),彈出“MFC ClassWizard”對話框。選擇“Message Maps”選項(xiàng)卡。在“Class name”列表框中選擇類CDigitRecogDlg ,在“Object IDs”列表框中選擇“IDC_BUTTON_INPUT_EQUIP” ,在對應(yīng)的“Messages”列表中選擇 “BN_CLICKED”。 然后單擊“Add Function”按扭,添加對鼠標(biāo)點(diǎn)擊左鍵的響應(yīng),點(diǎn)確認(rèn)鍵。在“Member functi
99、ons”欄中,將會(huì)增加一個(gè) OnButtonInputEquip函數(shù)。如圖4—1所示:</p><p> 圖4 —1 使用類向?qū)ё詣?dòng)生成代碼</p><p> 雙擊“OnButtonInputEquip”函數(shù)或者在選種函數(shù)的情況下點(diǎn)擊 “Edit Code”按扭,在出現(xiàn)下面的函數(shù)代碼,如圖4—2所示。</p><p> 圖4—2 類向?qū)ё詣?dòng)生成的部分代碼&
100、lt;/p><p> 4.3 模板計(jì)算的過程</p><p> 4.3.1模板計(jì)算設(shè)計(jì)思想</p><p> 函數(shù)調(diào)用關(guān)系如圖4—3所示</p><p> 圖4—3 模板計(jì)算函數(shù)調(diào)用關(guān)系圖</p><p> 4.3.2 代碼實(shí)現(xiàn)</p><p> void CDigitRecogDl
101、g::OnButtonInputEquip() </p><p> //模板計(jì)算按扭被按時(shí)的處理函數(shù)</p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> CString File
102、PathName;</p><p> //產(chǎn)生添加文件對話框?qū)ο?lt;/p><p> AddSampleDlg FileDlg(TRUE, "", NULL, </p><p> OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, </p><p&g
103、t; "BMP格式字符圖像(*.bmp)|*.bmp|所有文件(*.*)|*.*||",</p><p> AfxGetMainWnd());</p><p> if (FileDlg.DoModal () != IDOK)</p><p><b> return;</b></p><p>
104、 CString strFile;</p><p> CString strInfo;</p><p> arTrainSetFilePath.RemoveAll();//清除路徑記錄,重新記錄新的路徑</p><p> POSITION pos = FileDlg.GetStartPosition();//指向所加載的文件位置</p><
105、p> pEditResult->SetSel(0,-1); //選中控件變量中的所有內(nèi)容</p><p> pEditResult->ReplaceSel("");//清空控件變量peditresult所對應(yīng)的控件</p><p> strInfo.Format("模板計(jì)算圖片:\r\n");//讀取文件的路徑并顯示在ped
106、itresult所對應(yīng)的控件上</p><p><b> int j=0;</b></p><p> while ( pos )</p><p><b> {</b></p><p> m_nDigitTemp = j;//給對應(yīng)的模板圖片賦值</p><p> s
107、trFile =FileDlg.GetNextPathName( pos );//獲取文件名</p><p> arTrainSetFilePath.Add(strFile);</p><p> strInfo += strFile;//加載路徑</p><p> strInfo += "\r\n"; //輸出路徑</p>&
108、lt;p> pEditResult->SetSel(0,-1); //選中控件中的所有內(nèi)容</p><p> pEditResult->ReplaceSel(strInfo);//用新的控件變量pEditResult替換原來的內(nèi)容</p><p> digitTrain.digitdib.Load(strFile);</p><p> di
109、gitTrain.CopyBitmapToAr(); //把圖片信息存入數(shù)組中</p><p> digitTrain.BinaryDigit(120);//設(shè)置閾值為120,并進(jìn)行二值化</p><p> digitTrain.ThinDigit(); //調(diào)用細(xì)化函數(shù)</p><p> digitTrain.GetFeature(); //調(diào)用計(jì)算特征值
110、的函數(shù)</p><p> CString strtmp;</p><p> for(int i=0; i<17; i++)</p><p><b> {</b></p><p> digitTemplate[j].feature[i] = digitTrain.feature[i];</p>
111、<p> //strtmp.Format("%f,", digitTrain.feature[i]);</p><p> //strInfo += strtmp;</p><p><b> } </b></p><p> //strInfo += strFile;</p><p>
112、; strInfo += "\r\n";</p><p> pEditResult->SetSel(0,-1);//選中控件中的所有內(nèi)容</p><p> pEditResult->ReplaceSel(strInfo);//用新的控件變量pEditResult替換原來的內(nèi)容</p><p> digitTemplate[j]
113、.trueClass = j;</p><p><b> j++;</b></p><p><b> }}</b></p><p> 4.4 樣本測試的實(shí)現(xiàn)</p><p> 4.4.1 樣本測試設(shè)計(jì)思想</p><p> 函數(shù)調(diào)用關(guān)系如圖4—4所示:</p
114、><p> 圖4—4 樣本測試函數(shù)調(diào)用關(guān)系圖</p><p> 4.4.2 代碼實(shí)現(xiàn)</p><p> void CDigitRecogDlg::OnButtonInputTest()//樣本測試按扭被按時(shí)對應(yīng)的處理函數(shù)</p><p><b> {</b></p><p> // TOD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手寫數(shù)字識別技術(shù)研究【文獻(xiàn)綜述】
- 手寫數(shù)字識別技術(shù)研究【畢業(yè)設(shè)計(jì)】
- 手寫數(shù)字識別技術(shù)研究【開題報(bào)告】
- 圖像水印技術(shù)研究與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 楊梅果醬生產(chǎn)技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 古代絲綢保護(hù)修復(fù)技術(shù)研究【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 自由曲面形貌測量技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 天然植物染料染色技術(shù)研究【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 槍烏賊酸臭味脫除技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 視頻中移動(dòng)對象跟蹤技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 非球面精密加工技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 牡蠣的加工與貯藏技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)開題報(bào)告+文獻(xiàn)綜述.doc
- 人臉檢測關(guān)鍵技術(shù)研究與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 畢業(yè)設(shè)計(jì)開題報(bào)告+文獻(xiàn)綜述.doc
- 風(fēng)味鵝肝醬加工技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)開題報(bào)告和文獻(xiàn)綜述.doc
- 考古紡織品消毒與清洗技術(shù)研究【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 乳酸菌高密度培養(yǎng)技術(shù)研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 數(shù)字圖像篡改的檢測方法研究【開題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
評論
0/150
提交評論