服務(wù)近2000家企業(yè),依托一系列實踐中打磨過的技術(shù)和產(chǎn)品,根據(jù)企業(yè)的具體業(yè)務(wù)問題和需求,針對性的提供各行業(yè)大數(shù)據(jù)解決方案。
圖片字母,數(shù)字識別技術(shù)
來源:未知 時間:2018-31-24 瀏覽次數(shù):217次
圖片字母,數(shù)字識別技術(shù),本文主要講解圖片中字母以及數(shù)字的識別技術(shù),主要應(yīng)用有車牌號識別軟件,鈔票編碼識別,稅號識別等應(yīng)用系統(tǒng)中,圖片文字識別技術(shù)應(yīng)用在很多重要的工業(yè)領(lǐng)域不僅能夠節(jié)省重復(fù)的人力成而且能夠增加識別歸檔的準(zhǔn)確率一、主要思路
將降噪后的圖片切成單個的字母或文字,同svm技術(shù)訓(xùn)練機(jī)器的識別能力,逐漸提高準(zhǔn)確率
二、使用技術(shù)
-
- python3.5
-
python SDK版本
-
- PIL
-
圖片處理庫
-
- libsvm
-
開源的svm機(jī)器學(xué)習(xí)庫
三、基本流程- 準(zhǔn)備原始圖片素材
- 圖片預(yù)處理
- 圖片字符切割
- 圖片尺寸歸一化
- 圖片字符標(biāo)記
- 字符圖片特征提取
- 生成特征和標(biāo)記對應(yīng)的訓(xùn)練數(shù)據(jù)集
- 訓(xùn)練特征標(biāo)記數(shù)據(jù)生成識別模型
- 使用識別模型預(yù)測新的未知圖片集
- 達(dá)到根據(jù)“圖片”就能返回識別正確的字符集的目標(biāo)
四、圖片字母,數(shù)字識別的實現(xiàn)
圖片預(yù)處理
雖然目前的機(jī)器學(xué)習(xí)算法已經(jīng)相當(dāng)先進(jìn)了,但是為了減少后面訓(xùn)練時的復(fù)雜度,同時增加識別率,很有必要對圖片進(jìn)行預(yù)處理,使其對機(jī)器識別更友好。
針對以上原始素材的處理步驟如下:
- 讀取原始圖片素材
- 將彩色圖片二值化為黑白圖片
- 去除背景噪點
二值化圖片
主要步驟如下:
- 將RGB彩圖轉(zhuǎn)為灰度圖
- 將灰度圖按照設(shè)定閾值轉(zhuǎn)化為二值圖
image = Image.open(img_path) imgry = image.convert('L') # 轉(zhuǎn)化為灰度圖 table = get_bin_table() out = imgry.point(table, '1')
上面引用到的二值函數(shù)的定義如下:
1234567891011121314def
get_bin_table(threshold
=
140
):
"""
獲取灰度轉(zhuǎn)二值的映射table
:param threshold:
:return:
"""
table
=
[]
for
i
in
range
(
256
):
if
i < threshold:
table.append(
0
)
else
:
table.append(
1
)
return
table
- 1對某個 黑點 周邊的九宮格里面的黑色點計數(shù)
- 2如果黑色點少于2個則證明此點為孤立點,然后得到所有的孤立點
- 3對所有孤立點一次批量移除。
模型訓(xùn)練
libSVM是一個機(jī)器學(xué)習(xí)的框架,需要查閱官方文檔完成集成工作,主要是python與libsvm的集成
到這個階段后,由于本文直接使用的是開源的 libSVM 方案,屬于應(yīng)用了,所以此處內(nèi)容就比較簡單的。只需要輸入特征文件,然后輸出模型文件即可。
可以搜索到很多相關(guān)中文資料
主要代碼如下:
def train_svm_model(): """ 訓(xùn)練并生成model文件 :return: """ y, x = svm_read_problem(svm_root + '/train_pix_feature_xy.txt') model = svm_train(y, x) svm_save_model(model_path, model)