《matlab車牌識別系統(tǒng)算法源碼論文》由會員分享,可在線閱讀,更多相關(guān)《matlab車牌識別系統(tǒng)算法源碼論文(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、matlab車牌識別系統(tǒng)算法源碼-論文
matlab車牌識別系統(tǒng)算法源碼
待處理的圖像如下所示。圖像整體比較清晰干凈,車牌方向端正,字體清楚,與周圍顏色的反差較大。
要定位汽車牌照并識別其中的字符,我們采用Matlab平臺提供的一些圖像處理函數(shù),以傅立葉變換通過字符模板與待處理的圖像匹配為核心思想?;痉椒ㄈ缦拢?
1、讀取待處理的圖像,將其轉(zhuǎn)化為二值圖像。經(jīng)試驗,采用門限值為0.2附近時車牌字符最為清楚,雜點最少(如下左圖)。
I = imread(car.jpg);
I2 = rgb2gray(I);
I4 = im2bw(I2, 0.2);
2、去除圖像中面積過小的,可以
2、肯定不是車牌的區(qū)域。
bw = bwareaopen(I4, 500);
3、為定位車牌,將白色區(qū)域膨脹,腐蝕去無關(guān)的小物件,包括車牌字符(如下右圖)。
se = strel(disk,15);
bw = imclose(bw,se);
4、此時車牌所在白色連通域已清晰可見,但在黑色區(qū)域以外,是一個更大的白色連通域,將車牌所在連通域包圍了。有必要將其填充。
bw = imfill(bw,[1 1]);
5、查找連通域邊界。同時保留此圖形,以備后面在它上面做標記。
[B,L] = bwboundaries(bw,4);
imshow(label2rgb(L, @jet, [.
3、5 .5 .5]))
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2),boundary(:,1),w,LineWidth,2)
end
6、找出所有連通域中最可能是車牌的那一個。判斷的標準是:測得該車牌的長寬比約為4.5:1,其面積和周長存在關(guān)系:(4.5LL)/(2(4.5+1)L)2≈1/27,以此為特征,取metric=27*area/perimeter^2作為連通域的匹配度,它越接近1,說明對應的連通域越有可能是4.5:1的矩形。
% 找到每個連通域的質(zhì)心
stats = regionpro
4、ps(L,Area,Centroid);
% 循環(huán)歷遍每個連通域的邊界
for k = 1:length(B)
% 獲取一條邊界上的所有點
boundary = B{k};
% 計算邊界周長
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
% 獲取邊界所圍面積
area = stats(k).Area;
% 計算匹配度
metric = 27*area/perimeter^2;
% 要顯示的匹配度字串
metric_string = sprintf(%2
5、.2f,metric);
% 標記出匹配度接近1的連通域
if metric >= 0.9 && metric <= 1.1
centroid = stats(k).Centroid;
plot(centroid(1),centroid(2),ko);
% 提取該連通域所對應在二值圖像中的矩形區(qū)域
goalboundary = boundary;
s = min(goalboundary, [], 1);
e = max(goalboundary, [], 1);
goal = imcrop(I4,[s(2) s(1) e(2)-s(2) e(1)-s(1
6、)]);
end
% 顯示匹配度字串
text(boundary(1,2)-35,boundary(1,1)+13,...
metric_string,Color,g,...
FontSize,14,FontWeight,bold);
end
圖示為找到的各個連通區(qū)域,中部被標記“○”的矩形匹配度為0.99,是最可能的區(qū)域。下邊是由它確定的二值圖像中的車牌區(qū)域:
7、將車牌圖像反白處理,并擴充為256256的方陣(如下左圖),以便下面傅立葉變換中矩陣旋轉(zhuǎn)運算的進行。
goal = ~goal;
goal(256,256) = 0;
figure;
imsho
7、w(goal);
8、從文件讀取一個字符模板(以“P”為例,模板圖像 直接從上述二值圖像中截取得到)。對圖像計算傅立葉描述子,用預先定義好的決策函數(shù)對描述子進行計算。變換后的圖像中,亮度的高低指示相應區(qū)域與模板的匹配程度(如下中圖)。
w = imread(P.bmp);
w = ~w;
C=real(ifft2(fft2(goal).*fft2(rot90(w,2),256,256)));
9、通過檢查C的最大值,試驗確定一個合適的門限(這里240比較合適),顯示亮度大于該門限的點,也就是與模板的匹配程度最高的位置(如下右圖)。
thresh = 240;
figure;
i
8、mshow(C > thresh);
對照左右兩圖,可以說明字符“P”被識別和定位了。同樣的方法,可以識別和定位其它字符。
這種方法總體上比較容易理解,Matlab的函數(shù)隱藏了傅立葉變換等復雜的計算。缺點:在定位車牌方面,程序?qū)iT按本題給定圖像的特點設(shè)計,沒有普適性。字符識別方面,僅能識別與給定模板基本一致的字符。車牌大小、角度、光線、完整性、清晰度發(fā)生變化后,就無法識別了。同時對于“8”與“B”這樣相似的字符,識別時常?;煜?。
* 參考文獻:
1、Applications of the Fourier Transform, Matlab 7.0 Help Documents, The MathWorks.
2、Identifying Round Objects, Matlab 7.0 Demos, The MathWorks.1024
101000?