国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的車牌識(shí)別系統(tǒng)的設(shè)計(jì)

2021-12-16 14:03:56岳楓力
關(guān)鍵詞:車牌字符灰度

岳楓力,馬 靜

(四川工商學(xué)院電子信息工程學(xué)院,四川 成都 611745)

隨著電子信息技術(shù)的不斷發(fā)展,車牌識(shí)別系統(tǒng)不斷被運(yùn)用與交通管理系統(tǒng)中。但由于傳統(tǒng)的車牌識(shí)別系統(tǒng)存在成本高、難以推廣等問題,導(dǎo)致其運(yùn)用困難,為了解決這些問題,迫切需要依靠FPGA 優(yōu)秀的并行處理能力和豐富的硬件資源,有效提高系統(tǒng)的執(zhí)行效率,降低系統(tǒng)成本以便于廣泛運(yùn)用。

1 硬件環(huán)境

傳統(tǒng)由于FPGA 可編程性和并行執(zhí)行效率,以往通常被用于特定功能電路的實(shí)現(xiàn)。但隨著新的技術(shù)要求出現(xiàn),F(xiàn)PGA 已不再局限于傳統(tǒng)的接口、信號(hào)處理等方面。

1.1 ZYNQ 及其配置

本次設(shè)計(jì)采用的核心處理芯片為ZYNQ-7000 系列的xc7z020clg400-2,該ZYNQ 芯片內(nèi)部由PS+PL 構(gòu)成;PS 部分由ARM 的A9 雙核構(gòu)成,PL 部分為FPGA邏輯電路。通過芯片內(nèi)部架構(gòu)可知:PL 與PS 通過EMIO、DMA、32b GP AXI Port、HP AXI Port 等接口實(shí)現(xiàn)數(shù)據(jù)交互,PS 部分與外圍電路交互則通過GPIO或EMIO;需要注意的是,EMIO 不僅可以將PS 連接到PL 的硬件資源也可以將其直接連接到PL 的輸出管腳。ZYNQ 系列的接口分為MIO 與EMIO,Xilinx 在Vivado中定義了每個(gè)MIO 管腳可以通過復(fù)用實(shí)現(xiàn)多種功能,但是具體實(shí)現(xiàn)什么功能則由外圍硬件電路決定。本設(shè)計(jì)使用1Gb DDR3 內(nèi)存空間,芯片為NT5CB256M16EPDI。

1.2 OV7725

采用OV7725 攝像頭進(jìn)行車牌圖像的拍攝,OV7725 是一種低電壓的CMOS 器件,其提供一個(gè)單片VGA 攝像機(jī)和部分圖像處理功能。OV7725 的感光陣列為640*480,最快能夠?qū)崿F(xiàn)60fps 采集,輸出為RGB565 格式。OV7725 的功能和配置均由其內(nèi)部的寄存器實(shí)現(xiàn),相關(guān)寄存器由主機(jī)通過SCCB 對(duì)作為從機(jī)的OV7725 進(jìn)行配置。OV7725 內(nèi)部集成了部分圖像處理的功能,包括自動(dòng)曝光控制、自動(dòng)增益控制和自動(dòng)白平衡等。

SCCB 即串行攝像機(jī)控制總線協(xié)議通道。SCCB 有兩線模式和三線模式,本設(shè)計(jì)中只對(duì)一個(gè)從機(jī)進(jìn)行配置,故選擇兩線模式,該模式由一根串行時(shí)鐘線和一根雙向數(shù)據(jù)線構(gòu)成。

2 圖像捕獲

在圖像捕獲階段,本設(shè)計(jì)要求能夠?qū)崿F(xiàn)對(duì)車牌圖像的拍攝、保存;同時(shí)為了方便圖像的捕獲,攝像頭所捕獲的實(shí)時(shí)畫面應(yīng)當(dāng)顯示在屏幕上,起到攝像頭監(jiān)視器的作用。

2.1 VDMA

由于攝像頭和屏幕之間數(shù)據(jù)傳輸存在速率差,因此采用VDMA IP 核進(jìn)行數(shù)據(jù)緩沖防止出現(xiàn)畫面撕裂。VDMA 可以方便的提供雙緩沖和多緩沖機(jī)制。

本次設(shè)計(jì)采用Dynamic Genlock 模式,在此模式下VDMA 有多個(gè)緩存幀,主機(jī)和從機(jī)按順序?qū)懟蜃x緩存幀,當(dāng)從機(jī)操作某一緩存幀時(shí),主機(jī)會(huì)跳過該幀而寫操作其他幀,從而實(shí)現(xiàn)讓圖像數(shù)據(jù)緩沖的IP 核。DMA 數(shù)據(jù)接口可以分為讀、寫通道,用戶可以通過寫通道將AXI-Stream 類型的數(shù)據(jù)流寫入DDR3,通過讀通道可以從DDR3 讀取數(shù)據(jù),并以AXI-Stream 類型輸出。

由OV7725 攝像頭采集得到的圖像數(shù)據(jù)通過AXIStream to video in IP 核轉(zhuǎn)化成為AXI-Stream 格式數(shù)據(jù),并傳輸給VDMA IP 核,同時(shí)rgb2lcd ip 核通過AXI-Stream to Video Out IP 核通過AXI-Stream通道從VDMA 讀取圖像并轉(zhuǎn)換為RGB 格式數(shù)據(jù)輸出并顯示。

視頻流數(shù)據(jù)經(jīng)過 Video in to AXI4-Stream IP 核轉(zhuǎn)換成 AXI4-Stream IP 格式數(shù)據(jù)流, 然后通過 VDMA 的寫通道轉(zhuǎn)成 AXI4 Memory Map 格式,并最終寫入 DDR 內(nèi)存中。VDMA 從 DDR3 中讀取的視頻或圖像數(shù)據(jù)傳輸給 AXI4-Stream to Video Out IP 核。AXI4-Stream to Video Out IP 核在 VTC IP 核的控制下,把 AXI4-Stream 格式的數(shù)據(jù)轉(zhuǎn)換成視頻輸出的數(shù)據(jù)格式(如 RGB888),并將輸出的視頻數(shù)據(jù)流連接至 rgb2lcd IP 核的輸入端(rgb2lcd)。rgb2lcd IP 核實(shí)現(xiàn)了獲取 LCD 屏的 ID 功能和以及將 LCD 屏的引腳封裝到總線接口上,以方便將LCD引腳引出至頂層模塊端口上。

2.2 圖像緩存

本設(shè)計(jì)采用PS 控制VDMA IP 核以實(shí)現(xiàn)圖像的拍攝,當(dāng)按鍵按下后,作為從機(jī)的PS 端暫停VDMA 從機(jī)讀操作,并從當(dāng)前讀操作執(zhí)行的緩存幀中拷貝當(dāng)前的圖像數(shù)據(jù)以實(shí)現(xiàn)拍照功能。當(dāng)拷貝完成后,恢復(fù)讀操作。本次設(shè)計(jì)中,所有存儲(chǔ)空間均在DDR3 空間內(nèi)劃分。其中,DDR 地址0x1100000 為捕獲圖片的緩存地址, 0x01000000 以下的地址用作PS、PL 程序執(zhí)行所占用地址。

3 圖像處理

3.1 預(yù)處理

由于本設(shè)計(jì)采用OV7725 攝像頭,其拍攝輸出圖像為上下鏡像的圖片,在進(jìn)行下一步處理前需要對(duì)其進(jìn)行鏡像處理使圖像回正。

(1)灰度處理

灰度是指黑白圖像中的顏色深度,范圍一般0-255,白色為255,黑色為0。使用灰度對(duì)彩色圖像進(jìn)行處理,可以得到高質(zhì)量黑白圖,與彩色圖像相對(duì)比,灰度圖像由于其不含有色相其細(xì)節(jié)度往往高于RGB 圖片。在本次設(shè)計(jì)中采用移位法得到Gray 值,將原來的RGB 中的三個(gè)通道的值統(tǒng)一用Gray 替換,將RGB 888 圖像轉(zhuǎn)換為灰度圖像。

(2)OTSU 算法

OTSU 算法又稱“大津法”,這是一種用于確定二值化圖像分割閾值的算法,利用此算法可以實(shí)現(xiàn)對(duì)二值化最佳閾值的自適應(yīng)計(jì)算,經(jīng)此算法計(jì)算得到的二值化閾值可以在一定程度上排除環(huán)境、鏡頭畸變帶來的影響[1]。

其實(shí)現(xiàn)步驟為:首先對(duì)完成灰度處理的圖像的每個(gè)像素進(jìn)行遍歷,統(tǒng)計(jì)每個(gè)灰度級(jí)的素?cái)?shù)數(shù)量,并計(jì)算其所占總像素的比例。再進(jìn)行灰度級(jí)的遍歷,計(jì)算其中前景和背景部分的灰度均值,將其帶入類間方差公式得到類間方差最大值并得到對(duì)應(yīng)的灰度級(jí),這里得到的灰度級(jí)即為閾值。

依照此閾值對(duì)灰度處理后的圖像進(jìn)行遍歷操作,當(dāng)RGB 通道中任意值大于閾值乘0.9,則對(duì)其進(jìn)行填充0xffffff,否則對(duì)其填充0x000000。這里乘0.9 是為了進(jìn)一步調(diào)整圖像的閾值,從而排除由于OV7725是魚眼鏡頭而產(chǎn)生畸變導(dǎo)致亮度變化而出現(xiàn)的誤差。

(3)腐蝕膨脹

本設(shè)計(jì)中,對(duì)二值化后的圖像去除周圍邊框后進(jìn)行掃描,本設(shè)計(jì)中每一個(gè)像素的DDR 地址組成為:基底地址+長(zhǎng)*寬*3,對(duì)每一個(gè)像素周圍八個(gè)像素進(jìn)行掃描即對(duì)(長(zhǎng)-1)*寬*3、(長(zhǎng)+1)*寬*3、(長(zhǎng)-1)* (寬-1)*3、(長(zhǎng)-1)* (寬+1)*3、(長(zhǎng)+1)* (寬-1)*3、(長(zhǎng)+1)* (寬+1)*3、長(zhǎng)*(寬-1)*3、長(zhǎng)*(寬+1)*3 八個(gè)像素進(jìn)行掃描,每當(dāng)任意一個(gè)像素值為0x000000,則對(duì)中心像素賦值為0x000000;同理膨脹算法對(duì)同樣八個(gè)像素點(diǎn)進(jìn)行掃描出現(xiàn)0xffffff 則為中心像素復(fù)制為0xffffff。需要注意的是,賦值和掃描應(yīng)該在兩個(gè)圖像相同,不同基底地址的圖片上分別進(jìn)行。

(4)開運(yùn)算和閉運(yùn)算

開運(yùn)算可以在保證基本形狀和位置不變的前提下,除去孤立的點(diǎn)、毛刺、小橋,而膨脹腐蝕算法中的掃描的結(jié)構(gòu)體大小將影響開運(yùn)算的效果。閉運(yùn)算可以在保證基本形狀和位置不變的前提下除去圖像中的小孔、彌合裂縫,同開運(yùn)算一樣,膨脹腐蝕算法中的掃描的結(jié)構(gòu)體大小[2]將會(huì)影響閉運(yùn)算效果。

本設(shè)計(jì)中采用開閉運(yùn)算相結(jié)合的方式對(duì)圖像進(jìn)行處理,利用這種方式可以實(shí)現(xiàn)在保證圖像形態(tài)不發(fā)生改變的前提下濾除尖刺、孤點(diǎn)等干擾。

(5)投影

對(duì)于完成定位的圖像,在定位區(qū)間內(nèi),對(duì)其進(jìn)行水平和垂直投影。由于本設(shè)計(jì)在二值化時(shí)將車牌的背景處理為黑色,字符處理為白色,且需要對(duì)字符進(jìn)行定位處理,故在這里統(tǒng)計(jì)白色數(shù)量并生成直方圖。在定位得到的區(qū)間內(nèi)對(duì)圖像進(jìn)行行遍歷和列遍歷,當(dāng)出現(xiàn)白色像素時(shí)計(jì)數(shù)器加1,最終得到每行白色像素?cái)?shù)量的數(shù)組和每列白色像素?cái)?shù)量的數(shù)組,這兩個(gè)數(shù)組分別為二值化圖像在水平方向和垂直方向上的投影。

(6)分割

對(duì)于完成投影后的圖像,根據(jù)一定閾值可以對(duì)每個(gè)字符所在的位置進(jìn)行大致定位。通過對(duì)水平投影的分割和垂直投影的分割的疊加,可以得到每個(gè)字符所處的區(qū)間,即得到每個(gè)字符的上下左右四個(gè)邊框位置。

3.2 轉(zhuǎn)存

將每個(gè)字符圖像復(fù)制轉(zhuǎn)存到單獨(dú)的DDR 空間,由于車牌的字符固定呈現(xiàn)矩形,為了方便縮放操作和識(shí)別處理,在這里對(duì)字符圖像的寬度進(jìn)行擴(kuò)展,使之與字符長(zhǎng)度一致,并填充黑色像素,使縮放前字符圖像成正方形。

4 圖像識(shí)別

本設(shè)計(jì)中采用神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌字符的識(shí)別,其主要由:訓(xùn)練模型、識(shí)別、softmax 幾個(gè)步驟組成。

4.1 全連接神經(jīng)網(wǎng)絡(luò)

本設(shè)計(jì)中采用全連接神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)是使用矩陣乘法的三層神經(jīng)網(wǎng)絡(luò),其輸入層為28*28*1,即784*1 的矩陣,權(quán)重矩陣一為784*100 的矩陣,權(quán)重矩陣二為100*64 的矩陣。本設(shè)計(jì)中需要將該模型的權(quán)重參數(shù)即相關(guān)計(jì)算在FPGA 上實(shí)現(xiàn)。訓(xùn)練模型時(shí),更新權(quán)重參數(shù)采用反向傳播算法,反向傳播算法又稱為BP 算法[3],運(yùn)算如式4.1-1:

ΔWj,k = α·Ek·Ok(1-Ok)·O djT(式4.1-1)

其中α 是學(xué)習(xí)效率,ΔWj,k 是權(quán)重的改變量,j 和k 是權(quán)重矩陣的行和列,Ek 是每一行的識(shí)別誤差,Ok 為S 函數(shù)。

(1)模型建立

利用jupyter 平臺(tái)及python 語言搭建訓(xùn)練模型,兩個(gè)權(quán)重矩陣,分別為784*100 和100*64。

該模型是一個(gè)可以自由調(diào)節(jié)各層大小的簡(jiǎn)單三層神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,在該模型中,可以設(shè)定輸入層、隱藏層、輸出層的大?。豢梢栽O(shè)定學(xué)習(xí)率;該模型的學(xué)習(xí)機(jī)制為:模型對(duì)某一圖案與第一層權(quán)重參數(shù)進(jìn)行矩陣乘法運(yùn)算、完成后再與第二層權(quán)重矩陣進(jìn)行矩陣乘法運(yùn)算,然后輸出到輸出層,即各種情況的可能性,由模型讀取訓(xùn)練集中的結(jié)論判斷正確與否,并將相應(yīng)的權(quán)重改變依據(jù)反向傳播算法傳導(dǎo)到每個(gè)權(quán)重矩陣。至此完成了一次訓(xùn)練。

(2)訓(xùn)練模型

當(dāng)進(jìn)行訓(xùn)練的時(shí)候,函數(shù)會(huì)將訓(xùn)練集里存放的圖像列表轉(zhuǎn)置為矩陣數(shù)組,再將目標(biāo)矩陣的列表也轉(zhuǎn)置為矩陣數(shù)組。將圖像矩陣與權(quán)重矩陣一進(jìn)行矩陣乘法得到隱藏層。將隱藏層執(zhí)行S 函數(shù)進(jìn)行歸一化,再將隱藏層與權(quán)重矩陣二進(jìn)行矩陣乘法得到輸出層。將輸出層再次執(zhí)行S 函數(shù)進(jìn)行歸一化,此時(shí),函數(shù)會(huì)將輸出層的結(jié)論與目標(biāo)矩陣數(shù)組中的數(shù)據(jù)進(jìn)行對(duì)比,得到誤差值。利用BP 反向傳到公式將誤差傳導(dǎo)回去以改變兩層權(quán)重矩陣。

(3)測(cè)試模型

當(dāng)進(jìn)行識(shí)別操作時(shí),模型會(huì)將輸入的圖像數(shù)據(jù)與兩層權(quán)重矩陣進(jìn)行矩陣乘法,同時(shí)分別利用S 函數(shù)進(jìn)行歸一化處理,最終得到每種情況的概率。通過對(duì)比即可得到輸入圖像數(shù)據(jù)所對(duì)應(yīng)的索引值。

4.2 FPGA 實(shí)現(xiàn)

將訓(xùn)練的權(quán)重參數(shù)經(jīng)過量化生成為coe 文件,創(chuàng)建ROM IP 核并導(dǎo)入。FPGA 每次從DDR 內(nèi)讀取一個(gè)像素的數(shù)據(jù),參與運(yùn)算。每個(gè)像素?cái)?shù)據(jù)與第一權(quán)重矩陣的對(duì)應(yīng)行相乘加,循環(huán)784 次得到一張圖像與第一隱藏層的運(yùn)算結(jié)果[4],將第一次的運(yùn)算結(jié)果在與第二隱藏層進(jìn)行類似的乘加運(yùn)算得到最終輸出權(quán)重,運(yùn)算得到圖像對(duì)應(yīng)的概率。

4.3 Softmax

圖像識(shí)別部分在完成全連接計(jì)算的操作后,將圖像數(shù)據(jù)存放于固定的寄存器,并拉高完成信號(hào)。識(shí)別系統(tǒng)在檢測(cè)到完成信號(hào)拉高后,對(duì)全連接計(jì)算后得到的概率進(jìn)行softmax 處理。所謂softmax,即對(duì)輸出層輸出的各種結(jié)果的概率進(jìn)行對(duì)比,其中概率最大所對(duì)應(yīng)的索引,即為本次識(shí)別的字符所對(duì)應(yīng)的索引。將對(duì)應(yīng)的結(jié)果保存,再將索引與分類類別進(jìn)行映射,當(dāng)系統(tǒng)完成所有字符處理后通過屏幕,利用PL 部分對(duì)識(shí)別結(jié)果進(jìn)行顯示。

5 測(cè)試

5.1 環(huán)境測(cè)試

通過拍攝車牌,可以看見成像出現(xiàn)模糊現(xiàn)象,這是由于攝像頭焦距不對(duì)導(dǎo)致的,如圖1 所示:

圖1 屏幕顯示畫面

將OV7725 的鏡頭固定螺絲扭松,旋轉(zhuǎn)調(diào)節(jié)OV7725 鏡頭到合適的焦距,使得畫面清晰不模糊。

5.2 拍攝測(cè)試

硬件環(huán)境測(cè)試通過后對(duì)拍攝功能進(jìn)行測(cè)試,測(cè)試流程如下:程序上電,等待硬件初始化完成屏幕顯示畫面,按下圖像捕獲按鍵,等待串口打印完成拍攝信息,查看寫入內(nèi)存卡的圖像信息,如圖2 所示:

圖2 寫入內(nèi)存卡信息打印

將存放于SD 卡中的BMP 格式圖片去除查看,由于OV7725 攝像頭CMOS 與電路結(jié)構(gòu)所導(dǎo)致OV7725 成像為鏡像,如圖3 所示,對(duì)其進(jìn)行鏡像處理,使其變?yōu)檎颉?/p>

圖3 內(nèi)存卡保存的BMP 圖片

5.3 二值化測(cè)試

完成打印后需要對(duì)圖像進(jìn)行灰度及二值化處理,由于OV7725 為魚眼鏡頭,會(huì)導(dǎo)致成像出現(xiàn)畸變,對(duì)灰度處理后的圖像直接進(jìn)行二值化處會(huì)導(dǎo)致圖像的背景噪聲干擾二值化,而影響圖像定位,如圖4 所示:

圖4 灰度處理圖片

可以看見直接進(jìn)行二值化處理,即使通過腐蝕膨脹也會(huì)很容易干擾定位,如圖5 所示,可以看見在車牌以外的地方即箭頭指向處存在黑色區(qū)塊:

圖5 直接二值化后存在黑色像素塊干擾

通過OTSU 算法,尋找合適的二值化處理閾值,利用OTSU 得到的閾值進(jìn)行二值化處理可以看到干擾基本沒有了,如圖6 所示:

圖6 利用OTSU 算法后二值化

5.4 車牌定位測(cè)試

通過對(duì)黑色像素的定位可以實(shí)現(xiàn)車牌的基本定位,如圖7 所示:

圖7 車牌定位

5.5 字符定位測(cè)試

利用水平投影和垂直投影對(duì)字符進(jìn)行分割,其投影圖如圖8 所示:

圖8 水平投影

字符分割結(jié)果如下,可以看見基本實(shí)現(xiàn)字符的分割處理,如圖9 所示:

圖9 水平分割

6 結(jié)語

FPGA 由于其本身的并行運(yùn)算機(jī)制和其豐富的硬件資源,配合新興技術(shù)往往可以在很多傳統(tǒng)領(lǐng)域發(fā)揮出全新的作用。在本次設(shè)計(jì)的車牌識(shí)別領(lǐng)域,利用新興技術(shù)及算法可以實(shí)現(xiàn)車牌識(shí)別系統(tǒng)的小型化,易于迭代、成本低、易于推廣、算法便于更新。

猜你喜歡
車牌字符灰度
采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
尋找更強(qiáng)的字符映射管理器
基于灰度拉伸的圖像水位識(shí)別方法研究
字符代表幾
一種USB接口字符液晶控制器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:50
數(shù)字圖像處理技術(shù)在車牌識(shí)別系統(tǒng)中的應(yīng)用
電子制作(2019年12期)2019-07-16 08:45:16
消失的殖民村莊和神秘字符
第一張車牌
基于最大加權(quán)投影求解的彩色圖像灰度化對(duì)比度保留算法
基于MATLAB 的車牌識(shí)別系統(tǒng)研究
電子制作(2017年22期)2017-02-02 07:10:11
伊宁县| 宜宾县| 葫芦岛市| 康定县| 通江县| 汉川市| 泾源县| 思茅市| 安图县| 内黄县| 隆尧县| 吉安市| 隆安县| 承德县| 高平市| 侯马市| 佳木斯市| 揭东县| 蓝山县| 都江堰市| 黔东| 天峨县| 永丰县| 沙田区| 隆安县| 读书| 永兴县| 泾川县| 高安市| 佛学| 诸暨市| 格尔木市| 桂阳县| 丹巴县| 满城县| 蕉岭县| 玉屏| 锡林郭勒盟| 常德市| 宁津县| 乐清市|