0%

OCR初学习(一)

segment_characters[1]引用自 HALCON-19.05-Progress/doc/html/reference/operators/segment_characters.html,以下内容为机器翻译,以及个人理解,仅供参考。

名字

segment_characters— 分割图像的给定区域中的字符。

签名

**segment_characters ** (Region, Image : ImageForeground, RegionForeground : Method, EliminateLines, DotPrint, StrokeWidth, CharWidth, CharHeight, ThresholdOffset, Contrast : UsedThreshold)

描述

此运算符用于对给定字符进行分段*RegionImage.这Region仅用于减少工作区域。分段的字符返回RegionForeground*.

提供了两种不同的方法来检测字符。所有分割方法都假定文本比背景更暗。如果不是这种情况,请将图像反转为invert_image.

参数*Method*确定文本分割的算法。可能的值为

  • ‘local_contrast_best’

    此方法提取本地与背景不同的文本。因此,它适用于照明不均匀的图像。文本边框的增强,可以更准确地确定文本的轮廓。如果背景具有高度纹理,则特别有用。参数Contrast定义最小对比度,即符号和背景之间的最小灰度值差异。

  • ‘local_auto_shape’

    最小对比度是自动估计的,从而减少非常小的区域的数量。此方法特别适用于嘈杂的图像。参数*ThresholdOffset可用于调整阈值。设 g(x,y) 为输入中位置 (x,y) 处的灰度值Image*.阈值条件由以下因素确定:.

选择*EliminateLines如果字符的提取受到相对于文本行的水平或垂直行的干扰,并将其值设置为“true”。消除受最大值的影响CharWidth*和最大值CharHeight.有关详细信息,请参阅这些参数的说明。

DotPrint:如果应读取点印,则应设置为“true”,否则应设置为“false”。

StrokeWidth:指定文本的描边宽度。它用于计算内部使用的掩码大小以确定字符。此掩模大小也受参数的影响DotPrint,平均值CharWidth和平均值CharHeight.

CharWidth:这可以是最多包含三个值的元组。第一个值是字符的平均宽度。第二个是字符的最小宽度,第三个是字符的最大宽度。如果未设置最小值或等于 -1,则操作员根据平均值自动设置这些值CharWidth.如果未设置最大值,情况也是如此。一些例子:

[10]将平均字符宽度设置为10,最小值和最大值由算子计算。

[10,-1,20] 将平均字符宽度设置为 10,最小值由系统计算,最大值设置为 20。

[10,5,20] 将平均字符宽度设置为 10,最小值设置为 5,最大值设置为 20。

CharHeight:这可以是最多包含三个值的元组。第一个值是字符的平均高度。第二个是字符的最小高度,第三个是字符的最大高度。如果未设置最小值或等于 -1,则操作员根据平均值自动设置这些值CharHeight.如果未设置最大值,情况也是如此。一些例子:

[10] 将平均字符高度设置为 10,最小值和最大值由算子计算。

[10,-1,20] 将平均字符高度设置为 10,最小值由系统计算,最大值设置为 20。

[10,5,20]这会将平均字符高度设置为 10,最小值设置为 5,最大值设置为 20。

ThresholdOffset:此参数可用于调整阈值,该阈值在分割方法时使用*“local_auto_shape”*被选中。

Contrast:定义文本和背景之间的最小对比度。如果分段方法,则使用此参数*“local_contrast_best”*已选中。

UsedThreshold:执行后,此参数返回用于对字符进行分段的阈值。

ImageForeground返回内部用于分割的图像。

执行信息

  • 多线程类型:重入(与非独占运算符并行运行)。
  • 多线程范围:全局(可以从任何线程调用)。
  • 在元组级别自动并行化。

参数

Region(input_object) region(-array) object

图像中文本行所在的区域。

Image(input_object)singlechannelimage object (byte / uint2)

输入图像。

ImageForeground(output_object)image(-array) object (byte / uint2)

用于分割的图像。

RegionForeground(output_object)singlechannelregion(-array) object

字符的区域。

Method(input_control)string (string)

对字符进行分段的方法。

默认值: ‘local_auto_shape’

值列表:‘local_auto_shape’,‘local_contrast_best’

EliminateLines(input_control)string (string)

消除水平和垂直线?

默认值: ‘false’

值列表:‘false’, ‘true’

DotPrint(input_control)string (string)

是否应检测点打印字符?

默认值: ‘false’

值列表:‘false’, ‘true’

StrokeWidth(input_control)string (string)

字符的描边宽度。

默认值: ‘medium’

值列表: ‘bold’, ‘light’, ‘medium’, ‘ultra_light’

CharWidth(input_control)integer-array (integer)

字符的宽度。

**默认值:**25

典型值范围:1 ≤ CharWidth

限制:CharWidth >= 1

CharHeight(input_control)integer (integer)

字符的高度。

**默认值:**25

典型值范围:1 ≤ CharHeight

限制:CharHeight >= 1

ThresholdOffset(input_control)integer (integer)

用于调整分段的值。

**默认值:**0

Contrast(input_control)integer (integer)

文本和背景之间的最小灰度值差异。

**默认值:**10

典型值范围:1 ≤ Contrast

限制:Contrast >= 1

UsedThreshold(output_control)integer(-array) (integer)

用于对字符进行分段的阈值。

示例(HDevelop)

1
2
3
4
5
6
7
8
for Index := 1 to 5 by 1
read_image (Image, 'dot_print_rotated/dot_print_rotated_'+Index$'02d')
text_line_orientation (Image, Image, 50, rad(-30), rad(30), OrientationAngle)
rotate_image (Image, ImageRotate, deg(-OrientationAngle), 'constant')
segment_characters (ImageRotate, ImageRotate, ImageForeground, \
RegionForeground, 'local_auto_shape', 'false', 'false', 'medium', \
25, 25, 0, 10, UsedThreshold)
endfor

结果

如果输入参数设置正确,则运算符返回值 2(H_MSG_TRUE)。否则将引发异常。segment_characters

可能的前身

text_line_orientation

可能的继任者

select_characters,connection

选择

threshold

模块

Foundation


  1. segment_characters(算子) ↩︎