1. 程式人生 > >computer version之手寫字元識別初探——以matlab和python(tensorflow)分別示例(1)

computer version之手寫字元識別初探——以matlab和python(tensorflow)分別示例(1)

昨晚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:這裡寫圖片描述