computer version之手寫字元識別初探——以matlab和python(tensorflow)分別示例(1)
阿新 • • 發佈:2018-12-25
昨晚2017.04.03趁清明假期再次嘗試了以qq群視訊的形式進行科研班會,主要內容講解演示了computer version(計算機視覺)中關於手寫字元的識別,並分別以matlab和python進行講解。其中matlab40min,python40min。
matlab針對前兩年做過的車牌識別問題進行展示,python重點介紹了Google開源的tensorflow。
以matlab進行車牌識別:
主要思想是基於字元模板的模板匹配方法。
首先,我們以印刷體的數字、字母、車牌上省份縮寫作為標準的匹配模板。
其次,將拍攝得到的rgb車牌影象轉為灰度圖。
I1 = rgb2gray(I)
figure(2 ),subplot(1,2,1),imshow(I1);title('灰度圖');
第三步,通過roberts運算元進行邊緣檢測,得到車牌影象輪廓(可以選擇其他運算元,如“canny”等)。
I2=edge(I1,'roberts',0.15,'both');
figure(3),imshow(I2);title('robert運算元邊緣檢測')
第四步,以腐蝕運算、平滑運算、移除小物件等操作定位核心車牌(即有效資訊的地方)。
se=[1;1;1];
I3=imerode(I2,se);
figure(4),imshow(I3);title('腐蝕後圖像');
se=strel('rectangle',[25,25]);
I4 =imclose(I3,se);
figure(5),imshow(I4);title('平滑影象的輪廓');
I5=bwareaopen(I4,2000);
figure(6),imshow(I5);title('從物件中移除小物件');
第五步,對灰度圖進行二值化,並進行均值濾波作為分割的素材
g_max=double(max(max(b)));
g_min=double(min(min(b)));
T=round(g_max-(g_max-g_min)/3); % T 為二值化的閾值
[m,n]=size(b);
d=(double(b)>=T); % d:二值影象
h=fspecial('average',3 );
d=im2bw(round(filter2(h,d)));
第六步,分割及匹配。分割通過imcrop
函式,匹配即簡單的逐一與模板相減,差值最小的匹配度最高。
經此六步matlab的車牌識別結束。放出效果圖:
原圖1:
結果圖1:
原圖2:
結果圖2:
原圖3:
結果圖3: