一.MATLAB車牌提取——FPGA實作車牌識別演算法驗證
筆者大二學了數電,結合之前學習的一些機器學習的基礎知識,決定用FPGA實作一個車牌識別系統,由于能力有限可能更新進度較慢,希望理解,這是第一部分的內容MATLAB實作車牌提取,
文章目錄
- 一.MATLAB車牌提取——FPGA實作車牌識別演算法驗證
- 前言
- 一、車牌影像的預處理
- 二、車牌顏色提取
- 1.RGB888轉YCrCb
- 2.Cb影像二值化
- 總結
前言
開發板使用的是正點原子的達芬奇PRO,xc7a100t核心,攝像頭采用ov7725,解析度為640x480,為了加快開發進度使用了一些正點原子以及CrazyBingo的代碼,參考b站@大磊FPGA提供的思路,非常感謝大佬的開源支持,
一、車牌影像的預處理
到搜索引擎隨便下載一張帶有車牌的圖片,為了與攝像頭采集的畫面統一,以及便于matlab的匯入,使用windows自帶的畫圖軟體將圖片解析度保存為640x480,24位bmp格式,
這是導后的圖片,由于與原圖比例存在差異,圖片有輕微畸變,對處理影響不大,

二、車牌顏色提取
1.RGB888轉YCrCb
這里通過分析車牌藍色的色塊以提取車牌,為了各個亮度環境對藍色的影響,這里將原圖從RGB888格式轉換為YCRCB格式,兩者的差別請自行查閱資料,
原轉換公式為:
Y=0.257?R+0.564?G+0.098?B+16
Cb=?0.148?R?0.291?G+0.439?B+128
Cr=0.439?R?0.368?G?0.071?B+128
這里為了便于FPGA的處理,使用整型計算對公式進行近似,公式為:
Y= (77R+150G+29B)>>8;
Cb = ((-43R-85G+128B)>>8)+128;
Cr = ((128R-107G-21*B)>>8)+128;
MATLAB代碼如下(示例):
img1 = imread('1.bmp');
%將圖片rgb三個通道分離
r = img1(:,:,1);
g = img1(:,:,2);
b = img1(:,:,3);
%增加資料位寬提高計算精度
r = uint32(r);
g = uint32(g);
b = uint32(b);
%RGB888轉YCrCb
y =bitshift((77*r+150*g+29*b),-8);
cb = bitshift((-43*r-85*g+128*b),-8)+128;
cr = bitshift((128*r-107*g-21*b),-8)+128;
%按cb為灰度顯示圖片
cb = uint8(cb);
img2(:,:,1)=cb;
img2(:,:,2)=cb;
img2(:,:,3)=cb;
image(img2)
得到處理后Cb通道的灰度圖片,我們在這里看到明顯車牌部分亮度較大,

2.Cb影像二值化
這里利用車牌Cb值明顯大于其他區域的特點,設定合適的閾值,就可以將影像二值化,以分離圖片中的車牌,如果用MATLAB實作,可以考慮根據圖片設定動態閾值,但是如果在FPGA中實作會消耗較多資源與時間,因此在代碼仿真時考慮設定一個固定的閾值,同時考慮到圖片中的白色區域,或者相機過曝的亮斑也會有較大的Cb值,因此這里也考慮當Y值小于某一閾值時才將像素認定為車牌區域,
完整MATLAB代碼如下(示例):
img1 = imread('21.bmp');
%將圖片rgb三個通道分離
r = img1(:,:,1);
g = img1(:,:,2);
b = img1(:,:,3);
%增加資料位寬提高計算精度
r = uint32(r);
g = uint32(g);
b = uint32(b);
%RGB888轉YCrCb
y =bitshift((77*r+150*g+29*b),-8);
cb = bitshift((-43*r-85*g+128*b),-8)+128;
cr = bitshift((128*r-107*g-21*b),-8)+128;
%按cb為灰度顯示圖片
y_threshold = 128;
cb_threshold = 210;
cb = uint8(cb);
for i = 1:480
for j = 1:640
if((cb(i,j)>=cb_threshold)&&(y(i,j)<=y_threshold))
cb(i,j) = 255;
else
cb(i,j) = 0;
end
end
end
img2(:,:,1)=cb;
img2(:,:,2)=cb;
img2(:,:,3)=cb;
imwrite(img2,'22.bmp')
得到影像

可以發現車牌區域已經被較好的區分出來,但車牌邊緣具有較多毛刺,以及黑色背景可能出現一些噪點,接下的
總結
可以發現車牌區域已經被較好的區分出來,但車牌邊緣具有較多毛刺,以及黑色背景可能出現一些噪點,下一篇文章將會提到如何將噪點去除,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292841.html
標籤:其他
