在車牌識別系統中, 車牌字元能夠正確分割的前提是車牌影象能夠水平,以至於水平投影和垂直投影能夠正常進行。如果車牌傾斜沒有矯正,那麼水平投影和垂直投影,甚至鉚釘都無法正常處理。所以,當車輛資訊中獲取車牌的第一步,應該是檢查傾斜角度,做傾斜矯正。
1、傾斜角度檢測: 霍夫變換
2、傾斜矯正: 影象旋轉
1、提取車牌整體資料, 根據第一步結果,提取出,車牌在輛大體位置資訊。
關於車牌定位,我使用兩部,第一步粗略定位,然後做一些預處理,比如傾斜矯正,然後第二部才是精確定位,只提取車牌的位置資訊影象
2、利用hsv顏色空間轉換,獲取車牌背景藍色區域位置,獲取車牌粗略資訊影象後,由於車牌背景顏色與周圍顏色有很明顯的區別,這裡採用hsv顏色過濾的方法,過濾綠色背景影象
3、水平膨脹, 水平膨脹的目的,是為了邊緣檢測,只要求檢測邊緣,盡量除去字元資訊,也可以降低hough變換的運算量
4、水平差分運算,相當於 邊緣檢測,經過上面的處理後,才進行邊緣檢測
5、這個時候就可以利用hough變換檢測直線了。
由於hough變換運算量十分大,所以,儘量減少影象中的白點,來降低計算量
下圖的紅線,就是檢測出來的角度,為177度
6、利用旋轉演算法,旋轉剛才粗略提取的車牌位置,儘管旋轉後的車牌有些鋸齒,但是已經能夠保證水平,就可以使用水平投影和垂直投影了
這是旋轉後的車牌,有些鋸齒出現,由於影象解析度較低,就沒有用差值運算。
7、精確提取車牌
8、正常分割字元
9、識別結果
由於正弦余弦運算,計算量比較大,這裡進行一部分優化,就是正弦余弦計算用陣列代替。
生成正弦,余弦陣列的的**如下
#include
#include
#include
#include
intmain(
void
)
i = 0;
for(i = 0; i <= 180; i++)
for(i = 0; i <= 180; i++)
fclose(fcos);
fclose(fsin);
return
0;
}
matlab 實現車牌的傾斜校正
clear,clc,close all fn,pn,fi uigetfile jpg bmp 選擇 i imread e picture 12.jpg figure,imshow i title 原始影象 bw rgb2gray i bw im2bw i,graythresh bw bw doubl...
手寫數字識別系統之傾斜矯正
傾斜校正主要有兩種,一種是整體傾斜校正,另一種是區域性傾斜校正。由於本文主要研究具有不規則分布的多數字識別,因此只需要關注經過提取後的數字校正問題,也就是影象的區域性校正。目前的校正演算法有很多,比如說 對於整體傾斜校正可以採用統計影象左右兩邊的平均畫素高度,通過計算整體傾斜度來進行校正。這種方法對...
手寫數字識別系統之傾斜矯正
傾斜校正主要有兩種,一種是整體傾斜校正,另一種是區域性傾斜校正。由於本文主要研究具有不規則分布的多數字識別,因此只需要關注經過提取後的數字校正問題,也就是影象的區域性校正。目前的校正演算法有很多,比如說 對於整體傾斜校正可以採用統計影象左右兩邊的平均畫素高度,通過計算整體傾斜度來進行校正。這種方法對...