OCR识别,一般是对灰度图像进行处理。
OCR识别的一般步骤如下:
1. 先进行定位校正
2. 分割,将各个字符断开成不同的联通域
3. 求交集(二值化后的图像区域 和 断完之后的区域)
4. 排序,识别的时候按照顺序来
5. 读ocr分列器
6. 识别
7. 显示
OCR识别的算子:
//创建分列器
//使用多层感知器创建OCR分类器。
create_ocr_class_mlp
WidthCharacter:矩形的宽度,分割字符的灰度值被缩放到该矩形
HeightCharcter:矩形的高度,分割字符的灰度值被缩放到该矩形
Interpolation:用于缩放字符的插值模式
Features:用于分列的特征
Charaters:要读取的字符集的所有字符
NumHidden:MLP的隐藏单位数
Preprocessing:用于变换特征向量的预处理类型
NumComponents:预处理参数:已转换要素的数量
RandSeed:随机数生成器的种子值,用于使用随机值初始化MLP
OCRHandle:OCR分列器句柄
//训练一个分列器
trainf_ocr_class_mlp
OCRHandle:OCR分列器句柄
TrainingFile:训练文件件名
MaxIterations:优化算法的最大迭代次数
WeightTolerance:优化算法的两次迭代之间MLP的权重差异的阈值
ErrorTolerance:在优化算法的两次迭代之间MLP对训练数据的平均误差的差异的阈值
Error:MLP对训练数据的平均误差
ErrorLog:作为优化算法的迭代次数的函数,MLP对训练数据的平均误差
识别
//使用OCR分类器对多个字符进行分类
do_ocr_multi_class_mlp
Character:要识别的字符
Image:字符的灰度值图像
OCRHandle:OCR分列器句柄
Class:使用MLP对字符进行分类的结果
Confidence:输出字符分类的信心值
OCR识别流程会使用到的重要算子:
//快速二值化
//前景和背景只有黑白,可以使用这个函数快速将黑白分开
binary_threshold
Image:输入图像
Region:分段输出区域
Method:分段方法
LightDark:提取前景还是背景
UsedThreshold:使用的阈值
//文本行角度的获取
//确定文本行或段落的方向
text_line_orientation
Region:文本行区域
Image:输入图像
CharHeight:文本行的高
OrientationFrom:文本行最小旋转角度
OrientationTo:文本行最大旋转角度
OrientationAngle:计算出来的文本行旋转角度
使用指定宽度,切矩形
//将区域划分为大小相等的矩形
partition_rectangle
Region:被划分的区域
Partitioned:被划分后的矩形
Width:单个矩形的宽
Height:单个矩形的高
//求交集
intersection
Region1:被求交集的区域1
Region2:被求交集的区域2
RegionIntersection:求交集的结果
//对区域排序
//根据区域的相对位置对区域进行排序。
sort_region
Regions:需要被排序的区域
SortedRegions:排序之后的区域
SortMode:排序的方法
order:递增或者是递减排序
RowOrCol:首先对行进行排序,然后对列进行排序。
更多halcon和六轴机械臂算法干货公众号: