Halcon中OCR的实现及关键函数解析

OCR的实现共分为两步,1是使用字符数据来训练OCR。2是使用OCR进行字符的识别

训练分类器

  训练分类器共分为4步:

1是使用阈值来分割字符区域

2是调用append_ocr_trainf函数将字符加入训练集;

3是创建分类器

4是调用trainf_ocr_class_mlp函数来训练分类器。

*对字符进行训练得到分类器
TrainingNames := ['F','M','1','4','A','4','2']
FontName := 'F:/YM_Project/SZWX/work_x32_MFOL2/function/MFOL2'
TrainingFileName := FontName+'.trf'
*当dev_set_check的参数为'~give_error'时,这次检测会被忽略,程序进入后面的操作。
dev_set_check ('~give_error')
*删除指定位置的文件
delete_file (TrainingFileName)
for i := 0 to |TrainingNames|-1 by 1
    select_obj (FinalNumbers, CharaterRegions, i+1)
    *将字符CharaterRegions添加到训练集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)
*相邻重叠的元组只保留一个。常用于tuple_sort( : : Tuple : Sorted)之后,tuple_sort是升序排列。
CharNames := uniq(sort(TrainingNames))
*创建mlp
create_ocr_class_mlp (8, 10, 'constant', 'default', CharNames, 5, 'none', 10, 42, OCRHandle)
*使用训练集来训练mlp
trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog)
write_ocr_class_mlp (OCRHandle, FontName)
clear_ocr_class_mlp (OCRHandle)

使用分类器进行识别
  使用分类器进行字符识别的函数有两个:1是do_ocr_multi_class_mlp,该函数对一幅图像内的多个字符进行一次分类并输出分类结果。2是do_ocr_single_class_mlp,该函数是对一幅图像中的单个字符进行分类。两者的对比试验表明,后者的分类准确度要高,因此,下文使用do_ocr_single_class_mlp算子进行字符的分类。 
  分类的实现分为4步:1是读取分类器;2是读取图片;3是分割单个字符;4分类

*Step1根据分类器来分类
read_ocr_class_mlp (FontName, OCRHandle)
*Step2读取图片获得每一个图像
read_image (Image, 'F:/YM_Project/SZWX/1024SZWX/SVS900_XFMT1X110_CR6030_S1_4.bmp')
*Step3分割单个字符
gen_rectangle1 (Rectangle1, 43, 2243, 707, 3675)
reduce_domain (Image, Rectangle1, ImageReduced1)
crop_domain (ImageReduced1, ImagePart)
median_image (ImagePart, ImageReduced1, 'circle', 3, 'mirrored')
threshold (ImageReduced1, Regions, 84, 255)
opening_circle (Regions, RegionOpening, 3.5)
connection (RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, Numbers, 'area', 'and', 1000, 9999)
count_obj (Numbers, CharacterNums)
ArrayConfidence := []
for IndexCharacter := 1 to CharacterNums by 1
    select_obj (Numbers, CharacterSelected, IndexCharacter)  
    *Step4分类
    do_ocr_single_class_mlp(CharacterSelected, ImagePart, OCRHandle,1, Class, Confidence)
    ArrayConfidence := [ArrayConfidence,Confidence]
endfor

关键函数解析

create_ocr_class_mlp( : : WidthCharacter, HeightCharacter, Interpolation, Features, Characters, NumHidden, Preprocessing, NumComponents, RandSeed : OCRHandle)

WidthCharacter:输入被分割的字符缩放到指定的宽度
HeightCharacter:
Interpolation:设置缩放的字符的缩放模式,对于多数应用而言,Interpolation = 'constant'。请注意:转换后的字符大小不能太大,因为分类器对较大尺寸的字符分类效果并不好。特别是,如果尺寸较大,一些小的分割误差会较大程度上影响分类的效果,一般情况下,sizes between 6x8 and 10x14
Features:分类的特征向量的长度
Characters:输出层神经元的个数;也就是是需要匹配的字符查阅表中字符的个数。
NumHidden:MLP中隐藏层神经元的个数
Preprocessing:矢量特征装换的预处理类型
NumComponents:匹配字符的数量
这两个参数主要是对输入的值进行预处理。

RandSeed:初始化mlp
OCRHandle:输出OCR_mlp分类器句柄

trainf_ocr_class_mlp( : : OCRHandle, TrainingFile, MaxIterations, WeightTolerance, ErrorTolerance : Error, ErrorLog)
训练一个神经网络分类器

do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)
使用OCR分类多个字符
Character是字符区域
Image是字符图片
OCRHandle是分类器句柄
Class是输出的类别
Confidence是输出的分类精度


do_ocr_single_class_mlp(CharacterSelected, ImagePart, OCRHandle,1, Class, Confidence)
分类单个字符,其分类效果比上述同时分类多个字符的效果要好
--------------------- 
作者:罗泽 
来源:CSDN 
原文:https://blog.csdn.net/u013698770/article/details/53842205 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Halcon是一款集成视觉编程语言和开发环境的软件,主要用于工业视觉和机器视觉领域,可广泛应用于制造业、医疗、安防等领域。Halcon函数Halcon编程最基本的组成部分,可以实现各种图像处理和分析功能。以下是Halcon函数文速查表及手册的说明。 Halcon函数速查表是对Halcon函数进行分类和归纳,便于快速查找和应用。其包括处理对象、图像处理及算法、域、结构、操作符等各方面的内容。除了文速查表外,Halcon还提供了详细的函数手册,包括函数的参数解释、示例代码、算法说明等。 Halcon函数文速查表及手册对初学者和使用者都非常重要。初学者可以通过速查表了解不同类别的函数及其作用,进而设计和编写自己的程序。使用者则可以通过手册深入了解函数的使用方法,优化算法,并提高应用效果。 总之,Halcon函数文速查表及手册对于掌握Halcon编程具有重要意义,可以促进视觉编程技能的提升,加快图像处理和分析的速度,增强工作效率。 ### 回答2: Halcon是一款强大的机器视觉软件,其包含了很多函数和工具,这些函数有的是英文的,有的是文的。在Halcon文速查表及手册,我们可以找到所有函数文名称、参数和用法等相关信息。 Halcon函数文速查表分为多个章节,包括基础函数、图像处理函数、特征提取函数、三维视觉函数等。每个章节都按字母顺序排序,并且每个函数后面都有详细的参数说明和示例代码。 除了速查表外,Halcon还提供了完整的文手册,涵盖了各种函数和应用。这个手册不仅包含了函数的使用方法,还包括了机器视觉的基础知识、常见问题和解决方案等。 在使用Halcon进行机器视觉开发的过程,使用速查表和手册可以有效地提高开发效率和准确性。无论是初学者还是有经验的开发者,都可以从获益。因此深入学习和掌握Halcon函数文速查表及手册,是进行机器视觉开发的必备技能之一。 ### 回答3: Halcon是一种功能强大的机器视觉软件,它支持多种编程语言,包括C++, C#, Python等。Halcom函数文速查表和手册对Halcom的用户来说非常重要。这个速查表和手册包含了Halcon所有函数文名称、描述、输入和输出参数等信息,用户可以按照自己的需要查询相关函数的使用方法,从而快速完成程序的编写。 Halcon函数文速查表和手册是一个完整而详细的参考指南,涵盖了Halcom的所有基础和高级函数,包括图像处理、计算机视觉、形态学、算法库等等。用户可以通过这个速查表来快速查找和理解相关函数实现自己的应用程序和项目。 这个速查表和手册对于Halcom的初学者和专业人员非常有用,它可以指导人们如何使用Halcom完成各种图像处理和计算机视觉的任务,并且提供了丰富的例子和实际应用场景,让用户可以快速掌握Halcom的使用技巧和方法。 总之,Halcon函数文速查表和手册对于Halcom的用户来说是一个非常重要的工具和参考指南,帮助用户快速理解和掌握Halcom的各种函数实现自己的项目和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值