目录
1. 字符识别的基本流程
1.1 分类:
- 深度学习(海量数据驱动)
- 机器学习(传统)mlp,svm,gmm,knn
- CNN 卷积神经网络
1.2 流程:
- 读入图像
- 预处理
- 拉开对比度
- 几何变换(转正)
- 去噪
- ROI
- 字符分割(让每个字符都是一个独立的区域)
- 识别(mlp:多层神经感知) 全神经网络
- tensorFlow 游乐场
1.3 分类器:(线性/非线性)
1.3.1 过拟合/欠拟合
1.3.2 集合
- 训练集
-. 验证集
-. 测试集
1.3.3 解决过拟合方法
- 正则化:衰减权重系数
- Dropout:舍弃神经元
1.3.4 训练集:
- .NoRej:非拒绝 .
- .Rej:拒绝
- 拒绝要求更高。
1.3.5 函数
- read_ocr_class_mlp
- do_ocr_multi_class_mlp
- . halcon字符识别训练集是白底黑字。
- 如果字母 I 被识别成数字 1 ,可以考虑使用字母训练集识别字母,数字训练集识别数字。
2. 点状字符识别
(halcon例程:dotprt)
- 切分法,核心函数
- partition_rectangle
- Intersection
3. 投影变换
- 参见前面一维码,二维码识别。
4. 环形字符(极坐标变换)
- 应用场景
- 内壁或外壁360°环形镜头的图像也需要拉直;
- 环形物料上面的字符识别。
- 步骤
- 求内外园半径和圆心;
- 极坐标变换。
- 识别
5. 局部光照不均匀
- 动态阈值分割:dyn_threshold
- 光照均衡化:illuminate
- 直方图均衡化:equ_histo_image
6. 自训练(汉字识别)
6.1 流程
- 采集图像;
- 预处理;
- 分割;
- 训练:
- 创建神经网络
- 形成trf文件
- 训练(本质是优化参数,沿着梯度最小的方向)
- 训练文件的读和写
- 核心算子:
write_ocr_trainf 写入trf文件
read_ocr_trainf_names 读取trf文件
create_ocr_class_mlp 创建ocr分类器
trainf_ocr_class_mlp 训练ocr分类器
write_ocr_class_mlp 写入ocr分类器
read_ocr_class_mlp 读取ocr分类器
7. text模型与ocr助手
- (例子bottle.hdev)
7.1 文本模型
- get_text_model_parm 设置文本模型参数
- create_text_model_reader
- set_text_model_param
- find_text
- get_text_object
- get_text_result
8. 凹凸
- 打光(同轴光)
- 预处理
- 三维扫描(低精度成本只需要600元)
- 深度学习
- 光度立体
9. 圆柱曲面
- 和一维码、二维码一样
- 线扫相机
- 360°镜头
- 投影变换
10. 复杂背景
-
背景模糊 (差分高斯)

-
diff_of_gauss 平滑 + 边缘留下 可以处理模糊图像

-
gray_range_rect 灰度预处理
或者使用
秩序滤波 rank_rect 自己选择保留暗还是亮像素 -
图像的差分(减法) + 区域连接(根据灰度值)(案例:ocrcolor.hdev)
- add_image
- sub_image
- mult_image
- div_image
- 根据灰度值特征进行区域拓展连接
expand_gray_ref

11. 斜体字(错切变换)(案例:text_line_slant)
- text_line_slant 求倾斜字符的角度
- hom_mat2d_slant

12. OCV (光学字符检测)(案例:print_quality)
- create_ocv_proj
- traind_ocv_proj
- ==do_ocv_simple ==

13. halcon代码下载地址
链接:https://pan.baidu.com/s/1iNRQVMegUw1kM8FJYEEdFw
提取码:1fzw
本文详细介绍了字符识别的基本流程,包括深度学习和机器学习方法,如CNN、MLP等。讨论了预处理步骤、分类器的选择及过拟合处理,并提供了训练集的划分和函数示例。点状字符、环形字符识别、局部光照不均匀情况下的处理方法也被提及,同时涵盖了汉字自训练流程、文本模型与OCR助手的使用,以及应对斜体字和复杂背景的策略。此外,还分享了OCV和Halcon的相关代码资源。

5728

被折叠的 条评论
为什么被折叠?



