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

掃一掃