肉不停h共妻h山中猎户h,精品无码一区二区三区爱欲,激情综合色综合啪啪五月丁香搜索,欲色av无码一区二区人妻

移動端

基于c++的車牌自動識別算法

2016年01月05日 11:16$artinfo.Reprint點(diǎn)擊量:8249

  車牌自動識別系統(tǒng)

  本章首先對車牌自動識別系統(tǒng)的總體結(jié)構(gòu)進(jìn)行了一個粗略的說明,主要包括系統(tǒng)的硬件部分和軟件部分;然后比較詳細(xì)地介紹了車牌識別系統(tǒng)的軟件流程;zui后對本章進(jìn)行總結(jié)。

  車牌識別系統(tǒng)的總體結(jié)構(gòu)

  車牌自動識別系統(tǒng)是一個以微處理器為核心,基于圖像處理、模式識別、神經(jīng)網(wǎng)絡(luò)等技術(shù)的高度智能的電子系統(tǒng),主要由攝像頭、視頻采集接口、輔助照明裝置、計(jì)算機(jī)和識別軟件組成。當(dāng)車輛通過關(guān)卡,經(jīng)過車體位置傳感器的敏感區(qū)域時,傳感器發(fā)送一個信號給圖像采集控制部分。采集控制部分控制攝像機(jī)采集一幅汽車圖像送至計(jì)算機(jī)內(nèi)。計(jì)算機(jī)內(nèi)的軟件模塊從輸入圖像中找到牌照的位置,對牌照作字符分割,得到各個字符的點(diǎn)陣數(shù)據(jù)。字符識別模塊從點(diǎn)陣數(shù)據(jù)中提取字符特征數(shù)據(jù),輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行識別,得到字符識別的結(jié)果。一個典型的車牌自動識別系統(tǒng)通常由車輛檢測、圖像采集、車牌提取、字符分割和字符識別等部分組成,其中,車輛檢測模塊一般使用地感線圈,它可以檢測當(dāng)前是否有車輛通過。目前,隨著視頻檢測技術(shù)的提高,有些已經(jīng)開始使用視頻流檢測系統(tǒng),檢測是否有車輛通過。圖像采集部分包括光線不足時自動光源補(bǔ)足和CCD攝像頭,以攝取清晰的車輛圖像。車牌提取、字符分割和字符識別部分由計(jì)算機(jī)或DSP處理器組成,可以完成對車牌的識別。車輛圖像采集車牌提取字符分割字符識別車輛檢測。

  車牌識別系統(tǒng)的硬件部分

  車牌識別系統(tǒng)的硬件部分主要包括三個部分:

 ?。?)圖像采集部分

  圖像采集由CCD彩色攝像機(jī)和圖像采集卡組成。為了提高系統(tǒng)對天氣、環(huán)境、光線等的自適應(yīng)性,攝像機(jī)一般采用自動對焦、自動光圈的一體化機(jī);車輛檢測通常采用車輛傳感器,如地感線圈、紅外線等。圖像采集的工作過程是:首先在攝像機(jī)前方檢測點(diǎn)設(shè)置一傳感器,當(dāng)汽車通過檢測點(diǎn)時,傳感器向主機(jī)發(fā)出信號,系統(tǒng)即自動攝下車輛的圖像,并將圖像輸入計(jì)算機(jī)。但是在這樣的圖像上,由于車輛處于運(yùn)動狀態(tài)以及污損等原因,車牌畫面往往不夠清晰,難以從中攝取需要的信息。為了解決這一問題,一方面我們盡量采取清晰度更高和更的CCD攝像機(jī);另外我們通過設(shè)置更的硬件來保證圖像的清晰度。比如說在攝取車牌圖像時加強(qiáng)光照,盡量使車牌的位置和攝像機(jī)的距離為*等等。這樣可以為后續(xù)圖像處理減小難度和提高系統(tǒng)的度以及穩(wěn)定性。

 ?。?)圖像處理部分

  主要涉及數(shù)字圖像的處理過程,一般使用嵌入式的硬件系統(tǒng),比如說可以采用DSP處理器來集成系統(tǒng),這樣的系統(tǒng)安裝和使用比較方便,應(yīng)用范圍更廣。當(dāng)然在特定條件下也可以使用計(jì)算機(jī)來完成。

 ?。?)結(jié)果輸出部分

  將識別出的車牌號碼通過液晶屏幕或者顯示器輸出出來,必要的時候需要與車輛數(shù)據(jù)庫建立連接,從而進(jìn)一步顯示出該車輛的狀態(tài)。

  車牌識別系統(tǒng)的軟件部分

  車牌自動識別系統(tǒng)的軟件部分包括車牌提取、字符分割和字符識別等三個算法,即從背景復(fù)雜的含有車牌的圖像中提取出車牌圖像,然后對提取的車牌圖像進(jìn)行必要的預(yù)處理、分離出單個字符,接著提取字符的特征并與標(biāo)準(zhǔn)字符進(jìn)行比對,得到待識別車牌的車牌號碼,并與車牌數(shù)據(jù)庫進(jìn)行連接以便確定該車輛的狀態(tài)。在本章的后續(xù)部分我們將對本文中的車牌識別算法做比較詳細(xì)的說明。

  車牌識別系統(tǒng)的軟件流程

  車牌識別系統(tǒng)的軟件部分實(shí)現(xiàn)的功能就是把輸入的車牌圖像(由硬件部分采集的數(shù)字圖像)進(jìn)行處理后,得到該車牌所代表的車牌號碼。一般把車牌識別系統(tǒng)的處理過程分為三個大步驟:(1)車牌定位;(2)字符分割;(3)字符識別。

  車牌定位算法實(shí)現(xiàn)的功能就是從一幅復(fù)雜背景的數(shù)字圖像中分割出車牌圖像,要求具有較高的識別率和較強(qiáng)的環(huán)境適應(yīng)性。

  圖像的預(yù)處理

  由于從攝像機(jī)前端得到的原始圖像是從不同的環(huán)境和針對不同的車輛拍下的,因此在質(zhì)量上有相當(dāng)大的差別。如何處理這些質(zhì)量參差不齊的圖像,得到更適合后端圖像處理的數(shù)據(jù)就是圖像預(yù)處理需要完成的工作。

  首先,我們得到的圖像可能是彩色圖像,但是由于彩色圖像數(shù)據(jù)量巨大,處理起來不方便且速度較慢,所以有必要將彩色圖像轉(zhuǎn)換為灰度圖像。其次,圖像的亮度不同。有的圖像較暗,有的圖像較亮,需要將這些圖像轉(zhuǎn)換為亮度比較接近的圖像,這可以用直方圖均衡化來實(shí)現(xiàn),以增強(qiáng)圖像的對比度。zui后,所得圖像可能會受到噪聲的干擾。當(dāng)然,對于不同的環(huán)境和設(shè)備,噪聲的類型是不同的,比如說有高斯濾波,中值濾波等等,具體使用那一種濾波,要根據(jù)應(yīng)用環(huán)境和系統(tǒng)硬件設(shè)備情況而定。

  車牌定位算法

  車牌提取一直是車牌識別中備受關(guān)注的一步,因?yàn)樗钦麄€車牌識別的*步。它的成功與否直接影響到后續(xù)的步驟,并zui終使我們系統(tǒng)的速度和識別率受到影響。圖像預(yù)處理車牌提取。

  因此,很多人都致力于車牌定位算法的研究,也提出了很多切實(shí)可行的方法。本人也提出了兩種有效的車牌定位算法,一種是基于高帽變換和小波變換的車牌提取方法,另一種是基于投影法和數(shù)學(xué)形態(tài)學(xué)的車牌提取方法。前一個算法的特點(diǎn)是采用水平定位和豎直定位相結(jié)合,首先采用高帽變換突出了車牌區(qū)域,實(shí)現(xiàn)了車牌的水平定位;然后通過小波變換對車牌區(qū)域進(jìn)行特征提取,實(shí)現(xiàn)了車牌的豎直定位;zui后根據(jù)得到的車牌水平位置和豎直位置信息,從原始圖像中提取出車牌。后一個算法的特點(diǎn)是首先采用投影法,利用水平一階差分圖的水平投影進(jìn)行車牌水平定位,即通過對一階差分水平投影曲線進(jìn)行掃描,得到較大的波峰值或波峰積分值較大的波峰在平滑的一階差分水平投影曲線中的位置坐標(biāo),進(jìn)而利用這些波峰位置坐標(biāo)進(jìn)行車牌水平定位運(yùn)算,得到一個或多個車牌水平位置候選區(qū)域在原始圖像中的位置坐標(biāo);然后在豎直定位時,結(jié)合數(shù)學(xué)形態(tài)學(xué)的特性,利用閉運(yùn)算,在原始圖像中突出車牌區(qū)域的位置,通過合理選擇二值化閥值,對變換后的圖像進(jìn)行二值化,實(shí)現(xiàn)車牌豎直定位,克服了基于掃描行的車牌提取方法和基于彩色的車牌提取方法難以解決在照明不均勻環(huán)境下定位準(zhǔn)確率的問題。這兩種車牌定位方法在第三章中將會有詳細(xì)的論述。

  車牌圖像預(yù)處理

  從車牌定位算法得到的車牌圖像具有一些特殊性,所以我們必須首先對他們進(jìn)行預(yù)處理。預(yù)處理一般包括歸一化和圖像增強(qiáng)。之所以要?dú)w一化,是因?yàn)橛械能嚺茍D像的大小各異,我們必須把它們轉(zhuǎn)化為統(tǒng)一大小的車牌;還有就是車牌原先的顏色搭配不同,有的車牌是黃底黑字,轉(zhuǎn)換為灰度圖像過后字符的灰度值比車牌預(yù)處理定位字符的位置分割字符車牌圖像字符圖像車牌背景的灰度值要小,而有的車牌是藍(lán)底白字,轉(zhuǎn)換為灰度圖像過后就是字符亮而背景比較暗。所以必須統(tǒng)一為黑底白字的圖像。同時,車牌圖像中基本上只含有車牌,不包括其他的區(qū)域,因此我們可以利用這一特點(diǎn)把圖像盡量增強(qiáng)。有統(tǒng)計(jì)表明,車牌圖像面積的20%~30%是字符區(qū)域,其余的是車牌的底色區(qū)域。我們可以加強(qiáng)這些灰度值較高的字符區(qū)域,使之相對于背景而言更突出一些。

  定位字符的位置

  我們知道,一個普通車牌包括七個字符,且字符大小一定,皆為90mm高,45mm寬。而且字符間的位置,間距是一定的,排列也相當(dāng)有規(guī)律。所以我們一旦確定一個字符的位置并且知道它是第幾個字符的話,其他字符的位置我們也就一并確定了。即使車牌上字符出現(xiàn)一定的粘連,但是一般來說還是可以找到一個或者多個沒有粘連的字符的。

  所以,在這里本人提出了兩種字符定位方法,一種是基于拉普拉斯變換、區(qū)域生長法和車牌先驗(yàn)知識相結(jié)合的車牌字符分割方法,另一種是基于快速區(qū)域標(biāo)號算法和車牌大間隔定位方法的車牌字符分割方法。前一種算法的特點(diǎn)是首先采用拉普拉斯算子對進(jìn)行車牌區(qū)域進(jìn)行邊緣檢測;然后,以拉普拉斯變換檢測到的邊緣點(diǎn)為“種子”點(diǎn)進(jìn)行區(qū)域生長,得到“初步”字符候選區(qū);接著,去除高度、寬度和高寬比明顯不符合字符區(qū)域要求的“初步”字符候選區(qū),得到“中間”字符候選區(qū)域;然后,結(jié)合車牌的先驗(yàn)知識修正和補(bǔ)足字符區(qū)域,得到“zui終”字符候選區(qū)域。后一種算法的特點(diǎn)是首先計(jì)算二值化閾值把車牌灰度圖像轉(zhuǎn)化為二值圖像;然后,用快速區(qū)域標(biāo)號算法對車牌二值圖像進(jìn)行連通性分析得到字符的候選區(qū)域;接著,從車牌二值化圖像中定位出大間隔的位置;然后,結(jié)合車牌大間隔的位置特征修正和補(bǔ)齊字符區(qū)域,得到zui終的字符區(qū)域。這兩種車牌字符分割方法在第四章中將會有詳細(xì)的論述。

  車牌定位

  本章詳細(xì)介紹了如何從含有車牌的原始圖像中提取車牌圖像。在這一章,我們將介紹兩種車牌定位的算法,分別是基于高帽變換和小波變換的車牌提取方法與基于投影法和數(shù)學(xué)形態(tài)學(xué)的車牌提取方法。實(shí)驗(yàn)證明,我們所開發(fā)的算法是有效而且實(shí)用的。在此之前我們將就車牌提取在國內(nèi)外常用的算法和技術(shù)發(fā)展?fàn)顩r作一個較詳細(xì)的說明。車牌定位作為車牌處理流程的前端步驟,具有相當(dāng)重要的作用,定位的好壞將直接影響到車牌識別的有效性和準(zhǔn)確率。

  常用的車牌定位方法

  車牌定位是車牌識別中的關(guān)鍵環(huán)節(jié)之一。車牌定位是否成功以及定位的準(zhǔn)確程度,直接決定了后期能否進(jìn)行識別以及識別的效果。由于車牌可以出現(xiàn)在圖像上的任何位置,而且由于受天氣、背景、磨損等外界干擾因素的影響,造成得到牌定位一直是車牌自動識別系統(tǒng)中的重點(diǎn)和難點(diǎn)。為了準(zhǔn)確、快速地定位出車牌區(qū)域,人們已經(jīng)研究了許多定位方法,這些算法基本上都或多或少的借助了車牌自身特征來實(shí)現(xiàn)的。車牌自身具有很多的固有特征,這些特征對于不同的國家是不同的。從人的視覺角度出發(fā),我國車牌具有以下可用于定位的特征:

 ?。?)車牌底色往往與車身顏色、字符顏色有較大差異;

 ?。?)車牌有一個連續(xù)或由于磨損而不連續(xù)的邊框,車牌內(nèi)字符有多個,基本呈水平排列,所以在牌照的矩形區(qū)域內(nèi)存在較豐富的邊緣,呈現(xiàn)出規(guī)則的紋理特征;

 ?。?)車牌內(nèi)字符之間的間隔比較均勻,字符和牌照底色在灰度上存在跳變,而字符本身與牌照底的內(nèi)部都有較均勻灰度;

 ?。?)不同圖像中牌照的具體大小、位置不確定,但其長度比變化有一定范圍,存在一個zui大和zui小長寬比。根據(jù)這些特點(diǎn),人們提出了多種車牌定位的方法。下面介紹幾種具有代表性的方法。

  基于灰度圖像的定位方法

  一般來說,單色圖像的灰度級有256級、128級和64級不等,通常所采用的為256級的灰度圖像?;叶葓D像中每一個點(diǎn)的灰度值可以用一個單值實(shí)函數(shù)來表示,該函數(shù)在某點(diǎn)的值稱為在該點(diǎn)灰度級或亮度。由于灰度圖像的函數(shù)表示比較簡單,在圖像處理時可以減少運(yùn)算時間,提高運(yùn)算速度。因此目前的大多數(shù)研究都是基于灰度圖像的,以滿足車牌識別的實(shí)時性需求。

  基于特征的車牌定位方法

  如前文所述,盡管車牌圖像的背景較為復(fù)雜,可能包含了行人、建筑和其他車輛等干擾因素,但車牌區(qū)域具有較為穩(wěn)定的特征,即存在若干各等高且水平排列的字符,字符色和牌照底色的灰度值存在明顯的跳變,車牌區(qū)域存在豐富的邊緣特征,因此被廣泛應(yīng)用于車牌的定位研究中。在文獻(xiàn)[18]中,作者首先對車輛灰度圖像在橫向上進(jìn)行一階差分運(yùn)算,并累積其差分直方圖。對此直方圖采用離散指數(shù)平滑法進(jìn)行平滑,而且具有一定寬度和對稱性,因此可以利用這一特征來排除一部分峰點(diǎn)。然后對橫向分割出來的車牌子圖像應(yīng)用一個縱向的邊界抽取模板作運(yùn)算,再作縱向累加直方圖并平滑,這樣得到直方圖的許多峰,zui后對這些峰的寬度進(jìn)行從小到大的排序,應(yīng)用相應(yīng)的規(guī)則來確定車牌所處的位置。作者使用一階微分算子對原始圖像的邊緣進(jìn)行預(yù)處理,并在此基礎(chǔ)上運(yùn)用數(shù)學(xué)形態(tài)學(xué)的閉運(yùn)算獲得車牌的候選區(qū),然后采用投影法剔除假車牌,定位出真車牌。作者首先將輸入的彩色圖像進(jìn)行灰度化,隨后在灰度圖像上利用濾波算子進(jìn)行濾波預(yù)處理,并生成一個門限,將濾波后的圖像轉(zhuǎn)化為二值圖像。由于經(jīng)過預(yù)處理后,車牌的投影具有明顯的豎線條區(qū)域,可以根據(jù)這個特點(diǎn),在二值圖像中進(jìn)行區(qū)域搜索,尋找出具有較多豎線條的區(qū)域,并將它們作為候選的車牌位置。然后根據(jù)車牌號碼在水平方向上的投影具有明顯的規(guī)律以及字符間具有較低的谷點(diǎn)的規(guī)律,并結(jié)合車牌的高寬比來切割出車牌的位置。根據(jù)車牌區(qū)域的特征設(shè)計(jì)了一個處理函數(shù),使用該函數(shù)對原始圖像進(jìn)行處理后,突出圖像中的豎直邊緣,并適當(dāng)調(diào)節(jié)參數(shù),使車牌區(qū)域的特征得以放大,在此基礎(chǔ)上提取車牌的位置。

  基于數(shù)學(xué)形態(tài)學(xué)和遺傳算法等工具的定位方法

  數(shù)學(xué)形態(tài)學(xué)中的腐蝕和膨脹以及在此基礎(chǔ)上產(chǎn)生的開、閉運(yùn)算在車牌定位中得到了較為廣泛的運(yùn)用。腐蝕是一種消除邊界點(diǎn)的過程,結(jié)果是使目標(biāo)縮小,孔洞增大,因而可有效地消除孤立噪聲點(diǎn)。膨脹是將與目標(biāo)物體接觸的所有背景點(diǎn)合并到物體中的過程,結(jié)果是使目標(biāo)增大,孔洞縮小,可*目標(biāo)物體中的空洞,形成連通域。一般情況下,腐蝕與膨脹是不可恢復(fù)的運(yùn)算,但通過腐蝕與膨脹可以構(gòu)成開運(yùn)算和閉運(yùn)算。先腐蝕后膨脹的過程稱為開運(yùn)算,它具有消除細(xì)小物體,并在纖細(xì)處分離物體和平滑較大物體邊界的作用;先膨脹后腐蝕的過程稱為閉運(yùn)算,它具有填充物體內(nèi)細(xì)小空洞,連接鄰近物體和平滑邊界的作用。通過開、閉運(yùn)算,可以將目標(biāo)區(qū)域顯示出來。在文獻(xiàn)[22]中,作者通過對灰度圖像采用屬性開運(yùn)算,削去滿足特定屬性的峰部,確定出目標(biāo)以及少量非目標(biāo)區(qū)域,然后計(jì)算出圖像的傾斜角及目標(biāo)區(qū)域所在范圍。這種算法考慮了車牌的傾斜角度,能夠有效的確定文字區(qū)域。作者將小波分析與數(shù)學(xué)形態(tài)學(xué)相結(jié)合,通過小波多尺度分解提取出紋理清晰且具有不同空間分辨率、不同方向的邊緣子圖,其水平方向低頻、垂直方向高頻的這一細(xì)節(jié)分量,主要代表車牌的目標(biāo)區(qū)域。然后,用數(shù)學(xué)形態(tài)學(xué)方法對小波分解得到的細(xì)節(jié)圖像進(jìn)行一系列膨脹和腐蝕運(yùn)算,有效的消除細(xì)小的物體,增強(qiáng)目標(biāo)區(qū)域內(nèi)的連通性,從而在結(jié)果圖像中只留下了車牌這一待尋的目標(biāo)。作者首先使用Sobel邊緣檢測算子,并根據(jù)經(jīng)驗(yàn)和合理的推理選取閾值對圖像進(jìn)行二值化,然后利用形態(tài)學(xué)的閉運(yùn)算和開運(yùn)算,對二值圖像進(jìn)行處理,通過膨脹將鄰近的邊緣凝聚成一個連通的整體,用某個形狀的結(jié)構(gòu)對圖像進(jìn)行腐蝕,濾除細(xì)碎的邊緣,然后對圖像進(jìn)行進(jìn)一步聚類,并根據(jù)相關(guān)準(zhǔn)則進(jìn)行篩選,得到車牌區(qū)域。遺傳算法是建立在自然選擇和群體遺傳學(xué)機(jī)理基礎(chǔ)上的隨機(jī)、迭代、進(jìn)化,具有廣泛適用性的搜索方法,結(jié)合了達(dá)爾文的適者生存和隨機(jī)信息交換,消除解中的不適應(yīng)因素,利用了原有解中已有的知識,從而有力的加快了搜索過程。而車牌的提取從本質(zhì)上來說可以看作是一個在一幅復(fù)雜圖像中尋找zui符合牌照特征的區(qū)域的過程,也就是一個在參數(shù)空間中尋找*定位參數(shù)的問題,而這正是遺傳算法zui為擅長的。因此作者從這一點(diǎn)出發(fā),提出了利用遺傳算法對圖像進(jìn)行優(yōu)化搜索,設(shè)計(jì)區(qū)域的特征矢量,構(gòu)造出適應(yīng)函數(shù),尋找到車牌區(qū)域的*定位參量。

  基于c++的車牌自動識別算法

  車牌識別系統(tǒng)軟件平臺。搭建了一個基于c/c++語言的算法演示平臺,該平臺集成了我們算法研究的結(jié)果,以及一些通用的數(shù)學(xué)算法,該平臺是*開放的,可以自由在其基礎(chǔ)上增加新的算法并可方便的觀察算法結(jié)果。提出的算法均已在軟件平臺上正確實(shí)現(xiàn),并使用大量從各種不同環(huán)境下的具采集有代表性的車輛圖像作為算法測試數(shù)據(jù)源對算法進(jìn)行測試,研究了車牌自動識別系統(tǒng)是一個以微處理器為核心,基于圖像處理、模式識別、神經(jīng)網(wǎng)絡(luò)等技術(shù)的高度智能的電子系統(tǒng),主要由攝像頭、視頻采集接口、輔助照明裝置、計(jì)算機(jī)和識別軟件組成。當(dāng)車輛通過關(guān)卡,經(jīng)過車體位置傳感器的敏感區(qū)域時,傳感器發(fā)送一個信號給圖像采集控制部分。采集控制部分控制攝像機(jī)采集一幅汽車圖像送至計(jì)算機(jī)內(nèi)。計(jì)算機(jī)內(nèi)的軟件模塊從輸入圖像中找到牌照的位置,對牌照作字符分割,得到各個字符的點(diǎn)陣數(shù)據(jù)。字符識別模塊從點(diǎn)陣數(shù)據(jù)中提取字符特征數(shù)據(jù),輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行識別,得到字符識別的結(jié)果。一個典型的車牌自動識別系統(tǒng)通常由車輛檢測、圖像采集、車牌提取、字符分割和字符識別等部分組成,其中,車輛檢測模塊一般使用地感線圈,它可以檢測當(dāng)前是否有車輛通過。目前,隨著視頻檢測技術(shù)的提高,有些已經(jīng)開始使用視頻流檢測系統(tǒng),檢測是否有車輛通過。圖像采集部分包括光線不足時自動光源補(bǔ)足和CCD攝像頭,以攝取清晰的車輛圖像。車牌提取、字符分割和字符識別部分由計(jì)算機(jī)或DSP處理器組成,可以完成對車牌的識別。車輛圖像采集車牌提取字符分割字符識別車輛檢測 并利用Visual C+ + 6. 0編程實(shí)現(xiàn)。目前該系統(tǒng)已經(jīng)成功應(yīng)用于某些實(shí)際場合,并取得了良好效果。

  switch( Pic)

  {case 1: hBitmap=(H BITMAP) LoadImage( AfxGetInstanceHandle) ,

  "res\ 1. bmp", IMAGE_BITMAP, 0, 0,

  LR _ LOADFROMFILE | LR _ CREAT EDIBSECT ION) ;

  break;:

  SetCursor ( : : LoadCursor ( NULL, IDC_CROSS) ) ;

  case 2:hBitmap=( HBITMA P) LoadImage( AfxGet InstanceH andle( ) ,

  "res\ 2. bmp", IMAGE_BITMA P, 0, 0,

  LR _ L OA DFROMFILE | LR _ CREA TEDIBSECT ION) ;

  break;

  SetCursor ( : : LoadCursor( NU LL, IDC_CROS S) ) ;

  break;

  case 3:

  break;

  default:

  break;}

  部分源程序如下:

  now_Longitude= m_left + m_ptOrign. x* k_ longit ude;

  now_Latit ude ?? = m_bott om- m_ptOr ign. y* k _latit ude;

  char* buf1;

  buf1= _ ecvt ( now _Longitude, longit ude _ precision,& longitude_decimal, & sign) ;

  st rcpy( longitude_buf , buf1) ;

  / /確定需要存儲的數(shù)據(jù)位數(shù)

  if( now_L atitude< 100)

  lat itude_precision= 10;

  if( now_L atitude< 10)

  lat itude_precision= 9;

  / /轉(zhuǎn)換緯度坐標(biāo)以待顯示* buf2;

  buf2= _ ecvt ( now _ L atitude, lat itude _ precision,

  & latitude_decimal, & sign) ;

  strcpy( latitude_buf, buf2) ;

  if( IDOK= = TRUE)

  {

  myIcon. Draw_Point( dlg. m_Lat itude, dlg. m_Longi??

  tude, this) ; / /點(diǎn)擊確定時,在此處畫點(diǎn)

  CSaveDraw * pt _SaveDraw= new CSaveDraw( dlg. m

  _Latitude, dlg.m_L ongit ude,

  dlg. m_Lat itude, dlg. m_Longit ude,m_linestyle, 3, m_

  clr ,m_nL ineWidt h, T RU E) ;

  m_pt rAr ray. A dd( pt_SaveDraw) ;

  / /存儲,以待重繪( 3代表重繪點(diǎn))

  CsaveT rack* pt _S aveTrack= new CSaveTrack ( dlg.

  m_L atitude, dlg.m_Longitude, trackcount) ;

  m_pt rT rack. A dd( pt_SaveT rack) ; / /存儲,以待重繪}

  整體設(shè)計(jì)流程

  采用此種新方法進(jìn)行IC設(shè)計(jì)的整體流程如圖1所示。從系統(tǒng)設(shè)計(jì)(虛擬機(jī))入手,用C ++來搭建所需要的系統(tǒng)模型。通過C ++語言的設(shè)計(jì)與驗(yàn)證[4],可實(shí)現(xiàn)向上一層次系統(tǒng)級延伸完成軟件仿真,再由Verilog與C ++的一致性轉(zhuǎn)化,將軟件設(shè)計(jì)地轉(zhuǎn)化到硬件級上。這樣,向上可進(jìn)行軟硬件的聯(lián)合仿真,向下能夠?qū)崿F(xiàn)下一層次的物理級設(shè)計(jì)。通過C ++和Verilog形成的上層和下層的縱向?qū)哟侮P(guān)系,可實(shí)現(xiàn)SOC設(shè)計(jì)從系統(tǒng)到物理實(shí)現(xiàn)的一致與準(zhǔn)確。同時,當(dāng)C ++和Verilog程序在同步的情況下進(jìn)行編寫設(shè)計(jì)時,可使得兩者相互獨(dú)立,構(gòu)成平行的橫向?qū)哟侮P(guān)系。通過C ++和Verilog進(jìn)行仿真測試,將兩者的數(shù)據(jù)進(jìn)行對比和等價驗(yàn)證,便確保了所編程序具有很高的容錯能力,進(jìn)一步保證了SOC設(shè)計(jì)從系統(tǒng)到物理實(shí)現(xiàn)的一致與準(zhǔn)確。

  C ++特性在IC設(shè)計(jì)中的應(yīng)用類是C ++zui重要的特征,通過類來定義要解決的特定問題,這樣做的好處是對每個問題都能夠提供zui合適的解決方案,所以在設(shè)計(jì)的開始就可以從類出發(fā)。類通過把數(shù)據(jù)和方法包裝在一起并將它們視為整體來封裝信息,在結(jié)構(gòu)上隱藏了應(yīng)用細(xì)節(jié)并嚴(yán)格限制對其數(shù)據(jù)和操作的外部訪問,保護(hù)了數(shù)據(jù)的完整性。為此,C ++在類中提供了三種數(shù)據(jù)類型:公有數(shù)據(jù)(public data)、私有數(shù)據(jù)(private data)和受保護(hù)型數(shù)據(jù)(protected data)。在應(yīng)用中,對象的公共成員可由外部程序調(diào)用。這種調(diào)用由控制各對象相互作用的頂層模塊來完成,控制碼指揮對象用某種方法或運(yùn)算訪問數(shù)據(jù)。任務(wù)完成后,接收對象返回信息給發(fā)送者(輸出結(jié)果)或給其他對象傳遞消息,要求執(zhí)行其他任務(wù)。對于以往過程化編程語言來說,可以將它的程序結(jié)構(gòu)表示為:程序=算法+數(shù)據(jù)結(jié)構(gòu)。而對于C ++這種面向?qū)ο蟮木幊陶Z言來說,它的程序結(jié)構(gòu)則可表示為:對象=算法+數(shù)據(jù)結(jié)構(gòu),程序=對象+對象+對象+對象+…。根據(jù)這一特性,可以看出整個C ++程序設(shè)計(jì)全面圍繞面向?qū)ο蟮姆绞竭M(jìn)行,當(dāng)使用所定義的類類型時,是通過創(chuàng)建類對象(也稱作類的實(shí)例)的方式來實(shí)現(xiàn)的。類中的成員和成員函數(shù)可通過類對象來調(diào)用。

  Verilog與C ++的對比分析

  在設(shè)計(jì)的過程中需要對兩種語言做必要的對比分析,以使Verilog和C ++能夠更好的相互配合,保證所設(shè)計(jì)的邏輯電路具有描述的一致性。對于基礎(chǔ)模塊的定義,在Verilog中可以使用module來實(shí)現(xiàn);C ++中則可通過類(class)定義來實(shí)現(xiàn)。不過, 在Verilog中只能定義有形(concrete)模塊,不能定義抽象(abstract)模塊。也就是說接口(interface)和實(shí)現(xiàn)(implementation)不能分離;而在C ++中,既可以使用有形類(concrete class),也可以使用抽象類(abstract class)。兩種語言都可以根據(jù)定義出的基礎(chǔ)模塊來進(jìn)行操作對象的實(shí)例化。在程序的執(zhí)行處理上,C ++程序是一行接一行依次執(zhí)行的,屬于順序結(jié)構(gòu),而Verilog描述的硬件是可以在同一時間同時運(yùn)行的,屬于并行結(jié)構(gòu)。由于兩者執(zhí)行結(jié)構(gòu)的不同,如在處理非阻塞賦值語句的時候,則需要考慮兩種語言的語句執(zhí)行情況,以保證兩者語義的一致性。在Verilog中,當(dāng)兩個非阻塞賦值語句a<= b + c和b<= a + d,兩條語句需在并行執(zhí)行條件下才能保證其正確的語義。而在順序執(zhí)行程序的C ++語句中,則需加入a的備份變量a_ temp,使用序列a_ temp = b + c,b= a + d,a = a _ temp來完成這兩個非阻塞賦值語句。Verilog中模塊的調(diào)用與C ++語言的函數(shù)調(diào)用是有區(qū)別的,在Verilog中模塊調(diào)用,可以使用名稱綁帶來端口;在C ++中若調(diào)用有參函數(shù),則只能按順序書寫。C ++語言沒有時間關(guān)系,即在時序的控制上需通過設(shè)置狀態(tài)發(fā)生器來進(jìn)行協(xié)調(diào)。同樣,對于Verilog語言,為了zui終可以使用綜合工具把Verilog源代碼轉(zhuǎn)化為門級邏輯,則Verilog程序必須做到?jīng)]有任何外加的人工延時信號,也就是需要表示為有限狀態(tài)機(jī)。在邏輯電路設(shè)計(jì)過程中兩種語言對不同的接口類型需區(qū)別對待。若某一模塊有3種不同類型的接口input_ in、output_ out和inout_ io,輸入口_ in和輸出口_ out屬于單向口,可由相應(yīng)的連接端持續(xù)賦值即可。而對于雙向傳遞的_ io口來說,則需將其分解為一個輸入端和一個輸出端,同時引入另一變量,以保證分解后的雙向連接。兩種語言所使用到的關(guān)鍵字和運(yùn)算符則十分相似,這便提高了在設(shè)計(jì)過程中實(shí)現(xiàn)轉(zhuǎn)化的可行性。通過以上對兩種語言的對比分析,可以看出,C ++語言與Verilog硬件描述語言類似,只要運(yùn)用合理的轉(zhuǎn)化設(shè)計(jì)方法,就可以準(zhǔn)確一致的實(shí)現(xiàn)SOC設(shè)計(jì)在軟件與硬件上的相結(jié)合。

  C ++與Verilog之間的設(shè)計(jì)轉(zhuǎn)化

  在設(shè)計(jì)的過程中,需要將C ++程序轉(zhuǎn)換成類似Verilog的結(jié)構(gòu)程序[10],保證描述的邏輯電路達(dá)到設(shè)計(jì)要求;同時,又不能使用C ++中較為抽象的語法,如迭代、指針、不確定次數(shù)的循環(huán)等,以使Verilog描述達(dá)到可綜合的目的。這里可以采用Visual C ++ 6. 0來進(jìn)行C ++程序代碼的編譯與調(diào)試,并可通過C ++到Verilog軟件進(jìn)行代碼間的轉(zhuǎn)化,下面結(jié)合數(shù)字信號處理器的設(shè)計(jì)對此方法進(jìn)行設(shè)計(jì)應(yīng)用。

  模塊的定義方式

  在DSP的設(shè)計(jì)過程中,其包含有乘法累加器、運(yùn)算器、狀態(tài)生成器、指令存儲器和外部主機(jī)接口等基礎(chǔ)模塊。以運(yùn)算器ALU模塊中的簡化程序?yàn)槔?,對?shí)現(xiàn)Verilog和C ++程序的編寫方式加以說明。

  parameter ADDC = 2;

  always @ ( i_ alu_ state)∥判斷狀態(tài)標(biāo)志位

  case ( r_ alu_ opc[4: 0])

  ADDC: begin∥帶進(jìn)位加法運(yùn)算int i_ alu_ opc[4: 0];∥輸入信號

  int o_ alu_ z[23: 0];∥輸出信號

  private:

  int r_ alu_ opc[4: 0];∥操作碼寄存器

  int shift_ amount;∥移位變量

  ∥…} ;

  對于信號的初始化則可在構(gòu)造函數(shù)中完成,這樣可以保證在每個對象使用之前初始值被編譯器自動應(yīng)用在每個類對象上。對于類的成員函數(shù)可通過域區(qū)分符在類體外進(jìn)行定義,不過事先需要在類體內(nèi)進(jìn)行聲明,然后將類定義作為頭文件。類體內(nèi)用于描述模塊內(nèi)部功能操作的成員函數(shù):

  Operation( )聲明為private類型,再聲明一個

  public類型成員函數(shù)Run( ),其中包含內(nèi)部功能

  函數(shù),用于外部對類模塊的調(diào)用。如

  class ALU{

  private:

  void Operation( ) ;∥指令操作函數(shù)

  public:

  void Run( ) ;∥功能模塊運(yùn)行函數(shù)

  ∥…} ;

  ALU∶ ∶ALU( )

  {i_alu_state = 0;∥狀態(tài)標(biāo)志位

  for ( i = 0; i<5; i + + )

  r_alu_opc[i]= 0;∥ALU指令操作碼

  ∥…}

  void ALU∶∶Run( )∥ALU操作運(yùn)行函數(shù)

  {Operation( ) ;

  Show( ) ;∥變量輸出打印函數(shù)}

  void ALU∶∶Operation( )

  {switch( opc_compute)

  {case 2:∥ADDC帶進(jìn)位加法運(yùn)算

  alu_c = alu_a + alu_b + Carry;

  break;}

  ∥……}

  模塊的連接方式

  各基礎(chǔ)功能模塊編寫好后,需將各模塊連接起來以構(gòu)成整體??梢酝ㄟ^編寫頂層模塊Top來實(shí)現(xiàn)基礎(chǔ)模塊的互連。

  在Verilog的頂層Top模塊中,將各基礎(chǔ)模塊文件包含進(jìn)去,然后在引用時用“·”符號,標(biāo)明原模塊是定義時規(guī)定的端口名,

  `include "./clkgen.v"∥時鐘生成器

  `include "./alu.v"∥ALU運(yùn)算器

  ∥…

  alualu0(.o_alu_z( zbus),i_alu_x( xbus),

  .i_alu_y( ybus) )∥模塊端口連接

  即可實(shí)現(xiàn)括號中的連接信號與被引用模塊的端口相對應(yīng)。

  結(jié)論

  本文通過分析C ++這種面向?qū)ο蟮木幊陶Z言的特性,使C ++可以在集成電路的設(shè)計(jì)中發(fā)揮出重要的作用,隨著車牌自動識別系統(tǒng)性能的提高,其應(yīng)用也在逐漸深入到我們生活的方方面面。如今市場上已經(jīng)出現(xiàn)了一些車牌識別系統(tǒng),它們在系統(tǒng)規(guī)定的條件和環(huán)境下車牌的識別效果比較良好,但一旦條件發(fā)生比較大的變化,或者在一些比較特殊的環(huán)境下,比如說霧天、雨天和晚上等拍攝圖像質(zhì)量較差的環(huán)境下,這些系統(tǒng)出現(xiàn)識別率迅速下降和拒識等等一系列問題,系統(tǒng)的通用性比較差。因此,尋找一個適合大多數(shù)情況和大部分環(huán)境的、更加通用的車牌識別方法顯得十分有必要和重要。也只有當(dāng)在大多數(shù)環(huán)境下LPR都具有很高的性能時,LPR才會得到更加廣泛的運(yùn)用。綜上所述,車牌識別技術(shù)是未來交通領(lǐng)域*的技術(shù),現(xiàn)在進(jìn)行車牌識別技術(shù)的研究和應(yīng)用開發(fā)是具有相當(dāng)?shù)睦碚搩r值和現(xiàn)實(shí)意義的。
 

版權(quán)與免責(zé)聲明: 凡本網(wǎng)注明“來源:智慧城市網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-智慧城市網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:智慧城市網(wǎng)m.aiynx.com”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它來源(非智慧城市網(wǎng)m.aiynx.com)的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。

編輯精選

更多

本站精選

更多

專題推薦

更多

名企推薦

更多

浙公網(wǎng)安備 33010602000006號

欧美亚洲精品suv| 日本高清视频在线网站| 日韩av无码| 欧美成人一区二区三区| 欧美午夜一区二区福利视频| 唐三偷喝宁荣荣乳液污黄文| 成人区精品一区二区婷婷| 国产99久久久国产精品免费看| 中文人妻熟妇乱又伦精品| 无人在线观看高清完整免费| ass年轻少妇浓毛pics| 精品婷婷乱码久久久久久日日| 极品少妇粉嫩小泬V片可看| 少妇被粗大的猛烈进出69影院一| barazza厨房乱战| 男人喜欢水多还是夹得紧的| 男人J桶进女人P无遮挡动态图| 少妇搡BBBB搡| 亚洲av永久精品无码桃色| 亚洲乱码爆乳精品成人毛片| 亚洲欧洲自拍拍偷精品 美利坚| 妈妈的朋友迅雷下载| 婆岳同床双飞呻吟艳妇无边| 一女被五六个黑人玩坏视频| 公交车上荫蒂添的好舒服视频| 男女多p混交群体交乱| 奶头又大又白喷奶水av| 亚洲av无码成人黄网站在线观看| 床震吃奶摸下成人a片在线观看| 中文字幕乱码一区二区欧美| 羞羞视频| chinese性老妇老女人| 特大bbwbbwbbw高潮| 日韩超碰人人爽人人做人人添| 国产激情无码一区二区APP| 女人和公猪交内射| 亚洲人成网亚洲欧洲无码久久| 女人被添全过程a片试看| 亚洲精品tv久久久久久久久久| 十七岁在线观看免费高清完整版| 五月香丁激情欧美啪啪|