成人天堂666_91蜜桃麻豆_亚洲国产天堂久久综合_亚洲人精品_久久一级片视频_国产精品露脸高清86网站888

移動端

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

2016年01月05日 11:16$artinfo.Reprint點擊量:8251

  車牌自動識別系統

  本章首先對車牌自動識別系統的總體結構進行了一個粗略的說明,主要包括系統的硬件部分和軟件部分;然后比較詳細地介紹了車牌識別系統的軟件流程;zui后對本章進行總結。

  車牌識別系統的總體結構

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

  車牌識別系統的硬件部分

  車牌識別系統的硬件部分主要包括三個部分:

 ?。?)圖像采集部分

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

 ?。?)圖像處理部分

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

 ?。?)結果輸出部分

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

  車牌識別系統的軟件部分

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

  車牌識別系統的軟件流程

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

  車牌定位算法實現的功能就是從一幅復雜背景的數字圖像中分割出車牌圖像,要求具有較高的識別率和較強的環境適應性。

  圖像的預處理

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

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

  車牌定位算法

  車牌提取一直是車牌識別中備受關注的一步,因為它是整個車牌識別的*步。它的成功與否直接影響到后續的步驟,并zui終使我們系統的速度和識別率受到影響。圖像預處理車牌提取。

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

  車牌圖像預處理

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

  定位字符的位置

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

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

  車牌定位

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

  常用的車牌定位方法

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

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

  (2)車牌有一個連續或由于磨損而不連續的邊框,車牌內字符有多個,基本呈水平排列,所以在牌照的矩形區域內存在較豐富的邊緣,呈現出規則的紋理特征;

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

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

  基于灰度圖像的定位方法

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

  基于特征的車牌定位方法

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

  基于數學形態學和遺傳算法等工具的定位方法

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

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

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

  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) ;

  / /確定需要存儲的數據位數

  if( now_L atitude< 100)

  lat itude_precision= 10;

  if( now_L atitude< 10)

  lat itude_precision= 9;

  / /轉換緯度坐標以待顯示* 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) ; / /點擊確定時,在此處畫點

  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代表重繪點)

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

  m_L atitude, dlg.m_Longitude, trackcount) ;

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

  整體設計流程

  采用此種新方法進行IC設計的整體流程如圖1所示。從系統設計(虛擬機)入手,用C ++來搭建所需要的系統模型。通過C ++語言的設計與驗證[4],可實現向上一層次系統級延伸完成軟件仿真,再由Verilog與C ++的一致性轉化,將軟件設計地轉化到硬件級上。這樣,向上可進行軟硬件的聯合仿真,向下能夠實現下一層次的物理級設計。通過C ++和Verilog形成的上層和下層的縱向層次關系,可實現SOC設計從系統到物理實現的一致與準確。同時,當C ++和Verilog程序在同步的情況下進行編寫設計時,可使得兩者相互獨立,構成平行的橫向層次關系。通過C ++和Verilog進行仿真測試,將兩者的數據進行對比和等價驗證,便確保了所編程序具有很高的容錯能力,進一步保證了SOC設計從系統到物理實現的一致與準確。

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

  Verilog與C ++的對比分析

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

  C ++與Verilog之間的設計轉化

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

  模塊的定義方式

  在DSP的設計過程中,其包含有乘法累加器、運算器、狀態生成器、指令存儲器和外部主機接口等基礎模塊。以運算器ALU模塊中的簡化程序為例,對實現Verilog和C ++程序的編寫方式加以說明。

  parameter ADDC = 2;

  always @ ( i_ alu_ state)∥判斷狀態標志位

  case ( r_ alu_ opc[4: 0])

  ADDC: begin∥帶進位加法運算int i_ alu_ opc[4: 0];∥輸入信號

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

  private:

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

  int shift_ amount;∥移位變量

  ∥…} ;

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

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

  public類型成員函數Run( ),其中包含內部功能

  函數,用于外部對類模塊的調用。如

  class ALU{

  private:

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

  public:

  void Run( ) ;∥功能模塊運行函數

  ∥…} ;

  ALU∶ ∶ALU( )

  {i_alu_state = 0;∥狀態標志位

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

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

  ∥…}

  void ALU∶∶Run( )∥ALU操作運行函數

  {Operation( ) ;

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

  void ALU∶∶Operation( )

  {switch( opc_compute)

  {case 2:∥ADDC帶進位加法運算

  alu_c = alu_a + alu_b + Carry;

  break;}

  ∥……}

  模塊的連接方式

  各基礎功能模塊編寫好后,需將各模塊連接起來以構成整體。可以通過編寫頂層模塊Top來實現基礎模塊的互連。

  在Verilog的頂層Top模塊中,將各基礎模塊文件包含進去,然后在引用時用“·”符號,標明原模塊是定義時規定的端口名,

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

  `include "./alu.v"∥ALU運算器

  ∥…

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

 ?。甶_alu_y( ybus) )∥模塊端口連接

  即可實現括號中的連接信號與被引用模塊的端口相對應。

  結論

  本文通過分析C ++這種面向對象的編程語言的特性,使C ++可以在集成電路的設計中發揮出重要的作用,隨著車牌自動識別系統性能的提高,其應用也在逐漸深入到我們生活的方方面面。如今市場上已經出現了一些車牌識別系統,它們在系統規定的條件和環境下車牌的識別效果比較良好,但一旦條件發生比較大的變化,或者在一些比較特殊的環境下,比如說霧天、雨天和晚上等拍攝圖像質量較差的環境下,這些系統出現識別率迅速下降和拒識等等一系列問題,系統的通用性比較差。因此,尋找一個適合大多數情況和大部分環境的、更加通用的車牌識別方法顯得十分有必要和重要。也只有當在大多數環境下LPR都具有很高的性能時,LPR才會得到更加廣泛的運用。綜上所述,車牌識別技術是未來交通領域*的技術,現在進行車牌識別技術的研究和應用開發是具有相當的理論價值和現實意義的。
 

版權與免責聲明: 凡本網注明“來源:智慧城市網”的所有作品,均為浙江興旺寶明通網絡有限公司-智慧城市網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:智慧城市網www.zvwid.cn”。違反上述聲明者,本網將追究其相關法律責任。

本網轉載并注明自其它來源(非智慧城市網www.zvwid.cn)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。

編輯精選

更多

本站精選

更多

專題推薦

更多

名企推薦

更多

浙公網安備 33010602000006號

主站蜘蛛池模板: 国产综合欧美无毒不卡怡红院 | 精彩视频一区 | 特黄一级性片看 | 精品不卡一区中文字幕 | 国产精品香蕉在线观看首页 | 一级片自拍 | 成人妇女淫片aaaa视频 | 91看片国产 | 欧美精品一二三区 | 天天操天天色综合 | 性饥渴少妇AV无码毛片 | 日日插夜夜爽 | 久久久久久久久久久身材好 | 国产精品久久久亚洲一区 | eeuss影院www免费播放 | 91精品国产高清91久久久久久 | 在线a级毛片免费视频 | 成人片黄网站色大片免费 | 久久久久久久尹人综合网亚洲 | 中文字幕在线不卡精品视频99 | 久久好色视频 | 国产区三 | 欧美爆乳精品国产一区二区三区 | 日韩一区二区中文 | 中文精品久久 | 亚洲精品国产自在现线看 | 国产毛片欧美毛片久久久 | 久久一区二区三区国产精品 | 夜影院黄色 | 与丰满少妇做爽视频 | a级黄色一级片 | 国产精品久久久久久久久久免费看 | 99国产精品久久久久久久成人热 | 久久理论 | 欧美久久免费 | 丁香激情综合久久伊人久久 | 亚洲一区精品在线观看 | 国产丨综合丨精品入口 | 精品国产免费人成在线观看 | 在线免费色 | 久久国产热精品波多野结衣av |