二值图像重构方法及装置转让专利

申请号 : CN201710104639.8

文献号 : CN106898029B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭斯羽朱辉梁梦霞温和滕召胜唐璐

申请人 : 湖南大学

摘要 :

本发明涉及图像处理技术领域,提供一种二值图像重构方法及装置,首先获取当前骨架点对应的当前最大圆形区域内每个列的游程;其次根据当前最大圆形区域的半径与预先给定的切换半径阈值的大小,采用直接根据游程或者进行游程合并操作重构出结果二值图像。本发明通过二值图像中的区域骨架以及各骨架点处最大圆形区域半径,能够快速地实现二值图像的重构,其速度显著快于直接对像素进行设置的重构方法。

权利要求 :

1.一种二值图像重构方法,其特征在于,所述方法包括:

获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,所述当前骨架点为所述二值图像的中轴线上的像素点,所述游程为所述二值图像的一列中连续不间断的若干个白色像素点构成的一条直线段;

判断所述当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若所述当前最大圆形区域的半径小于或等于所述切换半径阈值,则直接根据所述游程重构出结果二值图像,若所述当前最大圆形区域的半径大于所述切换半径阈值,则将所述当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到所述二值图像每个列的运算结果游程树,并根据所述结果游程树重构出结果二值图像,其中,二值图像每个列的运算结果游程树为将当前最大圆形区域内每个列的游程分别合并至二值图像的游程列表中得到的。

2.如权利要求1所述的二值图像重构方法,其特征在于,获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,所述当前骨架点为所述二值图像的中轴线上的像素点的步骤,包括:设定所述当前骨架点的网格处圆盘半径Rmax,所述网格处圆盘半径Rmax为所述当前最大圆形区域半径ri向下取整,即 设定所述当前最大圆形区域半径平方值RRS=ri2,设定所述当前骨架点pi处的网格处圆盘半径平方值 其中,预先给定所述二值图像中的骨架点集S={pi=(xi,yi)|i=1,...,N},以及每个所述骨架点pi处的最大圆形区域半径ri,其中N为所述骨架点的数目;

设定所述当前骨架点的行坐标偏移量为所述网格处圆盘半径,即x=-Rmax,设定所述当前骨架点的列坐标偏移量y=0,从而确定所述当前最大圆形区域的边缘坐标为(xi+x,yi);

沿行坐标方向逐渐减小所述当前骨架点的行坐标偏移量,并确定所述行坐标偏移量所在列,沿列坐标方向遍历列中的所有像素点,获得所述当前最大圆形区域内每个列的游程。

3.如权利要求1所述的二值图像重构方法,其特征在于,判断所述当前最大圆形区域的半径与预先给定的切换半径阈值的大小,若所述当前最大圆形区域的半径小于或等于所述切换半径阈值,则直接根据所述游程重构出结果二值图像,若所述当前最大圆形区域的半径大于所述切换半径阈值,则将所述当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到所述二值图像每个列的运算结果游程树,并根据所述结果游程树重构出结果二值图像的步骤,包括:设置所述二值图像的所有像素点均为黑色;

判断所述当前最大圆形区域的半径与所述切换半径阈值的大小;

若所述当前最大圆形区域的半径小于或等于所述切换半径阈值,则将所述当前最大圆形区域的像素点置为白色,重构出结果二值图像;

若所述当前最大圆形区域半径大于所述切换半径阈值,则将所述当前最大圆形区域内每个列的游程分别合并至对应的游程列表中;

当合并操作结束后,遍历所述游程列表中的游程,并将所有游程的每个像素点均置为白色,重构出结果二值图像。

4.如权利要求3所述的二值图像重构方法,其特征在于,若所述当前最大圆形区域半径大于切换半径阈值,则将所述当前最大圆形区域内每个列的游程分别合并至对应的所述游程列表中的步骤,包括:设定探测游程指针uc为所述游程列表的第一个游程,每个所述游程的第一个像素点的行号为u.s,每个所述游程的最后一个像素点的行号为u.e-1,u.e为与每个游程的最后一个像素点连续的后一个像素点的行号,uc.e为与第一个游程的最后一个像素点连续的后一个像素点的行号,uc.s为第一个游程的第一个像素点的行号,uw为改写游程指针,uw.e为与改写游程指针对应的游程的最后一个像素点连续的后一个像素点的行号,uw.s为改写游程指针对应的游程的第一个像素点的行号;

若所述游程列表为空列表,则设置所述探测游程指针uc为空,设置改写游程指针uw为空,设置已写标记f=FALSE;

当uc不为空,且f=FALSE时,若uc.eu.s且uc.eu.e且uc.s≤u.s,则置uw=uc,置uc为空,然后置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,则将所述游程插入到uc之前,然后置uc为空,f=TRUE;

当uc为空,且f=FALSE时,则将所述游程插至所述游程列表的末尾,合并操作结束;

当uc不为空,且f=TRUE时,若uw.euc.e且uw.s

当uc为空,且f=TRUE时,则合并操作结束。

5.如权利要求3所述的二值图像重构方法,其特征在于,当合并操作结束后,遍历所述游程列表中的游程,并将所有游程的每个像素点均置为白色,则重构出结果二值图像的步骤,包括:当合并操作结束后,对每一列的所述游程列表,遍历其中的每个所述游程,并将所述二值图像中每一列的第u.s行到第u.e-1行的所有像素点置为白色,重构出结果二值图像,其中,u.s为每个游程的第一个像素点的行号,u.e-1为每个游程的最后一个像素点的行号。

6.一种二值图像重构装置,其特征在于,所述装置包括:

游程获取模块,用于获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,所述当前骨架点为所述二值图像的中轴线上的像素点,所述游程为所述二值图像的一列中连续不间断的若干个白色像素点构成的一条直线段;

图像重构模块,用于判断所述当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若所述当前最大圆形区域的半径小于或等于所述切换半径阈值,则直接根据所述游程重构出结果二值图像,若所述当前最大圆形区域的半径大于所述切换半径阈值,则将所述当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到所述二值图像每个列的运算结果游程树,并根据所述结果游程树重构出结果二值图像,其中,二值图像每个列的运算结果游程树为将当前最大圆形区域内每个列的游程分别合并至二值图像的游程列表中得到的。

7.如权利要求6所述的二值图像重构装置,其特征在于,所述游程获取模块包括:

第一子设置模块,用于设定所述当前骨架点的网格处圆盘半径Rmax,所述网格处圆盘半径Rmax为所述当前最大圆形区域半径ri向下取整,即 设定所述当前最大圆形区2

域半径平方值RRS=ri ,设定所述当前骨架点pi处的网格处圆盘半径平方值 其中,预先给定所述二值图像中的骨架点集S={pi=(xi,yi)|i=1,...,N},以及每个所述骨架点pi处的最大圆形区域半径ri,其中N为所述骨架点的数目;

第二子设置模块,用于设定所述当前骨架点的行坐标偏移量为所述网格处圆盘半径,即x=-Rmax,设定所述当前骨架点的列坐标偏移量y=0,从而确定所述当前最大圆形区域的边缘坐标为(xi+x,yi);

第一子执行模块,用于沿行坐标方向逐渐减小所述当前骨架点的行坐标偏移量,并确定所述行坐标偏移量所在列,沿列坐标方向遍历列中的所有像素点,获得所述当前最大圆形区域内每个列的游程。

8.如权利要求6所述的二值图像重构装置,其特征在于,所述图像重构模块包括:

第三子设置模块,用于设置所述二值图像的所有像素点均为黑色;

判断模块,用于判断所述当前最大圆形区域半径与所述切换半径阈值的大小;

第二子执行模块,用于若所述当前最大圆形区域的半径小于或等于所述切换半径阈值,则将所述当前最大圆形区域的像素点置为白色,重构出结果二值图像;

第三子执行模块,用于若所述当前最大圆形区域半径大于所述切换半径阈值,则将所述当前最大圆形区域内每个列的游程分别合并至对应的游程列表中;

游程重构模块,用于当合并操作结束后,遍历所述游程列表中的游程,并将所有游程的每个像素点均置为白色,重构出结果二值图像。

9.如权利要求8所述的二值图像重构装置,其特征在于,所述第三子执行模块包括:

第四子设置模块,用于设定探测游程指针uc为所述游程列表的第一个游程,每个所述游程的第一个像素点的行号为u.s,每个所述游程的最后一个像素点的行号为u.e-1,u.e为与每个游程的最后一个像素点连续的后一个像素点的行号,uc.e为与第一个游程的最后一个像素点连续的后一个像素点的行号,uc.s为第一个游程的第一个像素点的行号,uw为改写游程指针,uw.e为与改写游程指针对应的游程的最后一个像素点连续的后一个像素点的行号,uw.s为改写游程指针对应的游程的第一个像素点的行号;

第五子设置模块,用于若所述游程列表为空列表,则设置探测游程指针为空,设置改写游程指针uw为空,设置已写标记f=FALSE;

第四子执行模块,用于当uc不为空,且f=FALSE时,若uc.eu.s且uc.eu.e且uc.s≤u.s,则置uw=uc,置uc为空,然后置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,则将所述游程插入到uc之前,然后置uc为空,f=TRUE;

第五子执行模块,用于当uc为空,且f=FALSE时,则将所述游程插至所述游程列表的末尾,合并操作结束;

第六子执行模块,用于当uc不为空,且f=TRUE时,若uw.euc.e且uw.s

第七子执行模块,用于当uc为空,且f=TRUE时,则合并操作结束。

10.如权利要求8所述的二值图像重构装置,其特征在于,所述游程重构模块还包括:

第八子执行模块,用于当合并操作结束后,对每一列的所述游程列表,遍历其中的每个所述游程,并将所述二值图像中每一列的第u.s行到第u.e-1行的所有像素点置为白色,重构出结果二值图像,其中,u.s为每个游程的第一个像素点的行号,u.e-1为每个游程的最后一个像素点的行号。

说明书 :

二值图像重构方法及装置

技术领域

[0001] 本发明涉及图像处理技术领域,具体而言,涉及一种二值图像重构方法及装置。

背景技术

[0002] 二值图像的压缩与重构被广泛应用于图像处理、工农业生产检测、交通与公共安全监测等领域的对象识别和图像理解任务之中。在各种压缩方法中,使用二值图像中区域的骨架来进行压缩是主要方法之一,骨架配合上各骨架点处的区域最大圆盘半径值,也可以从理论上实现区域的无损压缩和重构。由于骨架本身可以作为区域形状的描述特征之一,在形状匹配、形状分析方面具有重要应用,因此在很多图像处理与对象识别应用中,骨架以及基于骨架的区域重构具有重要意义。但是,二值图像重构是一种基础且频繁使用的操作,因此重构速度的提高,对于很多应用的整体性能提高有着显著的影响。

发明内容

[0003] 本发明的目的在于提供一种二值图像重构方法,用以改善上述问题。
[0004] 本发明的另一目的在于提供一种二值图像重构装置,用以改善上述问题。
[0005] 为了实现上述目的,本发明实施例采用的技术方案如下:
[0006] 本发明提供了一种二值图像重构方法,其包括:获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,当前骨架点为二值图像的中轴线上的像素点;判断当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若当前最大圆形区域的半径小于或等于切换半径阈值,则直接根据游程重构出结果二值图像,若当前最大圆形区域的半径大于切换半径阈值,则将当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到二值图像每个列的运算结果游程树,并根据结果游程树重构出结果二值图像。
[0007] 本发明还提供了一种二值图像重构装置,游程获取模块,用于获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,当前骨架点为二值图像的中轴线上的像素点;图像重构模块,用于判断当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若当前最大圆形区域的半径小于或等于切换半径阈值,则直接根据游程重构出结果二值图像,若当前最大圆形区域的半径大于切换半径阈值,则将当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到二值图像每个列的运算结果游程树,并根据结果游程树重构出结果二值图像。
[0008] 与现有技术相比,本发明提供的一种二值图像重构方法及装置,通过获取当前骨架点对应的当前最大圆形区域内每个列的游程,以合并游程的方法来实现以当前骨架点为圆心、以当前最大圆形区域半径为半径的重构圆形区域与其他重构区域的快速合并操作,快速地实现二值图像的重构,从而使得其重构速度显著快于直接对像素进行设置的重构方法。
[0009] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0010] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0011] 图1示出了本发明较佳实施例提供的电子设备的方框示意图。
[0012] 图2示出了本发明较佳实施例提供的二值图像重构方法流程图。
[0013] 图3为图2示出的步骤S101的子步骤流程图。
[0014] 图4为图2示出的步骤S102的子步骤流程图。
[0015] 图5为图4示出的子步骤S1024的子步骤流程图。
[0016] 图6为图4示出的子步骤S1025的子步骤流程图。
[0017] 图7示出了本发明较佳实施例提供的二值图像重构装置的方框示意图。
[0018] 图8为图7示出的二值图像重构装置中游程获取模块的方框示意图。
[0019] 图9为图7示出的二值图像重构装置中图像重构模块的方框示意图。
[0020] 图10为图9示出的图像重构模块中第三子执行模块的方框示意图。
[0021] 图11为图9示出的图像重构模块中游程重构模块的方框示意图。
[0022] 图标:100-电子设备;101-存储器;102-存储控制器;103-处理器;200-二值图像重构装置;201-游程获取模块;202-图像重构模块;2011-第一子设置模块;2012-第二子设置模块;2013-第一子执行模块;2021-第三子设置模块;2022-判断模块;2023-第二子执行模块;2024-第三子执行模块;2025-游程重构模块;20241-第四子设置模块;20242-第五子设置模块;20243-第四子执行模块;20244-第五子执行模块;20245-第六子执行模块;20246-第七子执行模块;20251-第八子执行模块。

具体实施方式

[0023] 下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0025] 图1示出本发明较佳实施例提供的电子设备100的方框示意图。电子设备100优选为计算机,可以包括台式机和个人笔记本电脑。所述电子设备100包括二值图像重构装置200、存储器101、存储控制器102、处理器103。
[0026] 所述存储器101、存储控制器102、处理器103各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条信号线实现电性连接。所述二值图像重构装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述电子设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器103用于执行存储器101中存储的可执行模块,例如所述二值图像重构装置200包括的软件功能模块或计算机程序。
[0027] 其中,存储器101可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序,本发明任一实施例揭示的流程定义的服务器所执行的方法可以应用于处理器103中,或者由处理器103实现。
[0028] 处理器103可以是一种集成电路芯片,具有信号处理能力。上述的处理器103可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、语音处理器以及视频处理器等;还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器103也可以是任何常规的处理器等。
[0029] 第一实施例
[0030] 请参考图2,图2示出了本发明较佳实施例提供的二值图像重构方法流程图。二值图像重构方法包括以下步骤:
[0031] 步骤S101,获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,当前骨架点为二值图像的中轴线上的像素点。
[0032] 在本发明实施例中,二值图像中的一个游程,优选为二值图像的一列中连续不间断的若干个像素点构成的一条直线段,该像素点优选为白色。
[0033] 在本发明实施例中,二值图像的中轴线线上的像素点,优选为距离二值图像边界上两个点等距的像素点。
[0034] 请参考图3,步骤S101还包括以下子步骤:
[0035] 步骤S1011,设定当前骨架点的网格处圆盘半径Rmax,网格处圆盘半径Rmax为当前最大圆形区域半径ri向下取整,即 设定所述当前最大圆形区域半径平方值RRS=ri2,设定当前骨架点pi处的网格处圆盘半径平方值 其中,预先给定二值图像中的骨架点集S={pi=(xi,yi)|i=1,...,N},以及每个骨架点pi处的最大圆形区域半径ri,其中N为骨架点的数目。
[0036] 步骤S1012,设定当前骨架点的列坐标偏移量为网格处圆盘半径,即x=-Rmax,设定当前骨架点的列坐标偏移量y=0,从而确定当前最大圆形区域的边缘坐标(xi+x,yi)。
[0037] 步骤S1013,沿行坐标方向逐渐减小当前骨架点的列坐标偏移量,并确定列坐标偏移量所在列,沿列坐标方向遍历列中的所有像素点,获得当前最大圆形区域内每个列的游程。
[0038] 步骤S102,判断当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若当前最大圆形区域的半径小于或等于切换半径阈值,则直接根据游程重构出结果二值图像,若当前最大圆形区域的半径大于切换半径阈值,则将当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到二值图像每个列的运算结果游程树,并根据结果游程树重构出结果二值图像。
[0039] 请参考图4,步骤S102还包括以下子步骤:
[0040] 步骤S1021,设置二值图像的所有像素点均为黑色。
[0041] 步骤S1022,判断当前最大圆形区域的半径与切换半径阈值的大小。
[0042] 步骤S1023,若当前最大圆形区域的半径小于或等于切换半径阈值,则将当前最大圆形区域的像素点置为白色,重构出结果二值图像。
[0043] 步骤S1024,若当前最大圆形区域半径大于切换半径阈值,则将当前最大圆形区域内每个列的游程分别合并至对应的游程列表中。
[0044] 请参考图5,步骤S1024还包括以下子步骤:
[0045] 步骤S10241,设定探测游程指针uc为游程列表的第一个游程,每个游程的第一个像素点的行号为u.s,每个游程的最后一个像素点的行号为u.e-1。
[0046] 步骤S10242,若游程列表为空列表,则设置探测游程指针uc为空,设置改写游程指针uw为空,设置已写标记f=FALSE。
[0047] 步骤S10243,当uc不为空,且f=FALSE时,若uc.eu.s且uc.eu.e且uc.s≤u.s,则置uw=uc,置uc为空,然后置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,则将游程插入到uc之前,然后置uc为空,f=TRUE。
[0048] 步骤S10244,当uc为空,且f=FALSE时,则将游程插至游程列表的末尾,合并操作结束。
[0049] 步骤S10245,当uc不为空,且f=TRUE时,若uw.euc.e且uw.s
[0050] 步骤S10246,当uc为空,且f=TRUE时,则合并操作结束。
[0051] 步骤S1025,当合并操作结束后,遍历游程列表中的游程,并将所有游程的每个像素点均置为白色,重构出结果二值图像。
[0052] 请参考图6,步骤S1025还包括以下子步骤:
[0053] 步骤S10251,当合并操作结束后,对每一列的游程列表,遍历其中的每个游程,并将二值图像中每一列的第u.s行到第u.e-1行的所有像素点置为白色,重构出结果二值图像。
[0054] 请参考表1,表1示出了4种二值图像重构方法的运行时间,4种二值图像重构方法包括:像素直接重构法(记为BRUTE)、二值图像逻辑或重构方法(记为RFO)、以及本发明提供的二值图像重构方法,其中,本发明提供的二值图像重构方法又分为两种,一种是使用部分直接重构,切换半径阈值为35像素,记为RFHYB;另一种是不使用直接重构,记为RFOA。BRUTE、RFO、RFHYB与RFOA均在一个80幅植物叶片图片构成的图像集上进行运算,实验结果如下:
[0055] 表1.BRUTE、RFO、RFHYB与RFOA的运行时间
[0056]方法 运行时间(s)
BRUTE 7.42
RFO 137.63
RFHYB 3.48
RFOA 3.51
[0057] 由表1可知,本发明提供的二值图像重构方法的运行时间明显小于其他重构方法,也就是说,本发明提供的二值图像重构方法优于其他重构方法。
[0058] 需要说明的是,本发明提供的二值图像重构方法中,游程定义为二值图像的列中的连续白色(垂直)直线段。如果采用二值图像的行中的连续白色(水平)直线段作为游程,则二者应视为实质等同,应属于本发明的保护范围。
[0059] 需要说明的是,本发明提供的二值图像重构方法中采用了最大圆形区域来进行基于骨架的重构,如果不是采用圆形区域,而是采用其他容易计算的凸图形(如正方形、长方形、菱形等)来替代,并采用了本发明中的游程合并方法,则同样属于本发明的保护范围。
[0060] 第二实施例
[0061] 请参考图7,图7示出了本发明较佳实施例提供的二值图像重构装置200的方框示意图。二值图像重构装置200应用于电子设备100,其包括游程获取模块201和图像重构模块202。
[0062] 游程获取模块201,用于获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,当前骨架点为二值图像的中轴线上的像素点。
[0063] 在本发明实施例中,游程获取模块201可以用于执行步骤S101。
[0064] 请参考图8,游程获取模块201包括第一子设置模块2011、第二子设置模块2012及第一子执行模块2013。
[0065] 第一子设置模块2011,用于设定当前骨架点的网格处圆盘半径Rmax,网格处圆盘半径Rmax为当前最大圆形区域半径ri向下取整,即 设定所述当前最大圆形区域半径平方值RRS=ri2,设定当前骨架点pi处的网格处圆盘半径平方值 其中,预先给定二值图像中的骨架点集S={pi=(xi,yi)|i=1,...,N},以及每个骨架点pi处的最大圆形区域半径ri,其中N为骨架点的数目。
[0066] 在本发明实施例中,第一子设置模块2011可以用于执行步骤S1011。
[0067] 第二子设置模块2012,用于设定当前骨架点的列坐标偏移量为网格处圆盘半径,即x=-Rmax,设定当前骨架点的列坐标偏移量y=0,从而确定当前最大圆形区域的边缘坐标(xi+x,yi)。
[0068] 在本发明实施例中,第二子设置模块2012可以用于执行步骤S1012。
[0069] 第一子执行模块2013,用于沿行坐标方向逐渐减小当前骨架点的列坐标偏移量,并确定列坐标偏移量所在列,沿列坐标方向遍历列中的所有像素点,获得当前最大圆形区域内每个列的游程。
[0070] 在本发明实施例中,第一子执行模块2013可以用于执行步骤S1013。
[0071] 图像重构模块202,用于判断当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若当前最大圆形区域的半径小于或等于切换半径阈值,则直接根据游程重构出结果二值图像,若当前最大圆形区域的半径大于切换半径阈值,则将当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到二值图像每个列的运算结果游程树,并根据结果游程树重构出结果二值图像。
[0072] 在本发明实施例中,图像重构模块202可以用于执行步骤S102。
[0073] 请参考图9,图像重构模块202包括第三子设置模块2021、判断模块2022、第二子执行模块2023、第三子执行模块2024及游程重构模块2025。
[0074] 第三子设置模块2021,用于设置二值图像的所有像素点均为黑色。
[0075] 在本发明实施例中,第三子设置模块2021可以用于执行步骤S1021。
[0076] 判断模块2022,用于判断当前最大圆形区域的半径与切换半径阈值的大小。
[0077] 在本发明实施例中,判断模块2022可以用于执行步骤S1022。
[0078] 第二子执行模块2023,用于若当前最大圆形区域的半径小于或等于切换半径阈值,则将当前最大圆形区域的像素点置为白色,重构出结果二值图像。
[0079] 在本发明实施例中,第二子执行模块2023可以用于执行步骤S1023。
[0080] 第三子执行模块2024,用于若当前最大圆形区域半径大于切换半径阈值,则将当前最大圆形区域内每个列的游程分别合并至对应的游程列表中。
[0081] 在本发明实施例中,第三子执行模块2024可以用于执行步骤S1024。
[0082] 请参考图10,第三子执行模块2024包括第四子设置模块20241、第五子设置模块20242、第四子执行模块20243、第五子执行模块20244、第六子执行模块20245及第七子执行模块20246。
[0083] 第四子设置模块20241,用于设定探测游程指针uc为游程列表的第一个游程,每个游程的第一个像素点的行号为u.s,每个游程的最后一个像素点的行号为u.e-1。
[0084] 在本发明实施例中,第四子设置模块20241可以用于执行步骤S10241。
[0085] 第五子设置模块20242,用于若游程列表为空列表,则设置探测游程指针uc为空,设置改写游程指针uw为空,设置已写标记f=FALSE。
[0086] 在本发明实施例中,第五子设置模块20242可以用于执行步骤S10242。
[0087] 第四子执行模块20243,用于当uc不为空,且f=FALSE时,若uc.eu.s且uc.eu.e且uc.s≤u.s,则置uw=uc,置uc为空,然后置uw.s=u.s,f=TRUE;若uc.e≤u.e且uc.s>u.s,则将游程插入到uc之前,然后置uc为空,f=TRUE。
[0088] 在本发明实施例中,第四子执行模块20243可以用于执行步骤S10243。
[0089] 第五子执行模块20244,用于当uc为空,且f=FALSE时,则将游程插至游程列表的末尾,合并操作结束。
[0090] 在本发明实施例中,第五子执行模块20244可以用于执行步骤S10244。
[0091] 第六子执行模块20245,用于当uc不为空,且f=TRUE时,若uw.euc.e且uw.s
[0092] 在本发明实施例中,第六子执行模块20245可以用于执行步骤S10245。
[0093] 第七子执行模块20246,用于当uc为空,且f=TRUE时,则合并操作结束。
[0094] 在本发明实施例中,第七子执行模块20246可以用于执行步骤S10246。
[0095] 游程重构模块2025,用于当合并操作结束后,遍历游程列表中的游程,并将所有游程的每个像素点均置为白色,重构出结果二值图像。
[0096] 在本发明实施例中,游程重构模块2025可以用于执行步骤S1025。
[0097] 请参考图11,游程重构模块2025包括第八子执行模块20251。
[0098] 第八子执行模块20251,用于当合并操作结束后,对每一列的游程列表,遍历其中的每个游程,并将二值图像中每一列的第u.s行到第u.e-1行的所有像素点置为白色,重构出结果二值图像。
[0099] 在本发明实施例中,第八子执行模块20251可以用于执行步骤S10251。
[0100] 综上所述,本发明提供的一种二值图像重构方法及装置,首先,获取当前骨架点对应的当前最大圆形区域内每个列的游程,其中,当前骨架点为二值图像的中轴线上的像素点;其次,判断当前最大圆形区域的半径与预先给定的切换半径阈值的大小;若当前最大圆形区域的半径小于或等于切换半径阈值,则直接根据游程重构出结果二值图像,若当前最大圆形区域的半径大于切换半径阈值,则将当前最大圆形区域内的游程与其他最大圆形区域内的游程进行合并操作,得到二值图像每个列的运算结果游程树,并根据结果游程树重构出结果二值图像。与现有技术的直接对像素进行设置的二值图像重构相比,本发明能够通过二值图像中的区域骨架以及各骨架点处最大圆形区域半径,快速地实现二值图像的重构,其速度显著快于直接对像素进行设置的重构方法。
[0101] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0102] 另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0103] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0104] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0105] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。