一种星敏感器全天球极大组识别的改进搜索方法

文档序号:9489437阅读:436来源:国知局
一种星敏感器全天球极大组识别的改进搜索方法
【技术领域】
[0001]本发明涉及一种用于大数据量中随机数检索的方法,可应用于星敏感器星图识别技术领域和其他技术领域类似场合。
【背景技术】
[0002]当前用于极高精度星敏感器星图识别的算法主要还是通过观测星对和导航星对角距匹配。但由于极高精度星敏灵敏度极高、视场小,以致每次拍摄得到的星图中观测星密集,所用于识别的星表中导航星数量庞大,给星图识别增加了难度。传统三角形匹配算法由于星点过密,观测星对间角距差异小,会出现星三角形的数量多,在匹配过程中产生冗余匹配的概率大,从而导致算法识别成功率低已不能适用。目前比较新的一种最大匹配组算法具有快速和高准确性。该算法首先从星表中找出与观测星对匹配次数最多的导航星对,生成匹配矩阵;然后确认匹配矩阵中两两匹配对之间的匹配关系,组成匹配确认矩阵;最后依据匹配确认矩阵计算出最大匹配组,得到识别结果。该算法已经在CCD甚高精度星敏上得到验证,具有很高的识别率且误识别概率低。
[0003]由于实际航天应用中都用嵌入式系统,这对程序实现的时间性能要求很高。上述最大组识别算法中的第一个步骤,找出与观测星对匹配次数最多的导航星对,实际中因为搜索出的导航星对多,导致统计匹配次数时的搜索数据量很大,用直接顺序搜索时间消耗过大,无法满足实际时间性能要求。这个情况归纳起来就是多次在大量数据中搜索出一个随机数,并记录该随机数被搜索到的次数,并在空间资源有限的情况下尽可能提高搜索效率,降低搜索时间。
[0004]最快速的搜索方法是建立将导航星候选队列和星表中导航星号一一对应关系的哈希表,新匹配得到导航星时直接用该导航星序号进行索引即可,最终每个序号累计的总索引到的次数就是匹配次数。这里根据实际情况,若星表中的导航星为30000颗左右,一般每颗观测星每次检索得到的候选导航星就为500个左右(对于太空中,由于星图成像质量更高,可以将K矢量搜索角距和星等判据都规定的更加合理,从而每次检索得到的候选导航星就会更少),而假设用10颗观测星进行匹配(为保证识别精度要求,尽量选取亮星,一般不超过12颗)识别,则每颗观测星9次角距对共检索得到的候选导航星就约4500个,为了防止溢出开辟候选导航星队列空间时加入冗余量,则每颗观测星分配实际空间大小也只需要5000个单位的空间(因为要保存观测星和一颗导航星匹配时的匹配结果,则每颗导航星还需至少大小为20的整型数组来存储匹配结果信息,即在这里一个单位的空间相当于20个整型数所占用的空间),若开为和星表导航星号一一对应的关系则需要开辟大小为30000个单位的空间,对空间资源是极大的浪费,对于空间资源有限的嵌入式系统就更加不能接受。而接下来的步骤是检索出每颗观测星匹配次数最大的导航星号,用这种方法就需遍历30000次进行检索,也是一种对时间的浪费。
[0005]二分法排序查找,这是一种较为流行的查找算法,也是本最大组算法在计算机仿真时用到的搜索方法,其算法实现复杂度低,空间资源占用少,原理是将每颗观测星的候选导航星按导航星序号进行从小到大排序,之后从排序后队列的中间位置开始进行检索,比较大小,每次都折半查找,二分法的时间复杂度为0(log2n),其中η为队列长度。二分法检索时间虽然远小于顺序检索,但是每当要在队列中插入一个新的节点时(新匹配到的导航星序号不在之前的候选导航星队列中),必须将队列中比该新节点数值大的节点都后移一位。若新增加的导航星序号比较小这里就很有可能进行上百次数据移动,也就涉及上百次内存数据交换。而嵌入式系统由于自身特点,进行内存数据交换操作是很消耗时间的,这很大程度上影响了算法实现的时间性能。

【发明内容】

[0006]本发明解决的技术问题是:在每颗观测星大量的候选导航星队列中,检索是否存在每次新匹配得到的导航星,若不存在则插入候选队列,若存在则记录该导航星累计匹配次数,为克服现有技术的不足,提供一种星敏感器全天球最大组识别的改进搜索方法,在满足占用空间资源少的同时,兼具平衡二叉树的优点,查找速度快,为二分查找时间;同时无需大量内存数据交换,进一步提高时间性能。
[0007]本发明解决的技术方案是:一种星敏感器全天球最大组识别的改进搜索方法,如图1所示,步骤如下:
[0008](1)将星图中提取得到的观测星按能量从大到小进行排序,并将能量由大到小的顺序作为观测星序号用于与星表中的导航星进行匹配识别;
[0009](2)计算观测星两两夹角正弦值,生成观测星对角距表;
[0010](3)在导航星角距对表中选出与步骤(2)生成的观测星对角距表中每对观测星对匹配的所有导航星对,所有导航星对还需同时满足以下两个条件:
[0011]a)导航星对角距与观测星对角距差的绝对值小于等于角距匹配阈值;
[0012]b)导航星对中的导航星星等与观测星对中观测星的星等差的绝对值小于等于星等匹配阈值;最终组成候选导航星对;
[0013](4)将每次得到的候选导航星对中星等小的与观测星对中序号小的相对应,星等大的和序号大的相对应,从而得到每次每颗观测星的候选导航星;
[0014](5)进行候选子区间划分,将步骤⑷中每颗观测星每次匹配得到的候选导航星序号除以区间范围得到商,通过商值划分子候选区间;
[0015](6)循环遍历每颗观测星,在每颗观测星的每个候选子区间中建立平衡二叉树,其中平衡二叉树的每个节点对应一个候选导航星序号,最终记录得到该观测星和其所有候选导航星队列中每颗导航星的匹配次数。
[0016]所述区间范围=星表中最大导航星号/10。
[0017]所述步骤(5)中候选子区间为10。
[0018]所述步骤(6)平衡二叉树初建时先将第一颗得到的候选导航星作为根节点,然后按照二叉树建立原则逐个在相应位置插入每次搜索到的新节点;建立二叉树的同时进行搜索,若某次被搜索的导航星号和已存在节点相同,则给该节点匹配次数加1,并不再将该导航星当作新节点插入二叉树;在建立二叉树的同时,需记录相对于根节点左右子树的深度,若二者深度差大于等于3,则二叉树将不再平衡,这样会降低搜索效率,必须重新建立平衡二叉树,这就需要移动根节点;若现左子树深度比右子树大于等于3,则只需将左子树中导航星号最大的节点当作新根节点,将原根节点放入新根节点的右子树,则新建立的二叉树为平衡二叉树;反之右侧深度比左侧大于等于3的情况则,需将右子树中导航星号最小的节点当作新根节点,将原根节点放入新根节点的左子树。
[0019]所述步骤(3)用K矢量法在导航星角距对表中选出与步骤(2)生成的观测星对角距表中每对观测星对匹配的所有导航星对。
[0020]本发明与现有技术相比的优点:
[0021](1)相比于在整个候选队列顺序查找的方式,本发明先建立子区间划分,进而又在每个等分的子区间中用平衡二叉树的方式进行搜索,进一步大大提升了搜索速度。
[0022](2)相比于用索引的方式进行查找,本发明在划分候选区间的基础上结合平衡二叉树进行检索,划分候选区间在开辟候选队列空间时以不增加冗余量为原则;以星图中提取得到的观测星数为循环,循环中每次每颗观测星都与其它观测星逐一组成角距对,逐次进行K矢量搜索,将每次搜索得到的候选导航星按序号大小划分区间,分别放在例如10个子区间中。由于导航星角距对星表分布基本均匀,这样可以将总共需检索的数据量基本10等分以降低每次检索的数据量。即按上述假设用10颗观测星进行识别计算,候选队列需开辟10*500个单位大小的空间,建立平衡二叉树需额外开销2倍于候选队列大小的整型数组用来存放二叉树索引指针,但其总空间开销也远小于30000个单位大小的空间。
[0023](3)相比于二分法排序中查找,本发明中在每颗观测星的每个子区间中建立平衡二叉树,其查找速度和二分法相同,但需要涉及到的内存数据交换很少,平衡二叉树只有在移动二叉树根节点的时候才需进行3次内存数据交换,这几乎不影响算法的时间性能,远优于二分法时可能产生的上百次内存数据交换,故其时间性能要比二分法
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1