一种基于图像行数据扫描的星空目标最大光强位置的识别方法与流程

文档序号:12675417阅读:283来源:国知局
一种基于图像行数据扫描的星空目标最大光强位置的识别方法与流程

本发明涉及一种基于图像行数据扫描的星空目标最大光强位置的识别方法,属于一种对空间目标进行质心提取的图像处理算法。



背景技术:

空间已成为新时期各国家政治、军事、技术、经济等竞争的热点,空间攻防是未来太空战争的主要作战手段。为了能够使得卫星自动捕获、跟踪空间运动目标,需要对卫星进行快速姿态计算,然后使用准确的光轴指向信息,推导出恒星在星图中的位置,完成星点映射,最终找到运动目标,完成对目标的实时捕获、跟踪。以上所有的步骤都是基于能够准确的找到星空背景下的恒星和目标的质心位置(即最大光强位置)来实现的。

恒星为观测目标,恒星可以看作无穷远的具有一定光谱特性的点光源,因此其在图像传感器的感光面上成像为分布在较暗背景上的点状光斑,光斑的灰度分布反映了星的亮度。

点状光斑目标的细分定位方法可以分为基于灰度和基于边缘的两大类。基于灰度的方法一般利用目标的灰度分布信息,如质心法、曲面拟合法等。基于边缘的方法一般利用目标的边缘形状信息,这些方法有边缘圆(椭圆)拟合、Hough变换等。一般而言,基于灰度的方法比较适用于较小的且灰度分布均匀的目标,而基于边缘的方法则适合较大的目标,它对灰度的分布不太敏感。实际观测星图中星空目标的直径一般为3~5个像元的大小,且灰度近似成高斯分布。因此,对于星空目标,宜采用基于灰度的方法进行细分定位处理。

目前,使用最多是图像连通域方法,算法步骤是:

(1)从左至右、从上至下扫描图像;

(2)如果像素点的灰度大于背景阈值(T),则:a.如果上面点或左面点有一个标记,则复制这个标记;b.如果上面点或左面点有相同的标记,则复制这一标记;c.如果上面点或左面点的标记不同,则复制上面点的标记并将这两个标记输入等价表作为等价标记,如图1中的标记2与3为等价标记;d.否则给这个像素点分配一个新的标记;

(3)重复(2)直到扫描完图像中所有灰度值大于T的像素点;

(4)将等价表里具有相同标记的像素点合并,并重新分配一个低序号的标记。经过连通域分割处理之后,各个星空目标在星图中表现为相邻的具有相同标记点的像素点的集合。如图1所示,图中数字1为一个目标,数字2和3为另一个目标,图2所示的是上述算法的流程图。

由于传统算法中需要把整幅图像全部接收存储后才能进行计算,如果图像分辨率为1024*1024*8bits的话,至少需要两片1MBits的SRAM来对图像同时进行接收存储和数据处理。并且对图像处理时,使用连通域算法,需要从SRAM中读取出图像,在把处理的图像存储到SRAM后,再对处理后的图像进行扫描计算后才能完成质心提取。

从上面步骤可以看出,对一副图像进行质心提取,至少需要2次图像数据的操作,假设SRAM的接口速率为40MHz,数据位数位32bits,则接口传输需要的时间为13.1ms,而对于捕获模块的跟踪速度的要求为20fps,去掉机构运动和算法余量等时间后,每帧图像的处理时间小于40ms左右,如果在读取图像方面花费的时间占用了整个算法32.75%的时间,那么对后面的算法提出了很大的要求。

另外一种是使用卷积的方法,需要固定大小的模板进行卷积来完成识别,这种方法主要针对已知且固定大小的物体,不能对任意大小的图像进行识别,而在星空的目标识别时,目标离观测点的距离会变化,在像平面上的大小也会发生变化,并且变化范围也很大,几个像素到几百个像素都有可能,所以该方法不适合。

因此,目前现有的方法难以满足实时地对大小可变的目标最大光强特征位置进行识别的要求。



技术实现要素:

本发明所要解决的技术问题是:克服现有技术的不足,提供一种基于图像行数据扫描的星空目标最大光强位置,简单,实现容易,并且运算效率高,识别速度快,同时可以确保准确性、可靠性与实时性的最大光强位置的识别方法,以完成识别恒星和目标的最大光强特征位置。

当使用CMOS相机时,图像背景会存在一定的噪声,所以需要确定一个背景阈值(T)来消除噪声的影响。根据CMOS相机的特点,相邻帧之间噪声幅值变化较小,时间间隔较大时,噪声变化较大,所以本发明采取了动态背景阈值,即,背景阈值是由前一帧图像的像素灰度平均值确定的。

本发明包括如下技术方案:

一种基于图像行数据扫描的星空目标最大光强位置的识别方法,如图7所示,步骤如下:

1.接收相机数据,所述相机数据是按行传输的,使用乒乓缓冲技术对行数据进行接收;

2.对缓冲的行数据进行数据扫描,如果某像素的灰度大于背景阈值T,并且该像素左边相邻的像素值小于T时,记录该像素所在列的坐标为Ln;如果某像素的灰度小于背景阈值T,并且该像素左边相邻的像素值大于T时,记录该像素的左边像素所在列的坐标为Rn,Ln与Rn成对出现,写作Ln-Rn。一行数据中可以有多个Ln-Rn对;

3.将步骤2中Ln-Rn对之间的数据定义为行目标,并且在扫描行数据的同时,对行目标按行目标计算方法进行计算;当行目标扫描完成时,把该行目标按行目标组合方法进行处理和存储,使行目标组成星空目标;

4.重复步骤2和步骤3,直到扫描完该行数据;

5.如果某星空目标在一行数据扫描结束后,仍然没有被更新过,说明该星空目标已经结束。图5为一个星空目标的完整的扫描过程,Ln-Rn为当前行目标,由于Ln>R,所以星空目标1已经结束,而星空目标2仍未结束;

6.当星空目标已经结束时,对星空目标进行最终判定,对于符合判定的即为需要的星空目标,利用公式x0=Ix/I和y0=Iy/I对星空目标进行质心计算,即最大光强位置计算;当多个星空目标同时结束时,需要顺序进行质心运算。在质心计算中,需要用到除法,本发明为了能够该算法可以独立运行在FPGA中,所以使用了试商法完成了除法运算;

7.当相机数据接收完成后,星空目标识别结束,当完成剩余的质心计算后,星空目标质心也完成了提取。

在步骤3中,当发现行目标后,利用FPGA的并行性,在扫描行目标的过程中,需要对行数据进行乘累加计算,对于第N行数据,计算该行中的Ln-Rn之间数据的加权值和In=[F(x,y)-T],其中F(x,y)为图像的灰度值,T为图像的背景阈值,x为图像的行坐标,y为Ln-Rn之间行数据的列坐标;如果一行有多个Ln-Rn对,则计算多个Ixn、Iyn和In对。

在步骤3中的行目标组合方法为,当某个行目标扫描完成后,与已有星空目标进行目标判定,判断过程为:该行目标的Ln和Rn值与已有星空目标数据中的L和R值比较,如果Ln≤R-k1且Rn≥L-k2时,则该星空目标与该行目标是连通的,为同一个星空目标,如图3所示,其中k1,k2根据星空目标特性进行调节,否则为两个独立的星空目标,如图4所示,如果该行目标的Ln和Rn与所有星空目标数据中的L和R值都没有匹配,则记录该行目标为新星空目标。如果属于某个星空目标,则对该星空目标数据进行更新,如果是新星空目标,则需要在星空目标队列中建立新的星空目标数据;如图3所示为同一个星空目标,图4所示为两个独立星空目标;星空目标数据存储格式如图6所示,其中L、R、Ix、Iy、I分别是星空目标的左边界,右边界,行累加值,列列累加值和坐标累加值;更新数据的过程为:如果某行目标与某星空目标连通,则把该行目标对应的Izn累加到该星空目标数据的Ix中,该行目标对应的Iyn累加到该星空目标数据的Iy中,该行目标对应的In累加到该星空目标数据的I中,并将该星空目标数据中的L和R更新为该行目标的Ln和Rn

经过上述步骤,当整幅图像按行接收完成后,行扫描数据也已经完成,所以此算法可以实现实时的处理行数据,并能在行数据中提取出星空目标的信息,计算出星空目标质心坐标。

本发明与现有技术相比,具有如下优点:

(1))实时性强,运算速度快,只需要接收完图像数据,就已经完成了目标质心提取,与传统的连通域相比,大大提升了计算质心的速度

(2)星空目标大小可变,不受图像处理模板大小的限制

(3)可以不使用DSP

(4)由于不需要占用大量的存储器,图像分辨率可以很大,并且节省存储空间资源,节省硬件面积。

(5)可以用于高速相机,比如分辨率为4M,像素位数为12bits,帧频为500Hz的图像,需要24Gbit/s的传输速率才能把图像数据传输完成。当使用了本文提到的技术,只需要一个FPGA在获得数据的同时,使用基于图像行数据扫描的方法,就可以获得星空目标的最大光强位置,然后只需要把最大光强位置传送出去即可。

附图说明

图1为现有技术中连通域分割处理后的图像数据;

图2为现有技术中连通域分割处理的步骤;

图3为本发明中同一个星空目标时,行数据扫描时星空目标与行目标的位置关系;

图4为本发明中两个独立星空目标时,行数据扫描时星空目标与行目标的位置关系;

图5为本发明中基于行数据扫描算法下识别星空目标的完整过程;

图6为本发明中星空目标在FPGA中的存储格式;

图7为本发明中系统整体设计框架;

图8为本发明中数据缓冲模块框图;

图9为本发明中行数据扫描算法实现流程图。

具体实施方式

下面结合附图对本发明的识别方法,进行详细描述。

按照上述步骤,基于图像行数据扫描的方法的具体的实现的系统整体设计框架如图7、9所示,下面给出了图7、9中所示的步骤。

(1)首先需要根据相机的通信协议,编写接口代码,完成对相机数据的读取,一般情况下,相机的数据是行传输的,为了保证数据的实时接收和处理,采用乒乓缓冲技术对行数据进行接收。

由两个RAM组成的,主要是为了使相机数据接收模块和处理模块同时进行,当相机接收数据模块向SideA存储器写入数据时,相机数据处理模块会从SideB中读取数据,由于数据缓冲模块两端的时钟域不同,所以使用了两个双端口RAM;为了能够在两端传递控制信号,使用了跨时钟域同步的方式,本模块的整体结构如图8所示,图8中给出了上述实现方法的框图。

(2)对缓冲行数据进行数据扫描,需要用到背景阈值,背景阈值的确定需要根据具体的应用环境来决定采用哪种方法。因为是星空背景下的目标,所以本文中的背景阈值是根据上一帧数据的平均像素值求得的。

根据得到的背景阈值T,来对行数据的像素值进行判断。如果某像素的灰度大于背景阈值T,并且该像素左边相邻的像素值小于T时,记录该像素所在列的坐标为Ln;如果某像素的灰度小于背景阈值T,并且该像素左边相邻的像素值大于T时,记录该像素的左边像素所在列的坐标为Rn,Ln与Rn成对出现,写作Ln-Rn。一行数据中可以有多个Ln-Rn对。

(3)当步骤2中记录Ln时,则认为已经发现了行目标,所以可以利用FPG的并行性,在扫描行数据的过程中,对行目标数据进行乘累加计算。

对于第N行数据,利用下列公式计算该行中的Ln-Rn之间数据的加权值。

In=[F(x,y)-T]

其中F(x,y)为图像的灰度值,T为图像的背景阈值,x为图像的行坐标,y为行数据的列坐标;如果一行有多个Ln-Rn对,则计算多个Ixn、Iyn和In对。

当步骤2中记录Rn时,则说明该行目标已经扫描完成,一行可以有多个行目标。

将本次得到的行目标,与已有星空目标进行目标判定,判断过程为:

某个行目标的Ln和Rn值与已有星空目标数据中的L和R值比较,如果Ln≤R-k1且Rn≥L-k2时,则该星空目标与该行目标是连通的,为同一个星空目标,此处k1,k2均取零,否则为两个独立的星空目标,如果该行目标的Ln和Rn与所有星空目标数据中的L和R值都没有匹配,则记录该行目标为新星空目标。

如果此次发现行目标属于某个星空目标,则对该星空目标数据进行更新,把该行目标对应的Ixn累加到该星空目标数据的Ix中,该行目标对应的Iyn累加到该星空目标数据的Iy中,该行目标对应的In累加到该星空目标数据的I中,并将该星空目标数据中的L和R更新为该行目标的Ln和Rn

如果是新星空目标,则需要在星空目标队列中建立新的星空目标数据,如图6所示,包括L、R、Ix、Iy、I,它们的初值分别为成为新星空目标的行目标的Ln、Rn、Ixn、Iyn、In

如图3所示为同一个星空目标,图4所示为两个独立星空目标;

(4)重复步骤2和步骤3,直到扫描完该行数据。

(5)如果某星空目标在一行数据扫描结束后,仍然没有被更新过,说明该星空目标已经结束。图6为一个星空目标的完整的扫描过程,由于Ln>R,所以星空目标1已经结束,而星空目标2仍未结束;

(6)当星空目标已经结束时,对星空目标进行最终判定。判定方法可以根据需要来设定,本发明中认为一个星空目标含有的像素个数需要大于1,对于只包含1个像素的星空目标,认为其是由噪声引起的误判断。

对于符合判定的即为需要的星空目标,利用下列公式对其进行质心计算。

x0=Ix/I

y0=Iy/I

其中Ix、Iy和I均为星空目标数据中的数据,x0为星空目标的行坐标,y0为星空目标的列坐标,(x0,y0)即为星空目标的最大光强位置。

在质心计算中,需要用到除法,本发明中为了能够可以独立运行在FPGA中,所以使用了试商法完成了除法运算;当多个星空目标同时结束时,需要顺序进行质心运算。

(7)当相机数据接收完成后,星空目标识别结束,当完成剩余的质心计算后,星空目标质心也完成了提取。

本发明使用了FPGA实现,亦可使用DSP等高速处理器实现。该方法主要用于高速相机的图像处理、受面积限制的图像处理系统、对未知目标大小识别的图像处理;本发明中对星空背景下的恒星和目标的最大光强位置进行了识别。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1