本发明涉及一种图像连通域提取方法,特别是一种基于FPGA的弹上图像连通域提取方法。
背景技术:
弹上图像连通域提取方法通常采用跑长码算法实现,由于图像敏感器件不断升级换代,图像分辨率越来越高、帧频越来越快,且导弹对图像信息的依赖程度越来越高,现有的使用DSP作为核心处理器的基于跑长码算法的弹上图像连通域提取方法属于串行计算,其数据吞吐量和处理实时性较差,已很难满足高新型号的需求。
技术实现要素:
本发明的目的在于提供一种基于FPGA的弹上图像连通域提取方法,解决现有DSP作为核心处理器的弹上图像连通域提取方法的数据吞吐量和处理实时性较差的问题。
一种基于FPGA的弹上图像连通域提取方法,其具体步骤为:
第一步 搭建基于FPGA的弹上图像连通域提取系统
基于FPGA的弹上图像连通域提取系统包括:线段统计模块、标号生成模块、邻接表生成模块和跑长码表输出模块。线段统计模块统计二值化图像中每条线段的行号、列起始、列结束和线段统计量,并分别写入双口RAM中形成初始跑长码表;标号生成模块为每条线段生成一个标号,并形成标号表;邻接表生成模块用于当某线段与上一行多个线段有邻接关系时,生成相应的邻接表;跑长码表输出模块用于当遍历一幅图像后,将过程中存放于双口RAM中的初始跑长码表、标号表和邻接表输出。
第二步 线段统计模块统计二值化图像中每条线段的统计信息,并分别写入双口RAM中形成初始跑长码表
图像二值化以后,图像数据串行输入线段统计模块。线段统计模块并行统计每条线段的行号、列起始、列结束、线段统计量,每个统计量占用一个双口RAM,形成初始跑长码表,各双口RAM中相同地址存放的数据对应同一条线段。
第三步 标号生成模块为每条线段生成一个标号,并形成标号表
当前线段A的列起始减1小于等于上一行某线段B的列结束,且当前线段A的列结束加1大于等于上一行线段B的列起始时,当前线段A与上一行线段B邻接。当某线段上一行没有线段,或者不与上一行的线段邻接,则标号生成模块为此线段分配一个标号,标号从1开始顺序累加;当某线段上一行有邻接的线段时,标号生成模块将上一行第一个与本线段邻接的标号赋予本线段。标号占用一个双口RAM,形成标号表,与初始跑长码表各双口RAM中相同地址存放的线段统计量相对应。
第四步 邻接表生成模块通过判断线段邻接关系,生成相应的邻接表
邻接表由两个双口RAM组成。邻接表生成模块判断当某线段与上一行多个线段有邻接时,除上一行中与本线段邻接的第一个线段外,邻接表生成模块将其余线段标号依次写入第二个双口RAM,第一个双口RAM相应地址均存放本线段的标号。
第五步 跑长码表输出模块输出存放于双口RAM中的初始跑长码表、标号表和邻接表
当遍历一幅图像后,跑长码表输出模块给出连通域提取完成标志,并将过程中存放于双口RAM中的初始跑长码表、标号表和邻接表从地址0开始顺序输出。
本发明实现了对弹上成像器图像的连通域提取,通过线段统计量的并行计算,获得了比DSP等核心处理器更高的系统实时性和吞吐量;且为DSP节省了连通域提取处理时间,从而DSP可以转而处理其它计算任务。
具体实施方式
一种基于FPGA的弹上图像连通域提取方法,其具体步骤为:
第一步 搭建基于FPGA的弹上图像连通域提取系统
基于FPGA的弹上图像连通域提取系统包括:线段统计模块、标号生成模块、邻接表生成模块和跑长码表输出模块。线段统计模块统计二值化图像中每条线段的行号、列起始、列结束和线段统计量,并分别写入双口RAM中形成初始跑长码表;标号生成模块为每条线段生成一个标号,并形成标号表;邻接表生成模块用于当某线段与上一行多个线段有邻接关系时,生成相应的邻接表;跑长码表输出模块用于当遍历一幅图像后,将过程中存放于双口RAM中的初始跑长码表、标号表和邻接表输出。
第二步 线段统计模块统计二值化图像中每条线段的统计信息,并分别写入双口RAM中形成初始跑长码表
图像二值化以后,图像数据串行输入线段统计模块。线段统计模块并行统计每条线段的行号、列起始、列结束、线段统计量,每个统计量占用一个双口RAM,形成初始跑长码表,各双口RAM中相同地址存放的数据对应同一条线段。
第三步 标号生成模块为每条线段生成一个标号,并形成标号表
当前线段A的列起始减1小于等于上一行某线段B的列结束,且当前线段A的列结束加1大于等于上一行线段B的列起始时,当前线段A与上一行线段B邻接。当某线段上一行没有线段,或者不与上一行的线段邻接,则标号生成模块为此线段分配一个标号,标号从1开始顺序累加;当某线段上一行有邻接的线段时,标号生成模块将上一行第一个与本线段邻接的标号赋予本线段。标号占用一个双口RAM,形成标号表,与初始跑长码表各双口RAM中相同地址存放的线段统计量相对应。
第四步 邻接表生成模块通过判断线段邻接关系,生成相应的邻接表
邻接表由两个双口RAM组成。邻接表生成模块判断当某线段与上一行多个线段有邻接时,除上一行中与本线段邻接的第一个线段外,邻接表生成模块将其余线段标号依次写入第二个双口RAM,第一个双口RAM相应地址均存放本线段的标号。
第五步 跑长码表输出模块输出存放于双口RAM中的初始跑长码表、标号表和邻接表
当遍历一幅图像后,跑长码表输出模块给出连通域提取完成标志,并将过程中存放于双口RAM中的初始跑长码表、标号表和邻接表从地址0开始顺序输出。