版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一章緒論1.1問題概述隨著我國汽車產(chǎn)業(yè)的飛速開展,大量在公共場合的汽車需要得到監(jiān)管,為了更好地進行管理,必須對車輛進行一種確認,而車牌識別就是其中最有效確實認方法,車牌識別LPR是LicensePlateRecognition的簡稱,他是智能交通系統(tǒng)(IntelligentTransportationSystems,ITS)的一個重要組成局部。車牌識別技術(shù)的運用使得“大輸入小輸出〞成為了可能——輸入一幅很大存儲量的圖像,輸出時僅僅是很小存儲量的數(shù)字,這必然使得其在大量存儲和管理數(shù)據(jù)庫相連等方面有無可替代的優(yōu)越性。車牌識別技術(shù)在高速公路收費站、路口監(jiān)測(電子警察)、大型停車場等場所具有廣闊的開展前景。1.1.1問題的來源近幾年,我國道路交通迅猛開展,隨之也帶來了對交通管理自動化的迫切需求。車牌自動識別的研究與開發(fā)一直是現(xiàn)代化交通開展中倍受關(guān)注的問題,也是制約交通系統(tǒng)智能化、現(xiàn)代化的重要因素。智能交通系統(tǒng)己成為當前交通管理開展的主要方向,而車牌識別技術(shù)作為智能交通系統(tǒng)的核心,起著舉足輕重的作用。車牌自動識別系統(tǒng)具有廣泛的應(yīng)用范圍,主要應(yīng)用于:(1)高速公路收費、監(jiān)控管理;(2)小區(qū)、停車場管理;(3)城市道路監(jiān)控、違章管理;(4)車牌登錄、驗證;(5)車流統(tǒng)計、平安管理等。車牌自動識別系統(tǒng)應(yīng)用于這些系統(tǒng),可以解決通緝車輛的自動稽查問題,可以解決車流頂峰期因出入口車流瓶頸造成的路橋卡口、停車場交通堵塞問題,可以解決因工作人員作弊造成的路橋卡口、高速公路、停車場應(yīng)收款流失的問題,還可以以最簡單的方式完成交通部門的車輛信息聯(lián)網(wǎng),解決數(shù)據(jù)統(tǒng)計自動化,模糊查詢的問題。車牌自動識別系統(tǒng)可安裝于公路收費站、停車場、十字路口等交通關(guān)卡處,其具體應(yīng)用可概括為:(l)交通監(jiān)控利用車牌識別系統(tǒng)的攝像設(shè)備,可以直接監(jiān)視相應(yīng)路段的交通狀況,獲得車輛密度、隊長、排隊規(guī)模等交通信息,防范和觀察交通事故。它還可以同雷達測速器或其他的檢測器配合使用,以檢測違犯限速值的車輛。當發(fā)現(xiàn)車輛超速時,攝像機獲取該車的圖像,并得到該車的牌照號碼,然后給該車超速的警告信號。(2)交通流控制指標參量的測量,為到達交通流控制的目標,一些交通流指標的測量相當重要。該系統(tǒng)能夠測量和統(tǒng)計很多交通流指標參數(shù),如總的效勞流率,總行程時間,總的流入量流出量,車型及車流組成,日車流量,小時/分鐘車流量,車流頂峰時間段,平均車速,車輛密度等。這也為交通誘導系統(tǒng)提供必要的交通流信息。(3)高速公路上的事故自動測報這是由于該系統(tǒng)能夠監(jiān)視道路情況和測量交通流量指標,能及時發(fā)現(xiàn)超速、堵車、排隊、事故等交通異?,F(xiàn)象。(4)對養(yǎng)路費交納、平安檢查、運營管理實行不停車檢查根據(jù)識別出的車牌號碼從數(shù)據(jù)庫中調(diào)出該車檔案材料,可發(fā)現(xiàn)沒及時交納養(yǎng)路費的車輛。另外,該系系統(tǒng)還可發(fā)現(xiàn)無車牌的車輛。假設(shè)同車型檢測器聯(lián)用,可迅速發(fā)現(xiàn)所掛車牌與車型不符的車輛。(5)車輛定位由于能自動識別車牌號碼,因而極易發(fā)現(xiàn)被盜車輛,以及定位出車輛在道路上的行駛位置。這為防范、發(fā)現(xiàn)和追蹤涉及車輛的犯罪,保護重要車輛(如運鈔車)的平安有重大作用,從而對城市治安及交通平安有重要的保障作用。車牌自動識別系統(tǒng)擁有廣闊的應(yīng)用前景,但假設(shè)在每個街口都裝配一套全新的車輛探測器的硬件系統(tǒng)那么投資巨大,所以急需一個純軟件實行的車牌自動識別系統(tǒng)來最大限度的減少費用,而純軟件的設(shè)計,不僅投資小而且靈活性高,適合我國的國情。1.1.2目的和意義車牌識別LPR是智能交通系統(tǒng)(ITS)的一個重要組成局部。在社會生活,治安管理等方面有很大的作用。車牌識別技術(shù)的運用使得“大輸入小輸出〞成為了可能——輸入一幅很大存儲量的圖像,輸出時僅僅是很小存儲量的數(shù)字,這必然使得其在大量存儲和管理數(shù)據(jù)庫相連等方面有無可替代的優(yōu)越性。1.1.3國內(nèi)外研究現(xiàn)狀從20世紀90年代初,國外就已經(jīng)開始了對汽車牌照自動識別的研究,其主要途徑就是對車牌的圖像進行分析,自動提取車牌信息,確定汽車牌號。在各種應(yīng)用中,有使用模糊數(shù)學理論也有用神經(jīng)元網(wǎng)絡(luò)的算法來識別車牌中的字符,但由于外界環(huán)境光線變化、光路中有灰塵、季節(jié)環(huán)境變化及車牌本身比擬模糊等條件的影響,給車牌的識別帶來較大的困難。國外的相關(guān)研究有:(1)JBarroso提出的基于掃描行高頻分析的方法;(2)I.T.Lancaster提出的類字符分析方法等.為了解決圖像惡化的問題,目前國內(nèi)外采用主動紅外照明攝像或使用特殊的傳感器來提高圖像的質(zhì)量,繼而提高識別率,但系統(tǒng)的投資本錢過大,不適合普遍的推廣.車牌識別系統(tǒng)中的兩個關(guān)鍵子系統(tǒng)是車牌定位系統(tǒng)和車牌字符識別系統(tǒng)。關(guān)于車牌定位系統(tǒng)的研究,國內(nèi)外學者已經(jīng)作了大量的工作,但實際效果并不是很理想,比方車牌圖像的傾斜、車牌外表的污穢和磨損、光線的干擾等都是影響定位準確度的潛在因素。為此,近年來不少學者針對車牌本身的特點,車輛拍攝的不良現(xiàn)象及背景的復雜狀況,先后提出了許多有針對性的定位方法,使車牌定位在技術(shù)和方法上都有了很大的改善.然而現(xiàn)代化交通系統(tǒng)不斷提高的快節(jié)奏,將對車牌定位的準確率和實時性提出更高的要求。因而進一步加深車牌定位的研究是非常必要的。車牌字符識別是在車牌準確定位的根底上,對車牌上的漢字、字母、數(shù)字進行有效確認的過程,其中漢字識別是一個難點,許多國外的LPR系統(tǒng)也往往是因為漢字難以識別而無法打入中國市場,因而探尋好的方法解決字符的識別也是至關(guān)重要的.目前己有的方法很多,但其效果與實際的要求相差很遠,難以適應(yīng)現(xiàn)代化交通系統(tǒng)高速度、快節(jié)奏的要求。因而對字符識別的進一步研究也同樣具有緊迫性和必要性。從實用產(chǎn)品來看,如以色列的Hi-Tech公司研制的多種See/Carsystem,適應(yīng)于幾個不同國家的車牌識別,就針對中國格式車牌的See/Carsyste而言,它不能識別漢字,且識別率有待提高。新加坡Optasia公司的VLPRS產(chǎn)品,適合于新加坡的車牌,另外日本、加拿大、德國、意大利、英國等西方興旺國家都有適合于本國車牌的識別系統(tǒng)。我國的實際情況有所不同,國外的實際拍攝條件比擬理想,車牌比擬標準統(tǒng)一,而我國車牌標準不夠,不同汽車類型有不同的規(guī)格、大小和顏色,所以車牌的顏色多,且位數(shù)不統(tǒng)一,對處理造成了一定的困難。在待處理的車牌圖像中就有小功率汽車使用的藍底白字牌照,大功率汽車所用的黃底黑字牌照,軍車和警車的白底黑字,紅字牌照,還有國外駐華機構(gòu)的黑底白字牌照等。就位數(shù)而言,有七位數(shù)字的,有武警車九位數(shù)字的,有軍車、前兩位字符上下排列的等,所以也造成了處理的難度。國內(nèi)做得較好的產(chǎn)品主要是中科院自動化研究所漢王公司的“漢王眼〞,此外國內(nèi)的亞洲視覺科技、深圳市吉通電子、中智交通電子系統(tǒng)等都有自己的產(chǎn)品,另外西安交通大學的圖像處理與識別研究室、上海交通大學的計算機科學與工程系、清華大學、浙江大學等都做過類似的研究。通常處理時為了提高系統(tǒng)的識別率,都采用了一些硬件的探測器和其他的輔助設(shè)備如紅外照明等,其中“漢王眼〞就是采用主動紅外照明和光學濾波器來減弱可見光的不可控制影響,減少惡劣氣候和汽車大小燈光的影響,另外還要求在高速公路管理窗口到“漢王眼〞識別點埋設(shè)兩條線路管道,一條管道鋪設(shè)220伏50赫茲1安培的交流供電線路:另一條管道鋪設(shè)觸發(fā)信號線路和漢王眼與管理計算機的通訊線路,投資巨大,不適合于大面積的推廣。另外,還有兩種專門的技術(shù)被用于車牌的識別中,條形碼識別技術(shù)和無線射頻技術(shù)。條形碼識別要求預先在車身上印刷條形碼,在系統(tǒng)的某一固定位置上安裝掃描設(shè)備,通過掃描來讀取條形碼,以到達識別車輛的目的。無線射頻技術(shù)要求在車內(nèi)安裝標示卡,在系統(tǒng)某一位置安裝收發(fā)器等裝置,通過收發(fā)器來接受標示卡的信號,從而識別出經(jīng)過的車輛。顯然,這兩種技術(shù)更難以推廣。從目前一些產(chǎn)品的性能指標可以看出,車牌識別系統(tǒng)的識別率和識別速度有待提高。現(xiàn)代交通的飛速開展以及車牌識別系統(tǒng)應(yīng)用范圍的日益拓寬給車牌識別系統(tǒng)提出了更高的要求。因此,研究高速、準確的定位與識別算法是當前的主要任務(wù),而圖像處理技術(shù)的開展與攝像設(shè)備、計算機性能的提高都會促進車牌識別技術(shù)的開展,提高車牌識別系統(tǒng)的性能。1.2問題剖析車牌識別系統(tǒng)是一個比擬復雜的系統(tǒng),在下面將做詳細介紹。1.2.1主要問題由于光照、氣候引起的車牌圖像上字符光照不均,車牌本身污損造成的字符筆畫不清和字符間粘連,汽車行駛速度較快,使拍攝出的車牌字符產(chǎn)生變形、模糊不清,因此圖像需要增強。另外又由于拍攝角度及拍攝點的高度、路面的傾斜等情況造成了車牌圖像的傾斜,從而需要對車牌進行校正。另外字符的識別也是一個重點問題,我們這里采用基于神經(jīng)網(wǎng)絡(luò)的字符識別,提高了車牌字符的識別率。1.2.2難點和關(guān)鍵把彩色的256BMP圖進行灰度轉(zhuǎn)換是問題的根底,采用基于空域的圖像增強,圖像得到增強,在增強的根底上對圖像二值化是圖像傾斜校正的關(guān)鍵,在二值圖像的根底上運用Hough變換求出圖像的傾斜角度,圖像進行旋轉(zhuǎn),繼而對車牌圖像進行邊框切除和字符切割,最后利用訓練好的神經(jīng)網(wǎng)絡(luò)對切割出來的字符圖像進行識別。整個系統(tǒng)的難點在于神經(jīng)網(wǎng)絡(luò)的識別局部,在這一塊需要大量的樣本對神經(jīng)網(wǎng)絡(luò)進行訓練。1.2.3思路和方法借助數(shù)字圖像處理技術(shù),我們對車牌圖像依次進行以下處理:彩色的256色的BMP圖進行灰度轉(zhuǎn)換->灰度變換〔圖像增強〕->中值濾波->圖像二值化->傾斜校正〔Hough變換〕->邊框切除->字符切割->神經(jīng)網(wǎng)絡(luò)的字符識別,最后得出車牌字符。1.3本文的結(jié)構(gòu)第一章:緒論介紹本系統(tǒng)要解決的問題。第二章:系統(tǒng)運用到的相關(guān)知識和工具介紹了開發(fā)本系統(tǒng)所用到的根底知識和開發(fā)本系統(tǒng)所需要的工具。第三章:系統(tǒng)的總體設(shè)計對本系統(tǒng)的總體結(jié)構(gòu)進行概括的描述。第四章:系統(tǒng)的詳細設(shè)計對本系統(tǒng)的功能模塊進行詳細的解釋說明。第五章:系統(tǒng)模塊程序編碼對本系統(tǒng)各主要模塊代碼進行說明。第六章:問題和展望對設(shè)計的系統(tǒng)進行整體的評價。第七章:結(jié)束語第二章相關(guān)的知識和工具2.1解決問題的知識VC開發(fā)平臺簡介VisualC++(簡稱VC)是微軟公司推出的一個面向?qū)ο蟮?、功能豐富的可視化重量級開發(fā)工具。利用VisualC++提供的高效Windows編程環(huán)境,我們可以編寫與其它軟件開發(fā)工具相比,VisualC++的強大功能表現(xiàn)在:第一,它是C和C++混合編譯器,使得VisualC++的開發(fā)程序具備了C和C++的高效簡潔的特點。第二,VisualC++是一個面向?qū)ο蟮恼Z言,使得軟件能夠在源碼級、類級、控件級等多個級別上重用,軟件的開發(fā)效率大為加快。第三,VisualC++借助于微軟公司的MFC類庫和應(yīng)用程序框架,能夠輕易開發(fā)出Windows標準界面的應(yīng)用程序。2.1.2數(shù)字圖像處理數(shù)字圖像處理一般是指通過數(shù)字計算機處理二維圖像。更廣義地講,它包括對任何二維數(shù)據(jù)的數(shù)字處理。計算機圖像處理按其輸入、輸出形式可以分為下述幾種類型:(1)從圖像到圖像,輸入和輸出均為圖像。這種處理技術(shù)主要有圖像增強、圖像復原和圖像編碼。圖像增強是增強圖像中的某些特征,使處理后的圖像更適合于人眼觀察和機器分析。例如:對圖像的灰度值進行修正,可以增強圖像的比照度;對圖像進行平滑,可以抑制混入圖像的噪聲;利用銳化技術(shù)可以增強圖像的邊緣輪廓;利用幾何校正技術(shù)可以校正遙感圖像的幾何畸變;將灰度值表示轉(zhuǎn)換為偽彩色表示,可以使人眼分辨出更多的圖像細節(jié)。圖像復原是根據(jù)圖像退化的原因,建立退化“模型〞,按逆過程進行處理,使處理后的圖像更逼近原始真實圖像。圖像復原與圖像增強均能提高圖像的質(zhì)量,但它們有一重要的區(qū)別,即圖像復原要求提高圖像的逼真度,而圖像增強只是改善圖像的視覺效果,并不要求逼近原始圖像。一副原始真實圖像不能再復原一次,但可以用銳化技術(shù)進一步增強。圖像壓宿編碼是在保持一定圖像質(zhì)量的條件下,以盡可能少的比特來表示圖像。(2)從數(shù)據(jù)到圖像其輸入為數(shù)據(jù)、公式、計算結(jié)果和曲線,輸出為圖像。這類圖像處理技術(shù)包括圖像分割、特征提取、圖像識別等。人們將這這類處理稱為圖像分析或圖像理解。(3)從圖像的數(shù)據(jù)到圖像這種類型的圖像處理主要用于圖像傳輸。要求把圖像信息壓縮成為便于傳輸?shù)臄?shù)據(jù)而不能丟掉信息,傳到遠端后再形成保真實度高的圖像以供觀看。這種類型的處理方法稱為圖像壓縮,以廣泛應(yīng)用于因特網(wǎng)上的傳輸和遙感圖像的傳輸。2.1.3BP神經(jīng)網(wǎng)絡(luò)目前,常用的神經(jīng)網(wǎng)絡(luò)主要有BP神經(jīng)網(wǎng)絡(luò)、Hopfield網(wǎng)絡(luò)、Kohonen網(wǎng)絡(luò)等,由于神經(jīng)網(wǎng)絡(luò)自身的復雜性,選用哪種類型的網(wǎng)絡(luò)并沒有最優(yōu)化的方式,主要是針對神經(jīng)網(wǎng)絡(luò)進行分類的樣本類型、數(shù)量決定.出于對機動車號牌自身特點的考慮,采用BP神經(jīng)網(wǎng)絡(luò)對機動車號牌進行訓練和識別.BP神經(jīng)網(wǎng)絡(luò)采用誤差反向傳播學習算法,該網(wǎng)絡(luò)可將一組樣本的I/O問題轉(zhuǎn)化為一個非線性優(yōu)化問題,并可近似實現(xiàn)從輸入到輸出的任意連續(xù)的非線性映射.BP神經(jīng)網(wǎng)絡(luò)不僅有輸入節(jié)點、輸出節(jié)點,而且有隱含層節(jié)點(可以是一層或多層,本文采用含一個隱含層的網(wǎng)絡(luò)),如下圖。該算法分為兩個階段,第一階段是正向傳播,第二階段是反向傳播.在正向傳播過程中,對號于輸入信,要先向前傳播到隱節(jié)點,經(jīng)過作用函數(shù)后,再把隱節(jié)點的輸出信息傳播到輸出節(jié)點,最后給出輸出結(jié)果,其中每一層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元的狀態(tài)。如果在輸出層不能得到期望輸出,那么轉(zhuǎn)入反向傳播,將誤差信號沿原來的連接通路返回,通過修改各層神經(jīng)元的權(quán)值,使得誤差到達最小。(X1,X2...Xn)輸入向量組,(Y1,Y2....Yn)輸出向量組。最下面一層為輸入層,中間一層為隱含層,最上面一層為輸出層。2.2開發(fā)平臺開發(fā)平臺包括硬件平臺和軟件平臺。硬件平臺指開發(fā)與運行所需要的硬件環(huán)境,主要包括計算機機型和硬件配置。本系統(tǒng)是一個車牌識別系統(tǒng),只要配置有P3處理器、64內(nèi)存、20G硬盤〔或以上〕的普通微機就可以順利運行。軟件平臺指開發(fā)與運行所需要的軟件環(huán)境。本系統(tǒng)是在WindowsXP環(huán)境下開發(fā),兼容當前主流操作系統(tǒng)Windows95/98/NT/Me/2000/XP,前臺開發(fā)環(huán)境:VisualC++6.0。第三章總體設(shè)計3.1總體設(shè)計的框架車牌識別系統(tǒng)流程圖輸入車牌圖片圖片預處理車牌邊框切除字符分割神經(jīng)網(wǎng)絡(luò)的字符識別讀出識別出的車牌號碼圖3-1系統(tǒng)流程圖基于神經(jīng)網(wǎng)絡(luò)的車牌識別系統(tǒng)主要分為三個子模塊:1,車牌圖片的預處理;2,車牌邊框的切除和字符分割;3,神經(jīng)網(wǎng)絡(luò)的字符識別。車牌圖片的預處理包括圖像灰度化,圖像增強,二值化,中值濾波和圖像的傾斜校正五個局部;車牌邊框切除和字符分割包括車牌邊框的切除和字符的分割兩個局部;神經(jīng)網(wǎng)絡(luò)的字符識別包括神經(jīng)網(wǎng)絡(luò)的訓練和神經(jīng)網(wǎng)絡(luò)字符的識別兩個過程。其中車牌圖片的預處理由我完成,車牌邊框的切除和字符分割由肖穴禎完成,最后神經(jīng)網(wǎng)絡(luò)的字符識別這個模塊由尹維完成。車牌識別系統(tǒng)結(jié)構(gòu)圖車牌識別系統(tǒng)字符識別字符分割邊框切除傾斜校正中值濾波二值化圖像增強圖像灰度化字符識別字符分割邊框切除傾斜校正中值濾波二值化圖像增強圖像灰度化圖3-2車牌識別結(jié)構(gòu)圖從圖3-2可以看出,本文的車牌識別系統(tǒng)主要由七個局部組成,即:灰度化、圖像增強、二值化、中值濾波、傾斜校正、邊框切除、字符分割和字符識別。從總體看,這其中的每一局部是車牌識別過程的一個步驟,但從局部而言,它們其中任何一局部都可以作為一類方法來研究.3.2模塊功能概述圖像灰度化灰度化是將彩色圖像轉(zhuǎn)化為灰度圖像。由于彩色圖像的信息量很大,有必要將它轉(zhuǎn)化為灰度圖,這樣有利于后期的特征提取和識別。在實驗中,對于所攝取的每一幅汽車圖像進行格式轉(zhuǎn)換。3.2.2圖像增強圖像增強:由于白天和夜晚、晴天和陰天的光線強度有很大差異,在某些情況下拍攝的牌照出現(xiàn)比照度缺乏的現(xiàn)象,使圖像的細節(jié)分辨不清,嚴重干擾字符的識別。因此對于這類牌照必須進行圖像增強,而這種圖像增強處理應(yīng)盡量防止對正常的牌照產(chǎn)生干擾,為此可采用基于點運算的圖像增強方法,即對圖像的灰度級進行變換。使圖像比照度得到調(diào)整,從而到達圖像增強的目的。二值化二值化是將灰度圖像轉(zhuǎn)換為只有黑和白兩種色彩的圖像,白色像素點(灰度值255)取1.黑色像素點(灰度值0)取0。由于在后期提取字符圖像的特征時,需要進行大量的計算,因此為了減少計算量和便于特征的提取,需要進一步將灰度圖轉(zhuǎn)化為二值圖像。中值濾波中值濾波,由于牌照受干擾而降低了圖像質(zhì)量,因此需要進行圖像濾波去噪,我們采用中值濾波除噪濾波,取得了較明顯的效果。3.2.5傾斜校正傾斜校正針對拍攝角度不正等因素所引起的車牌圖像傾斜進行校正.車牌圖像如果不能校正將嚴重影響到后面的車牌邊框切除和字符的分割,這里我們采用Hough變換求車牌的傾斜角度,然后對車牌圖像進行旋轉(zhuǎn),進而實現(xiàn)對車牌的校正。邊框切除由于車牌上下邊框的干擾對車牌的分割非常不利,因此,必須去除車牌的上下邊框。在這里我們采用首先對車牌圖像的所有行點象素灰度值為0的點進行統(tǒng)計,求出其每行黑點數(shù)目的分布,再進行排序,讓每行黑點個數(shù)低于常數(shù)C的所有行全部切除。同理對列采用相同的方法進行處理。字符分割字符分割是把車輛的牌照切割成單一字符,這樣有利于對每一個字符進行特征的提取和識別。字符識別字符識別對車牌字符進行識別通常采用模板法和神經(jīng)網(wǎng)絡(luò)。本系統(tǒng)采用神經(jīng)網(wǎng)絡(luò)的車牌字符識別。3.3關(guān)鍵算法3.3.1灰度化處理由彩色轉(zhuǎn)換為灰度的過程叫做灰度化處理?;叶葓D像就是只有強度信息,而沒有顏色信息的圖像,存儲灰度圖像只需要一個數(shù)據(jù)矩陣,矩陣的每個元素表示對應(yīng)位置的像素的灰度值。彩色圖像的象素色為RGB(R,G,B),灰度圖像的象素色為RGB(r,r,r),R,G,B可由彩色圖像的顏色分解獲得.而R,G,B的取值范圍是0-255,所以灰度的級別只有256級?;叶然奶幚矸椒ㄖ饕腥缦氯N:(1)最大值法:使R.G,B的值等于三值中最大的一個,即R=G=B=max(R,G,B)(3-1)(2)平均值法:使R,G,B·的值值等于三值和的平均值,即R=G=B=R+G+B(3-2)3(3)加權(quán)平均值法:根據(jù)重要性或其它指標給R,G,B賦予不同的權(quán)值,并使R,G,B等于它們的值的加權(quán)和平均,即R=G=B=WrR十WcG十WaB(3-3)3其中WrWc,Wa,分別為R,G,B的權(quán)值。由于人眼對綠色的敏感度最高,對紅色的敏感度次之,對藍色的敏感度最低,當Wr=0.30,Wa=0.59,Wc=0.11時,能得到最合理的灰度圖像。這里我們采用的是加權(quán)平均值法,在程序里面我們?nèi)r=0.299,Wa=0.587,Wc=0.114來更新調(diào)色板信息:bMap[i]=(BYTE)(0.299*lpbmc->bmciColors[i].rgbtRed+0.587*lpbmc->bmciColors[i].rgbtGreen+0.114*lpbmc->bmciColors[i].rgbtBlue+0.5),然后更新每個像素的顏色索引,最后實現(xiàn)對整幅彩色圖像的灰度化處理??沼驁D像增強空域圖像增強是直接對圖像中的像素進行處理,根本上是以灰度映射為根底的,映射變換的類型取決于增強的目的??沼驁D像增強的方法主要有:比照度增強、直方圖修正、圖像平滑、圖像銳化等。在這里我們對車牌圖像進行處理目的就是突出顯示其車牌字符,增大車牌背景與字符的比照度,所以我們采用比照度增強的方法。比照度增強是一種比擬簡便但又十分重要的空域法。這種處理只是逐點修改輸入圖像每一個像素的灰度,圖像個像素的位置并不改變,是一種輸入與輸出像素間一對一的運算。比照度增強又叫點運算。比照度增強一般用來擴大圖像的灰度范圍。設(shè)輸入圖像的灰度記為f(x,y),輸出圖像灰度記為g(x,y),那么比照度增強數(shù)學上可表達成g(x,y)=T[f(x,y)](3-4)圖像輸出與輸入灰度之間的映射關(guān)系完全由函數(shù)T確定。本系統(tǒng)采用的是比照度增強中的分段線性變換法。分段線性變換法通常都是分成3段,如圖3-3所示。這種變換的數(shù)學表示如下:(c/a)f(x,y)0<=f(xy)<=ag(x,y)=[(b-c)/(b-a)][f(x,y)-a]+ca<=f(xy)<=b[(Mg-d)/(Mf-b)][f(x,y)-b]+bb<=f(xy)<=Mf(3-5)g(x,y)Mgdcf(x,y)0abMf圖3-3分段線性變換濾波剛獲得的圖像有很多噪音。這主要由于平時的工作和環(huán)境引起的,圖像增強是減弱噪音,增強比照度。想得到比擬干凈清晰的圖像并不是容易的事情。為這個目標而為處理圖像所涉及的操作是設(shè)計一個適合、匹配的濾波器和恰當?shù)拈撝怠3S玫挠懈咚篂V波、均值濾波、中值濾波、最小均方差濾波、Gabor濾波。由于高斯函數(shù)的傅立葉變換仍是高斯函數(shù),因此高斯函數(shù)能構(gòu)成一個在頻域具有平滑性能的低通濾波器??梢酝ㄟ^在頻域做乘積來實現(xiàn)高斯濾波。均值濾波是對是對信號進行局部平均,以平均值來代表該像素點的灰度值。矩形濾波器(AveragingBoxFilter)對這個二維矢量的每一個分量進行獨立的平滑處理。通過計算和轉(zhuǎn)化,得到一幅單位矢量圖。這個512×512的矢量圖被劃分成一個8×8的小區(qū)域,再在每一個小區(qū)域中,統(tǒng)計這個區(qū)域內(nèi)的主要方向,亦即將對該區(qū)域內(nèi)點方向數(shù)進行統(tǒng)計,最多的方向作為區(qū)域的主方向。于是就得到了一個新的64×64的矢量圖。這個新的矢量圖還可以采用一個3×3模板進行進一步的平滑。本系統(tǒng)采用的是中值濾波。中值濾波是常用的非線性濾波方法,也是圖像處理技術(shù)中最常用的預處理技術(shù)。它在平滑脈沖噪聲方面非常有效,同時它可以保護圖像鋒利的邊緣。加權(quán)中值濾波能夠改良中值濾波的邊緣信號保持效果。中值濾波步驟如下:1,將模板〔一般含有奇數(shù)個點的滑動窗口〕在圖像范圍內(nèi)漫游,并將模板中心與圖中某個象素位置重合;2,讀取模板中各對應(yīng)象素的灰度值;3,將這些灰度值從小到大排列;4,找到這些值中排在中間的一個值;5,將這個中間值賦給對應(yīng)模板中心位置的象素。中值濾波器的主要功能就是使與周圍象素灰度值相差比擬大的象素取與周圍象素灰度值接近的值,從而消除孤立的噪聲點。由于這種方法不是簡單地取平均值,所以產(chǎn)生的模糊度較小。Hough變換Hough變換是變換域提取直線的方法,將直線上點的坐標變換到過點的直線的系數(shù)域,巧妙利用了共線與直線相交的關(guān)系,使直線的提取問題變換為計數(shù)問題,主要優(yōu)點是受直線中的間隙和噪音影響較小。使用Hough變換提取出邊緣直線后,就可以提取出牌照的傾斜度了。對于Oxy平面上給定的一條直線Y=ux+v,(其中U和V分別為直線的斜率和直線的截距),對應(yīng)于一個數(shù)對(u,v),反之,給定一個數(shù)對(u,v)那么對應(yīng)于一條直線y=ux+v,即:如Oxy平面上有一條直線Y=ux+v,那就和Ouv平面上的一個點(x,y)一一對應(yīng),同理,Ouv平面上的一條直線v=-xu+y和Oxy平面上有一個點(x,y)也是一一對應(yīng)的。如果Oxy平面上有一條直線y=ux+v,那上面的每個點都對應(yīng)于Ouv平面上的一條直線,這些直線相交于一點,利用這個重要性質(zhì)可以檢測共線點。由于直線的斜率可能會接近無窮大,為了使變換域有意義,需要采用直線方程的法線式表示:p=xcos(θ)+ysin(θ),其中,P為直線到坐標系原點的距離,θ為直線法線與X軸的夾角。于是極坐標上的一點對應(yīng)了Oxy平面坐標上的一條直線,而Oxy平面坐標上的一點對應(yīng)于極坐標上的一條曲線,而且易知Oxy平面坐標上的共線點所對應(yīng)的極坐標上的所有曲線相交于一點,且由于Oxy平面坐標上的一條直線上的各點都對應(yīng)于極坐標上的一點,如果對過這一點的曲線進行計數(shù),結(jié)果會是比擬大的數(shù)據(jù)。通過這一原理,可以很方便地提取出圖像上的直線。Hough變換如圖3-4,3-5所示:圖3-4圖3-5P直線到原點的距離,θ直線法線與X軸的夾角。如圖3-4所示圖中直線上的三點1,2,3對應(yīng)于圖3-5中的三條曲線,因為1,2,3三點在一條直線上所以在圖3-5圖中的三條曲線交于一點。3.3.4邊框切除將車牌圖像像進行二值化后,圖像僅黑、白二值。白色像素點(灰度值255)取1,黑色像素點(灰度值0)取0。由于車牌上下邊框的干擾對車牌的分割非常不利,因此,必須去除車牌的上下邊框。車牌圖像中字符上下邊沿處像素灰度值是我們首先想到的依據(jù)。如果橫向掃描牌照圖像,理想情況下字符區(qū)域的亮暗跳變頻繁,而背景區(qū)域沒有跳變。對于黑底白字且沒有其他干擾的牌照圖像而言,字符的左右間隔處的豎直投影值應(yīng)該為零。但實際處理中,由于前面車牌的定位不可能做到恰好卡在牌照的邊框上,即使卡在邊框上,在牌照的上下邊緣處會有許多其它的干擾。在這些干擾中:有的是牌照上本身有與字符的灰度值相同的矩形框;有的那么是牌照上的鉚釘;有的那么是牌照本身的污穢,還有的那么是由于汽車行駛速度較快,造成的字符變形和模糊。無論是那種干擾都對分割不利,因為它使原來應(yīng)該作為分割依據(jù)的零值投影點的數(shù)值不為零。為了不受上下邊框的干擾,我們采用的行掃描方法是由車牌商度的上面1/3處往上掃描,車牌高度的下面1/3處往下掃描。為了更加準確的區(qū)分,我們將字符區(qū)域在整個牌照中大致的位置(即高度比例信息)作為先驗知識,限定由掃描得到的判別點.字符與背景的分割處有明顯的從白到黑的跳變,當搜索到字符與背景的分界行時,將這個分界行所界定的字符區(qū)域之外局部全部切除。對于下邊框,左右邊框干擾的去除,除了加上牌照本身的長寬約束之外,方法大致一樣。3.3.5字符分割我們采用的方法是:首先進行掃描,由上向下掃描,掃描過程中不斷判斷該行像素點的灰度值,直到掃描發(fā)現(xiàn)第i行某點像素灰度值為0〔黑點〕,停止掃描,把此時高度作為字符大致的最高點;接著由下向上掃描,掃描過程和上面相同,直到掃描發(fā)現(xiàn)第j行某點像素灰度值為0〔黑點〕,停止掃描,把此時高度作為字符大致的最低點;然后由左向右列掃描圖像,掃描過程和上面相同,不同的是統(tǒng)計的是一列的黑像素點的個數(shù),掃描發(fā)現(xiàn)第m列黑色像素個數(shù)不為0,把此列作為字符大致的左邊界,繼續(xù)向右掃描發(fā)現(xiàn)第n列黑色像素點個數(shù)為0,把此列作為字符的右邊界,這樣就完成了對一個字符的切割,其他剩余字符的切割方法相同。3.3.6BP神經(jīng)網(wǎng)絡(luò)算法典型的BP網(wǎng)絡(luò)是三層,即:輸入層、隱含層和輸出層。各層之間實行全連接。如圖3-6所示。圖3-6(X1,X2...Xn)輸入向量組,(Y1,Y2....Yn)輸出向量組。最下面一層為輸入層,中間一層為隱含層,最上面一層為輸出層,θj為輸入層神經(jīng)元,θi為中間層神經(jīng)元,Wij輸入層到中間層的權(quán)值,Wji中間層到輸出層的權(quán)值。BP網(wǎng)絡(luò)的學習,由四個過程組成:輸入模式由輸入層經(jīng)中間層向輸出層的“模式順序傳播〞過程,網(wǎng)絡(luò)的希望輸出與網(wǎng)絡(luò)實際輸出之差的誤差信號由輸出層經(jīng)中間層向輸入層逐層修正連接權(quán)的“誤差逆?zhèn)鞑エ曔^程,由“模式順序傳播〞與“誤差逆?zhèn)鞑エ暤姆磸徒惶孢M行的網(wǎng)絡(luò)“記憶訓練〞過程,網(wǎng)絡(luò)趨向收斂即網(wǎng)絡(luò)的全局誤差趨向極小值的“學習收斂〞過程。歸結(jié)起來為,“模式順序傳播〞->“誤差逆?zhèn)鞑エ?>“記憶訓練〞->“學習收斂〞過程。3.4關(guān)鍵技術(shù)(1)空域圖像增強。本文采用的是分段變換線性圖像增強,為了突出感興趣的目標或灰度區(qū)間,相對抑制那些不感興趣的灰度區(qū)間,可采用分段線性變換法,本系統(tǒng)采用的是三段線性變換法。(2)中值濾波。中值濾波即可以消除噪聲又可以保持圖像的細節(jié)。(3)Hough變換。通過Hough變換,求出圖像中直線的傾斜角度,既而得出圖像的傾斜角度,再對圖像進行校正。(4)BP神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)能大規(guī)模的并行處理和分布式信息存儲,良好的自適應(yīng)性、自組織性,很強的學習功能、聯(lián)想功能和容錯功能,其識別率高,抗干擾能力強,靈活性大,但學習過程較長。第四章詳細設(shè)計4.1模塊流程圖輸入車牌圖片圖像灰度化圖像增強二值化中值濾波傾斜校正輸出可邊框切除的二值圖像圖4-1圖像預處理模塊流程圖4.2模塊結(jié)構(gòu)圖圖像預處理理圖像預處理理傾斜校正中值濾波圖像灰度化二值化圖像增強傾斜校正中值濾波圖像灰度化二值化圖像增強圖4-2圖像預處理模塊結(jié)構(gòu)圖為提高牌照的字符識別率,有必要設(shè)計一個高效的預處理算法,對以上各種原因造成的字符畸變進行統(tǒng)一的處理,以便得到較為清晰的待識別的單個字符。從圖4.1可以看出,本文的車牌識別系統(tǒng)預處理過程主要由五個局部組成,即:灰度化、圖像增強、二值化、中值濾波、傾斜校正,通過以上步驟的處理為以后的邊框切除、字符分割和字符識別打下了根底。4.2重要模塊詳述圖像灰度化汽車圖像樣本,目前大都是通過攝像機、數(shù)碼相機等設(shè)備拍攝獲取的,因而預處理前的圖像都是彩色圖像。真彩色圖像又稱RGB圖像,它是利用R,G,B3個分量表示一個像素的顏色,R,G,B分別代表紅、綠、藍3種不同的顏色,通過三基色可以合成出任意顏色。所以對一個尺寸為m*n的彩色圖像來說,存儲為一個二m*n*3的多維數(shù)組。如果需要知道圖像A中(x,y)處的像素RGB值,那么可以使用這樣的代碼A(x,y,1:3)。彩色圖像包含著大量的顏色信息,不但在存儲上開銷很大,而且在處理上也會降低系統(tǒng)的執(zhí)行速度。由于圖像的每個象素都具有三個不同的顏色分t,存在許多與識別無關(guān)的信息,不便于進一步的識別工作,因此在對圖像進行識別等處理中經(jīng)常將彩色圖像轉(zhuǎn)變?yōu)榛叶葓D像,以加快處理速度。數(shù)字圖像分為彩色圖像和灰度圖像。在RGB模型中,如果R=G=B,那么顏色表示一種灰度顏色,其中R=G=B的值叫做灰度值.由彩色轉(zhuǎn)換為灰度的過程叫做灰度化處理?;叶葓D像就是只有強度信息,而沒有顏色信息的圖像,存儲灰度圖像只需要一個數(shù)據(jù)矩陣,矩陣的每個元素表示對應(yīng)位置的像素的灰度值。彩色圖像的象素色為RGB(R,G,B),灰度圖像的象素色為RGB(r,r,r),R,G,B可由彩色圖像的顏色分解獲得.而R,G,B的取值范圍是0-255,所以灰度的級別只有256級?;叶然奶幚矸椒ㄖ饕腥缦氯N:(1)最大值法:使R.G,B的值等于三值中最大的一個,即R=G=B=max(R,G,B)(4-1)(2)平均值法:使R,G,B的值值等于三值和的平均值,即R=G=B=R+G+B(4-2)3(3)加權(quán)平均值法:根據(jù)重要性或其它指標給R,G,B賦予不同的權(quán)值,并使R,G,B等于它們的值的加權(quán)和平均,即R=G=B=WrR十WcG十WaB(4-3)3其中WrWc,Wa,分別為R,G,B的權(quán)值。由于人眼對綠色的敏感度最高,對紅色的敏感度次之,對藍色的敏感度最低,當Wr=0.30,Wa=0.59,Wc=0.11時,能得到最合理的灰度圖像。這里我們采用的是加權(quán)平均值法,在程序里面我們?nèi)r=0.299,Wa=0.587,Wc=0.114來更新調(diào)色板信息:bMap[i]=(BYTE)(0.299*lpbmc->bmciColors[i].rgbtRed+0.587*lpbmc->bmciColors[i].rgbtGreen+0.114*lpbmc->bmciColors[i].rgbtBlue+0.5),然后更新每個像素的顏色索引,最后實現(xiàn)對整幅彩色圖像的灰度化處理。圖像增強圖像增強。圖像增強技術(shù)經(jīng)常用于改善圖像中某種特征的可探測性。從而使計算機更容易識別和分析。圖像增強技術(shù)主要包括直方圖修正、圖像平滑化處理、圖像鋒利化處理以及偽彩色技術(shù)等。在實用中可以采用單一方法處理,也可以采用多種方法聯(lián)合處理,以便到達預期的增強效果。圖像增強技術(shù)根據(jù)其處理空間不同,可分為基于空間域的方法和基于變換域的方法。本文采用的是基于空域變換的圖像增強法。直接修改圖像象素點的灰度級是空域增強中的一種簡單而有效的方法。通常根據(jù)圖像降質(zhì)現(xiàn)象的不同而采取不同的修正方法。通常的方法有三種:一種是灰度級的修正,它是修改個別圖像象素點的灰度級以補償原來記錄圖像時的不均勻曝光;第二種形式為灰度級映射變換,其目的在于統(tǒng)一的方法改變整個圖像的灰度或改變圖像的一些區(qū)域的灰度,以便能增加比照度,從而能使圖像細節(jié)更容易看清;第三種方法就是直方圖修正,它能使圖像具有期望的灰度分布,從而能有選擇地突出所需要地圖像特征。本系統(tǒng)采用的是灰度變換法中的分段線性變換。和直方圖均衡相比分段線性變換更能突出感興趣的目標或灰度區(qū)間,相對抑制那些不感興趣的灰度區(qū)間。采用分段線性變換法,如圖4-3所示。其圖像表達式為:(c/a)f(x,y)0<=f(xy)<=ag(x,y)=[(b-c)/(b-a)][f(x,y)-a]+ca<=f(xy)<=b[(Mg-d)/(Mf-b)][f(x,y)-b]+bb<=f(xy)<=Mf(4-4)g(x,y)Mg-----------------------------d--------------------c-------------f(x,y)0abMf圖4-3分段線性變換函數(shù)進過圖像增強處理的車牌圖片處理前與處理后比照方圖4-4,4-5所示:圖4-4圖4-5二值化圖像二值化是指整幅圖像畫面內(nèi)僅黑、白二值的圖像。在數(shù)字圖像處理中二值圖像占有很重要的地位。這是因為,一方面,有些需要處理的如文字圖像、指紋圖像、工程圖紙等圖像本身是二值的;另一方面,在某些情況下即使圖像本身是有灰度的,我們也設(shè)法使它變成二值圖像再進行處理〔即灰度圖像的二值化〕。這是考慮到在實用系統(tǒng)中,要求處理的速度高、本錢低、信息量大的濃淡圖像處理的花銷大。此外二值化的圖像能夠用幾何學中的概念進行分析和特征描述,比灰度圖像優(yōu)勢大得多。在實際的車牌處理系統(tǒng)中,進行圖像二值化的關(guān)鍵使確定適宜的閾值,使得字符與背景能夠分割開來,而且二值變換的結(jié)果圖像必須要具備良好的保形性,不丟掉有用的形狀信息,不會產(chǎn)生額外的空缺等。同時車牌識別系統(tǒng)要求處理的速度高、本錢低、信息量大,采用二值圖像進行處理,能大大提高處理效率。二值化的關(guān)鍵是找到適宜的閾值t來區(qū)分對象和背景。設(shè)原灰度圖像為f(x,y),二值化后的圖像為g(x,y),二值化的過程表示如下:0f(x,y)<tg(x,y)=(4-5)255f(x,y)>t二值化,基于實時性的要求,我力求尋找一種快速而且效果較好的方法,能夠更有針對性的解決在不同條件下牌照圖像的二值化問題。求解閾值的方法很多,微分直方圖法、最大方差法、基于灰度的數(shù)學期望的方法、可變閾值法等。我們采用最簡單的方法,當象素灰度級低于常數(shù)C時,[0-C]象素灰度為0,[C-255]象素灰度為255。進過二值化處理的車牌圖像處理前與處理后比照方圖4-6,4-7所示:圖4-6圖4-7中值濾波中值濾波,由于牌照受干擾而降低了圖像質(zhì)量,因此需要進行圖像濾波去噪。因為低通濾波器在消除噪聲的同時會將圖像中的一些細節(jié)模糊掉,如果竟要消除噪聲又要保持圖像的細節(jié)所以我們采用使用中值濾波,這是一種非線性平滑濾波。中值濾波步驟如下:1,將模板〔一般含有奇數(shù)個點的滑動窗口〕在圖像范圍內(nèi)漫游,并將模板中心與圖中某個像素位置重合;2,讀取模板中各對應(yīng)像素的灰度值;3,將這些灰度值從小到大排列;4,找到這些值中排在中間的一個值;5,將這個中間值賦給對應(yīng)模板中心位置的象素。中值濾波器的主要功能就是使與周圍象素灰度值相差比擬大的象素取與周圍象素灰度值接近的值,從而消除孤立的噪聲點。由于這種方法不是簡單地取平均值,所以產(chǎn)生的模糊度較小。在系統(tǒng)中我們采用的是3*1模板,也就是說模板長度為3,寬度為1,將此模板在圖像范圍內(nèi)漫游,并將模板中心與圖像中某個像素位置重合,并讀取模板中3個像素的灰度值,然后對模板中3個像素的灰度值調(diào)用GetMedianNum()函數(shù)進行冒泡排序,并返回其中值,把中值作為模板中心像素的灰度值,當模板漫游完整幅圖像,也就完成了整幅圖像的中值濾波處理。中值濾波處理的車牌圖像處理前與處理后比照方圖4-8,4-9所示:圖4-8圖4-9傾斜校正傾斜校正,由于拍攝角度等原因造成了車牌圖像的傾斜,那么必須給予校正,否那么將無法進行單個字符的正確分割,字符識別的誤差率會上升。但假設(shè)以某個固定的經(jīng)驗值對所有牌照統(tǒng)一進行旋轉(zhuǎn)處理,又會使原本正常的牌照傾斜,導致新的錯誤。因此有必要針對特定的牌照圖像,提取其傾斜角度,再加以相應(yīng)的旋轉(zhuǎn)處理。如何從牌照中自動提取其傾斜度,是預處理過程中的一個難點。采用Hough變換的方法,實驗室校正的準確率到達了99%,證明此方案是可行的。Hough變換是變換域提取直線的方法,將直線上點的坐標變換到過點的直線的系數(shù)域,巧妙利用了共線與直線相交的關(guān)系,使直線的提取問題變換為計數(shù)問題,主要優(yōu)點是受直線中的間隙和噪音影響較小。使用Hough變換提取出邊緣直線后,就可以提取出牌照的傾斜度了。對于Oxy平面上給定的一條直線Y=ux+v,(其中U和V分別為直線的斜率和直線的截距),對應(yīng)于一個數(shù)對(u,v),反之,給定一個數(shù)對(u,v)那么對應(yīng)于一條直線y=ux+v,即:如Oxy平面上有一條直線Y=ux+v,那就和Ouv平面上的一個點(x,y)一一對應(yīng),同理,Ouv平面上的一條直線v=-xu+y和Oxy平面上有一個點(x,y)也是一一對應(yīng)的。如果Oxy平面上有一條直線y=ux+v,那上面的每個點都對應(yīng)于Ouv平面上的一條直線,這些直線相交于一點,利用這個重要性質(zhì)可以檢測共線點。由于直線的斜率可能會接近無窮大,為了使變換域有意義,需要采用直線方程的法線式表示:p=xcos(θ)+ysin(θ),其中,P為直線到坐標系原點的距離,θ為直線法線與X軸的夾角。于是極坐標上的一點對應(yīng)了Oxy平面坐標上的一條直線,而Oxy平面坐標上的一點對應(yīng)于極坐標上的一條曲線,而且易知Oxy平面坐標上的共線點所對應(yīng)的極坐標上的所有曲線相交于一點,且由于Oxy平面坐標上的一條直線上的各點都對應(yīng)于極坐標上的一點,如果對過這一點的曲線進行計數(shù),結(jié)果會是比擬大的數(shù)據(jù)。通過這一原理,可以很方便地提取出圖像上的直線。在提取車牌傾斜度時,先對所有列進行掃描,提取出所有第一次從O一1的可能邊界點,再進行Hough變換,得到的直線的傾斜度即為所求。在求得圖像的傾斜角度后在把整個圖像進行傾斜校正,即可得校正后的圖像。在實現(xiàn)車牌圖像的傾斜校正過程中,遇到的一些困難,主要是求出的傾斜角度精確度不高,最后在圖像的傾斜校正中出現(xiàn)很大的誤差,分析其原因主要是由于Hough變換中角度的步長太大,如果我們把步長變小,卻又會造成處理時間過長,后來查了些資料,終于找到一種適宜的方法,圖的編號等處理前圖像處理后圖像Hough變換提的取直線Hough變換提的取直線第五章程序編碼5.1數(shù)據(jù)結(jié)構(gòu)CRectLinkcharRect1,charRect2;//用來保存每個字符區(qū)域的鏈表doubleout[][6]//神經(jīng)網(wǎng)絡(luò)理想輸出結(jié)果constBYTEColorsTable[COLOR_SCALE_COUNT][256][4]//編碼表RGB數(shù)組 double*input_unites; //指向輸入層數(shù)據(jù)的指針 double*hidden_unites;//指向隱層數(shù)據(jù)的指針 double*output_unites;//指向輸出層數(shù)據(jù)的指針 double*hidden_deltas;//指向隱層誤差數(shù)據(jù)的指針 double*output_deltas;//指向輸出層誤差數(shù)劇的指針 double*target;//指向理想目標輸出的指針 double**input_weights;//指向輸入層于隱層之間權(quán)值的指針 double**hidden_weights;//指向隱層與輸出層之間的權(quán)值的指針 double**input_prev_weights;//指向上一此輸入層于隱層之間權(quán)值的指針 double**hidden_prev_weights;//指向上一此隱層與輸出層之間的權(quán)值的指針5.2主要界面系統(tǒng)主界面如圖5-1圖5-1系統(tǒng)主窗口分段線性灰度變換如圖5-2圖5-2分段線性灰度變換窗口圖像二值化如圖5-3圖5-3圖像二值化窗口5.3重要模塊程序?qū)崿F(xiàn)圖像灰度化車牌圖片首先經(jīng)過灰度化處理。圖像灰度化流程圖如圖5-4所示:輸入車牌圖片獲得指向圖像的句柄獲得指向圖像的句柄更新DIB調(diào)色板更新DIB調(diào)色板更新像素的顏色索引更新像素的顏色索引輸出車牌圖像的灰度圖圖5-4圖像灰度化灰度化處理函數(shù):OnFILE256ToGray()該函數(shù)實現(xiàn)對256色彩色BMP圖像的灰度化處理函數(shù)首先計算每個顏色所對應(yīng)的灰度值,更新DIB調(diào)色板。然后實現(xiàn)圖像每個像素點到新調(diào)色板的映射,繼而實現(xiàn)圖像的灰度化。//更新DIB調(diào)色板的主要代碼如下: if(bWinStyleDIB) { ap[i]=(BYTE)(0.299*lpbmi->bmiColors[i].rgbRed+ 0.587*lpbmi->bmiColors[i].rgbGreen+ 0.114*lpbmi->bmiColors[i].rgbBlue+0.5); lpbmi->bmiColors[i].rgbRed=i; lpbmi->bmiColors[i].rgbGreen=i; lpbmi->bmiColors[i].rgbBlue=i; bmi->bmiColors[i].rgbReserved=0; }//實現(xiàn)圖像像素顏色到新調(diào)色板映射的主要代碼如下:for(i=0;i<lHeight;i++) { for(j=0;j<lWidth;j++) { //指向DIB第i行,第j個象素的指針 lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i)+j; *lpSrc=bMap[*lpSrc]; } }for(i=0;i<256;i++) {5.3.2圖像增強車牌圖片經(jīng)過圖像增強處理,使得計算機更容易識別和處理。該模塊程序流程圖如圖5-5所示:輸入灰度圖像獲得指向圖像的句柄獲得指向圖像的句柄輸入線性變換參數(shù)輸入線性變換參數(shù)計算灰度映射表計算灰度映射表更新像素的顏色索引更新像素的顏色索引輸出增強的車牌灰度圖圖5-5圖像增強圖像增強函數(shù):GrayStretch(),該函數(shù)實現(xiàn)對車牌灰度圖像分段灰度拉伸〔即分段線性變換,也就是分段圖像增強〕函數(shù)說明如下://計算灰度映射表代碼如下:bMap[i]=(BYTE)bY1*i/bX1;bMap[i]=bY1+(BYTE)((bY2-bY1)*(i-bX1)/(bX2-bX1));bMap[i]=bY2+(BYTE)((255-bY2)*(i-bX2)/(255-bX2));//更新像素索引代碼如下://每行 for(i=0;i<lHeight;i++) { //每列 for(j=0;j<lWidth;j++) { //指向DIB第i行,第j個象素的指針 lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i)+j; //計算新的灰度值 *lpSrc=bMap[*lpSrc]; } }5.3.3二值化圖像二值化是指整幅圖像畫面內(nèi)僅黑、白二值的圖像。在數(shù)字圖像處理中二值圖像占有很重要的地位。二值化處理程序流程圖如圖5-6所示:輸入增強后的灰度圖像獲得指向圖像的句柄獲得指向圖像的句柄獲得指向圖像的句柄獲得指向圖像的句柄設(shè)定二值變換參數(shù)設(shè)定二值變換參數(shù)指向圖像像素指針指向圖像像素指針像素灰度值低于參數(shù)值像素灰度值低于參數(shù)值NY設(shè)像素灰度值為255設(shè)像素灰度值為255設(shè)像素灰度值為0整幅圖像掃描完整幅圖像掃描完整幅圖像掃描完整幅圖像掃描完N NYY輸出車牌圖像的二值圖像圖5-6二值化二值化函數(shù):BOOLWINAPIThresholdTrans(LPSTRlpDIBBits,LONGlWidth,LONGlHeight,BYTEbThre),lpDIBBits指向圖像的起始指針,lWidth圖像的寬度,lHeight圖像的高度,bThre設(shè)定的閾值。在二值化過程中掃描5.3.4中值濾波通過中值濾波的處理能消除圖像留下的噪聲,消除噪聲對圖像的干擾。中值濾波函數(shù)說明如下:*MedianFilter()**參數(shù):*LPSTRlpDIBBits -指向源DIB圖像指針*LONGlWidth -源圖像寬度〔象素數(shù)〕*LONGlHeight -源圖像高度〔象素數(shù)〕*intiFilterH -濾波器的高度*intiFilterW -濾波器的寬度*intiFilterMX -濾波器的中心元素X坐標*intiFilterMY -濾波器的中心元素Y坐標**返回值:*BOOL -成功返回TRUE,否那么返回FALSE。**說明:*該函數(shù)對DIB圖像進行中值濾波。*************************************************************************/BOOLWINAPIMedianFilter(LPSTRlpDIBBits,LONGlWidth,LONGlHeight, intiFilterH,intiFilterW, intiFilterMX,intiFilterMY){ //指向源圖像的指針 unsignedchar* lpSrc; //指向要復制區(qū)域的指針 unsignedchar* lpDst; //指向復制圖像的指針 LPSTR lpNewDIBBits; HLOCAL hNewDIBBits; //指向濾波器數(shù)組的指針 unsignedchar *aValue; HLOCAL hArray; //循環(huán)變量 LONG i; LONG j; LONG k; LONG l; //圖像每行的字節(jié)數(shù) LONG lLineBytes; //計算圖像每行的字節(jié)數(shù) lLineBytes=WIDTHBYTES(lWidth*8); //暫時分配內(nèi)存,以保存新圖像 hNewDIBBits=LocalAlloc(LHND,lLineBytes*lHeight); //判斷是否內(nèi)存分配失敗 if(hNewDIBBits==NULL) { //分配內(nèi)存失敗 returnFALSE; } //鎖定內(nèi)存 lpNewDIBBits=(char*)LocalLock(hNewDIBBits); //初始化圖像為原始圖像 memcpy(lpNewDIBBits,lpDIBBits,lLineBytes*lHeight); //暫時分配內(nèi)存,以保存濾波器數(shù)組 hArray=LocalAlloc(LHND,iFilterH*iFilterW); //判斷是否內(nèi)存分配失敗 if(hArray==NULL) { //釋放內(nèi)存 LocalUnlock(hNewDIBBits); LocalFree(hNewDIBBits); //分配內(nèi)存失敗 returnFALSE; } //鎖定內(nèi)存 aValue=(unsignedchar*)LocalLock(hArray); //開始中值濾波 //行(除去邊緣幾行) for(i=iFilterMY;i<lHeight-iFilterH+iFilterMY+1;i++) { //列(除去邊緣幾列) for(j=iFilterMX;j<lWidth-iFilterW+iFilterMX+1;j++) { //指向新DIB第i行,第j個象素的指針 lpDst=(unsignedchar*)lpNewDIBBits+lLineBytes*(lHeight-1-i)+j; //讀取濾波器數(shù)組 for(k=0;k<iFilterH;k++) { for(l=0;l<iFilterW;l++) { //指向DIB第i-iFilterMY+k行,第j-iFilterMX+l個象素的指針 lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i+iFilterMY-k)+j-iFilterMX+l; //保存象素值 aValue[k*iFilterW+l]=*lpSrc; } } //獲取中值 *lpDst=GetMedianNum(aValue,iFilterH*iFilterW); } } //復制變換后的圖像 memcpy(lpDIBBits,lpNewDIBBits,lLineBytes*lHeight); //釋放內(nèi)存 LocalUnlock(hNewDIBBits); LocalFree(hNewDIBBits); LocalUnlock(hArray); LocalFree(hArray); //返回 returnTRUE;}5.3.5圖像傾斜校正車牌圖片有一拍攝的角度不同,圖像會存在或多或少的傾斜,如不對圖像進行校正,將會影響到后來的字符分割。圖像傾斜校正首先要獲得圖像的傾斜角度,我們采用Hough變換求得圖像的傾斜角度。//Hough變換求圖像傾斜角度/***************************************************************************函數(shù)名稱:*HoughDIB()**參數(shù):*LPSTRlpDIBBits-指向源DIB圖像指針*LONGlWidth-源圖像寬度〔象素數(shù),必須是4的倍數(shù)〕*LONGlHeight-源圖像高度〔象素數(shù)〕*返回值:*BOOL-運算成功返回TRUE,否那么返回FALSE。**說明:*該函數(shù)用于對檢測圖像中的直線*要求目標圖像為只有0和255兩個灰度值的灰度圖像。************************************************************************/floatHoughDIB(LPSTRlpDIBBits,LONGlWidth,LONGlHeight){ intAnglenumber; #definepi3.1415926 //指向源圖像的指針 LPSTR lpSrc; //指向緩存圖像的指針 LPSTR lpDst; //指向變換域的指針 LPSTRlpTrans; //圖像每行的字節(jié)數(shù) LONGlLineBytes; //指向緩存DIB圖像的指針 LPSTR lpNewDIBBits; HLOCAL hNewDIBBits; //指向變換域的指針 LPSTR lpTransArea; HLOCAL hTransArea; //變換域的尺寸 intiMaxDist; intiMaxAngleNumber; //變換域的坐標 intiDist; intiAngleNumber; //循環(huán)變量 longi; longj; //像素值 unsignedcharpixel; //存儲變換域中的兩個最大值 MaxValueMaxValue1; MaxValueMaxValue2; //暫時分配內(nèi)存,以保存新圖像 hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight); if(hNewDIBBits==NULL) { //分配內(nèi)存失敗 returnFALSE; } //鎖定內(nèi)存 lpNewDIBBits=(char*)LocalLock(hNewDIBBits); //初始化新分配的內(nèi)存,設(shè)定初始值為255 lpDst=(char*)lpNewDIBBits; memset(lpDst,(BYTE)255,lWidth*lHeight); //計算變換域的尺寸 //最大距離 iMaxDist=(int)sqrt(lWidth*lWidth+lHeight*lHeight); //角度從0-180,每格2度 iMaxAngleNumber=180; //為變換域分配內(nèi)存 hTransArea=LocalAlloc(LHND,lWidth*lHeight*sizeof(int)); if(hNewDIBBits==NULL) { //分配內(nèi)存失敗 returnFALSE; } //鎖定內(nèi)存 lpTransArea=(char*)LocalLock(hTransArea); //初始化新分配的內(nèi)存,設(shè)定初始值為0 lpTrans=(char*)lpTransArea; memset(lpTrans,0,lWidth*lHeight*sizeof(int)); //計算圖像每行的字節(jié)數(shù) lLineBytes=WIDTHBYTES(lWidth*8); for(j=0;j<lHeight;j++) { for(i=0;i<lWidth;i++) { //指向源圖像倒數(shù)第j行,第i個象素的指針 lpSrc=(char*)lpDIBBits+lLineBytes*j+i; //取得當前指針處的像素值,注意要轉(zhuǎn)換為unsignedchar型 pixel=(unsignedchar)*lpSrc; //目標圖像中含有0和255外的其它灰度值 if(pixel!=255&&*lpSrc!=0) returnFALSE; //如果是黑點,那么在變換域的對應(yīng)各點上加1 if(pixel==0) { //注意步長是2度 for(iAngleNumber=0;iAngleNumber<iMaxAngleNumber;iAngleNumber++) { iDist=(int)fabs(i*cos(iAngleNumber*pi/180.0)+\ j*sin(iAngleNumber*pi/180.0)); //變換域的對應(yīng)點上加1 *(lpTransArea+iDist*iMaxAngleNumber+iAngleNumber)=\ *(lpTransArea+iDist*iMaxAngleNumber+iAngleNumber)+1; } } } } //找到變換域中的兩個最大值點 MaxValue1.Value=0; MaxValue2.Value=0; //找到第一個最大值點 for(iDist=0;iDist<iMaxDist;iDist++) { for(iAngleNumber=0;iAngleNumber<iMaxAngleNumber;iAngleNumber++) { if((int)*(lpTransArea+iDist*iMaxAngleNumber+iAngleNumber)>MaxValue1.Value) { MaxValue1.Value=(int)*(lpTransArea+iDist*iMaxAngleNumber+iAngleNumber); MaxValue1.Dist=iDist; MaxValue1.AngleNumber=iAngleNumber; } } } //將第一個最大值點附近清零 for(iDist=-9;iDist<10;iDist++) { for(iAngleNumber=-1;iAngleNumber<2;iAngleNumber++) { if(iDist+MaxValue1.Dist>=0&&iDist+MaxValue1.Dist<iMaxDist\ &&iAngleNumber+MaxValue1.AngleNumber>=0&&iAngleNumber+MaxValue1.AngleNumber<=iMaxAngleNumber) { *(lpTransArea+(iDist+MaxValue1.Dist)*iMaxAngleNumber+\ (iAngleNumber+MaxValue1.AngleNumber))=0; } } } Anglenumber=MaxValue1.AngleNumber;// } //釋放內(nèi)存 LocalUnlock(hNewDIBBits); LocalFree(hNewDIBBits); //釋放內(nèi)存 LocalUnlock(hTransArea); LocalFree(hTransArea);if(Anglenumber>0){ //返回 //MessageBox("ok",0,0); returnAnglenumber+90;}else{ return90-abs(Anglenumber);}}//圖像傾斜校正voidCPhotodealView::Rectinication(HDIBhDIB,floatfAngel){#definePI3.1415926 //循環(huán)變量longi0;longj0;longi1;longj1;floatffAngle;LONGlWidth;LONGlHeight;LONGlLineBytes;CPhotodealDoc*pDoc=GetDocument();//指向DIB的指針 LPSTRlpDIB; //指向DIB象素指針 LPSTRlpDIBBits;//鎖定DIB lpDIB=(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB());//找到DIB圖像象素起始位置lpDIBBits=::FindDIBBits(lpDIB);//判斷是否是8-bpp位圖〔這里為了方便,只處理8-bpp位圖,其它的可以類推〕 if(::DIBNumColors(lpDIB)!=256) { //提示用戶 MessageBox("目前只支持查看256色位圖灰度直方圖!","系統(tǒng)提示",MB_ICONINFORMATION|MB_OK); //解除鎖定 ::GlobalUnlock((HGLOBAL)pDoc->GetHDIB()); //返回 return; }//更改光標形狀 BeginWaitCursor();//DIB的寬度 lWidth=::DIBWidth(lpDIB);//DIB的高度lHeight=::DIBHeight(lpDIB);//計算圖像每行的字節(jié)數(shù) lLineBytes=WIDTHBYTES(lWidth*8); if(fAngel>90) { fAngel=180-fAngel; }//旋轉(zhuǎn)角度的弧度 ffAngle=(fAngel*PI/180);//角的正余旋 floatfSinAngle=(float)sin(ffAngle);floatfCosAngle=(float)cos(ffAngle); floatfTgAngle=fSinAngle/fCosAngle; unsignedchar*m_temp; m_temp=newunsignedchar[lLineBytes*lHeight];//復制空白數(shù)據(jù)到中間緩存 for(i0=0;i0<lLineBytes*lHeight;i0++) m_temp[i0]=255;//先對X方向進行校正處理for(i0=0;i0<lHeight;i0++) { for(j0=0;j0<lWidth;j0++) {//計算校正后的坐標位置 //MessageBox("ok"); j1=(LONG)((j0-lWidth/2)*fCosAngle+(lHeight/2-i0)*fSinAngle+lWidth/2+0.5f); i1=(LONG)(-(j0-lWidth/2)*fSinAngle-(lHeight/2-i0)*fCosAngle+lHeight/2+0.5f);//將原始象素復
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年夜間出租車租賃協(xié)議樣本
- 2024年房屋贈與協(xié)議法律示范文本
- 創(chuàng)新風格2024協(xié)議封面范本
- 食道超聲課件教學課件
- 企業(yè)人才儲備流動站勞動合同池
- 個人租房合同規(guī)范化
- 互聯(lián)網(wǎng)寫字樓物業(yè)管理公約
- 交通運輸全職勞動合同模板
- 個人購車輛貸款協(xié)議書
- 倉儲物流經(jīng)理職位協(xié)議
- DB51T 2968-2022 經(jīng)濟開發(fā)區(qū)安全風險評估導則
- 社會網(wǎng)絡(luò)分析課件
- 小學生學習興趣和習慣培養(yǎng)課件
- 保安公司客戶滿意度調(diào)查表
- 課間安全教育主題班會課件
- 民法典 婚姻家庭編課件
- 電氣工程及其自動化專業(yè)人才需求調(diào)研報告(新)5100字
- 公務(wù)員考試行測答題卡
- 消失模工序工藝作業(yè)指導書
- 廣西壯族自治區(qū)北海市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細居民村民委員會
- 老年人能力評定總表(含老年人日常生活活動能力、精神狀態(tài)與社會參與能力、感知覺與溝通能力、老年綜合征罹患情況)
評論
0/150
提交評論