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