本发明属于传感器姿态测量领域,尤其涉及一种基于主从星模式的星图识别系统及方法,应用于恒星敏感器定姿。
背景技术:
星敏感器作为微小卫星姿态测量精度最高的部组件,其内部的星图识别算法就显得尤为重要。随着微小卫星的不断发展,迫切的需要提出一种适用于微小卫星微型化的星图识别算法,其特点在于在保障星图识别的准确度和速度的基础上,可以将其在嵌入式设备中实现,以满足微小卫星微型化的要求。
常见的星图识别算法主要有三角形算法、星模式算法和神经网络算法。其中三角形算法最大的特点是实现简单,但是由于其需要构造庞大的三角形导航星数据库,这对于星敏感器来说需要配置一个较大的存储器来存储已知数据,这会使得星敏感器在体积、功耗和成本上有所增加,并且在星点搜索匹配阶段也将会非常耗时。星模式算法是目前最为流行的星图识别算法,它是将模式识别里面的思想应用在星图识别中,通过手动设计星模式向量,同时构造与星模式向量相匹配的星模式导航星数据库,使得视野中的星模式向量可以和数据库中的星模式向量相匹配来达到星图识别的目的。这种方法识别的准确度和识别的速度相对来说较好,但设计方式较为复杂,不同的星模式需要构造的导航星数据库也不尽相同,需要适不同情况而定。神经网络算法是最近较为热门的星图识别方法,它是通过设计神经网络来实现星图的识别,不过目前这种方法仅停留在算法仿真验证阶段,由于其实现需要大量的计算资源和数据资源,这在微小卫星上是很难满足,因此还需要进一步发展。
因此,本星图识别算法提出了一种基于主从星模式的星图识别方法,此方法即可以保证识别的准确度和速度的基础上,又可以在星敏感器嵌入式设备实现,满足微小卫星姿态部组件微型化的需求。
技术实现要素:
本发明提供了一种基于嵌入式系统的星图识别方法,可以很好的适用于微小卫星系统中,提供高精度的姿态定位导航。
本发明的目的是通过以下技术方案来实现的:
一种面向微小卫星的星图识别方法,包括以下步骤:
步骤1:星图滤波;采用3*3大小的线性均值滤波模板来对星敏感器前端所采集的原始星图进行平滑降噪处理;
步骤2,星图分割;具体包括以下步骤:
步骤2.1,对降噪后的星图采用全局阈值法实现星点与背景的分离、采用4-连通域法实现星点与星点的分离;
步骤2.2,对分离后的星点采用带阈值的质心定位法实现星点的精准定位;
步骤2.3,对精准定位后的亚像素级星点坐标进行统计,得到视野星表;
步骤3:特征提取;具体包括以下步骤:
步骤3.1,对统计好的视野星表坐标进行转换,把视野星表坐标信息转换成视野星表矢量信息;
步骤3.2,找出视野星表里最靠近图像中心的那个星点作为主星,视野中其他的星作为主星的从星;
步骤3.3,统计出主星到各个从星的角距余弦值得到视野星距表;
步骤4:导航数据库构造;具体包括以下步骤:
步骤4.1,对原始星表进行筛选,抽取出星等亮于6等星的恒星,并对星表中存在的双星进行离焦处理得到导航星,最终只保留导航星的星号、赤经和赤纬等三类信息作为基础星表;
步骤4.2,对处理后的导航星进行矢量求解,求出每个导航星在j2000坐标系下的星矢量;
步骤4.3,计算每两颗导航星之间的角距值,剔除掉角距值大于视场范围一半的星对,进而得到导航星表;
步骤5:匹配识别;具体包括以下步骤:
步骤5.1,将视野星距表中的角距余弦值逐一在导航星表中比对,对两者之差小于一定阈值ε的待定星对进行记录;
步骤5.2,统计所有待定星对的信息,对于出现频率最高的导航星则认为是目标星。若目标星不唯一,需更换主星,重复步骤3和步骤5,直至得到唯一的目标星为止;
步骤5.3,得到目标星的星号后,在基础星表中搜索出其赤经和赤纬信息,以便计算后续的卫星姿态矩阵;
优选的,在所述步骤1中,3*3大小的线性均值滤波模板为
优选的,在所述步骤2.1中,采用全局阈值法实现星点与背景的分离、采用4-连通域法实现星点与星点的分离,并且两步可以同时进行,因此只需对图像进行一次扫描即可。算法具体如下:
1.在星图上任取几个窗口,计算其灰度分布的均值,把这个均值加上噪声标准差的5倍作为全局背景均值;
2.从左至右、从上到下遍历星图;
3.如果发现有像素点的灰度值小于等于背景阈值(t),则标记为0;
4.如果发现有像素点的灰度值大于背景阈值(t),则:
1).如果上面点或左边点有一个标记,则复制这个标记;
2).如果上面点或左边点有相同标记,则复制这个标记;
3).如果上面点或左边点的标记不同,则复制上面点的标记并将这两个标记输入等价表作为等价标记;
4).否则给这个点分配一个新的标记并将之计入等价表;
5.重复步骤3-4直到遍历完图像中所有的像素点;
6.将等价表里面具有相同标记的像素点合并,并重新分配一个低序号的标记;
7.为了消除可能存在的噪声干扰的影响,对占像素点数少于一定阈值的目标应该舍掉。
优选的,在所述步骤2.2中,带阈值的质心定位公式为:
优选的,在所述步骤3.1中,视野星坐标转换为视野星矢量的公式为:
优选的,在所述步骤3和步骤5中,采用主从星模式法实现星图的特征提取与匹配识别。首先,找出视野中最靠近星图中心点的那颗星作为主星,这样有助于在约束视野里存在更多的从星来作匹配。分别计算视野内主星到各个从星的角距余弦值dij,得到视野星距表,其中角距余弦值计算公式为:由步骤3.1中计算得到主星i的视野星矢量为wj,选取其一个从星j,计算其视野星矢量为wj,则主星i和从星j的角距余弦值dij=wiwj。在导航数据库中分别搜索与视野星距表中的角距余弦值相匹配的星对(i′,j′),使得满足|dij-cosθi′j′|<ε,其中ε为误差阈值,ε的选取通常与识别精度和识别速度相关,若选取的过大则会导致待定星的数量过多,增加匹配时间;若选取的过小则会受噪声干扰影响过大,鲁棒性不强,导致识别精度过低,在这里我们根据实验经验选择ε=0.00001,θi′j′为星对i′、j′的夹角;对于每一个从星都会得到一个待定星对集合,将待定星对集合中的导航星对取交集,如果能得到只含有一个元素的交集,则识别成功;否则更换主星,重复以上步骤直至得到只含有一个元素的交集。
优选的,在所述步骤4.1中,原始星表为美国史密斯天文台发布的sao星表。
优选的,在所述步骤4.2中,每个导航星在j2000坐标系下的赤经、赤纬和其星矢量转换关系为:
优选的,在所述步骤4.3中,所选的星敏感器视场范围大小为14°*11.3°,由此剔除掉视场角度值大于视场约束7°*7°范围的星对。
本发明与现有技术相比具有的有益效果:
本发明提供了一种针对微小卫星的星图识别方法,非常适用于在嵌入式设备中实现,相比于现有的技术来说,本发明在保证识别准确率和识别速度的基础上,实现了算法的优化设计,由此带来的益处为:
1)由于使用了更小的数据存储器,由此减小了星敏感器的体积;
2)由于使用了更小的数据存储器,由此降低了星敏感器的功耗;
3)由于优化了算法的设计,由此加快了星敏感器的识别速度。
附图说明
图1为星图识别算法框图。
图2为4-连通域分割算法示意图。
图3为视野星表示意图。
图4为视野星矢量表示意图。
图5为主从星角距余弦值表示意图。
图6为基础星表示意图。
图7为导航星矢量表示意图。
图8为导航星表示意图。
具体实施方式
下面结合附图,对本发明作进一步的详细说明。本发明提出了一种面向微小卫星的星图识别方法。在本发明中,设定星敏感器的参数如下:视场角大小为14°×11.3°,cmos面阵大小为1280×1024像素,单个像素大小为6.7μm,根据主距与视场角及面阵的关系,主距大小为35mm,主点和畸变等参数均设为0。
本发明的具体步骤如下:
步骤1:星图滤波;
由图1可知,本星图识别算法的输入是由星敏感器前端所采集的原始星图,原始星图需经过3*3大小的线性均值滤波模板来实现平滑降噪处理,得到处理后的星图。线性均值滤波模板
步骤2,星图分割;具体包括以下步骤:
步骤2.1,由图1可知,在对原始星图去噪后需对其进行前景和背景的分离,在这里我们使用全局阈值法来实现星点与背景的分离,即:在星图上任取几个窗口,计算其灰度分布的均值,把这个均值加上星图噪声标准差的5倍作为全局背景均值,得到阈值后便可以遍历整张星图所有的像素点,当像素点的灰度值小于阈值时,便置0,否则保留原始像素值;前景和背景分离开后,需要将各个星点相互分离开,即对星图中每个星点进行标号,在这里我们采用4-连通域法实现星点与星点的分离,具体过程如下:
1.从左至右、从上到下遍历星图;
2.如果发现有像素点的灰度值小于等于背景阈值(t),则标记为0;
3.如果发现有像素点的灰度值大于背景阈值(t),则:
1).如果上面点或左边点有一个标记,则复制这个标记;
2).如果上面点或左边点有相同标记,则复制这个标记;
3).如果上面点或左边点的标记不同,则复制上面点的标记并将这两个标记输入等价表作为等价标记;
4).否则给这个点分配一个新的标记并将之计入等价表;
4.重复步骤2-3直到遍历完图像中所有的像素点;
5.将等价表里面具有相同标记的像素点合并,并重新分配一个低序号的标记;
6.为了消除可能存在的噪声干扰的影响,对占像素点数少于一定阈值的目标应该舍掉。
经过4-连通域分割处理后,各个星点在星图上表现为相邻的具有同样的标记,如图2中标记为1,2,3,4的点。为了进一步消除噪声的干扰影响,我们规定对标记数目小于5的标记进行舍弃,在图2中为标记为4的点。
由以上步骤可知,前景和背景的分割、星点与星点的分割可以同时进行,以减少算法的复杂度。
步骤2.2,对分离后的星点采用带阈值的质心定位法实现星点的精准定位,带阈值的质心定位公式为:
步骤2.3,对精准定位后的亚像素级星点坐标进行统计,得到视野星表,示例如图3所示,图表的第1列为视野星的序号,第2列为该视野星的行坐标,第3列为该视野星的列坐标。
步骤3:特征提取;具体包括以下步骤:
步骤3.1,对统计好的视野星表坐标进行转换,把视野星表坐标信息转换成视野星表矢量信息,视野星坐标转换为视野星矢量的公式为:
步骤3.2,找出视野星表里最靠近图像中心的那个星点作为主星,视野中其他的星作为主星的从星;
步骤3.3,统计出主星到各个从星的角距余弦值得到视野星距表,示例如图5所示,其中第一行是主星与主星的角距余弦值,其余的为主星与从星的角距余弦值。
步骤4:导航数据库构造;具体包括以下步骤:
步骤4.1,选用美国史密斯天文台发布的sao星表作为原始星表,对原始星表进行筛选,抽取出星等亮于6等星的恒星作为导航星,并对星表中存在的双星进行离焦处理,最终只保留导航星的星号、赤经和赤纬等三类信息作为基础星表,示例如图6所示,所对应的3列分别是基础星表的星号信息、赤经信息和赤纬信息。
步骤4.2,对处理后的导航星进行矢量求解,求出每个导航星在j2000坐标系下的星矢量,其中每个导航星在j2000坐标系下的赤经、赤纬和其星矢量转换关系为:
步骤4.3,计算每两颗导航星之间的角距值,剔除掉角距值大于视场范围一半的星对,进而得到导航星表,示例如图8所示,所对应的3列分别是导航星星对角距余弦值、导航星1和导航星2。
步骤5:匹配识别;具体包括以下步骤:
步骤5.1,将视野星距表中的角距余弦值逐一在导航星表中比对,对两者之差小于一定阈值ε的待定星对进行记录。
步骤5.2,统计所有待定星对的信息,对于出现频率最高的导航星则认为是目标星,若目标星唯一则识别成功;否则更换主星,重复以上步骤直至得到目标星唯一为止。
步骤5.3,得到目标星的星号后,在基础星表中搜索出其赤经和赤纬信息,以便计算后续的卫星姿态矩阵。基础星表如图6所示。
对所公开实例的上述说明,使本领域专业技术人员能够实现或使用本发明。本发明未详细说明部分属本领域技术人员公知常识。