CN108876701B - 一种基于游程的单次扫描连通域标记方法及其硬件结构 - Google Patents
一种基于游程的单次扫描连通域标记方法及其硬件结构 Download PDFInfo
- Publication number
- CN108876701B CN108876701B CN201810641505.4A CN201810641505A CN108876701B CN 108876701 B CN108876701 B CN 108876701B CN 201810641505 A CN201810641505 A CN 201810641505A CN 108876701 B CN108876701 B CN 108876701B
- Authority
- CN
- China
- Prior art keywords
- run
- lab
- ram
- connected domain
- equivalent
- 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.)
- Active
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
Abstract
本发明涉及一种基于游程的单次扫描通域标记方法及其硬件结构,①对输入二值图像的相邻两行同时扫描,同时记录两行之间的等价游程;②扫描完成后更新等价游程表;③检测已结束连通域,并将已结束连通域的游程写入外部存储器;④若当前行为最后一行,则将该行及游程缓存器中所有游程均写入外存储器,否则,重复执行所有步骤。
Description
技术领域
本发明属于嵌入式图像处理专用硬件加速器领域,主要涉及基于游程的单次扫描二值图像连通域标记算法及硬件实现结构。本发明能够减少片上存储资源的需求,并且实时处理较高分辨率的二值图像,适合应用于嵌入式图像处理系统。
背景技术
连通域标记主要针对二值图像进行,二值图像的像素值仅由“0”和“1”两个值,“1”代表前景像素,“0”代表背景像素。在二值图像当中,由前景像素组成的图像子集S,若其中任何两个像素点P和R,均存在从P到R的一条通路,那么就称P和R在S中连通,图像子集S成为一个连通域。根据实现连通域标记所基于的平台不同,可分为软件连通域标记和硬件连通域标记,软件标记算法主要基于CPU等通用计算平台实现,硬件连通域标记采用硬件描述语言建模并基于FPGA平台或者以ASIC的形式实现。
软件连通域标记算法根据对图像的扫描次数可以分为两次扫描、单次扫描和多次扫描三大类:①经典的两次扫描算法由Rosenfeld于1966年提出(Sequential Operationsin Digital Picture Processing),图像第一遍扫描时对前景像素预标记同时记录等价的标记对,扫描完成后,合并等价标记,第二遍图像扫描时,根据等价标记对确定前景像素的最终标记值。2008年,He提出了一种基于游程的两次扫描连通域标记算法(ARun-BasedTwo-Scan Labeling Algorithm),该算法将图像当中每个游程作为整体进行标记和等价标记合并,同时采用三个一维数组实现新生成标记值的记录以及等价标记值链表的合并。BBDT由Grana在2010年提出(Optimized block-based connected components labelingwith decision trees),是目前能够取得最好性能的软件连通域标记算法。BBDT算法采用模板对像素进行逐行扫描,在对目标像素进行标记时,基于决策表进行相应的操作;②单次扫描连通域标记算法主要指基于轮廓跟踪的方法,其主要思想是通过寻找连通区域的外部轮廓和内部轮廓,将不同的连通区域区分开来,连通区域边界以及内部的像素被赋予同一个特定的标记值,相关算法例如“A component-labeling algorithm using contourtracing technique”;③多次扫描算法最初由Haralick在1981年提出(Some neighborhoodoperations),这种算法并不使用等价标记表,而是通过局部的邻域信息来处理等价标记对,扫描次数与图像矩阵的大小和几何复杂程度相关,后续基于Haralick算法又有了一系列改进工作,例如“Optimizing connected component labeling algorithms”等。
硬件连通域标记根据对输入二值图像不同的扫描次数,也可以分为单次扫描、两次扫描和多次扫描三大类:①单次扫描的硬件连通域标记主要基于边界追踪算法实现,例如Hedberg设计了连通域标记硬件电路用于特征提取(Implementation of a LabelingAlgorithm based on Contour Tracing with Feature Extraction),虽然该硬件架构能够达到25帧/秒的处理速度,但是输入图像的分辨率只有320×240,并且对片上存储资源的需求大于1M bits。②两次扫描实现连通域标记功能的硬件结构一般第一遍扫描赋予每个前景像素预标记值,第二遍扫描根据标记值的等价关系确定前景像素的最终标记值,例如Yang基于寄存器阵列实现了一种用于连通域标记的VLSI架构(VLSI architecture designfor a fast parallel label assignment in binary image),当输入高分辨率图像并且包含许多连通区域时,该架构需要消耗极大的硬件资源,同时电路的处理速度会受到制约。另外Lin提出了一种可扩展的双路并行架构用于连通域标记(A scalable parallelhardware architecture for connected component labeling),该结构片上存储资源需求仍然较大。Appiah在FPGA平台上基于游程编码实现了连通域标记功能(A run-lengthbased connected component algorithm for FPGA implementation),当输入图像包含较多连通区域时,该方法同样需要较多的片上存储资源。Flatt针对连通域标记提出了一种并行架构(A parallel hardware architecture for connected component labelingbased on fast label merging),该架构将第一次扫描完成后生成的带有临时标记值的图像存入片外主存储器,这种方法有效减小了片上存储资源的需求,但是进行第二次扫描时需要将已经存入主存的临时图像重新读入,总线及主存储器带宽容易成为系统性能的瓶颈;③多次扫描标记算法由于要多次访问片外存储器,基于此类算法实现的硬件连通域标记架构较少。
连通域标记在嵌入式视觉系统当用的应用广泛,由于该算法的复杂性,基于嵌入式微处理器实现标记功能往往不能达到预期的性能指标,采用专用硬件电路实现连通域标记成为可行的技术方案。设计硬件电路结构实现标记算法时,需要着重考虑以下几点:
1)从外存储器读入图像数据时涉及到访存的问题,规则的连续地址访存有利于提高存储系统的效率,如果标记算法读入图像时访存地址不规则非连续,将会导致存储系统低效率,进而影响系统整体性能。
2)尽量减少图像扫描的次数,扫描次数越多,耗时越多,并且图像一般存储于外存储器,多次扫描意味着多次访存,对带宽需求较高。
3)尽量减少对片上存储资源的需求,连通标记一般需要将大量中间结果暂存于片上存储模块,以避免再次使用时频繁访问外存储器导致性能低下,但是过多的片上存储资源需求将会造成硬件资源开销以及功耗超过设计阈值。
目前连通域标记方法及其硬件实现,主要涉及单次扫描和两次扫描两种:单次扫描基于轮廓追踪的方法,对外存的访问不规整,且片上存储资源需求大;两次扫描连通域标记硬件结构主要问题是对于较高分辨率的图像,片上存储资源需求较大,且由于需要两次扫描图像,性能受系统带宽影响较大。本发明的目的是提出一种基于游程的单次扫描连通域标记方法及其VLSI结构,对于较高分辨率的图像,仍能满足实时处理(≥25帧/秒)的要求,同时所需片上存储资源较少。
发明内容
要解决的技术问题
为了避免现有技术的不足之处,本发明提出一种基于游程的单次扫描通域标记方法及其硬件结构。
技术方案
一种连通域标记硬件加速模块结构,其特征在于包括行扫描模块、等价游程更新模块、连通域结束检测模块、游程缓冲区控制模块以及片上存储器,所述的片上存储器包括RAM_BUFFER、RAM_OD、RAM_EV、RAM_NEXT、RAM_TAIL、RAM_RTAB、RAM_EQU、RAM_OVER、RAM_INFO:其中行扫描模块对相邻两行同时扫描,并将游程及游程等价信息分别存入RAM_OD/RAM_EV和RAM_EQU;等价游程更新模块根据RAM_EQU内存储的游程等价信息更行等价游程表,等价游程表由RAM_RTAB、RAM_TAIL和RAM_NEXT三个片上存储器构成;连通域结束检测模块检测已经结束的连通域,相关信息存入RAM_OVER,并将上一行中结束区域的游程信息从RAM_EV/RAM_OD取出,写入外存储器;游程缓冲区控制模块在连通域结束检测模块操作完成后,将上一行中剩余游程写入RAM_INFO,同时根据RAM_OVER记录信息,将已经结束连通域包含的所有游程从RAM_INFO取出,然后写入外存储器;此外,若当前行为最后一行,该模块将当前行游程及其RAM_INFO中剩余游程全部写入外存储器;
所述的各个片上存储器的规格:
其中,M×N为二值图像的分辨率。
一种基于游程的单次扫描连通域标记方法,步骤如下:
步骤1:行扫描:
行扫描模块从外存中读取当前行像素数据,从RAM_BUFFER中读取上一行像素数据,两行同时扫描,并将当前行像素数据存入RAM_BUFFER;当前行为奇数行,游程信息存入RAM_EV,反之,则存入RAM_OD;所述的游程信息包括临时标记值lab_tem、行坐标最小值X_min、行坐标最大值X_max三项;扫描过程中检测到上一行与当前行游程等价时:若当前行游程临时标记lab_tem_c为0,即未赋予该游程临时标记值,则lab_tem_c=lab_tem_l,lab_tem_l为等价的上一行游程lab_temp值;若当前行游程lab_tem_c不为0,则(lab_tem_l,lab_tem_c)存入RAM_EQU;扫描过程中检测到当前行游程结束时:若该游程lab_tem为0,即未赋予临时标记值,则lab_ct=lab_ct+1,lab_tem=lab_ct,lab_ct当新产生一个未赋临时标记值的游程时加1;
步骤2:更新等价游程表:
等价游程表由rtable、tail、next三个数据阵列组成,分别存储于片上存储器RAM_RTAB、RAM_TAIL和RAM_NEXT中;若干个同属于一个连通域的等价游程,其临时标记信息构成链表集合S,该连通域对应唯一一个代表标记值lab_rep;RAM_RTAB位宽为RAM_TAIL和RAM_NEXT的2倍,RAM_RTAB[:,1]存储游程代表标记lab_rep和临时标记lab_tem之间的关系,即RAM_RTAB[lab_tem]=lab_rep;RAM_TAIL存储S中最后一个游程临时标记值,RAM_TAIL[lab_rep]=lab_final;RAM_NEXT存储S中临时标记的顺序,RAM_NEXT[lab_i]=RAM_NEXT[lab_j]表示S中临时标记lab_i下一个等价的临时标记为lab_j,若RAM_NEXT[lab_n]=-1,表示S最后一个临时标记值为lab_n;RAM_RTAB[lab_rep,2]存储代表标记为lab_rep的S中包含多少个游程;当建立一个新的临时标记lab_tem时,如果代表标记和临时标记相同,即RAM_RTAB[lab_tem]=lab_tem,同时,连通域包含的游程个数设置为1,下一个等价的游程临时标记设置为-1,最后一个游程的临时标记值设为lab_tem;
等价游程更新子模块根据存储在RAM_EQU中的等价游程信息更新等价游程表,假设RAM_EQU存储了N对等价游程信息,等价游程表更新如下:相邻两行等价游程的临时标记分别为lab_tem_l和lab_tem_c,从RAM_RTAB读出其代表标记lab_rl和lab_rc,两者的较大值为lab_max,较小值为lab_min;迭代更新lab_max开始的等价游程链表,将其代表标记均赋值为lab_min;lab_min开始的等价游程链表,其原尾部指向lab_max,新尾部指向lab_max开始的等价游程链表尾部,同时,更新lab_min对应的连通域所含游程个数,即原有游程个数与lab_max对应的连通域所含游程个数之和,然后lab_max对应的连通域所含游程个数清零;
步骤3:检测结束连通域:
连通域标记硬件加速模块中的连通域结束检测子模块检测上一行已结束连通域,将上一行中结束连通域的游程写入外存储器,并将结束连通域的代表标记值写入RAM_OVER,然后将上一行剩余的游程写入游程缓冲区存储器RAM_INFO,清空存储上一行游程信息的存储器,当前行为奇数行,存储上一行游程信息的存储器为RAM_EV,否则为RAM_OD;检测上一行游程是否结束的方法为:对于上一行的每个游程,检测其代表标记值是否与当前行中的某个游程代表标记值相同,如果相同,则说明该游程在当前行有等价游程,连通域未结束,否则,该游程所属连通域结束;
步骤4:将已结束连通域游程信息写入外存储器:
连通标记硬件加速模块中的游程缓冲区控制子模块根据RAM_OVER中存储的结束连通域代表标记值信息,遍历RAM_INFO,将以结束连通域的游程信息写入外存储器;
步骤5:最后一行及缓冲区内所有游程写入外存储器:
当前行为最后一行时,游程缓冲区控制子模块首先将当前行游程信息从片上存储器中取出写入外存储器,其中当前行为奇数行时片上存储器为RAM_OD,为偶数行时片上存储器为RAM_EV,然后将RAM_INFO中的游程信息依次写入外存储器。
步骤4中采用优化机制减少遍历RAM_INFO所需的时间,优化机制包括两个方面:①RAM_RTAB中记录连通域包含的游程个数,已结束连通域的游程向外存储器写一个,该区域对应的游程个数减1,游程个数变为0时,即表示已结束连通域的游程信息全部写入外存储器,停止遍历RAM_INFO;②遍历RAM_INFO过程中,如果位置X处游程被选中写入外存储器,则将RAM_INFO中最后位置处的游程信息读出写入X位置,然后从X位置重新开始遍历,同时有效游程信息深度X_depth减1。
有益效果
对本发明所设计的连通域标记方法采用硬件描述语言Verilog进行建模,基于Modelsim仿真,运行频率设定为300MHz,将图7中测试用灰度图首先转化为二值图,各组仿真性能结果如表2所示,可见,本发明设计的连通域标记硬件加速模块完全可以满足图像实时处理的需求。
表1连通域硬件加速模块性能仿真结果
此外,本方法相对于已有方法所需片上存储资源较少,例如Lin方法(A scalableparallel hardware architecture for connected component labeling),对于分辨率为2048×1536的二值图像,假设标记值最大为4096,Lin结构需要约36.05Mb的片上缓存资源,远大于本方法所需的片上存储资源。
附图说明
图1本发明提出的连通域标记方法流程图
图2本发明设计的连通域标记硬件加速模块结构
图3本发明提出的连通域标记方法输出游程信息
图4相邻两行等价游程判定
图5行扫描过程中等价游程表更新
图6基于相邻两行等价游程关系的等价游程表更新
图7测试图集
具体实施方式
现结合实施例、附图对本发明作进一步描述:
本发明的目的是提供一种硬件资源消耗较少的二值图像连通域标记方法及硬件结构,通过以下方案实现:
1.一种新型的连通域标记方法,流程如图1所示,分为以下几个步骤:①对输入二值图像的相邻两行同时扫描,同时记录两行之间的等价游程;②扫描完成后更新等价游程表;③检测已结束连通域,并将已结束连通域的游程写入外部存储器;④若当前行为最后一行,则将该行及游程缓存器中所有游程均写入外存储器,否则,重复执行所有步骤。
2.连通域标记硬件加速模块结构如图2所示,主要包括行扫描、等价游程更新、连通域结束检测、游程缓冲区控制、以及片上存储器(包括RAM_BUFFER、RAM_OD、RAM_EV、RAM_NEXT、RAM_TAIL、RAM_RTAB、RAM_EQU、RAM_OVER、RAM_INFO)等子模块组成:①行扫描模块对相邻两行同时扫描,并将游程及游程等价信息分别存入RAM_OD/RAM_EV和RAM_EQU;②等价游程更新模块根据RAM_EQU内存储的游程等价信息更行等价游程表,等价游程表由RAM_RTAB、RAM_TAIL和RAM_NEXT三个片上存储器构成;③连通域结束检测模块检测已经结束的连通域,相关信息存入RAM_OVER,并将上一行中结束区域的游程信息从RAM_EV/RAM_OD取出(当前行为奇数行为RAM_EV,相反则为RAM_OD)写入外存储器;④游程缓冲区控制模块在连通域结束检测模块操作完成后,将上一行中剩余游程写入RAM_INFO,同时根据RAM_OVER记录信息,将已经结束连通域包含的所有游程从RAM_INFO取出,然后写入外存储器。此外,若当前行为最后一行,该模块将当前行游程及其RAM_INFO中剩余游程全部写入外存储器。
3.连通域标记硬件加速模块输出结果为二值图像中各个游程信息,单个游程信息包括所属连通域的标记值、行坐标最小值、行坐标最大值、列坐标一共四项,如图3所示。
4.连通域硬件加速模块中的游程缓冲区控制子模块向外存储器写入已结束连通域游程信息时,本发明采用优化机制减少遍历RAM_INFO所需的时间。优化机制主要包括两个方面:①RAM_RTAB中记录连通域包含的游程个数,已结束连通域的游程向外存储器写一个,该区域对应的游程个数减1,游程个数变为0时,即表示已结束连通域的游程信息全部写入外存储器,停止遍历RAM_INFO;②遍历RAM_INFO过程中,如果位置X处游程被选中写入外存储器,则将RAM_INFO中最后位置处(即有效游程信息深度X_depth)的游程信息读出写入X位置,然后从X位置重新开始遍历,同时X_depth减1。
在详细介绍本发明提出的单次扫描连通域标记方法之前,首先介绍本发明所采用的等价游程表:等价游程表由rtable、tail、next三个数据阵列组成,分别存储于片上存储器RAM_RTAB、RAM_TAIL和RAM_NEXT中;若干个同属于一个连通域的等价游程,其临时标记信息构成链表集合S,该连通域对应唯一一个代表标记值lab_rep;RAM_RTAB位宽为RAM_TAIL和RAM_NEXT的2倍,RAM_RTAB[:,1]存储游程代表标记lab_rep和临时标记lab_tem之间的关系,即RAM_RTAB[lab_tem]=lab_rep;RAM_TAIL存储S中最后一个游程临时标记值,RAM_TAIL[lab_rep]=lab_final;RAM_NEXT存储S中临时标记的顺序,RAM_NEXT[lab_i]=RAM_NEXT[lab_j]表示S中临时标记lab_i下一个等价的临时标记为lab_j,若RAM_NEXT[lab_n]=-1,表示S最后一个临时标记值为lab_n;RAM_RTAB[lab_rep,2]存储代表标记为lab_rep的S中包含多少个游程;当建立一个新的临时标记lab_tem时,如图5(a)部分所示,代表标记和临时标记相同,即RAM_RTAB[lab_tem]=lab_tem,同时,连通域包含的游程个数设置为1,下一个等价的游程临时标记设置为-1,最后一个游程的临时标记值设为lab_tem。
以下将结合图1详细介绍本发明提出的基于游程的单次扫描连通域标记方法:
(1)步骤1:行扫描
图2中的行扫描模块从外存中读取当前行像素数据,从RAM_BUFFER中读取上一行像素数据,两行同时扫描,并将当前行数据存入RAM_BUFFER。当前行为奇数行,游程信息存入RAM_EV,反之,则存入RAM_OD,游程信息包括临时标记值lab_tem、行坐标最小值X_min、行坐标最大值X_max三项。扫描过程中检测到上一行与当前行游程等价时(判定依据如图4所示,当标记规则为4连通时,出现(a)中所示的4种情况之一即判定相邻两行游程等价,当标记规则为8连通时,出现(b)中所示的6种情况之一即判定相邻两行游程等价):若当前行游程临时标记lab_tem_c为0,即未赋予该游程临时标记值,则lab_tem_c=lab_tem_l,lab_tem_l为等价的上一行游程lab_temp值;若当前行游程lab_tem_c不为0,则(lab_tem_l,lab_tem_c)存入RAM_EQU。扫描过程中检测到当前行游程结束时:若该游程lab_tem为0,即未赋予临时标记值,此时产生一个未赋临时标记值的游程,则临时标记计数器lab_ct=lab_ct+1,lab_tem=lab_ct,此外,更新等价游程表存储器如图5(a)所示;若该游程lab_tem不为0,则如图5(b)所示更新等价游程表存储器,首先读取存储器获得lab_tem对应的代表标记值lab_rep,然后该代表标记值lab_rep对应的连通域所含游程个数加1。
(2)步骤2:更新等价游程表
图2中等价游程更新子模块根据存储在RAM_EQU中的等价游程信息更新等价游程表,假设RAM_EQU存储了N对等价游程信息,等价游程表更新代码如图6所示:相邻两行等价游程的临时标记分别为lab_tem_l和lab_tem_c,从RAM_RTAB读出其代表标记lab_rl和lab_rc,两者的较大值为lab_max,较小值为lab_min;迭代更新lab_max开始的等价游程链表,将其代表标记均赋值为lab_min;lab_min开始的等价游程链表,其原尾部指向lab_max,新尾部指向lab_max开始的等价游程链表尾部,同时,更新lab_min对应的连通域所含游程个数,即原有游程个数与lab_max对应的连通域所含游程个数之和,然后lab_max对应的连通域所含游程个数清零。
(3)步骤3:检测结束连通域
连通域标记硬件加速模块中的连通域结束检测子模块检测上一行已结束连通域,将上一行中结束连通域的游程写入外存储器,并将结束连通域的代表标记值写入RAM_OVER,然后将上一行剩余的游程写入游程缓冲区存储器RAM_INFO,清空存储上一行游程信息的存储器(当前行为奇数行,存储上一行游程信息的存储器为RAM_EV,否则为RAM_OD)。检测上一行游程是否结束的方法为:对于上一行的每个游程,检测其代表标记值是否与当前行中的某个游程代表标记值相同,如果相同,则说明该游程在当前行有等价游程,连通域未结束,否则,该游程所属连通域结束。
(4)步骤4:将已结束连通域游程信息写入外存储器
连通标记硬件加速模块中的游程缓冲区控制子模块根据RAM_OVER中存储的结束连通域代表标记值信息,遍历RAM_INFO,将以结束连通域的游程信息写入外存储器。
(5)步骤5:最后一行及缓冲区内所有游程写入外存储器
当前行为最后一行时,游程缓冲区控制子模块首先将当前行游程信息从片上存储器(当前行为奇数行时为RAM_OD,偶数行时为RAM_EV)中取出写入外存储器,然后将RAM_INFO中的游程信息依次写入外存储器。
连通域标记硬件加速模块需要多块片上存储器,以分辨率为M×N的二值图像为例(M为列数,即使每行多少个像素,N为行数),其所需大小分析如下:
(1)RAM_BUFFER
RAM_BUFFER存储一行像素,宽度为1,深度为M。
(2)RAM_EV/RAM_OD
RAM_EV/RAM_OD规格相同,用于扫描过程中记录一行当中的游程信息,一行最多有M/2个游程,因此其深度为M/2。RAM_EV/RAM_OD每个存储位置记录一个游程信息,包括:①临时标记值,最大为N×M/2,考虑到实际二值图像当中游程标记值远小于此,经大量仿真验证设定其最大值为即可满足需求,对应位宽为②水平最大/最小坐标值,对应位宽为2log2M。另外需要1bit标识该位置游程信息是否有效,因此RAM_EV/RAM_OD的宽度为
(3)RAM_RTAB/RAM_NEXT/RAM_TAIL
(4)RAM_EQU
(5)RAM_OVER
(6)RAM_INFO
上述片上存储器规格如表1所示,对于分辨率为2048×1536的二值图像,所需片上存储资源一共为2540800bit,约为2.5M bits。
表1片上存储器规格
Claims (2)
1.一种基于游程的单次扫描连通域标记方法,其特征在于步骤如下:
步骤1:行扫描:
行扫描模块从外存中读取当前行像素数据,从RAM_BUFFER中读取上一行像素数据,两行同时扫描,并将当前行像素数据存入RAM_BUFFER;当前行为奇数行,游程信息存入RAM_EV,反之,则存入RAM_OD;所述的游程信息包括临时标记值lab_tem、行坐标最小值X_min、行坐标最大值X_max三项;扫描过程中检测到上一行与当前行游程等价时:若当前行游程临时标记lab_tem_c为0,即未赋予该游程临时标记值,则lab_tem_c=lab_tem_l,lab_tem_l为等价的上一行游程lab_temp值;若当前行游程lab_tem_c不为0,则(lab_tem_l,lab_tem_c)存入RAM_EQU;扫描过程中检测到当前行游程结束时:若该游程lab_tem为0,即未赋予临时标记值,则lab_ct=lab_ct+1,lab_tem=lab_ct,lab_ct当新产生一个未赋临时标记值的游程时加1;
步骤2:更新等价游程表:
等价游程表由rtable、tail、next三个数据阵列组成,分别存储于片上存储器RAM_RTAB、RAM_TAIL和RAM_NEXT中;若干个同属于一个连通域的等价游程,其临时标记信息构成链表集合S,该连通域对应唯一一个代表标记值lab_rep;RAM_RTAB位宽为RAM_TAIL和RAM_NEXT的2倍,RAM_RTAB[:,1]存储游程代表标记lab_rep和临时标记lab_tem之间的关系,即RAM_RTAB[lab_tem]=lab_rep;RAM_TAIL存储S中最后一个游程临时标记值,RAM_TAIL[lab_rep]=lab_final;RAM_NEXT存储S中临时标记的顺序,RAM_NEXT[lab_i]=RAM_NEXT[lab_j]表示S中临时标记lab_i下一个等价的临时标记为lab_j,若RAM_NEXT[lab_n]=-1,表示S最后一个临时标记值为lab_n;RAM_RTAB[lab_rep,2]存储代表标记为lab_rep的S中包含多少个游程;当建立一个新的临时标记lab_tem时,如果代表标记和临时标记相同,即RAM_RTAB[lab_tem]=lab_tem,同时,连通域包含的游程个数设置为1,下一个等价的游程临时标记设置为-1,最后一个游程的临时标记值设为lab_tem;
等价游程更新子模块根据存储在RAM_EQU中的等价游程信息更新等价游程表,假设RAM_EQU存储了N对等价游程信息,等价游程表更新如下:相邻两行等价游程的临时标记分别为lab_tem_l和lab_tem_c,从RAM_RTAB读出其代表标记lab_rl和lab_rc,两者的较大值为lab_max,较小值为lab_min;迭代更新lab_max开始的等价游程链表,将其代表标记均赋值为lab_min;lab_min开始的等价游程链表,其原尾部指向lab_max,新尾部指向lab_max开始的等价游程链表尾部,同时,更新lab_min对应的连通域所含游程个数,即原有游程个数与lab_max对应的连通域所含游程个数之和,然后lab_max对应的连通域所含游程个数清零;
步骤3:检测结束连通域:
连通域标记硬件加速模块中的连通域结束检测子模块检测上一行已结束连通域,将上一行中结束连通域的游程写入外存储器,并将结束连通域的代表标记值写入RAM_OVER,然后将上一行剩余的游程写入游程缓冲区存储器RAM_INFO,清空存储上一行游程信息的存储器,当前行为奇数行,存储上一行游程信息的存储器为RAM_EV,否则为RAM_OD;检测上一行游程是否结束的方法为:对于上一行的每个游程,检测其代表标记值是否与当前行中的某个游程代表标记值相同,如果相同,则说明该游程在当前行有等价游程,连通域未结束,否则,该游程所属连通域结束;
步骤4:将已结束连通域游程信息写入外存储器:
连通标记硬件加速模块中的游程缓冲区控制子模块根据RAM_OVER中存储的结束连通域代表标记值信息,遍历RAM_INFO,将以结束连通域的游程信息写入外存储器;
步骤5:最后一行及缓冲区内所有游程写入外存储器:
当前行为最后一行时,游程缓冲区控制子模块首先将当前行游程信息从片上存储器中取出写入外存储器,其中当前行为奇数行时片上存储器为RAM_OD,为偶数行时片上存储器为RAM_EV,然后将RAM_INFO中的游程信息依次写入外存储器。
2.根据权利要求1所述的连通域标记方法,其特征在于步骤4中采用优化机制减少遍历RAM_INFO所需的时间,优化机制包括两个方面:①RAM_RTAB中记录连通域包含的游程个数,已结束连通域的游程向外存储器写一个,该区域对应的游程个数减1,游程个数变为0时,即表示已结束连通域的游程信息全部写入外存储器,停止遍历RAM_INFO;②遍历RAM_INFO过程中,如果位置X处游程被选中写入外存储器,则将RAM_INFO中最后位置处的游程信息读出写入X位置,然后从X位置重新开始遍历,同时有效游程信息深度X_depth减1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810641505.4A CN108876701B (zh) | 2018-06-21 | 2018-06-21 | 一种基于游程的单次扫描连通域标记方法及其硬件结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810641505.4A CN108876701B (zh) | 2018-06-21 | 2018-06-21 | 一种基于游程的单次扫描连通域标记方法及其硬件结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108876701A CN108876701A (zh) | 2018-11-23 |
CN108876701B true CN108876701B (zh) | 2022-08-02 |
Family
ID=64340301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810641505.4A Active CN108876701B (zh) | 2018-06-21 | 2018-06-21 | 一种基于游程的单次扫描连通域标记方法及其硬件结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108876701B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110738106A (zh) * | 2019-09-05 | 2020-01-31 | 天津大学 | 一种基于fpga的光学遥感图像船舶检测方法 |
CN117152458B (zh) * | 2023-11-01 | 2024-01-30 | 南京盛视工业技术有限公司 | 一种基于行程编码的连通域快速提取方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0269878A (ja) * | 1988-09-06 | 1990-03-08 | Sharp Corp | 画像データのラベル付け方式 |
CN1874517A (zh) * | 2006-06-19 | 2006-12-06 | 西安交通大学 | 基于多流水控制与缓存优化的mpeg-2视频解码控制方法 |
CN101042734A (zh) * | 2007-04-17 | 2007-09-26 | 华东师范大学 | 图像连通元快速标记的方法 |
CN101930544A (zh) * | 2010-09-07 | 2010-12-29 | 东南大学 | 基于行游程邻接表的乐谱快速连通域分析方法 |
CN104680531A (zh) * | 2015-02-28 | 2015-06-03 | 西安交通大学 | 一种连通量统计信息提取方法及vlsi结构 |
CN105068882A (zh) * | 2015-07-09 | 2015-11-18 | 西北工业大学 | 基于二维检错纠错编码的sram抗辐射加固方法 |
CN105678682A (zh) * | 2016-01-08 | 2016-06-15 | 西安交通大学 | 一种基于fpga的二值图像连通区域信息快速获取系统及方法 |
-
2018
- 2018-06-21 CN CN201810641505.4A patent/CN108876701B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0269878A (ja) * | 1988-09-06 | 1990-03-08 | Sharp Corp | 画像データのラベル付け方式 |
CN1874517A (zh) * | 2006-06-19 | 2006-12-06 | 西安交通大学 | 基于多流水控制与缓存优化的mpeg-2视频解码控制方法 |
CN101042734A (zh) * | 2007-04-17 | 2007-09-26 | 华东师范大学 | 图像连通元快速标记的方法 |
CN101930544A (zh) * | 2010-09-07 | 2010-12-29 | 东南大学 | 基于行游程邻接表的乐谱快速连通域分析方法 |
CN104680531A (zh) * | 2015-02-28 | 2015-06-03 | 西安交通大学 | 一种连通量统计信息提取方法及vlsi结构 |
CN105068882A (zh) * | 2015-07-09 | 2015-11-18 | 西北工业大学 | 基于二维检错纠错编码的sram抗辐射加固方法 |
CN105678682A (zh) * | 2016-01-08 | 2016-06-15 | 西安交通大学 | 一种基于fpga的二值图像连通区域信息快速获取系统及方法 |
Non-Patent Citations (2)
Title |
---|
Ayman AbuBaker等.One Scan Connected Component Labeling Technique.《IEEE Xplore》.2008,全文. * |
沈乔楠等.基于游程递归的连通区域标记算法.《计算机应用》.2010,(第06期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN108876701A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110738207B (zh) | 一种融合文字图像中文字区域边缘信息的文字检测方法 | |
JP5854802B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
US5048096A (en) | Bi-tonal image non-text matter removal with run length and connected component analysis | |
JP2008524728A (ja) | デジタル画像をセグメント化する方法及びコンパクトな表現の生成方法 | |
CN108876701B (zh) | 一种基于游程的单次扫描连通域标记方法及其硬件结构 | |
CN111626145B (zh) | 一种简捷有效的残缺表格识别及跨页拼接方法 | |
US11354461B2 (en) | Method and device for simulating a distribution of obstacles | |
US20230169784A1 (en) | Text processing method and apparatus, and electronic device and storage medium | |
CN116403200A (zh) | 基于硬件加速的车牌实时识别系统 | |
CN110322389B (zh) | 池化方法、装置及系统、计算机可读存储介质 | |
CN116091297A (zh) | 一种图像连通域标记硬件实现算法 | |
JPH0130180B2 (zh) | ||
Miyatake et al. | Contour representation of binary images using run-type direction codes | |
CN112330611A (zh) | 一种面向fpga的高并行性光斑分割方法 | |
Cao et al. | A Fast Thinning Algorithm of Square Hmong Character Handwriting Using Template Matching Mechanism | |
Pavlidis et al. | Advanced Segmentation Techniques | |
JP4720805B2 (ja) | 画像処理装置及びプログラム | |
KR100295245B1 (ko) | 가중치를 이용한 병렬 세선화 방법 | |
JPH07113971B2 (ja) | 画像処理のラベル付回路 | |
JP5300666B2 (ja) | ラベリング処理方法、並びにそのシステム、装置及びプログラム | |
CN109472777B (zh) | 一种基于fpga异构计算的桥梁检测方法 | |
JPH05189563A (ja) | 画像処理装置 | |
US10043081B2 (en) | Image processing device and image processing program | |
Lianqiang et al. | Connected components labeling based on union-find operations applied to connected branches | |
CN115908473A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |