Halcon学习笔记(八)——OCR识别字符排列圆形或字体倾斜的处理办法

本文是Halcon学习笔记的第三讲,主要介绍如何处理圆形排列和倾斜的字符进行OCR识别。通过ocr_cd_print_polar_trans例程处理圆形排列字符,使用极坐标转换和坐标旋转实现识别;利用text_line_slant例程处理倾斜字符,通过仿射变换校正角度,再进行阈值化和字符分割识别。详细步骤包括阈值分割、区域选择、坐标转换、仿射变换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇博客Halcon学习笔记(八)——OCR识别初步模板识别与生成训练文件中,我们着重分析了利用模板进行OCR识别并形成自己的训练文件的主要例程,下面我们分析,当字符排列是圆形或者字体倾斜时如何处理。

第三讲 呈圆形排列或倾斜字符的OCR识别
ocr_cd_print_polar_trans例程 圆形排列的字符

如图
在这里插入图片描述
对于这样一幅呈圆形排列的数字字符,我们要怎么处理呢?

这个例程描述了如果打印的符号不是线性图像(比如呈环形排列)的处理方法,即通过极坐标转换变为直角坐标系。
这个例程中最值得分析的就是阈值分割部分和坐标转换部分。
第一步:阈值分割思路:先得到均值滤波后的图像mean_image,利用ImageMean和原图Image做局部阈值分割dyn_threshold
这里我尝试过直接借助直方图工具做阈值化,由于感兴趣的区域与背景的灰度值相差很近,直接做阈值分割的效果很差,所以之后如果碰到类似的感兴趣区域与背景融合度很大的,可以尝试本例程的方法。

mean_image (Image, ImageMean, 211, 211)
dyn_threshold (Image, ImageMean, RegionDynThresh, 15, 'dark')

此时得到
在这里插入图片描述
接下来就是常规思路——打散

connection (RegionDynThresh, ConnectedRegions)

在打散之后就是选择区域,这里选用了根据给定shape选择区域,可能的shape'max_area''rectangle1''rectangle2',这里根据最大面积选择区域。

select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 0)

此时最大区域如下,即我们感兴趣的区域。
在这里插入图片描述

这里采用生成轮廓区域的方法gen_contour_region_xld,画出选择区域的边界轮廓,然后对生成的边界轮廓用圆进行拟合fit_circle_contour_xld,返回这个圆的圆心坐标( Row, Column),半径Radius

gen_contour_region_xld (SelectedRegions, Contours, 'border')
fit_circle_contour_xld (Contours, 'ahuber', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

然后根据圆心坐标生成两个圆,即内圆和外圆,最后做差,得到圆环区域。

gen_circle (CircleO, Row, Column, Radius - 5)
gen_circle (CircleI, Row, Column, Radius - 30)
difference (CircleO, CircleI, Ring)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThetaQing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值