CN116091297A - 一种图像连通域标记硬件实现算法 - Google Patents
一种图像连通域标记硬件实现算法 Download PDFInfo
- Publication number
- CN116091297A CN116091297A CN202211569412.8A CN202211569412A CN116091297A CN 116091297 A CN116091297 A CN 116091297A CN 202211569412 A CN202211569412 A CN 202211569412A CN 116091297 A CN116091297 A CN 116091297A
- Authority
- CN
- China
- Prior art keywords
- row
- marking
- line
- mark
- label
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration by the use of local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及图像处理技术领域,尤其是一种图像连通域标记硬件实现算法,连通域标记算法硬件实现架构采取基于像素的方式进行连通域标记,等价表结构使用一维数组,计算架构包括初标记与等价表存储模块、等价表复制与更新模块、坐标记录与更新模块、相邻行标记存储与比较模块,本发明基于二值图像中连通域的特点,以图像行为周期对等价表进行复制、更新等操作,有效降低了处理延时,形成了一种基于FPGA的连通域标记高效计算架构。
Description
技术领域
本发明涉及图像处理技术领域,具体领域为一种基于FPGA的图像连通域标记硬件实时处理算法。
背景技术
在图像处理、目标检测、模式识别等领域,特征提取环节中是必不可少的处理步骤。因此,最常用于目标候选区域检测与提取的连通域标记算法得到了广泛的使用。相比于图像滤波与阈值分割等可以进行流水线处理的图像处理算法,连通域标记算法因其复杂度较高,往往需要耗费更高的硬件资源与处理时间。
FPGA是一种可编程逻辑器件,具有功耗低、成本低、开发灵活、处理速度快的优点,FPGA可为每个系统开发独立的硬件电路结构,因此兼有并行结构以及流水线处理的特点。
如何高效地实现连通域标记算法是满足实时性要求的关键,针对连通域标记实现的实时性难题。
发明内容
针对现有技术存在的不足,本发明的目的在于提供一种图像连通域标记硬件实现算法,基于二值图像中连通域的特点,以图像行为周期对等价表进行复制、更新等操作,有效降低了处理延时,形成了一种基于FPGA的连通域标记高效计算架构。
为实现上述目的,本发明提供如下技术方案:一种图像连通域标记硬件实现算法,连通域标记算法硬件实现架构采取基于像素的方式进行连通域标记,等价表结构使用一维数组,计算架构包括初标记与等价表存储模块、等价表复制与更新模块、坐标记录与更新模块、相邻行标记存储与比较模块,
1)初标记与等价表存储模块:a、使用滤波模板对输入的二值图像进行初标记滑窗处理,对每一个像素值为“1”的像素赋予标记值,并将检测到的等价标记存储在等价表当中;b、将灰度值为“1”的像素坐标进行输出;c、检测并输出滑窗过程中相邻两行出现的标记;
2)等价表复制与更新模块:以行为周期复制最新的等价表E1,并在图像的下一个行周期内进行E1的遍历更新;
3)相邻行标记存储与比较模块:a、将标记过程中出现过的相邻两行标记进行存储得到标记集合;b、获取更新后的E1对相邻行标记集合进行更新;c、通过比较更新后的标记集合,获取相邻两行中上一行的可输出区域的标记集合{LO};
4)坐标记录与更新模块:a、将标记过程中像素值为“1”的像素坐标进行存储;b、根据更新后的E1对坐标表进行更新;c、根据可输出标记{LO},取出对应连通域的坐标和以及像素数量,计算并输出连通域的质心坐标与半径。
在其中一些实施例中,计算流程方式为:
1)第1个行周期:共需完成4个操作,第1个是进行第N-1行图像数据的标记,将等价信息实时记录到等价表当中;第2个是检测出第N-2行以及第N-1行出现过的标记{LN-2}以及{LN-1};第3个是在第N-1行标记的同时将等价表复制出一份记为E1;第4个是在第N-1行标记的同时将坐标表复制出一份记为C1;
2)第2个行周期:进行第N行数据标记,同时共需完成3个操作,第1个是对等价表E1进行遍历更新;第2个是借助更新过的E1,将存储的第N-2、N-1行标记集合{LN-2}以及{LN-1}进行更新得到{LN-2}'以及{LN-2}';第3个是借助更新过的E1,将坐标表C1进行更新得到C1';
3)第3个行周期:进行第N+1行数据标记,同时对标记集合{LN-2}'以及{LN-1}'进行标记比较,得到{LN-2}'中可输出的连通域标记集合{LO};
4)第4个行周期:进行第N+2行数据标记,同时计算并输出标记集合{LO}当中的连通域质心坐标与半径;
从上述操作可知,图像在进行第N+2行像素标记时,可以输出区域延伸停止于第N-2行的连通域,从连通域的延伸结束行算起,输出延时最多为4个行周期。
在其中一些实施例中,初标记与等价表存储模块中像素标记以及等价表存储的流程为:
stage 1:标记上下文建模,使用预设的窗口进行标记上下文建模;
stage2:逐像素标记,根据标记使用的预设窗口大小,采用对应数量个FIFO用于缓存行数据,使用对应数量个寄存器缓存滤波窗口中的数据;
stage3:等价关系上下文建模,为了简化等价关系判断,使用2×2窗口。
stage4.1:等价关系判断与存储,针对建模中需要进行标记的像素判断赋值的时钟周期,也即数据流流过stage 1的预设窗口后,再延迟预设窗口同列数量个时钟周期便可以直接流入stage3中示出的窗口进行滑窗,因此并不需要FIFO进行数据缓存,只需要4个寄存器组成滑窗窗口;在进行等价关系判断时,两两取出2×2窗口当中的数据,如果像素值相同都为1,但是标记值不同,说明存在具有等价关系的标记,将这一对标记写入等价表当中;
stage4.2:检测相邻两行出现的标记,同样使用stage3中示出的窗口进行滑窗,当检测到{a,b}={0,1}或者{d,e}={0,1}时,暂存b,e的标记值,直到标记值在同一行内的延伸消失,在判断相邻两行出现过的标记时,经分析发现并不需要存储所有两行当中出现过的标记:
第N-1行当中与第N行发生连通关系的标记如b不需要存储,这是因为标记b代表的区域仍在第N行延伸;第N行当中未与第N-1行发生连通关系的标记如c也不需存储,因为标记c为新建标记,在局部上不与第N-1行连通。因此,只需要存储第N-1行中未与第N行连通的标记如a,以及第N行当中与第N-1行连通的标记如d。通过此种标记存储方式可以减小后续相邻行标记比较的计算量。
在其中一些实施例中,等价表复制与更新模块:
由于等价表复制与更新均以行为周期进行,为了构建等价表复制、更新操作的流水线处理结构,使用“乒乓操作”,利用两个RAM交替进行等价表的复制以及更新;
flag=1:当前标记处理行的行计数为奇数,RAM1用于存储复制的等价表数据,RAM2进行等价表更新;
flag=0:行计数为偶数,RAM1进行等价表更新,RAM2用于存储复制来的等价表数据;
以上述交替、无缝式切换的方式进行等价表复制与更新,实现等价表更新的流水线处理,模块处理的整体延时为1个行周期。
在其中一些实施例中,等价表更新状态机的主要流程为:
a、状态机处于IDLE状态,检测到某行的行起始信号,跳转至S1状态;
b、S1状态首先判断当前的读地址与等价表的最大标号是否相等;
c、若相等说明等价表更新完成,跳至IDLE状态,若不相等,按照flag的值,从RAM1或者RAM2当中按地址递增的顺序依次读出存储在其中的标记值,随后跳至S2;
d、S2状态将读出的标记值label与地址值addr进行对比,若相等,则此标记为根标记,跳至S1,若不相等,跳至S3;
e、S3状态读出以label为地址的RAM内数据E(label),使addr=label,且label=E(label),再次判断label与地址值addr是否相等,若相等,则将当前label值写入最初的地址当中,随后跳至S1,不相等则跳至S4;
f、S4状态重复S3当中的判断,相等则跳至S1,不相等则跳至S5;
g、S5状态将迭代读出的最新label值写入最初的地址当中,跳至S1;
以上流程过后,等价表完成更新,也即同一片连通域内的所有标号全部替换为其根标记。
在其中一些实施例中,相邻行标记存储与比较模块的存储、更新以及比较流程为:
stage1:相邻行标记存储,在进行图像第N行数据标记时,将滑窗检测出第N-1、N行的标记lm以及ln进行存储,形成标记集合{LN-1}以及{LN};
stage2:相邻行标记更新,根据更新过的等价表E1对{LN-1}以及{LN}进行更新得到{LN-1}'以及{LN}',为了实现相邻行标记存储、更新的流水线处理结构,使用“乒乓操作”构建以行为处理周期的流水线架构;
stage3:相邻行标记比较,在获取到第N-1行以及第N行出现过的根标记后,需要通过标记对比确定有哪些根标记在第N-1行中出现,而未在第N行出现,使用寄存器逻辑操作代替相邻行标记遍历匹配。
在其中一些实施例中,在相邻行标记存储与比较模块的流程stage2中,实现相邻行标记存储、更新的流水线处理结构为:
flag=1:当前进行标记处理行的行计数为奇数,FIFO1以及FIFO2用于存储相邻行标记,FIFO3以及FIFO4进行相邻行标记的更新;
flag=0:当前进行标记处理行的行计数为偶数,FIFO3以及FIFO4用于存储相邻行标记,FIFO1以及FIFO2进行相邻行标记的更新。
在其中一些实施例中,在相邻行标记存储与比较模块的流程stage3中寄存器逻辑操作为:使用两个深度为图像列宽的寄存器label_1与label_2用来表示第N-1行与第N行出现过的标记,如第N-1行标记3出现,则label_1[3]=1,依次类推;然后判断寄存器label_1与label_2当中同一索引对应bit,如果为“10”,则表示第N-1行中此索引对应的标记可以进行输出,否则不输出,这样可以将相邻行标记匹配操作的时间限定为固定的1个行周期。
在其中一些实施例中,坐标记录与更新模块流程方式为构建与等价表结构相同的坐标表,针对坐标表的操作有记录、更新、复制以及输出,每种操作均需要一个RAM,因此此模块共需4个RAM,分别记为RAM1、RAM2、RAM3以及RAM4;
坐标表的记录操作与等价表的记录方式相同,仅将保存的值由标记换为累加的坐标值;
坐标表的复制、更新以及输出同样均以行为周期进行,并且具有先后关系,为了构建流水线结构,同样使用“乒乓操作”使RAM2、RAM3以及RAM4交替进行坐标表的复制、更新以及输出,具体操作与上述几个模块内部等价表操作类似,从相邻标记存储与比较模块获取可输出标记后,以此标记为地址读出RAM当中存储的坐标和,随后需要使用除法计算出质心坐标。
在其中一些实施例中,为了构建流水线操作,使用ROM构建查找表进行除法计算,1个时钟周期即可完成质心坐标计算。
与现有技术相比,本发明的有益效果是:分析图像中连通域的形状特点,结合连通域标记计算中等价表的更新操作,基于FPGA的器件架构,采取以图像行周期对等价表进行复制、更新的方法,设计出一种基于FPGA的连通域标记计算算法,相比于常见的计算架构可以将计算延时从1个帧周期降低为4个行周期,有效降低处理延时。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂,通过本申请的实施例对本申请进行详尽说明和了解。
附图说明
图1为本发明技术方案中连通域标记硬件架构示意图;
图2为本发明具体实施方式中连通域标记计算流程图;
图3为本发明具体实施方式中像素标记以及等价关系存储流水线结构图;
图4为本发明具体实施方式中标记上下文建模示意图;
图5为本发明具体实施方式中等价关系上下文建模示意图;
图6为本发明具体实施方式中等价表结构图;
图7为本发明具体实施方式中相邻两行标记连通情况示意图;
图8为本发明技术方案中等价表复制更新乒乓操作示意图;
图9为本发明具体实施方式中等价表更新状态机跳转示意图;
图10为本发明具体实施方式中相邻行存储、更新与比较计算流程图;
图11为本发明具体实施方式中相邻行复制更新乒乓操作示意图;
图12为本发明具体实施方式中相邻行标记遍历比较示意图;
图13为本发明具体实施方式中相邻行标记寄存器逻辑操作示意图;
图14为本发明具体实施方式中坐标表结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明提供一种技术方案:一种图像连通域标记硬件实现算法,硬件实现架构采取基于像素的方式进行连通域标记,等价表结构使用一维数组,如图1所示,计算架构包括初标记与等价表存储模块、等价表复制与更新模块、坐标记录与更新模块、相邻行标记存储与比较模块共4个模块:
1)初标记与等价表存储模块:
a、使用滤波模板对输入的二值图像进行初标记滑窗处理,对每一个像素值为“1”的像素赋予标记值,并将检测到的等价标记存储在等价表当中;
b、将灰度值为“1”的像素坐标进行输出;c、检测并输出滑窗过程中相邻两行出现的标记。
2)等价表复制与更新模块:
以行为周期复制最新的等价表E1,并在图像的下一个行周期内进行E1的遍历更新。
3)相邻行标记存储与比较模块:
a、将标记过程中出现过的相邻两行标记进行存储得到标记集合;
b、获取更新后的E1对相邻行标记集合进行更新;
c、通过比较更新后的标记集合,获取相邻两行中上一行的可输出区域的标记集合{LO}。
4)坐标记录与更新模块:
a、将标记过程中像素值为“1”的像素坐标进行存储;
b、根据更新后的E1对坐标表进行更新;
c、根据可输出标记{LO},取出对应连通域的坐标和以及像素数量,计算并输出连通域的质心坐标与半径。
实施例2
基于实施例1的架构,其算法计算流程如图2所示。
1)第1个行周期:共需完成4个操作,第1个是进行第N-1行图像数据的标记,将等价信息实时记录到等价表当中;第2个是检测出第N-2行以及第N-1行出现过的标记{LN-2}以及{LN-1};第3个是在第N-1行标记的同时将等价表复制出一份记为E1;第4个是在第N-1行标记的同时将坐标表复制出一份记为C1。
2)第2个行周期:进行第N行数据标记,同时共需完成3个操作,第1个是对等价表E1进行遍历更新;第2个是借助更新过的E1,将存储的第N-2、N-1行标记集合{LN-2}以及{LN-1}进行更新得到{LN-2}'以及{LN-2}';第3个是借助更新过的E1,将坐标表C1进行更新得到C1'。
3)第3个行周期:进行第N+1行数据标记,同时对标记集合{LN-2}'以及{LN-1}'进行标记比较,得到{LN-2}'中可输出的连通域标记集合{LO}。
4)第4个行周期:进行第N+2行数据标记,同时计算并输出标记集合{LO}当中的连通域质心坐标与半径。
从上述操作可知,图像在进行第N+2行像素标记时,可以输出区域延伸停止于第N-2行的连通域,从连通域的延伸结束行算起,输出延时最多为4个行周期。
实施例3
基于实施例2中的流程方式进行详尽说明模块设计与优化方式:
1)初标记与等价表存储模块
像素标记以及等价表存储的流水线结构如图3所示:
stage1:标记上下文建模。使用如图4所示的窗口进行标记上下文建模,像素e为需要进行标记的中心像素,像素a、b、c、d为已进行过标记的像素,其标记值分别为la、lb、lc以及ld。
stage2:逐像素标记。由于标记使用的是2×3的窗口,因此只需要1个FIFO用于缓存行数据,使用5个寄存器缓存滤波窗口中的数据。
stage3:等价关系上下文建模。为了简化等价关系判断,使用如图5所示的2×2窗口。
stage4.1:等价关系判断与存储。le的判断赋值共需3个时钟周期,也即数据流流过图4的窗口后,再延迟3个时钟周期便可以直接流入图5所示窗口进行滑窗,因此并不需要FIFO进行数据缓存,只需要4个寄存器组成滑窗窗口。在进行等价关系判断时,两两取出2×2窗口当中的数据,如果像素值相同都为1,但是标记值不同,说明存在具有等价关系的标记,将这一对标记写入等价表当中。
如图6所示,等价表的结构为一维数组,在实现上使用FPGA内部的BRAM。等价标记在等价表中的存储方式为E(label_index)=label_array,其中label_index表示数组下标值,label_array表示数组值,这两个值分别代表一个等价标记值。为了便于进行标记合并,要求label_index≥label_array,本文定义等价表深度为图像列宽,也即标记最大值为图像列宽,这个深度对经过预处理的二值图像来说完全足够,且便于以行周期进行等价表更新。
stage4.2:检测相邻两行出现的标记。同样使用图5所示滑窗,当检测到{a,b}={0,1}或者{d,e}={0,1}时,暂存b,e的标记值,直到标记值在同一行内的延伸消失。在判断相邻两行出现过的标记时,经分析发现并不需要存储所有两行当中出现过的标记,如图7所示:
第N-1行当中与第N行发生连通关系的标记如b不需要存储,这是因为标记b代表的区域仍在第N行延伸;第N行当中未与第N-1行发生连通关系的标记如c也不需存储,因为标记c为新建标记,在局部上不与第N-1行连通。因此,只需要存储第N-1行中未与第N行连通的标记如a,以及第N行当中与第N-1行连通的标记如d。通过此种标记存储方式可以减小后续相邻行标记比较的计算量。
2)等价表复制与更新模块
由于等价表复制与更新均以行为周期进行,为了构建等价表复制、更新操作的流水线处理结构,如图8所示,本文使用“乒乓操作”,利用两个RAM交替进行等价表的复制以及更新。
flag=1:当前标记处理行的行计数为奇数,RAM1用于存储复制的等价表数据,RAM2进行等价表更新。
flag=0:行计数为偶数,RAM1进行等价表更新,RAM2用于存储复制来的等价表数据。
以这样交替的、无缝式切换的方式进行等价表复制与更新,可以实现等价表更新的流水线处理,模块处理的整体延时为1个行周期。
等价表复制过程较为简单,图9展示了等价表更新状态机的主要流程:
a、状态机处于IDLE状态,检测到某行的行起始信号,跳转至S1状态;
b、S1状态首先判断当前的读地址与等价表的最大标号是否相等;
c、若相等说明等价表更新完成,跳至IDLE状态,若不相等,按照flag的值,从RAM1或者RAM2当中按地址递增的顺序依次读出存储在其中的标记值,随后跳至S2;
d、S2状态将读出的标记值label与地址值addr进行对比,若相等,则此标记为根标记,跳至S1,若不相等,跳至S3;
e、S3状态读出以label为地址的RAM内数据E(label),使addr=label,且label=E(label),再次判断label与地址值addr是否相等,若相等,则将当前label值写入最初的地址当中,随后跳至S1,不相等则跳至S4;
f、S4状态重复S3当中的判断,相等则跳至S1,不相等则跳至S5;
g、S5状态将迭代读出的最新label值写入最初的地址当中,跳至S1;
以上流程过后,等价表完成更新,也即同一片连通域内的所有标号全部替换为了其根标记。
3)相邻行标记存储与比较模块
如图10展示了相邻行标记的存储、更新以及比较流程,其中每个阶段都以行为周期进行:
stage1:相邻行标记存储。在进行图像第N行数据标记时,将滑窗检测出第N-1、N行的标记lm以及ln进行存储,形成标记集合{LN-1}以及{LN}。
stage2:相邻行标记更新。根据更新过的等价表E1对{LN-1}以及{LN}进行更新得到{LN-1}'以及{LN}'。为了实现相邻行标记存储、更新的流水线处理结构,使用“乒乓操作”构建以行为处理周期的流水线架构,如图11所示:
flag=1:当前进行标记处理行的行计数为奇数,FIFO1以及FIFO2用于存储相邻行标记,FIFO3以及FIFO4进行相邻行标记的更新。
flag=0:当前进行标记处理行的行计数为偶数,FIFO3以及FIFO4用于存储相邻行标记,FIFO1以及FIFO2进行相邻行标记的更新。
stage3:相邻行标记比较。在获取到第N-1行以及第N行出现过的根标记后,需要通过标记对比确定有哪些根标记在第N-1行中出现,而未在第N行出现,最简单的方法便是如图11进行遍历匹配。但是遍历匹配存在计算时间不确定的问题,若相邻两行之间的标记较多,遍历匹配耗时超过1个行周期,那么将无法构成流水线处理,针对此问题,本文使用寄存器逻辑操作代替相邻行标记遍历匹配。
如图13所示,使用两个深度为图像列宽的寄存器label_1与label_2用来表示第N-1行与第N行出现过的标记,如第N-1行标记3出现,则label_1[3]=1,依次类推。然后判断寄存器label_1与label_2当中同一索引对应bit,如果为“10”,则表示第N-1行中此索引对应的标记可以进行输出,否则不输出,这样可以将相邻行标记匹配操作的时间限定为固定的1个行周期。
4)坐标记录与更新模块
为了计算各个区域的质心坐标与半径,需要在标记过程中对同一连通域坐标进行累加。如图14所示,构建与等价表结构相同的坐标表,同样使用BRAM进行实现:
针对坐标表的操作有记录、更新、复制以及输出,每种操作均需要一个RAM,因此此模块共需4个RAM,分别记为RAM1、RAM2、RAM3以及RAM4。坐标表的记录操作与等价表的记录方式相同,仅将保存的值由标记换为累加的坐标值。坐标表的复制、更新以及输出同样均以行为周期进行,并且具有先后关系,为了构建流水线结构,同样使用“乒乓操作”使RAM2、RAM3以及RAM4交替进行坐标表的复制、更新以及输出,具体操作与上述几个模块内部等价表操作类似,从相邻标记存储与比较模块获取可输出标记后,以此标记为地址读出RAM当中存储的坐标和,随后需要使用除法计算出质心坐标。为了构建流水线操作,使用ROM构建查找表进行除法计算,1个时钟周期即可完成质心坐标计算
通过本技术方案,基于二值图像中连通域的特点,以图像行为周期对等价表进行复制、更新等操作,形成了一种基于FPGA的连通域标记高效计算架构,分析图像中连通域的形状特点,结合连通域标记计算中等价表的更新操作,基于FPGA的器件架构,采取以图像行周期对等价表进行复制、更新的方法,设计出一种基于FPGA的连通域标记计算算法,相比于常见的计算架构可以将计算延时从1个帧周期降低为4个行周期,有效降低处理延时。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (10)
1.一种图像连通域标记硬件实现算法,其特征在于:连通域标记算法硬件实现架构采取基于像素的方式进行连通域标记,等价表结构使用一维数组,计算架构包括初标记与等价表存储模块、等价表复制与更新模块、坐标记录与更新模块、相邻行标记存储与比较模块,
1)初标记与等价表存储模块:a、使用滤波模板对输入的二值图像进行初标记滑窗处理,对每一个像素值为“1”的像素赋予标记值,并将检测到的等价标记存储在等价表当中;b、将灰度值为“1”的像素坐标进行输出;c、检测并输出滑窗过程中相邻两行出现的标记;
2)等价表复制与更新模块:以行为周期复制最新的等价表E1,并在图像的下一个行周期内进行E1的遍历更新;
3)相邻行标记存储与比较模块:a、将标记过程中出现过的相邻两行标记进行存储得到标记集合;b、获取更新后的E1对相邻行标记集合进行更新;c、通过比较更新后的标记集合,获取相邻两行中上一行的可输出区域的标记集合{LO};
4)坐标记录与更新模块:a、将标记过程中像素值为“1”的像素坐标进行存储;b、根据更新后的E1对坐标表进行更新;c、根据可输出标记{LO},取出对应连通域的坐标和以及像素数量,计算并输出连通域的质心坐标与半径。
2.根据权利要求1所述的一种图像连通域标记硬件实现算法,其特征在于:计算流程方式为:
1)第1个行周期:共需完成4个操作,第1个是进行第N-1行图像数据的标记,将等价信息实时记录到等价表当中;第2个是检测出第N-2行以及第N-1行出现过的标记{LN-2}以及{LN-1};第3个是在第N-1行标记的同时将等价表复制出一份记为E1;第4个是在第N-1行标记的同时将坐标表复制出一份记为C1;
2)第2个行周期:进行第N行数据标记,同时共需完成3个操作,第1个是对等价表E1进行遍历更新;第2个是借助更新过的E1,将存储的第N-2、N-1行标记集合{LN-2}以及{LN-1}进行更新得到{LN-2}'以及{LN-2}';第3个是借助更新过的E1,将坐标表C1进行更新得到C1';
3)第3个行周期:进行第N+1行数据标记,同时对标记集合{LN-2}'以及{LN-1}'进行标记比较,得到{LN-2}'中可输出的连通域标记集合{LO};
4)第4个行周期:进行第N+2行数据标记,同时计算并输出标记集合{LO}当中的连通域质心坐标与半径;
从上述操作可知,图像在进行第N+2行像素标记时,可以输出区域延伸停止于第N-2行的连通域,从连通域的延伸结束行算起,输出延时最多为4个行周期。
3.根据权利要求1或2所述的一种图像连通域标记硬件实现算法,其特征在于:初标记与等价表存储模块中像素标记以及等价表存储的流程为:
stage1:标记上下文建模,使用预设的窗口进行标记上下文建模;
stage2:逐像素标记,根据标记使用的预设窗口大小,采用对应数量个FIFO用于缓存行数据,使用对应数量个寄存器缓存滤波窗口中的数据;
stage3:等价关系上下文建模,为了简化等价关系判断,使用2×2窗口。
stage4.1:等价关系判断与存储,针对建模中需要进行标记的像素判断赋值的时钟周期,也即数据流流过stage 1的预设窗口后,再延迟预设窗口同列数量个时钟周期便可以直接流入stage3中示出的窗口进行滑窗,因此并不需要FIFO进行数据缓存,只需要4个寄存器组成滑窗窗口;在进行等价关系判断时,两两取出2×2窗口当中的数据,如果像素值相同都为1,但是标记值不同,说明存在具有等价关系的标记,将这一对标记写入等价表当中;
stage4.2:检测相邻两行出现的标记,同样使用stage3中示出的窗口进行滑窗,当检测到{a,b}={0,1}或者{d,e}={0,1}时,暂存b,e的标记值,直到标记值在同一行内的延伸消失,在判断相邻两行出现过的标记时,经分析发现并不需要存储所有两行当中出现过的标记:
第N-1行当中与第N行发生连通关系的标记如b不需要存储,这是因为标记b代表的区域仍在第N行延伸;第N行当中未与第N-1行发生连通关系的标记如c也不需存储,因为标记c为新建标记,在局部上不与第N-1行连通。因此,只需要存储第N-1行中未与第N行连通的标记如a,以及第N行当中与第N-1行连通的标记如d。通过此种标记存储方式可以减小后续相邻行标记比较的计算量。
4.根据权利要求1所述的一种图像连通域标记硬件实现算法,其特征在于:等价表复制与更新模块:
由于等价表复制与更新均以行为周期进行,为了构建等价表复制、更新操作的流水线处理结构,使用“乒乓操作”,利用两个RAM交替进行等价表的复制以及更新;
flag=1:当前标记处理行的行计数为奇数,RAM1用于存储复制的等价表数据,RAM2进行等价表更新;
flag=0:行计数为偶数,RAM1进行等价表更新,RAM2用于存储复制来的等价表数据;
以上述交替、无缝式切换的方式进行等价表复制与更新,实现等价表更新的流水线处理,模块处理的整体延时为1个行周期。
5.根据权利要求4所述的一种图像连通域标记硬件实现算法,其特征在于:等价表更新状态机的主要流程为:
a、状态机处于IDLE状态,检测到某行的行起始信号,跳转至S1状态;
b、S1状态首先判断当前的读地址与等价表的最大标号是否相等;
c、若相等说明等价表更新完成,跳至IDLE状态,若不相等,按照flag的值,从RAM1或者RAM2当中按地址递增的顺序依次读出存储在其中的标记值,随后跳至S2;
d、S2状态将读出的标记值label与地址值addr进行对比,若相等,则此标记为根标记,跳至S1,若不相等,跳至S3;
e、S3状态读出以label为地址的RAM内数据E(label),使addr=label,且label=E(label),再次判断label与地址值addr是否相等,若相等,则将当前label值写入最初的地址当中,随后跳至S1,不相等则跳至S4;
f、S4状态重复S3当中的判断,相等则跳至S1,不相等则跳至S5;
g、S5状态将迭代读出的最新label值写入最初的地址当中,跳至S1;
以上流程过后,等价表完成更新,也即同一片连通域内的所有标号全部替换为其根标记。
6.根据权利要求1所述的一种图像连通域标记硬件实现算法,其特征在于:相邻行标记存储与比较模块的存储、更新以及比较流程为:
stage1:相邻行标记存储,在进行图像第N行数据标记时,将滑窗检测出第N-1、N行的标记lm以及ln进行存储,形成标记集合{LN-1}以及{LN};
stage2:相邻行标记更新,根据更新过的等价表E1对{LN-1}以及{LN}进行更新得到{LN-1}'以及{LN}',为了实现相邻行标记存储、更新的流水线处理结构,使用“乒乓操作”构建以行为处理周期的流水线架构;
stage3:相邻行标记比较,在获取到第N-1行以及第N行出现过的根标记后,需要通过标记对比确定有哪些根标记在第N-1行中出现,而未在第N行出现,使用寄存器逻辑操作代替相邻行标记遍历匹配。
7.根据权利要求6所述的一种图像连通域标记硬件实现算法,其特征在于:在相邻行标记存储与比较模块的流程stage2中,实现相邻行标记存储、更新的流水线处理结构为:
flag=1:当前进行标记处理行的行计数为奇数,FIFO1以及FIFO2用于存储相邻行标记,FIFO3以及FIFO4进行相邻行标记的更新;
flag=0:当前进行标记处理行的行计数为偶数,FIFO3以及FIFO4用于存储相邻行标记,FIFO1以及FIFO2进行相邻行标记的更新。
8.根据权利要求6所述的一种图像连通域标记硬件实现算法,其特征在于:在相邻行标记存储与比较模块的流程stage3中寄存器逻辑操作为:使用两个深度为图像列宽的寄存器label_1与label_2用来表示第N-1行与第N行出现过的标记,如第N-1行标记3出现,则label_1[3]=1,依次类推;然后判断寄存器label_1与label_2当中同一索引对应bit,如果为“10”,则表示第N-1行中此索引对应的标记可以进行输出,否则不输出,这样可以将相邻行标记匹配操作的时间限定为固定的1个行周期。
9.根据权利要求1所述的一种图像连通域标记硬件实现算法,其特征在于:坐标记录与更新模块流程方式为构建与等价表结构相同的坐标表,针对坐标表的操作有记录、更新、复制以及输出,每种操作均需要一个RAM,因此此模块共需4个RAM,分别记为RAM1、RAM2、RAM3以及RAM4;
坐标表的记录操作与等价表的记录方式相同,仅将保存的值由标记换为累加的坐标值;
坐标表的复制、更新以及输出同样均以行为周期进行,并且具有先后关系,为了构建流水线结构,同样使用“乒乓操作”使RAM2、RAM3以及RAM4交替进行坐标表的复制、更新以及输出,具体操作与上述几个模块内部等价表操作类似,从相邻标记存储与比较模块获取可输出标记后,以此标记为地址读出RAM当中存储的坐标和,随后需要使用除法计算出质心坐标。
10.根据权利要求9所述的一种图像连通域标记硬件实现算法,其特征在于:为了构建流水线操作,使用ROM构建查找表进行除法计算,1个时钟周期即可完成质心坐标计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569412.8A CN116091297A (zh) | 2022-12-08 | 2022-12-08 | 一种图像连通域标记硬件实现算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569412.8A CN116091297A (zh) | 2022-12-08 | 2022-12-08 | 一种图像连通域标记硬件实现算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116091297A true CN116091297A (zh) | 2023-05-09 |
Family
ID=86200132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211569412.8A Pending CN116091297A (zh) | 2022-12-08 | 2022-12-08 | 一种图像连通域标记硬件实现算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116091297A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115880129A (zh) * | 2022-12-12 | 2023-03-31 | 华中光电技术研究所(中国船舶集团有限公司第七一七研究所) | 基于fpga的高帧率二值图像连通域自动标记方法及系统 |
-
2022
- 2022-12-08 CN CN202211569412.8A patent/CN116091297A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115880129A (zh) * | 2022-12-12 | 2023-03-31 | 华中光电技术研究所(中国船舶集团有限公司第七一七研究所) | 基于fpga的高帧率二值图像连通域自动标记方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Johnston et al. | FPGA implementation of a single pass connected components algorithm | |
CN107833238B (zh) | 最大连通域标记方法、目标跟踪方法、增强现实/虚拟现实装置 | |
CN109784372B (zh) | 一种基于卷积神经网络的目标分类方法 | |
CN104751484B (zh) | 一种运动目标检测方法及实现运动目标检测方法的检测系统 | |
CN109740563B (zh) | 一种面向视频监控的运动目标检测方法 | |
CN116091297A (zh) | 一种图像连通域标记硬件实现算法 | |
CN111223083A (zh) | 表面划痕检测神经网络的构建方法、系统、装置及介质 | |
CN107705270A (zh) | 中值滤波的处理方法和装置、电子设备、计算机存储介质 | |
CN114581646A (zh) | 文本识别方法、装置、电子设备及存储介质 | |
JP4527674B2 (ja) | 動き検出処理装置および方法 | |
WO2006072108A1 (en) | Efficient z testing | |
CN108876701B (zh) | 一种基于游程的单次扫描连通域标记方法及其硬件结构 | |
US20200019803A1 (en) | Method and apparatus for determining summation of pixel characteristics for rectangular region of digital image avoiding non-aligned loads using multiple copies of input data | |
CN114998158B (zh) | 一种图像处理方法、终端设备及存储介质 | |
JP2006303581A (ja) | 雑音除去装置および雑音除去装置用プログラム | |
CN110569684B (zh) | 一种小容量缓存的图像二值化方法 | |
CN109087314B (zh) | 基于fpga的线阵图像连通域面积快速标记统计方法 | |
CN110264488B (zh) | 一种二值图像边缘提取装置 | |
CN111339863B (zh) | 一种基于物体导向外部记忆模块的视频物体检测模型 | |
CN109074654A (zh) | 连通域检测方法、电路、设备、计算机可读存储介质 | |
JP2006201914A (ja) | 画像フィルタ装置、方法およびコンピュータプログラム | |
JP5300666B2 (ja) | ラベリング処理方法、並びにそのシステム、装置及びプログラム | |
Al Najjar et al. | A compact single-pass architecture for hysteresis thresholding and component labeling | |
WO2006077504A2 (en) | An algorithm for growing 4-connected cores in image segmentation | |
CN112184565B (zh) | 一种多窗口串行的图像锐化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |