基于区域分割算法的水表数字提取

作者: 凌超 方卫青

基于区域分割算法的水表数字提取0

关键词:图像分割;区域分割;水表数字;图像处理

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2024)26-0010-04 开放科学(资源服务)标识码(OSID) :

0引言

在医院等特殊环境中,水表需要具备高精度以便准确测量非常小的水流量变化,这对于确保水资源的合理使用和控制成本至关重要。实时监控水表读数能够帮助医院管理人员及时了解水使用情况,快速检测泄漏或异常使用模式,从而可以及时采取措施。自动记录水表读数并生成报告的能力,有助于医院进行水资源管理和规划。

传统的人工查抄水表方法费时费力,正逐步被计算机自动识别取代[1-3]。在水表读数识别过程中,水表数字的分割主要采用手动分割方法和列方向像素点灰度值累积方法。手动分割方法的稳健性较低,要求每张水表图像具有高度一致性,且分割结果易出现无意义的聚团[4-7];列方向像素点灰度值累积方法虽然稳健性较高,但分割出的数字同样容易带有无意义的聚团[8-9]。李云栋等[10]提出的一种改进的基于连通域的分割方法虽然分割较为精准,但需要对所有的像素进行连通域分析,导致算法执行效率低且稳健性较差。

因此,本文提出了一种利用区域分割算法的方法来分割水表数字。该方法能够通过自动选取种子点进行区域分割,并剔除错误的分割结果。由于该方法仅对目标数字进行精准切割,分割结果极少出现无关聚团,从而提高了分割的精准性和稳健性。

1 分割算法

1.1 区域分割算法

区域分割算法在分割图像时,首先需要确定种子点以及表示“相似程度”的阈值。区域分割算法的核心在于寻找符合阈值要求的种子点周围的像素点,并形成一个连通图。种子点的确定通常有两种方式:一是手动确定种子点,二是依据预先设定的规则自动选取种子点。

在确定种子点和阈值后,算法开始对周围像素点进行检测。这些检测点包括种子点的上、下、左、右、左上、右上、左下和右下这8个方向的像素点,如图1 所示。分别计算这些点与种子点的差值。如果差值小于或等于阈值,则将这些点标记为下一步进行区域生长的种子点;如果差值大于阈值,则不标记这些点。

这种方法通过在图像中逐步“生长”区域,使得能够有效对感兴趣的区域进行分割,从而提高分割的精准性和稳健性。

在区域分割算法中,对所有种子点求其像素值的平均值,并将其作为这些种子点的新的像素值。随后,对这些新合并的种子点进行新一轮的检测。此过程重复进行,直到没有新的种子点可合并为止,此时分割结束。

1.2 列方向像素点灰度值累积算法

列方向像素点灰度值累积算法通常用于处理二值图像。这种方法首先计算图像中每一列的像素值之和,然后根据先验知识确定一个分割阈值。当某列的像素值之和小于该阈值时,这一列即被视为分割的边界。

例如,要对图2中的白色区域进行分割,可以根据图3中列像素灰度值的统计结果进行操作。在列方向上,黑色色块的灰度值累积之和为0,而白色色块的累积之和为52。假设设定的阈值为52,由于黑色色块在列方向上的灰度值累积之和为0,小于阈值,这可以用于找出白色色块与黑色色块的分割边界。

2 图像预处理

2.1查找数字大概区域

首先,将水表图像转换为灰度图像。灰度图像是指仅有一种采样颜色的图像,通常从黑到白包含256 级灰度。转化为灰度图像可以为后续的边缘检测操作做好准备。如图4所示,展示了转换后的水表灰度图像。由于码字区域的灰度值较小且连续,并与背景形成明显的差异,因此可以通过以下操作获取码字的概略区域。

接下来,首先对图像进行边缘检测。边缘检测采用Roberts算子,因为作为一阶微分算子,Roberts算子简单且计算量小,并对图像细节反应敏感。通过这一步,可以得到包含水表图像中各组成部分边缘的二值图像,如图5所示。在获取边缘检测图像后,接下来进行腐蚀和闭运算。

对图像进行闭运算后,仍然存在许多较小的聚团,这些聚团会影响码字区域的准确定位,因此需要进行去除处理。经过处理后,可以看到,最终获得的图像中白色区域便是水表数字的大致区域,如图8所示。

2.2 定位码字区域并分割

对码字区域的分割,笔者采用累积像素值的方法。首先对码字区域的上下边界进行查找。基于先验知识,确定一个合适的阈值。由于图像是二值图像,列方向灰度值的累积实际上就是计算每列中表示白色点的像素总和,灰度值即为像素值。从得到图像的中间行开始,分别向上下两个方向逐行累积像素值。当某行的像素累积值小于该阈值时,即认为该行是水表数字区域边界的横坐标。同样地,利用列方向累积像素值的方法,可以得到水表数字区域左右边界的纵坐标。图9和图10分别为图像在列方向和行方向上像素点灰度值累积的统计图。

根据上文所得的码字区域的上下左右边界的横纵坐标,在原始的水表灰度图像上进行裁剪,就可以获得水表数字区域的图像。结果如图11所示。

3 水表数字分割

3.1 二值化处理

剪切得到的灰度图像的像素值范围较广,由于难以准确确定图像中水表数字的像素值范围,直接进行基于区域分割算法的分割会存在一定困难。因此,笔者对定位剪切后的图像进行二值化处理。二值化图像是指将图像中所有像素点的值根据一定方法划分为0和1。在划分过程中需要确定阈值,这里的二值化阈值可以采用Otsu(大津法)获得。Otsu方法是由日本学者大津于1979年提出的一种自适应阈值确定方法,主要用于灰度图像的背景与目标分割。该方法通过求解背景和目标之间的最大类间方差来确定全局阈值。

通过二值化处理,可以将所有表示水表数字的像素值设为1,从而统一水表数字的像素值,方便种子点的选取以及区域分割算法阈值的设置。

3.2 选取种子点

首先,选择图像中间行的一系列像素点作为种子点的备选点。由于图像是二值化的,因此像素点的值只有0和1,且表示水表数字的像素值为1,所以在进行区域分割算法时,阈值设为0。从左边起始的第一个像素点开始检查:如果该像素值为0,则跳过该点,检查下一个像素点;如果值为1,则将该点作为种子点,进行一次区域分割算法运算,求出包含该点的码字图像。

这一过程中可能存在的问题是,某两个种子点可能被同一个码字所包含,逐点检查可能会生成重复的码字图像。为了解决这个问题,采用的方法是在利用区域分割算法分割出一个码字图像后,在下一次检查时直接跳过M个像素点。这个M值取决于图像中码字的宽度,可以根据先验知识选择一个合适的M值,如图13所示。

3.3 剔除无关图像

在进行区域分割算法时,一些无关的像素点可能会被错误地当作码字图像分割出来,这不仅导致生成无意义的图像,还可能引起图像分割错误。为了解决这个问题,在执行区域分割算法的过程中,可以通过计算生成图像的宽度来做判断。

具体步骤是:在生成图像后,若其宽度小于某个预设值,则直接舍弃该图像,视为无关点处理。同时,下一个种子点正常选取,不进行跳转。这个宽度阈值同样取决于图像中码字的期望宽度,可以根据实际需要设置一个合适的值,如图14所示。这样做能够有效减少无效分割,并提高图像分割的准确性。

3.4 对分割图像裁剪

分割出的图像需要进一步裁剪,以形成独立的码字图片。裁剪的方法是首先识别图像中码字的左右边缘,然后对图像进行裁剪,去除多余的图像内容,如图15、图16所示。

4 实验

4.1 实验准备

为了验证区域分割算法在分割图像水表数字时的正确性和有效性,本文分别采用了区域分割算法、列方向像素点灰度值累积的方法以及手动分割方法进行实验对比。算法的实验环境为Windows 10操作系统,使用Matlab平台。实验所用图像为一般家用水表图像,其中水表数字居中且清晰可见,图像尺寸为640×480像素,如图17所示。

4.2 实验结果与分析

实验结果如图18、图19、图20所示。

从结果可以看出,当分割第二和第三个水表数字时,使用列方向像素点灰度值累积方法和手动分割方法所得到的分割结果中都存在与数字无关的聚团。这些聚团可能会干扰后续的图像处理,因此分割结果不如本文提出的方法那样理想,如图21所示。

5 结论

针对医院特殊环境中需要高精度实时读取水表读数的应用场景,本文提出了一种基于区域分割算法的水表数字分割方法。文章首先介绍了区域分割算法的基本原理,随后描述了图像分割的预处理过程,包括去除无关信息和定位码字区域。在此基础上,重点讲解了水表数字分割的实际操作,包括种子点的选取方法、可能存在的问题及其解决方案,以及对分割图像的进一步处理。最后,通过实验将本文提出的方法与列方向像素点灰度值累积的方法进行对比,验证了本文方法在分割水表数字上的精准性和稳健性。此外,该图像识别方法也可应用于医院自助影像胶片打印等场景。

上一篇 点击页面呼出菜单 下一篇