圖像識別技術(shù)_第1頁
圖像識別技術(shù)_第2頁
圖像識別技術(shù)_第3頁
圖像識別技術(shù)_第4頁
圖像識別技術(shù)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第八章圖像識別技術(shù)隨著計算機技術(shù)的飛速發(fā)展,圖像采集儀的出現(xiàn)以及高可靠算法的實現(xiàn),使得圖像的處理與識別技術(shù)有了迅速的發(fā)展,尤其是圖像識別技術(shù)的應(yīng)用越來越廣泛,產(chǎn)品化程度越來越高,成像系統(tǒng)也越來越成熟。目前,圖像識別技術(shù)被廣泛應(yīng)用于指紋鑒別、商品條碼識別、 信封郵政編碼識別、 計算機手寫漢字識別、計算機手寫數(shù)字識別、人臉識別等方面,同時也越來越多地滲透到我們的日常生活中。本章主要內(nèi)容:(1)闡述了圖像識別的基本原理,包括圖像的預(yù)處理、圖像特征提取、分類方法等(2)編寫VC+程序,實現(xiàn)圖像文件中數(shù)字的識別(3)介紹了模式識別的一個分支一一文字識別(4)以Visual C+為平臺,開發(fā)一個聯(lián)機手寫體

2、識別圖像識別技術(shù)基本原理圖像識別研究現(xiàn)狀圖像的識別是圖像處理領(lǐng)域研究較多的課題之一,由于已取得的成果遠不夠解決目前遇到的問題,因此圖像識別依然是眾多研究人員的研究重心。圖像識別的發(fā)展大致經(jīng)歷了三個階段:文字識別階段、數(shù)字圖像處理與識別階段和物體識別階段。文字識別的研究是從1950年開始的,一般用于識別字母、數(shù)字和符號,從印刷文字識別到手寫文字識別,應(yīng)用非常廣泛,并且已經(jīng)研制了許多專用設(shè)備。數(shù)字圖像處理和識別的研究始于1965年。數(shù)字圖像與模擬圖像相比,具有存儲傳輸方便、可壓縮、傳輸過程中不易失真、處理方便等巨大優(yōu)勢,這些都為圖像識別技術(shù)的發(fā)展提供了強大的動力。物體的識別主要指的是對三維世界的客

3、體及環(huán)境的感知和認識,屬于高級的計算機視覺范疇。它是以數(shù)字圖像處理與識別為基礎(chǔ)的結(jié)合人工智能、系統(tǒng)學(xué)等學(xué)科的研究方向,其研究成果被廣泛應(yīng)用在各種工業(yè)及探測機器人上。現(xiàn)代圖像識別技術(shù)的一個不足就是自適應(yīng)性能差,一旦目標(biāo)圖像被較強的噪聲污染或是目標(biāo)圖像有較大殘缺,往往就得不出理想的結(jié)果。圖像識別問題的數(shù)學(xué)本質(zhì)屬于模式空間到類別空間的映射問題。目前,在圖像識別的發(fā)展中,主要有三種識別方法:統(tǒng)計模式識別、結(jié)構(gòu)模式識別、模糊模式識別。圖像識別系統(tǒng)概述.圖像識別概述圖像是各種觀測系統(tǒng)以不同形式和手段觀測客觀世界而獲得的,是可以直接或者間接地作用于人眼而產(chǎn)生視知覺的實體。我們從這個世界獲取的信息有大約75%

4、是來自于視覺系統(tǒng),即我們所看到的圖像。人的圖像識別能力是很強的。圖像刺激人的感覺器官,人們辨認出它是某一個圖像,知道它的用途等。在人的圖像識別過程中, 既要有當(dāng)時進入感覺器官的圖像信息,也要有大腦中記憶的圖像信息, 通過在記憶中搜索已有的圖像信息、對比當(dāng)時進入感覺器官的圖像信息,才能辨認這個要識別的圖像。如果大腦中沒有這個圖像的信息,那么大腦便會開辟處一個地方將該圖像放進去, 經(jīng)過多次識別,該圖像便在大腦中形成了記憶,當(dāng)再次看到這個圖像時,便能夠?qū)ζ溥M行識別。隨著計算機技術(shù)、模式識別和信號處理技術(shù)及聲學(xué)技術(shù)的發(fā)展和數(shù)字圖像技術(shù)的逐漸成熟,使得能滿足各種需要的圖像識別的實現(xiàn)成為可能。圖像識別以圖

5、像的主要特征為基礎(chǔ),每個圖像都有它自己獨特的特征。例如,我們都認識自己的媽媽, 那媽媽的特征是什么呢?媽媽的主要特征可能如下:女性,長頭發(fā),身高一米六,體重偏胖,圓臉,雙眼皮等。我們 通過媽媽的獨一無二的特征便能辨別出這個女子便為媽媽。又如字母A有個尖,P有個圈,而Y的中心有個銳角等。對圖像識別時眼動的研究表明,視線總是集中在圖像的主要特征上,也就是集中在圖像輪廓曲度最大或輪廓方向突然改變的地方,這些地方的信息量最大。 而且眼睛的掃描路線也總是依次從一個特征轉(zhuǎn)到另一個特征上。由此可見,在圖像識別過程中,知覺機制必須排除輸入的多余信息,而抽出關(guān)鍵的信息。同時,在大腦里必定有一個負責(zé)整合信息的機制

6、, 它能把分階段獲得的信息整理成一個完整的知覺映像。在人類圖像識別系統(tǒng)中,對復(fù)雜圖像的識別往往要通過不同層次的信息加工才能實現(xiàn)。對于熟悉的圖形,由于掌握了它的主要特征,就會把它當(dāng)作一個單元來識別,而不再注意它的細節(jié)了。 這種由孤立的單元材料組成的整體單位叫做組塊, 每一個組塊是同時被感知的。在文字材料的識別中, 人們不僅可以把一個漢字的筆劃或偏旁等單元組成一個組塊,而且能把經(jīng)常在一起出現(xiàn)的字或詞組成組塊單位來加以識別。當(dāng)計算機技術(shù)發(fā)展到一定程度的時候,尤其是人工智能技術(shù)的發(fā)展與逐漸成熟,人們 便期望能夠讓計算機來模擬人的大腦的功能對圖像進行識別。因此人工智能便有了一個新的領(lǐng)域一圖像識別。圖像識

7、別技術(shù)的涵義很廣,主要指通過計算機,采用數(shù)學(xué)技術(shù)方法,對一個系統(tǒng)前端獲取的圖像按照特定目的進行相應(yīng)的處理。圖像識別包括諸如條碼識別、生物特征識別(人臉識別、指紋識別等)技術(shù)、智能交通中的動態(tài)對象識別、手寫識別等??梢哉f,圖像識別技術(shù)就是人類視覺認知的延伸,是人工智能的一個重要領(lǐng)域。隨著計算機技術(shù)及人工智能技 術(shù)的發(fā)展,圖像識別技術(shù)越來越成為人工智能的基礎(chǔ)技術(shù)。它涉及的技術(shù)領(lǐng)域也越來越廣泛,應(yīng)用越來越深入。其基本分析方法也隨著數(shù)學(xué)工具的不斷進步而不斷發(fā)展。現(xiàn)在,圖像識別技術(shù)的應(yīng)用范圍已經(jīng)遠遠突破視覺的范圍,而更多地體現(xiàn)為機器智能、數(shù)字技術(shù)的特點。.圖像識別過程為了進行圖像識別,首先要進行圖像處理

8、( Image processing )o圖像處理通常包括圖像 編碼、圖像增強、圖像壓縮、圖像復(fù)原、圖像分割等內(nèi)容。有時候圖像處理和圖像識別是同 時進行的,其關(guān)系非常密切,很難將其截然分開。一般來說,圖像處理環(huán)節(jié)的輸入是圖像, 輸出也是圖像。而圖像識別環(huán)節(jié)輸入是圖像(通常是處理過的圖像),輸出是類別和圖像的結(jié)構(gòu)分析。圖像識別技術(shù)的研究目標(biāo)是根據(jù)觀測到的圖像,對其中的物體分辨其類別,做出有意義的判斷。即利用現(xiàn)代信息處理與計算技術(shù)來模擬和完成人類的認識,理解過程。人們在識別圖像的過程中總是先找出它的外形或顏色等特征進行比較、判斷,然后加以分門別類。 人們在研制用計算機識別圖像是也是模擬這一個過程,

9、并采用同樣的處理方法, 但是用計算機模擬人腦對圖像進行識別卻不像我們想的那么簡單。要區(qū)分圖像屬于哪一個類,往往要經(jīng)過預(yù)處理、分割、特征提取、分析、分類、識別等一系列過程。圖像識別系統(tǒng)的框架如圖8-1所示。圖8-1圖像識別系統(tǒng)(1)圖像信息的獲?。簩⒁R別的圖像通過攝像頭或者是光電掃描設(shè)備轉(zhuǎn)化成計算機能夠識別的電信號后輸入到計算機中。我們一般認為,圖像在平面上是以灰度和顏色分布的。為此如果將平面坐標(biāo)設(shè)為(x,y),灰度和顏色設(shè)為映射f,那么圖像就可以用f(x,y)來表示。圖像的數(shù)字化就是將模擬圖像f (x, y)的定義域(x, y)離散化,以及將值域 f轉(zhuǎn)化成離散數(shù)字信號。(2)圖像的預(yù)處理:主

10、要目的是為了去除干擾、噪聲及差異,將原始圖像變成適合于計算機進行特征提取的形式。圖像的預(yù)處理包括圖像的變換和增強等。(3)圖像的特征提取:提取出能夠反映此圖像本質(zhì)的主要特征,通過這些特征便能夠?qū)υ搱D像進行識別。 此過程的目的是為了去除圖像的無用特征,保留主要特征,這樣能夠大大降低計算量,同時也能節(jié)省空間。(4)分類判決:該過程是根據(jù)提取的特征參數(shù),按照某種分類規(guī)則或判別函數(shù),對圖 像進行分類和識別,然后得到識別的結(jié)果。8.1.3圖像的預(yù)處理為了減少后續(xù)算法的復(fù)雜度和提高效率,圖像的預(yù)處理是必不可少的,它的好壞直接影響圖像識別的效果。 預(yù)處理的目的是去除圖像中的噪聲,把它變成一幅清晰的點線圖,以

11、便于提取正確的圖像特征。圖像的預(yù)處理中,圖像的變換是為了從對圖像的處理更加方便容易而對圖像使用的一種數(shù)學(xué)變換;圖像增強的目的是改善圖像質(zhì)量,恢復(fù)其原來的結(jié)構(gòu), 其內(nèi)容包括去除圖像中的噪聲,調(diào)整圖像的明暗,對比度等;圖像的二值化是將圖像從灰度圖像轉(zhuǎn)換為二值圖像;圖 像細化是把清晰但不均勻的二值圖像轉(zhuǎn)化成線寬僅為一個像素的點線圖像。.圖像的變換圖像變換的方法很多, 從最原始的傅立葉變換,發(fā)展到余弦變換,再到現(xiàn)在比較流行的子波變換,從沃爾什變換到哈達瑪變換等,但應(yīng)用最為廣泛的變換便是傅立葉變換。本章主要介紹最為原始的傅立葉變換。假設(shè)函數(shù)f(x)為變量x的連續(xù)函數(shù),且在(,)內(nèi)絕對可積,則函數(shù) f(x

12、)的傅立 葉變換的定義如下:F(u)f(x)e j2uxdx假設(shè)F(u)可積,求傅立葉反變換定義如下:f (x)F(u)e j2 uxdu稱上述兩式為傅立葉變換對,傅立葉變換前的變量域x稱為空間域,變換后的變量域稱為頻域。一個實函數(shù)的傅立葉變換通常是復(fù)函數(shù),即F(u)可以表示成:F(u) R(u) jI(u)則|F(u)| .,R2(u)I2(u)(u) arctanl-J-(u)- R(u)則幅度函數(shù)|F(u)|稱為f(x)的傅立葉譜,(u)稱為傅立葉變換的相角,振幅譜的平方被稱為f (x)的能量譜。即_ 2_ 22F (u) R (u) I (u)在傅立葉變換中出現(xiàn)的變量 u被稱為頻率變量

13、。同樣,傅立葉變換很容易就可以被推廣 到二維的情況,在此不做詳述。.圖像的增強在圖像的生成、傳輸和變換的過程中,由于各種因素的影響,如光學(xué)系統(tǒng)失真、系統(tǒng)噪聲、曝光不足或過量等,使得圖像總會與實際圖像有些差異,從而使得識別的效果不理想, 因此就有必要對圖像進行增強,以改善圖像的效果或者轉(zhuǎn)化成一種更適合機器去識別的形 式。圖像增強是采用一些技術(shù)手段,有選擇地突出圖像中感興趣的特征或抑制圖像中某些不需要的特征,使之改善圖像質(zhì)量、豐富信息量,加強圖像判讀和識別效果。圖像增強不考慮圖像質(zhì)量下降的原因,只將圖像中感興趣的特征有選擇的突出,而衰減不需要的特征。 其目的主要是提高圖像的視覺質(zhì)量或凸現(xiàn)某些特征信

14、息,使得處理后的圖像對某些特定的應(yīng)用比原來的圖像更加有效。圖像增強通常有兩種: 空間域法和頻率域法。前者是在原圖像上直接進行數(shù)據(jù)運算,后者是在圖像的變換域上進行修改,增強我們感興趣的地方。.圖像的二值化和細化根據(jù)圖像的灰度分布, 統(tǒng)計其最佳的閾值是二值化算法研究的核心。傳統(tǒng)的二值化算法但這樣也會引入有靜態(tài)算法和動態(tài)算法。 動態(tài)算法比靜態(tài)算法有著較好的效果, 靜態(tài)算法對質(zhì)量差的圖像區(qū) 域產(chǎn)生大量的偽特征點, 動態(tài)算法能夠在一定程度上彌補靜態(tài)算法的缺陷,更多的噪聲。在圖像二值化方面,近來又出現(xiàn)了一些新的方法,如一種基于方向圖的動態(tài)閾值圖像二值化方法。該方法直接從圖像灰度圖像中獲取動態(tài)閾值對圖像二值

15、化,一次性完成一般圖像預(yù)處理中的分離無效區(qū)域、濾波、增強、二值化的過程。對細化問題,國內(nèi)外已提出多種細化算法,各有特點和不足,其中較具代表性的有以下幾種細化算法:經(jīng)典快速細化算法、R.W.Hall細化算法、Rosenfeld細化算法、及Zhang&Suen 細化算法等。目前使用較多的圖像細化算法有兩種:基于形態(tài)學(xué)處理的快速細化算法和 OPTA算法及其改進形式。 快速細化算法為4連通并行細化算法,原理是判斷出圖像紋線的 邊界點并逐步刪除。該算法速度很快,但細化不徹底,細化后的紋線不是單像素寬。8.1.4圖像的特征提取每一張圖像都有自己的特征,有些特征是我們用人眼可以看見的,例如色彩、紋理、空間等

16、等,而有些是需要經(jīng)過處理才能夠得到的特征。圖像識別便是根據(jù)這些圖像的特征來對圖像進行識別的,然而問題是有一些特征并不能夠反應(yīng)圖像的本質(zhì),甚至影響到識別的效果。如果特征選取錯了, 則不但不能夠獲得正確的分類結(jié)果,有時甚至無法分類。因此圖像的特征選取就成了一個比較關(guān)鍵的問題。圖像的特征選擇和提取的目的就是為了從眾多的圖像特征中去除無效特征,選取那些最有效的特征。此過程包含幾個步驟。(1)首先是特征形成,即通過計算根據(jù)待識別的圖像形成一組原始的數(shù)據(jù),這些數(shù)據(jù) 便形成了圖像的初始特征.(2)其次進行特征提取。由于原始特征的數(shù)據(jù)量比較大,也就是說圖像樣本處于一個 高維的空間,通過映射的方法來對樣本空間進

17、行降維,這個過程就叫做特征提取。映射后的特征是原始特征的某種組合。(3)最后是特征提取,即從一組特征中選取出最有效的特征來達到降低空間維數(shù)的目 的。有效的特征可以用以下方法來衡量??蓞^(qū)別性。能夠很好的區(qū)別不同類的圖像??煽啃?。與可區(qū)別性相反,對于同類的圖像特征值應(yīng)該比較相近。獨立性好。選擇的特征之間相關(guān)性不能太大,不能相互影響。數(shù)量少。圖像識別系統(tǒng)的復(fù)雜程度隨著維數(shù)(特征的個數(shù))的增多而迅速增長。被抽取的特征可以分為以下幾類。灰度、顏色、分光光譜特征;紋理等空間特征;面積、周長等幾何方面的特征。我們簡單介紹以下幾種特征。幅度特征在所有的圖像特征里面,最基本的就是圖像的幅度特征。可以在圖像的某一

18、圖像點或 者其鄰域做出幅度的測量。例如在(2N+1) X ( 2N+1)區(qū)域內(nèi)的平均幅度,即:_1 N NF(i, j)2F(i m,j n)(2N1)2 m N n N直方圖特征一副數(shù)字圖像看作是一個二維隨機過程的樣本,可以用聯(lián)合概率分布來描述。線條和角點的特征圖中“點”的特征含義是,它的幅度與其鄰域的幅度有明顯的不同,檢測這種點特征 首先將圖像進行低通濾波, 然后把平滑后的每一個象元的幅度值與它相鄰的四個象元的幅度 值比較,當(dāng)差值足夠大時就可以檢測出點特征來。圖中“線條”的特征意味著它在截面上的幅度分布出現(xiàn)凹凸?fàn)?,也就是說在線段的法向上,圖像的幅度是由低到高再到低變化的(或者相反),從而可

19、以用不同的掩膜來檢測出線條。灰度邊緣特征圖像的灰度、紋理的改變或不連續(xù)是圖像的重要特征,它可以指示圖像內(nèi)各種物體的實際含量。數(shù)字圖像的邊緣檢測是圖像分割、目標(biāo)區(qū)域的識別、區(qū)域形狀提取等圖像分析領(lǐng)域十分重要的基礎(chǔ),圖像理解和分析的第一步往往就是邊緣檢測。所謂邊緣就是指圖像局部亮度變化最顯著的部分,它是檢測圖像局部變化顯著變化的最基本的運算。對于數(shù)字圖像, 圖像灰度值的顯著變化可以用梯度來表示。邊緣檢測通常的方法是先對圖像進行灰度邊緣的增強處理,得到一個增強后的圖像,然后設(shè)立門限,通過對門限操作來確定明顯邊緣的象元位置。在此,門限的設(shè)立是一個很重要的部分,既不能太高也不能太低。紋理特征紋理是圖像分

20、析和識別中常用到的一個概念,但是目前并無準(zhǔn)確的定義。我們一般認為,紋理是由許多相互接近的、互相編織的元素構(gòu)成,并常具有周期性,也可以認為是灰度(顏色)在空間以一定的形式變化而產(chǎn)生的圖像(模式)。紋理是真實圖像固有的一個特征,紋理特征可以反應(yīng)圖像本身的屬性,因此可以利用紋理特征將圖像中不同的目標(biāo)區(qū)別開來。紋理可以分為人工紋理和自然紋理。人工紋理是由自然背景上的符號排列組成。這些符號可以是點、線、字母等。自然紋理是具有重復(fù)性排列現(xiàn)象的自然景象。人工紋理一般是有規(guī)則的,而自然紋理一般是沒有規(guī)則的。通過觀察和分析不同物體的圖像,可以抽取出紋理特征的兩個要素。紋理基元。一種或者是幾種圖像基元的組合。紋理

21、基元的排列組合。 圖像基元排列的疏密、周期性、方向性的不同,也能夠使圖像的外觀產(chǎn)生極大的變化。紋理特征提取就是通過一定的圖像處理技術(shù)提取出圖像的紋理特征,從而獲取圖像的定量或者定性描述的處理過程。紋理特征的提取方法主要分為統(tǒng)計方法、結(jié)構(gòu)方法和頻譜法。統(tǒng)計方法適合分析像木紋、 早地等紋理細而且不規(guī)則的物體;結(jié)構(gòu)方法則適合分析紋理基元排列較規(guī)則的圖像;頻譜法則借助于傅立葉頻譜的特性來描述周期性或者近乎周期性的2-D圖像模式的方向性。目前主流的特征提取和分類算法是基于局部細節(jié)特征的算法。局部細節(jié)特征提取的算法如下:P8P1P2P7MP3P6P4圖8-2特征提取模板利用一個3X 3的模版來對細化后的圖

22、像進行端點和分歧點的特征提取,如圖8-2所示,M是待檢測的點,沿順時針排列的 P1, P2, P3,,P8是它的8個鄰域點,R (1), R (2), R (3),R (8)分別是P1, P2, P3,,P8的灰度值。如果 M是端點,則它的鄰域點 滿足:8GnR(k 1) R(k) 2, R(9) R(1)k 1如果M是分支點,則它的領(lǐng)域點滿足:8GnR(k 1) R(k) 6, R(9) R(1)k 1通過對圖像進行遍歷。可以找到圖像的特征點,同時記錄它們的類型和位置。圖像的分類判決分類,就是基于被測量的特征來估計其分類單位應(yīng)該屬于哪一個類。目前經(jīng)常采用的是統(tǒng)計識別法(Statistical

23、 classifier),也有其他更多的方法。如基于松弛法的分類方法、使用神經(jīng)網(wǎng)絡(luò)的分類方法。分類方法的選擇一般只選擇一種方法。但是也有將多種識別方法進行組合的情況。這種識別方法叫做層次識別( Hierarchical Classification ) o本質(zhì)上非常優(yōu)秀的 分類方法是不存在的,即使是某些識別方法在某些情況下比其他的識別有更好的識別性能, 也不過是在那種狀況下比較適合而已。常用的分類方法有以下幾種:最大似然法、最短距離法、k臨近法、決策樹法、使用松弛法進行識別、使用神經(jīng)網(wǎng)絡(luò)進行識別等。在此我們簡單介紹松弛法由Rosenfeld提出的向圖像處理擴展的松弛法( Relaxation

24、Method)也成為松弛標(biāo)記法(relaxation labeling )在數(shù)值分析領(lǐng)域又叫做緩和法。是已知近似解后進行迭代運算直到收斂于真實解的一種聯(lián)立方程式的求解方法。松弛法雖然是為了解釋初始圖像提出來的,但是在以后的發(fā)展過程中,它逐漸應(yīng)用到線增強、灰度圖像的噪聲消除、邊緣增強、分類、區(qū)域分割等圖像處理領(lǐng)域,而且顯示出較好的應(yīng)用性。這里所講的是概率松弛法(ProbabilisticRelaxation),即對類進行標(biāo)記,用標(biāo)記概率表示樣本對每一個類的相似性。松弛法包括以下幾個步驟:標(biāo)記概率的定義、標(biāo)記概率的更新、類之間鄰接關(guān)系的定義(相關(guān)系數(shù)的定義) 以及提高處理速度等各種方法。通過對圖像

25、進行遍歷??梢哉业綀D像的特征點,同時記錄它們的類型和位置。圖像識別的應(yīng)用領(lǐng)域圖像識別技術(shù)的應(yīng)用可分為驗證和識別兩種方式。驗證的目的是把當(dāng)事人的身份與正在發(fā)生的行為聯(lián)系在一起,確認行為的合法性,通常是驗證“你是他? ”的一對一(或較少的量)的比對系統(tǒng)。識別則是對系統(tǒng)的輸入圖像(可能是攝像機拍攝的活體圖像)與存貯在數(shù)據(jù)庫中的大量的參考圖像進行比對,以確定輸入圖像(目標(biāo))的身份,所以也稱為是識別“你是誰?”的一對多的比對系統(tǒng)。驗證系統(tǒng)可對圖像的輸入加以更多的控制,系統(tǒng)的可靠性和穩(wěn)定性好,也相對成熟,所以已廣泛地應(yīng)用于出入管理系統(tǒng)中。識別系統(tǒng)(特別是面像識別)則因環(huán)境條件的限制,還沒有成熟的產(chǎn)品。 但

26、其應(yīng)用的效果及在安全防范中的作用已被人們認識和肯定。目前圖像識別技術(shù)主要應(yīng)用于生物醫(yī)學(xué)、文件處理、工業(yè)檢測、機器人視覺、貨物檢測、郵政編碼、公安、銀行、交通、電子商務(wù)和多媒體網(wǎng)絡(luò)通信等領(lǐng)域。(1)遙感圖像處理和空間探測以多光譜圖像的綜合處理和像素區(qū)的模式分類為基礎(chǔ)的遙感圖像處理是對地球的全體環(huán)境進行監(jiān)控的強有力的手段。它同時可為國家計劃部門提供精確、客觀的各種農(nóng)作物生長情況、收獲估計、林業(yè)資源、地質(zhì)、水文、海洋等各種宏觀的調(diào)查、監(jiān)測資料??臻g探測和衛(wèi)星圖像偵察均已成為搜集情報的常規(guī)技術(shù)。21世紀人類發(fā)射的分析空間探測火箭將到達太陽系邊緣、給我們送來那遙遠的太陽系姐妹行星的真正面容。目前,遙感技

27、術(shù),尤其是衛(wèi)星遙感技術(shù),已經(jīng)在資源調(diào)查、災(zāi)害檢測、農(nóng)業(yè)規(guī)劃、城市 規(guī)劃、環(huán)境保護和軍事等方面取得了重大的成果。(2)醫(yī)學(xué)圖像處理圖像處理和識別技術(shù)在基礎(chǔ)科學(xué)和臨床中都有很多的應(yīng)用領(lǐng)域,例如對生物醫(yī)學(xué)的顯微圖像處理分析。以醫(yī)用超聲成像、X光造影成像、X光斷影成像、核磁共振斷層成像技術(shù)為基礎(chǔ)的醫(yī)用圖像處理將實現(xiàn)醫(yī)學(xué)界“將人體變?yōu)橥该鳌钡哪繕?biāo)。目前,這類應(yīng)用已經(jīng)發(fā)展到 專用的軟件設(shè)備和硬件設(shè)備,最普遍的就是CT技術(shù)。(3)文字識別文字識別目前應(yīng)用極為廣泛,涉及的方面主要有以下幾個方面:交通管理的汽車牌照識別、電子圖書和辦公自動化中的文檔識別、多媒體視頻圖像的中的注解文字識別、銀行支票的文字識別以及一

28、些圖標(biāo)的識別等。(4)機器人視覺及圖像測量隨著生活水平的日益提高,危、重、繁、雜的體力勞動將逐漸被智能機器人及機器人生產(chǎn)線所取代。隨著機器人在工業(yè)、 家庭生活中日益廣泛的應(yīng)用,高智能的機器人視覺是關(guān)鍵的一環(huán)。三維攝像機一一直接攝取空間像素的灰度及“深度”的攝像將會誕生。以“三維機器視覺”分析成果為中心,配有環(huán)境理解的機器視覺將在工業(yè)裝配、自動化生產(chǎn)線控制、救火、排障、引爆等應(yīng)用乃至家庭的輔助勞動、炊事烹任、洗衣、清潔、老年人及殘障病人 的監(jiān)護方面發(fā)揮巨大的作用。與機器視覺相并行,以三維分析為基礎(chǔ)的圖像測量傳感將成為通用的智能化測量技術(shù) 而得到長足的發(fā)展。8.2圖像識別程序的實現(xiàn)(實訓(xùn) 12).

29、實訓(xùn)開發(fā)目標(biāo)本實訓(xùn)開發(fā)主要利用 Microsoft Visual C+高級語言編程實現(xiàn)圖像識別程序。實訓(xùn)程序可實現(xiàn)圖像中數(shù)字的識別,即實現(xiàn) BMP或其他格式圖像中 09之間數(shù)字的識別功能。.環(huán)境要求(1)硬件基本配置Intel Pentinum 級處理器;512M內(nèi)存或更大;VGA或更高分辨率的顯示器。(2)軟件要求操作系統(tǒng)為 Windows XP或 Windows 2000及以上;驅(qū)動程序:顯卡、Microsoft Visual C+6.0 。.實驗步驟(1)運行結(jié)果運行結(jié)果如圖8-3所示。本例主要是對 number.jpg圖像文件進行識別,number.jpg圖像 內(nèi)容為數(shù)字8,通過程序運

30、行,可得到正確的識別結(jié)果,并將結(jié)果顯示在界面上。圖8-3圖像識別程序運行結(jié)果(2)具體步驟打開 Microsoft Visual C+6.0 軟件,選擇菜單 File一 New File一點擊選中 C+ SourceFile。在File中輸入新建文件的名字“ Patten_Recognition ”(此處可加擴展名.cpp,也可 不加),在Location”選項中選擇工程存放的位置。本實例存放在G: Patten _Recogniton目錄,點擊【???,如圖8-4所示。r?rxiNev圖8-4新建源文件添加代碼#include #include using namespace std;char

31、 header54;存儲bmp文件頭和信息頭char LUT256*4;/存儲調(diào)色板unsigned char Image6464;/存儲原圖像素信息int Image_statistics64;存儲投影后的圖像特征信息int data_statistics1064=投影矩陣5,545,4,5,4,6,6,5,6,6,6,6,6,6,6,6,6,6,6,6,5,6,6,4,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,000,0,0,0,0,數(shù)字 013,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,

32、3,3,3,3,3,3,3,3,3,3,3,3,8,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/數(shù)字 117,17,17,3,4,4,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,6,7,7,6,6,6,5,5,5,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/數(shù)字 27,5,4,4,6,6,7,7,5,3,3,2,3,2,2,4,5,3,2,2,3,2,3,6,7,7,6,6,5,5,5

33、,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 數(shù)字 313,4,3,3,3,3,3,3,3,20,20,5,5,4,5,4,4,5,4,5,5,4,5,5,4,5,4,5,4,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/數(shù)字 47,6,4,5,5,6,6,7,7,5,3,3,3,3,4,5,6,6,7,11,8,1,1,1,1,1,1,1,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0

34、, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, / / 數(shù)字 56,5,4,4,6,4,6,6,5,6,6,6,6,6,7,8,8,11,13,9,3,2,2,3,2,2,6,6,6,5,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/數(shù)字 63,4,4,4,4,4,4,3,3,3,3,2,2,3,2,2,2,2,1,2,1,2,1,2,2,3,3,3,5,16,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0

35、,0,0,0,0,0,0,0,0,0,/數(shù)字 77,5,5,4,6,6,6,6,6,6,7,7,7,8,7,8,9,9,9,8,8,7,7,6,6,6,6,5,6,6,6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 數(shù)字 86,6,6,6,7,4,3,2,3,3,3,2,9,13,11,9,8,7,7,6,6,6,6,5,5,4,5,5,5,3,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/數(shù)字 9;讀取圖像文件v

36、oid bmpRead(int sizex,int sizey,const char* fileName) ifstream fin(fileName,ios:in | ios:binary);for(int i=0;i54;i+)讀取文件頭和信息頭fin.get(headeri);for(i=0;i256*4;i+)/ 讀取調(diào)色板fin.get(LUTi);for(int x=0;x64;x+)/讀取圖片像素數(shù)據(jù)for(int y=0;y64;y+)char temp;fin.get(temp);Imagexy=(unsigned char)temp;)fin.close();)投影函數(shù)vo

37、id Projection()(int i=0;int j=0;for(i=0;i64;i+) 初始化Image_statisticsi=0; for(i=0;i64;i+)/進行直方圖統(tǒng)計for(j=0;j64;j+)if(unsigned char)Imageij=0) Image_statisticsi+; 保證投影向量的第一個元素不為0,將向量向前對齊規(guī)整while(Image_statistics0=0)for(i=0;i63;i+)Image_statisticsi=Image_statisticsi+1;Image_statistics63=0;匹配函數(shù)int Match()in

38、t i=0;int j=0;int count=0;for(i=0;j10;i+)count=0;statisticsij)for(j=0;j64;j+)if(Image_statisticsj=data count+;else break;if(count!=64) continue;if(count=64) return i;if(i=10 & count!=64) return -1;主函數(shù)int main()const int sizex = 64;const int sizey = 64;int temp;bmpRead(sizex,sizey,number.jpg);Project

39、ion();cout數(shù)字識別結(jié)果:endl;temp=Match(); if(temp=-1) cout未得出結(jié)果endl;elsecout識另咄temp4signed char lenth;最后一個方向的長度 14(1) 4(2)signed char decon;有無斷點 等于1有斷點signed char lenfirst;signed char lenend;TEZHENG;在 class CPartternDlg : public Cdialog ()函數(shù)中刪除如下代碼:CPDlg(CWnd* pParent = NULL); / standard constructorvirtua

40、l CPDlg();同時在public:下添加如下代碼:void GetTeZheng();CPartternDlg(CWnd* pParent = NULL); / standard constructorunsigned char bitgraph1616;/為了以后對擴展時對掃描圖象處理方便int mouseDown;CPoint mypoint100,oldpoint; 模擬手寫板輸入int mytime;/手寫板輸入的時間序列int curvalue;/當(dāng)前輸入的數(shù)字TEZHENG *mytezheng;CFile cf;/用于保存特征的文件2)在partternDlg.cpp文件中

41、開頭包含 math.h頭文件,并定義符號變量:#include#define startX 8 /模擬面板的 X起點#define startY 8/模擬面板的 丫起點#define stepX 11/X方向每格的長度#define stepY 15/Y方向每格的長度int disable=0;3)在 partternDlg.cpp 文件中 CPartternDlg二CPartternDlg(CWnd* pParent /*=NULL*/) 方法中刪除系統(tǒng)自帶代碼:m_pAutoProxy = NULL;同時添加新代碼:mouseDown=0;初始化,使得每個點皆為白點for(int i=0;

42、i16;i+)for(int j=0;j16;j+)bitgraphij=0;初始化,使得坐標(biāo)序列中的點皆為空點mytime=0;for(i=0;ivalue=-1;mytezheng-lenth=0;mytezheng-lenth1=0;for(i=0;iVHDerectioni=-1;mytezheng-decon=0;打開保存模板特征量的文件if(cf.Open(mydata.dat,CFile二modeCreate|CFile:modeNoTruncate|CFile二modeReadWrite) =NULL)AfxMessageBox(打開文件失敗,n您最好退出程序);)4)在par

43、tternDlg.cpp文件中CPartternDlg: OnPaint()方法中else條件語句中添加如下代 碼:CDC *pDC=GetDC();CBrush* pOldBrush;CBrush BrushBoard (RGB (255, 255,255);pOldBrush = pDC-SelectObject (&BrushBoard);pDC- PatBlt (8,8,176,240, PATCOPY );pDC-SelectObject (pOldBrush );5)在partternDlg.cpp文件中按鈕事件/【學(xué)習(xí)】按鈕事件void CPartternDlg:OnStudy(

44、)InputDialog inputdlg;cf.SeekToBegin();int nFileSize=cf.GetLength();int i=nFileSize/sizeof(TEZHENG);TEZHENG *temp;temp=(TEZHENG *)malloc(sizeof(TEZHENG);計算當(dāng)前畫板中數(shù)字的特征值GetTeZheng();首先判斷當(dāng)前的數(shù)字類型是否已經(jīng)在模板中for(int j=0;ji;j+)cf.Read(void *)temp,sizeof(TEZHENG);for(int k=0;kVHDerectionk!=mytezheng-VHDerection

45、k)break;if(k=15)&(temp-decon=mytezheng-decon)&(temp-lenfirst=mytezheng-lenfirst )&(temp-lenth1=mytezheng-lenth1)&(temp-lenth=mytezheng-lenth)&(temp-lenen d=mytezheng-lenend)char s20;sprintf(s,不需要學(xué)習(xí),您輸入的是:d。,temp-value);AfxMessageBox(s);break;說明該數(shù)字類型不在模板中if(j=i)if(inputdlg.DoModal()=IDOK)判斷數(shù)字輸入對話框中的兩

46、個數(shù)字是否相同if(inputdlg.m_value19)AfxMessageBox(您的輸入數(shù)字有誤,n請重新輸入);相同,則將新的數(shù)字類型寫入模板文件中elseGetTeZheng();trymytezheng-value=inputdlg.m_value1;cf.SeekToEnd();cf.Write(&mytezheng-value,sizeof(signed char);cf.Write(mytezheng-VHDerection,sizeof(signed char)*15);cf.Write(&mytezheng-lenth1,sizeof(signed char);cf.Wr

47、ite(&mytezheng-lenth,sizeof(signed char);cf.Write(&mytezheng-decon,sizeof(signed char);cf.Write(&mytezheng-lenfirst,sizeof(signed char);cf.Write(&mytezheng-lenend,sizeof(signed char);catch(CFileException *e)/Alert user to errore-Delete();/end try-catch/end if-else/end if/end ifOnClear();/【清除】按鈕事件voi

48、d CPartternDlg:OnClear()CDC *pDC=GetDC();CBrush BrushBoard (RGB (255, 255,255);CBrush pOldBrush;pDC- PatBlt (8,8,176,240, PATCOPY );for(int i=0;i16;i+)for(int j=0;j16;j+)bitgraphij=0;mouseDown=0;mytime=0;for(i=0;ivalue=-1;mytezheng-lenth=0;mytezheng-lenth1=0;for(i=0;iVHDerectioni=-1;mytezheng-decon=

49、0;/【識別】按鈕事件void CPartternDlg:OnRecognize()cf.SeekToBegin();int nFileSize=cf.GetLength();int i=nFileSize/sizeof(TEZHENG);TEZHENG *temp;temp=(TEZHENG *)malloc(sizeof(TEZHENG);計算特征值GetTeZheng();在模板文件中尋找,是否有與當(dāng)前特征值相同的for(int j=0;ji;j+)cf.Read(void *)temp,sizeof(TEZHENG);for(int k=0;kVHDerectionk!=mytezhe

50、ng-VHDerectionk)break;/找到識別結(jié)果if(k=15)&(temp-decon=mytezheng-decon)&(temp-lenfirst=mytezheng-lenfirst )&(temp-lenth1=mytezheng-lenth1)&(temp-lenth=mytezheng-lenth)&(temp-lenen d=mytezheng-lenend)char s20;sprintf(s,您輸入的是:d,temp-value);AfxMessageBox(s);break;/搜索結(jié)束if(j=i)AfxMessageBox(無法識別);)OnClear();)

51、/【退出】按鈕事件void CPartternDlg:OnAbout()/CAboutDlg dlgAbout;/dlgAbout.DoModal();CDialog:OnCancel();)5)在partternDlg.cpp文件中自定義函數(shù)void CPartternDlg:GetTeZheng()int p,q;int i=0;/從第一個點到最后一個點for(int j=0;jlenth1+;)if(i=13)AfxMessageBox(內(nèi)存溢出,NULL,NULL);return;)判斷兩個相鄰點的距離p=(mypointj+1.x-mypointj.x)*(mypointj+1.x-

52、mypointj.x);q=(mypointj+1.y-mypointj.y)*(mypointj+1.y-mypointj.y);/如果不是8連接,則為斷裂點或者是寫的太快if(p1)ll(q1)mytezheng-decon=1;j+;i+;if(j+1mytime-1)AfxMessageBox(寫得太快了 ”,NULL,NULL);return;if(mypointj+1.xmypointj.x)mytezheng-VHDerectioni=1;else if(mypointj+1.ymypointj.y)mytezheng-VHDerectioni=2;else if(mypoint

53、j+1.xVHDerectioni=3;elsemytezheng-VHDerectioni=4;mytezheng-lenth=1;/盡量保持目前的方向elseif(j=0)if(mypoint1.xmypoint0.x)mytezheng-VHDerection0=1;else if(mypoint1.ymypoint0.y)mytezheng-VHDerection0=2;else if(mypoint1.xVHDerection0=3;elsemytezheng-VHDerection0=4;mytezheng-lenth=1;end if elseswitch(mytezheng-V

54、HDerectioni)if(mypointj+1.xlenth=1;if(mypointj+1.ymypointj.y)mytezheng-VHDerectioni=2;else if(mypointj+1.yVHDerectioni=4;elsemytezheng-VHDerectioni=3;elsemytezheng-lenth+;break;if(mypointj+1.ylenth=1;if(mypointj+1.xVHDerectioni=3;else if(mypointj+1.xmypointj.x)mytezheng-VHDerectioni=1;elsemytezheng-

55、VHDerectioni=4;elsemytezheng-lenth+;break;if(mypointj+1.x=mypointj.x)i+;mytezheng-lenth=1;if(mypointj+1.yVHDerectioni=4;else if(mypointj+1.ymypointj.y)mytezheng-VHDerectioni=2;elsemytezheng-VHDerectioni=1;)elsemytezheng-lenth+;break;if(mypointj+1.y=mypointj.y)i+;mytezheng-lenth=1;if(mypointj+1.xmypointj.x)mytezheng-VHDerectioni=1;else if(myp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論