一种基于FPGA的最多近邻微光检测方法与流程

文档序号:28447298发布日期:2022-01-12 04:04阅读:116来源:国知局
一种基于FPGA的最多近邻微光检测方法与流程
一种基于fpga的最多近邻微光检测方法
技术领域
1.本发明属于图像处理技术领域,尤其涉及一种基于fpga的最多近邻微光检测方法。


背景技术:

2.微光是目标在远距离情况下形成的微弱亮斑,在灰度图像上是小的孤立点,特点是亮斑面积尺寸小,离散性较大,质心位置波动大,并且极容易受到复杂背景噪声的干扰,尤其在城市环境下干扰更加明显,这就给目标检测跟踪带来很大困难。
3.微光检测一般需要经过图像滤波处理,图像分割,目标检测。微光背景是大面积平缓变换场景,处于图像低频部分;微光相对来说则处于高频部分,图像滤波处理抑制背景和部分噪声是后续检测不可少的步骤。图像分割输出的是二值结果,用于提取目标,0表示背景,1表示可疑像素。目标检测进一步对亮斑进行处理,排除干扰和噪声。传统的微光检测算法局限性较大,检测能力差,容易产生虚警,如最大均值滤波、二次阈值检测等;单帧检测算法处理后得到的目标有虚假性,人们也提出了一些通过空时域结合的方式,如能量积累检测,这一类算法在计算复杂度和数据量上对于软件来说往往不堪重负,实时性也比较差。


技术实现要素:

4.本发明的目的是提供一种基于fpga的最多近邻微光检测方法,解决了采用了多次邻域搜索的处理方式对近邻微光进行检测的技术问题。
5.为实现上述目的,本发明采用如下技术方案:
6.一种基于fpga的最多近邻微光检测方法,包括如下步骤:
7.步骤1:建立视频流数据采集模块、视频流数据预处理模块和亮斑处理模块,视频流数据采集模块与视频流数据预处理模块之间相互通信,视频流数据预处理模块与亮斑处理模块之间相互通信;
8.视频流数据采集模块采集视频流数据并传送给视频流数据预处理模块进行预处理;
9.步骤2:视频流数据预处理模块对视频流数据的预处理包括对视频流数据中的一帧数据进行亮斑识别,得到该帧数据中的亮斑数据,即亮斑数据,亮斑数据包括5个亮斑的坐标和面积;
10.视频流数据预处理模块同时对视频流数据中的多帧数据进行预处理,并保存预处理结果;
11.步骤3:亮斑处理模块调取视频流数据预处理模块中的所有亮斑数据,进行阈值判断,筛选出有效亮斑;
12.步骤4:选取最新一帧为当前帧,其中有效亮斑数据为亮斑数据a;
13.步骤5:设定一个在时域上搜索最新帧数的阈值len_pipe,亮斑处理模块根据len_pipe的值调取在时间上处于当前帧之前的多个帧数据的有效亮斑数据,设定此时获取的有
效亮斑数据均用亮斑数据b表示,将亮斑数据b与亮斑数据a中的所有亮斑的坐标分别进行曼哈顿距离计算,设定每一次曼哈顿距离计算的结果均记做距离值dis,通过判断距离值dis是否小于微光亮斑跳动的像素范围大小阈值,找出亮斑数据a中的每一个亮斑的所有邻近亮斑,设定此时的邻近亮斑均用邻近亮斑j表示;
14.步骤6:亮斑处理模块分别统计亮斑数据a中每一个亮斑的邻近亮斑j的数量,设定亮斑数据a中的任意一个亮斑g的邻近亮斑j的数量为count;
15.对亮斑数据a中的亮斑g的所有邻近亮斑j的坐标求和得到x坐标和sumx1与y坐标和sumy1;
16.设定一个在排除噪声时邻近亮斑数量的最小阈值repeat_th,判断repeat_th是否小于count:是,则认为亮斑g为候选亮斑,设定此时的候选亮斑为候选亮斑j1,执行步骤7;否,则不为候选亮斑j1,执行步骤14;
17.步骤7:亮斑处理模块对候选亮斑j1的坐标进行计算,得到候选亮斑j1的坐标值;
18.步骤8:重复执行步骤6和步骤7,得到当前帧中所有候选亮斑j1的坐标;
19.步骤9:再设定一个在时域上搜索最新帧数的阈值num_lookback,根据步骤5和步骤7的方法原理,根据num_lookback的值计算出在时间上处于当前帧之前的多个帧数据中的所有候选亮斑,设定此时的候选亮斑均用候选亮斑j2表示;
20.步骤10:将当前帧中的候选亮斑j1与所有候选亮斑j2分别进行曼哈顿计算,将每次得到的距离值dis均与微光亮斑跳动的像素范围大小阈值进行对比,如果dis小于微光亮斑跳动的像素范围大小阈值,则认为所有候选亮斑j2为当前帧中的候选亮斑j1的邻近亮斑,设定此时的邻近亮斑用邻近亮斑k表示,对所有近邻亮斑k的坐标取和,分别得出近邻亮斑k的x坐标和sumx2与y坐标和sumy2,并重新计算得到每一个候选亮斑j1的坐标值;
21.步骤11:将所有候选亮斑j1的坐标值数据和面积数据均存储在一个二维数组中;
22.步骤12:根据阈值num_lookback,搜索当前帧之前的所有帧数据,比较每一个候选亮斑j1的邻近亮斑的个数,筛选得到具有最多邻近亮斑的候选亮斑j1,记为候选亮斑j1_max,并且得到候选亮斑j1_max的邻近亮斑的数量neighbor_cnt_max;
23.步骤13:判断neighbor_cnt_max是否不为0:是,则将候选亮斑j1_max的坐标作为检测结果,并通过通信线上传给上位机;否,则执行步骤14;
24.步骤14:结束。
25.优选的,在执行步骤6和步骤9时,阈值num_lookback小于阈值阈值len_pipe。
26.优选的,在执行步骤7时,亮斑处理模块对候选亮斑j1的坐标进行计算的公式如下:
27.canvec_x[i]=sumx1/(count+1);
[0028]
canvec_y[i]=sumy1/(count+1);
[0029]
其中,canvec_x[i]为候选亮斑j1的x坐标值,canvec_y[i]为候选亮斑j1的y坐标值,i的取值为0到4的正整数,i表示5个亮斑的编号。
[0030]
优选的,在执行步骤5时,在时域上搜索最新帧数的阈值len_pipe是预设值,阈值len_pipe是根据视频流数据的时间戳进行设置的,表示了一个时间阈,在该时间阈内截取的是视频流数据包括了多帧数据;
[0031]
同理,在执行步骤9时,在时域上搜索最新帧数的阈值num_lookback也为预设值,
其定义与阈值len_pipe的定义相同。
[0032]
优选的,在执行步骤10时,亮斑处理模块对候选亮斑j1的坐标进行重新计算的公式如下:
[0033]
canvec_x[i]=sumx2/(count+1);
[0034]
canvec_y[i]=sumy2/(count+1);
[0035]
其中,canvec_x[i]为候选亮斑j1的x坐标值,canvec_y[i]为候选亮斑j1的y坐标值,i的取值为0到4的正整数,i表示5个亮斑的编号。
[0036]
本发明所述的一种基于fpga的最多近邻微光检测方法,解决了采用了多次邻域搜索的处理方式对近邻微光进行检测的技术问题,本发明在工程实际应用过程中,占用fpga硬件资源较少,实时处理能力高,同时降低了处理迟滞,方便与其他模块结合,本发明将最多邻近微光检测的算法做了分步骤模块化的处理,使各个步骤都相对独立,简化计算的复杂度,采用了fpga高层次综合和c语言开发的设计方式,大大降低了开发难度,加速了开发进度,在时域上进行了两级搜索,并对亮斑坐标进行了均值化处理,降低了微光目标的噪声干扰,提高了检测精度。
附图说明
[0037]
图1是本发明的算法实现流程框图;
[0038]
图2是本发明的微光检测的并行搜索处理示意图;
[0039]
图3是本发明的高层综合实现示意图。
具体实施方式
[0040]
由图1-图3所示的一种基于fpga的最多近邻微光检测方法,包括如下步骤:
[0041]
步骤1:建立视频流数据采集模块、视频流数据预处理模块和亮斑处理模块,视频流数据采集模块与视频流数据预处理模块之间相互通信,视频流数据预处理模块与亮斑处理模块之间相互通信。
[0042]
视频流数据采集模块采集视频流数据并传送给视频流数据预处理模块进行预处理。
[0043]
如图1所示为本发明的算法实现流程框图,其中的各种变量名词的说明如表1所示:
[0044][0045]
表1
[0046]
步骤2:视频流数据预处理模块对视频流数据的预处理包括对视频流数据中的一帧数据进行亮斑识别,得到该帧数据中的亮斑数据,即亮斑数据,亮斑数据包括5个亮斑的坐标和面积。
[0047]
视频流数据预处理模块同时对视频流数据中的多帧数据进行预处理,并保存预处理结果。
[0048]
步骤3:亮斑处理模块调取视频流数据预处理模块中的所有亮斑数据,进行阈值判断,筛选出有效亮斑;
[0049]
本实施例中,通过分别判断亮斑的面积大小是否小于阈值weak_a_th且大于0的方法筛选出有效亮斑:是,则亮斑有效;
[0050]
步骤4:选取最新一帧为当前帧,其中有效亮斑数据为亮斑数据a。
[0051]
步骤5:设定一个在时域上搜索最新帧数的阈值len_pipe,亮斑处理模块根据len_pipe的值调取在时间上处于当前帧之前的多个帧数据的有效亮斑数据,设定此时获取的有效亮斑数据均用亮斑数据b表示,将亮斑数据b与亮斑数据a中的所有亮斑的坐标分别进行曼哈顿距离计算,设定每一次曼哈顿距离计算的结果均记做距离值dis,通过判断距离值dis是否小于微光亮斑跳动的像素范围大小阈值,找出亮斑数据a中的每一个亮斑的所有邻近亮斑,设定此时的邻近亮斑均用邻近亮斑j表示。
[0052]
步骤6:亮斑处理模块分别统计亮斑数据a中每一个亮斑的邻近亮斑j的数量,设定亮斑数据a中的任意一个亮斑g的邻近亮斑j的数量为count。
[0053]
对亮斑数据a中的亮斑g的所有邻近亮斑j的坐标求和得到x坐标和sumx1与y坐标和sumy1。
[0054]
设定一个在排除噪声时邻近亮斑数量的最小阈值repeat_th,判断repeat_th是否小于count:是,则认为亮斑g为候选亮斑,设定此时的候选亮斑为候选亮斑j1,执行步骤7;否,则不为候选亮斑j1,执行步骤14。
[0055]
步骤7:亮斑处理模块对候选亮斑j1的坐标进行计算,得到候选亮斑j1的坐标值。
[0056]
亮斑处理模块对候选亮斑j1的坐标进行计算的公式如下:
[0057]
canvec_x[i]=sumx1/(count+1);
[0058]
canvec_y[i]=sumy1/(count+1);
[0059]
其中,canvec_x[i]为候选亮斑j1的x坐标值,canvec_y[i]为候选亮斑j1的y坐标值,i的取值为0到4的正整数,i表示5个亮斑的编号。
[0060]
本实施例中,距离dis不大于move_th的则认为它是当前帧该有效亮斑的近邻,计数近邻数量为count,并对近邻亮斑坐标取和得到sumx与sumy,搜索完成后,判断当前帧该有效亮斑近邻个数是否count≥repeat_th,若是,canvec[i]=1,认为该亮斑是候选亮斑,否则canvec[i]=0。
[0061]
步骤8:重复执行步骤6和步骤7,得到当前帧中所有候选亮斑j1的坐标;
[0062]
步骤9:再设定一个在时域上搜索最新帧数的阈值num_lookback,根据步骤5和步骤7的方法原理,根据num_lookback的值计算出在时间上处于当前帧之前的多个帧数据中的所有候选亮斑,设定此时的候选亮斑均用候选亮斑j2表示;
[0063]
步骤10:将当前帧中的候选亮斑j1与所有候选亮斑j2分别进行曼哈顿计算,将每次得到的距离值dis均与微光亮斑跳动的像素范围大小阈值进行对比,如果dis小于微光亮斑跳动的像素范围大小阈值,则认为所有候选亮斑j2为当前帧中的候选亮斑j1的邻近亮斑,设定此时的邻近亮斑用邻近亮斑k表示,对所有近邻亮斑k的坐标取和,分别得出近邻亮斑k的x坐标和sumx2与y坐标和sumy2,并重新计算得到每一个候选亮斑j1的坐标值;
[0064]
本实施例中,搜索当前帧之前num_lookback帧的候选亮斑,计算与当前帧候选亮斑的曼哈顿距离dis,若dis≤move_th,候选亮斑的近邻个数neighbor_cnt[i]加一,并对候选亮斑的近邻亮斑坐标取和得到sumx和sumy,num_lookback内候选亮斑搜索完成后,计算当前帧候选亮斑坐标。
[0065]
亮斑处理模块对候选亮斑j1的坐标进行重新计算的公式如下:
[0066]
canvec_x[i]=sumx2/(count+1);
[0067]
canvec_y[i]=sumy2/(count+1);
[0068]
其中,canvec_x[i]为候选亮斑j1的x坐标值,canvec_y[i]为候选亮斑j1的y坐标值,i的取值为0到4的正整数,i表示5个亮斑的编号。
[0069]
步骤11:将所有候选亮斑j1的坐标值数据和面积数据均存储在一个二维数组中;
[0070]
步骤12:根据阈值num_lookback,搜索当前帧之前的所有帧数据,比较每一个候选亮斑j1的邻近亮斑的个数,筛选得到具有最多邻近亮斑的候选亮斑j1,记为候选亮斑j1_max,并且得到候选亮斑j1_max的邻近亮斑的数量neighbor_cnt_max;
[0071]
本实施例中比较每一候选亮斑canps_neigh[i][can_slot]大小,得到最多近邻的neighbor_cnt_max。
[0072]
八、以第七步为基础,判断neighbor_cnt_max是否有值(即大于0),若是,则将相应候选亮斑坐标作为检测结果输出
[0073]
步骤13:判断neighbor_cnt_max是否不为0:是,则将候选亮斑j1_max的坐标作为检测结果,并通过通信线上传给上位机;否,则执行步骤14;
[0074]
步骤14:结束。
[0075]
优选的,在执行步骤6和步骤9时,阈值num_lookback小于阈值阈值len_pipe。
[0076]
优选的,在执行步骤5时,在时域上搜索最新帧数的阈值len_pipe是预设值,阈值len_pipe是根据视频流数据的时间戳进行设置的,表示了一个时间阈,在该时间阈内截取的是视频流数据包括了多帧数据。
[0077]
同理,在执行步骤9时,在时域上搜索最新帧数的阈值num_lookback也为预设值,其定义与阈值len_pipe的定义相同。
[0078]
图3是本实施例通用的fpga高层次综合实现的方式,将c语言实现的工程在fpga上高层次综合为并行执行的硬件描述语言。
[0079]
本发明所述的一种基于fpga的最多近邻微光检测方法,解决了采用了多次邻域搜索的处理方式对近邻微光进行检测的技术问题,本发明在工程实际应用过程中,占用fpga硬件资源较少,实时处理能力高,同时降低了处理迟滞,方便与其他模块结合,本发明将最多邻近微光检测的算法做了分步骤模块化的处理,使各个步骤都相对独立,简化计算的复杂度,采用了fpga高层次综合和c语言开发的设计方式,大大降低了开发难度,加速了开发进度,在时域上进行了两级搜索,并对亮斑坐标进行了均值化处理,降低了微光目标的噪声干扰,提高了检测精度。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1