Halcon中partition_dynamic(Operator)算子原理及应用详解

在HALCON图像处理库中,partition_dynamic算子是一个强大的区域分割工具,特别适用于对OCR字符区域或具有特定形状特征的区域进行分割。
原型:partition_dynamic (SelectedRegions, Partitioned, 25, 20)
一、原理

partition_dynamic算子的主要原理是根据输入区域的特征,在最小垂直跨度位置进行水平分割。它通过分析输入区域的垂直范围变化,找到最佳分割点,从而将区域分割成多个子区域。

SelectedRegions:输入区域,即待分割的原始区域。
Partitioned:输出区域,即经过partition_dynamic算子处理后,被分割成多个子区域的集合。
Distance:近似分割的宽度,即每个子区域期望的列宽度。在本例中,设置为25。
Percent:搜索范围的比例因子,用于确定在寻找最小垂直跨度时的左右搜索范围。本例中设置为20,意味着搜索范围将是Distance的20%(即5个单位)左右。

算法的执行过程如下:

根据输入区域的最小轴平行包围矩形和Distance参数,计算初始的分割位置。这些位置通常均匀分布在输入区域的水平范围内。
在每个初始分割位置的邻域内(由Distance和Percent确定的范围),计算输入区域的垂直跨度。垂直跨度是指在该位置处,区域在垂直方向上的延伸范围。
找出具有最小垂直跨度的列坐标,将其作为当前的分割位置。这个最小垂直跨度位置通常对应于区域之间的自然分隔点。
重复上述过程,直到整个输入区域被分割成多个子区域。

二、应用

partition_dynamic算子在图像处理和机器视觉领域具有广泛的应用,特别是在以下方面:

OCR字符分割:在OCR应用中,经常需要将粘连在一起的字符分割开来。partition_dynamic算子能够根据字符之间的间隙(即最小垂直跨度位置)自动进行分割,提高OCR的识别准确率和稳定性。
形状分析:对于具有特定形状特征的区域,如条形码、矩形区域等,partition_dynamic算子也可以用于分割。通过调整Distance和Percent参数,可以实现对不同形状和大小的区域的精确分割。
复杂背景下的区域提取:在复杂背景下,如图像中存在噪声、干扰或光照不均等问题时,partition_dynamic算子仍然可以有效地提取出目标区域。它通过分析区域的垂直范围变化,能够忽略背景噪声和干扰,准确地找到目标区域之间的分隔点。

三、示例代码与解释

以下是一个使用partition_dynamic算子的示例代码及其解释:

* 读取输入图像并转换为二值图像
read_image (Image, 'example_image')
threshold (Image, Regions, 128, 255)

* 对二值图像进行形态学处理(如连接、填充等),得到待分割的区域
connection (Regions, ConnectedRegions)
fill_up_shape (ConnectedRegions, FilledRegions, 'area', 100, 200)

* 设置分割参数
Distance := 25
Percent := 20

* 应用partition_dynamic算子进行区域分割
partition_dynamic (FilledRegions, Partitioned, Distance, Percent)

* 显示分割结果
dev_display (Image)
dev_set_color ('green')
dev_display (Partitioned)

在这个示例中,我们首先读取了一张名为’example_image’的输入图像,并将其转换为二值图像。然后,我们对二值图像进行了形态学处理(如连接和填充),以得到待分割的区域(FilledRegions)。接着,我们设置了分割参数Distance和Percent,并使用partition_dynamic算子对输入区域进行了分割。最后,我们使用dev_display函数显示了原始图像和分割后的结果。

PS:这个算子非常重要,在OCR识别项目中的出镜率很高,建议去Halcon自带示例中多看几遍示例
推荐示例:dots_image.hdev

`gray_regiongrowing` 是 Halcon 中用于执行灰度区域生长的算子之一。它可以根据预定义的生长准则在图像中自动生长区域。下面是对 `gray_regiongrowing` 算子的详细解释: 语法: ```python gray_regiongrowing(Image, SeedRegion, Tolerance, Connectivity, Region) ``` 参数说明: - `Image`:输入图像,灰度图像。 - `SeedRegion`:种子区域,作为生长的起始点。可以通过 `threshold` 函数或其他算子得到种子区域。 - `Tolerance`:生长准则中的容差值,用于判断邻域像素是否应该加入待生长区域。像素与种子点之间的差异小于容差值时,才会被加入待生长区域。 - `Connectivity`:连接性,用于定义邻域像素的连接方式。常用的连接性有 4 连通和 8 连通。 - `Region`:输出参数,包含生长后的区域。 使用 `gray_regiongrowing` 算子时,你需要先确定种子点和生长准则。种子点可以是手动选择的或使用其他算子得到的区域。生长准则可以是灰度相似性、灰度差异、灰度梯度等,根据你的需求进行选择。 执行 `gray_regiongrowing` 算子后,算法会根据定义的生长准则逐渐扩展待生长区域,直到达到停止条件。结果将存储在输出参数 `Region` 中,你可以使用 `disp_region` 函数显示结果区域。 需要注意的是,灰度区域生长的结果可能受到参数设置和图像特性的影响,因此可能需要进行参数调整和实验来获得最佳结果。你可以参考 Halcon 的官方文档或其他相关资源,了解更多关于 `gray_regiongrowing` 算子的详细信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值