Halcon中OCR的实现及关键函数解析
OCR的實(shí)現(xiàn)共分為兩步,1是使用字符數(shù)據(jù)來(lái)訓(xùn)練OCR。2是使用OCR進(jìn)行字符的識(shí)別。
訓(xùn)練分類器
訓(xùn)練分類器共分為4步:
1是使用閾值來(lái)分割字符區(qū)域;
2是調(diào)用append_ocr_trainf函數(shù)將字符加入訓(xùn)練集;
3是創(chuàng)建分類器;
4是調(diào)用trainf_ocr_class_mlp函數(shù)來(lái)訓(xùn)練分類器。
*對(duì)字符進(jìn)行訓(xùn)練得到分類器 TrainingNames := ['F','M','1','4','A','4','2'] FontName := 'F:/YM_Project/SZWX/work_x32_MFOL2/function/MFOL2' TrainingFileName := FontName+'.trf' *當(dāng)dev_set_check的參數(shù)為'~give_error'時(shí),這次檢測(cè)會(huì)被忽略,程序進(jìn)入后面的操作。 dev_set_check ('~give_error') *刪除指定位置的文件 delete_file (TrainingFileName) for i := 0 to |TrainingNames|-1 by 1select_obj (FinalNumbers, CharaterRegions, i+1)*將字符CharaterRegions添加到訓(xùn)練集TrainingFileName中append_ocr_trainf (CharaterRegions, FourthDarkImage, TrainingNames[i], TrainingFileName)disp_message (WindowID, TrainingNames[i], 'image', MeanRow-40, Column[i]-6, 'yellow', 'false') endfor *tuple_uniq( : : Tuple : Uniq) *相鄰重疊的元組只保留一個(gè)。常用于tuple_sort( : : Tuple : Sorted)之后,tuple_sort是升序排列。 CharNames := uniq(sort(TrainingNames)) *創(chuàng)建mlp create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 5, 'none', 10, 42, OCRHandle) *使用訓(xùn)練集來(lái)訓(xùn)練mlp trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog) write_ocr_class_mlp (OCRHandle, FontName) clear_ocr_class_mlp (OCRHandle)使用分類器進(jìn)行識(shí)別
使用分類器進(jìn)行字符識(shí)別的函數(shù)有兩個(gè):1是do_ocr_multi_class_mlp,該函數(shù)對(duì)一幅圖像內(nèi)的多個(gè)字符進(jìn)行一次分類并輸出分類結(jié)果。2是do_ocr_single_class_mlp,該函數(shù)是對(duì)一幅圖像中的單個(gè)字符進(jìn)行分類。兩者的對(duì)比試驗(yàn)表明,后者的分類準(zhǔn)確度要高,因此,下文使用do_ocr_single_class_mlp算子進(jìn)行字符的分類。?
分類的實(shí)現(xiàn)分為4步:1是讀取分類器;2是讀取圖片;3是分割單個(gè)字符;4分類
關(guān)鍵函數(shù)解析
create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed : OCRHandle)WidthCharacter:輸入被分割的字符縮放到指定的寬度 HeightCharacter: Interpolation:設(shè)置縮放的字符的縮放模式,對(duì)于多數(shù)應(yīng)用而言,Interpolation = 'constant'。請(qǐng)注意:轉(zhuǎn)換后的字符大小不能太大,因?yàn)榉诸惼鲗?duì)較大尺寸的字符分類效果并不好。特別是,如果尺寸較大,一些小的分割誤差會(huì)較大程度上影響分類的效果,一般情況下,sizes between 6x8 and 10x14 Features:分類的特征向量的長(zhǎng)度 Characters:輸出層神經(jīng)元的個(gè)數(shù);也就是是需要匹配的字符查閱表中字符的個(gè)數(shù)。 NumHidden:MLP中隱藏層神經(jīng)元的個(gè)數(shù) Preprocessing:矢量特征裝換的預(yù)處理類型 NumComponents:匹配字符的數(shù)量 這兩個(gè)參數(shù)主要是對(duì)輸入的值進(jìn)行預(yù)處理。RandSeed:初始化mlp OCRHandle:輸出OCR_mlp分類器句柄trainf_ocr_class_mlp( : : OCRHandle, TrainingFile, MaxIterations, WeightTolerance, ErrorTolerance : Error, ErrorLog)
訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)分類器
do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)
使用OCR分類多個(gè)字符
Character是字符區(qū)域
Image是字符圖片
OCRHandle是分類器句柄
Class是輸出的類別
Confidence是輸出的分類精度
do_ocr_single_class_mlp(CharacterSelected, ImagePart, OCRHandle,1, Class, Confidence)
分類單個(gè)字符,其分類效果比上述同時(shí)分類多個(gè)字符的效果要好
---------------------?
作者:羅澤?
來(lái)源:CSDN?
原文:https://blog.csdn.net/u013698770/article/details/53842205?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的Halcon中OCR的实现及关键函数解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 到底什么是皮基站?
- 下一篇: 合肥工业大学第六届“互联网+”大学生创新