一种基于三角形匹配的星图识别方法、装置及系统
技术领域
本发明属于航天导航技术领域,涉及对基于三角形特征星图识别算法的改进。
背景技术
星敏感器(星敏)是一种利用拍摄的星图确定平台姿态的仪器。姿态测量是航天飞行控制的前提,对保证航天器高性能飞行、高精度观测及顺利完成各种空间任务具有重要意义。
早在1997年,Padgett C等人就提出了最初的三角形星图识别方法,利用三角形的三个角距进行匹配,观测三角形由视场中任意三颗星组成,根据该观测三角形的三个角距,与导航星库中导航三角形的三个角距进行匹配,若三对角距对应的误差在一个设定的阈值范围之内,则认为该观测三角形与导航三角形匹配。由于三角形星图识别方法是一种比较简单实用的星图识别方法,在实际工程中得到了广泛的应用。但是,传统的三角形星图识别方法存在计算量大,冗余匹配多,对噪声的鲁棒性差等缺点,而且不具备伪星剔除能力。所谓的伪星是指非恒星目标,比如人造卫星、行星、空间碎片等。
现有的专利,比如“一种基于三角形特征的星图识别方法”(发明公开号CN1796938A)。该方法不需要精确的亮度信息,而且将三角形的存储改进为角距的存储,大幅度节约了存储空间,而具有较强的容错能力,很快的搜索识别速度,但是其结果的验证需要根据初始姿态仿真生成星图,占用的资源与时间较多,实时使用难度大。针对验证问题,“快速三角形星图识别方法”(公开号CN101441082A)引入了验证环节,在三角形识别成功后,在视场内选取三角形外的一颗亮星,与三角形构成辐射状星图,在候选导航三角形存在冗余时可以用于减少冗余,在没有冗余时可以用于验证三角形识别是否正确。该专利一定程度解决了验证的问题,但是当阈值范围较大时,采用4颗星匹配依然有冗余问题存在。而且增加验证星后,计算量显著增多,限制了使用更多星来进一步剔除冗余。此外,现有算法通常未考虑伪星的情况,不具备自动的伪星剔除能力。
综上,现有的三角形匹配算法的主要问题是
1)如果视场中有伪星,即星表以外的星点(比如行星或者人造卫星、空间碎片)出现,算法难以实现伪星的剔除。
2)无论是基于遍历比对还是基于状态标识的三角形匹配,识别速度都有较大改进空间。
3)当误差阈值范围较大时,采用3个点的三角形匹配出现冗余匹配的概率大。
4)如果在三角形外增加验证星,计算量会大幅度增加,限制了验证星的数量。
发明内容
本发明要解决的技术问题是:克服现有技术的不足,提供一种能够剔除伪星干扰,提高三角形匹配速度,减小冗余匹配概率的星图识别方法。
本发明的技术方案是:
一种基于三角形匹配的星图识别方法,步骤如下:
(1)拍摄星图,通过图像识别找出最亮的N个星点,并确定每个星点在图中的位置;
(2)按排列组合的方式从所述N个星点中任意选出N1个星点,共计P种组合;
(3)在所述P种组合中选择一种组合,在该组合中的N1个星点中进行三角形选择,并对星点进行编号;
(4)对编号为1~3的三个星点进行三角形匹配,如果匹配成功,则得到星点1~3在星表中的K组星号,进入步骤(5);如果匹配失败,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(5)利用星点4对星点1~3的K组星号进行验证,如果验证成功,则进入步骤(6),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(6)利用星点5对星点1~4的Q组星号进行验证,如果验证成功,则进入步骤(7),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(7)按照步骤(5)和步骤(6),以此类推,完成利用星点N1对星点1~N1-1的星号进行验证,如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;如果验证成功且仅剩下一组星号,则得到星点1~N1的识别结果,完成星图识别。
所述步骤(3)三角形选择具体为:
(3.1)从该组合中的N1个点中任选出3个星点形成三角形;
(3.2)计算任选出的3个星点形成的三角形的3个角距;
(3.3)将所述3个角距进行排序,去掉最大的角距值,计算剩下的两个角距的乘积;
(3.4)重复步骤(3.1)~(3.3),对所有形成的三角形进行上述计算,对得到的所有角距乘积进行排序,找出最小的角距乘积,与该乘积对应的三角形为选出的三角形,该三角形中最大角距对应的两个星点分别编号为2和3,剩下的星点编号为1;
(3.5)当前组合中剩下的星点编号依次为4~N1。
所述三角形匹配具体为:
(4.1)根据星点1与2的角距ang12以及星点1与3的角距ang13,在角距库中搜索出与之对应的匹配子集C12,C13;
(4.2)比对匹配子集C12与C13中的星号是否存在相同,且存在相同星号两行数据的另外两个星号不同,如果满足要求,则满足要求的组数为M组,每组中,相同的星号为星点1的星号,另外两个为2与3的星号,如果不满足要求,则匹配失败;
(4.3)验证M组的每组中,星点2与星点3的相对角距误差是否在阈值范围内,如果是,则匹配成功,则得到星点1~3在星表中的K组星号;如果所有M组中星点2与星点3的相对偏差均不在阈值范围内,则匹配失败,K≤M。
所述步骤(4.1)在角距库中搜索出与之对应的匹配子集C12,C13,具体为:
根据angmn值,在角距库中搜索所有满足下列公式的角距对,
其中angmn为标号为m,n的星点的测量角距值,θi为角距库中第i行的角距值,第i行中的两个星号即为匹配子集Cmn的一行数据,ε为相对误差容限,与相机测角误差匹配,取0.5%-2%。
星点2与星点3的角距相对误差T
23通过公式
计算得到,其中,ang
23为编号2,3的星点的测量角距值,d
23为理论角距值,d
23的计算公式为:
cos(d23)=sin(la2)sin(la3)+cos(la2)cos(la3)cos(lo2-lo3);
其中,lo2与la2分别为星点2的赤经值和赤纬值,lo3与la3分别为星点3的赤经值和赤纬值,所述阈值为相对误差容限ε,取0.5%-2%。
所述星表具体为:星表内容为一矩阵,行数为总的导航星点数量,列数为3,每列数据依次为星号、该星的赤经值与赤纬值,矩阵中的数据从上往下按照星号的大小排序,星表通过扫描筛选常用天文星表生成。
星表扫描筛选常用天文星表的原则为亮度裁剪,即留下的星的视星等小于预设阈值,该阈值与星图拍摄相机性能匹配。
所述角距库具体为:角距库内容为一矩阵,行数为角距对的数量,列数为3,每列数据依次为星对角距、该星对中一个星在星表中的编号以及另一个星在星表中的编号;角距库由星表生成,覆盖星图视场内所有的角距值,角距库数据按照角距大小排序。
所述步骤(5)利用星点4对星点1~3的K组星号进行验证,具体为:
(5.1)根据星点1和4的角距ang14,从角距库中搜索出与角距ang14匹配的星对,记为集合C14,
所述集合C14为一矩阵,行数为角距ang14匹配成功的星对数,列数为2,内容为匹配星对的两个星号;
(5.2)查询K组星号中的一组星点1的星号是否与集合C14中的星号重合,如果是,则集合中有重合星号的行中的另一个数为星点4在星库中的星号,将星点4的星号补入当前组中,如果不是,则该组星号被去除,重复本步骤,直至完成所有K组星号的查询,剩下K1组星号,每组4个星号,对应星点1~4,进入步骤(5.3);如果所有K组星号都不满足,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(5.3)分别计算K1组中的一组星点4与星点2、星点4与星点3之间的相对角距误差Tmn;
(5.4)判断Tmn≤ε是否成立,ε为相对误差容限,取0.5%-2%,如果成立,则验证成功,完成数据记录,进入步骤(5.5);如果不成立,则剔除当前组星号数据,进入步骤(5.5)
(5.5)重复步骤(5.3)~(5.4),直至完成所有K1组星号数据的判断,如果没有一组数据验证成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
通过公式
计算相对角距误差T
mn,其中,ang
mn为编号m,n的星点的测量角距值,d
mn为理论角距值,d
mn的计算公式为:
cos(dmn)=sin(lam)sin(lan)+cos(lam)cos(lan)cos(lom-lon);
其中,lom与lam分别为星点m的赤经值和赤纬值,lon与lan分别为星点n的赤经值和赤纬值。
所述步骤(6)利用星点5对星点1~4的Q组星号进行验证,具体为:
(6.1)根据星点1和5的角距ang15,从角距库中搜索出与角距ang15匹配的星对,记为集合C15;
所述集合C15为一矩阵,行数为角距ang15匹配成功的星对数,列数为2,内容为匹配星对的两个星号;
(6.2)查询Q组星号中的一组星点1的星号是否与集合C15中的星号重合,如果是,则集合中有重合星号的行中的另一个数为星点5在星库中的星号,将星点5的星号补入当前组中,如果不是,则该组星号被去除,重复本步骤,直至完成所有Q组星号的查询,剩下Q1组星号,每组5个星号,对应星点1~5,进入步骤(6.3);如果所有Q组星号都不满足,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(6.3)分别计算Q1组中的一组星点5与星点2、星点5与星点3、星点5与星点4之间的相对角距误差Tmn;
通过公式
计算相对角距误差T
mn,其中,ang
mn为编号m,n的星点的测量角距值,d
mn为理论角距值,d
mn的计算公式为:
cos(dmn)=sin(lam)sin(lan)+cos(lam)cos(lan)cos(lom-lon);
其中,lom与lam分别为星点m的赤经值和赤纬值,lon与lan分别为星点n的赤经值和赤纬值;
(6.4)判断Tmn≤ε是否成立,ε为相对误差容限,取0.5%-2%,如果成立,则验证成功,完成数据记录,进入步骤(6.5);如果不成立,则剔除当前组星号数据,进入步骤(6.5);
(6.5)重复步骤(6.3)~(6.4),直至完成所有Q1组星号数据的判断,如果没有一组数据验证成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
N为正整数且取值范围为7~9,N1=N-2。
一种基于三角形匹配的星图识别装置,包括:相机和处理器,相机用于拍摄星图,处理器按照所述方法对所述相机拍摄的星图进行星图识别。
一种基于三角形匹配的星图识别系统,包括:
拍摄模块:用于拍摄星图,通过图像识别找出最亮的N个星点,并确定每个星点在图中的位置;
组合选取模块:用于按排列组合的方式从N个星点中任意选出N1个星点,共计P种组合;
星图识别模块:用于根据组合选取模块选出的星点组合,进行星图识别处理,完成星图的识别。
星图识别模块进行星图识别处理,完成星图的识别,具体通过如下方式进行:
(1)在所述P种组合中选择一种组合,在该组合中的N1个星点中进行三角形选择,并对星点进行编号;
(2)对编号为1~3的三个星点进行三角形匹配,如果匹配成功,则得到星点1~3在星表中的K组星号,进入步骤(3);如果匹配失败,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(3)利用星点4对星点1~3的K组星号进行验证,如果验证成功,则进入步骤(4),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(4)利用星点5对星点1~4的Q组星号进行验证,如果验证成功,则进入步骤(5),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(5)按照步骤(3)和步骤(4),以此类推,完成利用星点N1对星点1~N1-1的星号进行验证,如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;如果验证成功且仅剩下一组星号,则得到星点1~N1的识别结果,完成星图识别。
本发明与现有技术相比的优点在于:
本发明与现有技术相比的优点在于:
(1)由于人造天体比如卫星、空间碎片数量的增多,星图中难免会出现伪星,而伪星在星库中没有记录,导致传统的匹配识别方法失败。由于采用选取部分星点进行匹配的方法,如果匹配失败,则重新选取星点,可以避免伪星的影响,即使星图中有1-2颗伪星,最后依然能够输出正确结果。
(2)采用5-7个星点进行匹配,在误差容限较大的情况下依然能够大幅度降低冗余匹配,提高匹配成功的正确概率,可减少验证环节。此外,采用5-7个星点,可以提高定姿精度。
(3)采用角距(边)对角距(边)匹配即得到三角形的星号,再根据星号对应的赤经赤纬计算得到理论的角距值,通过比对理论角距值与实测值,完成三角形三点的识别。该方法将传统的“边-边-边”模式改为了“边-边”模式,可减少一次根据角距搜索角距对的操作;通过比对理论角距与实测值替代三角形星号首尾相接的确认工作,可提高三角形匹配算法的匹配速度。因为根据2个边匹配找出的三角形个数要远小于与一个边匹配的星对数量,而且首尾相接的工作存在循环比对的问题。传统的方法为三次搜索加三次扫描比对完成三角形识别,本发明为两次搜索,二次扫描比对完成三角形初步识别,再对识别结果进行一次角度相对误差验证完成最终识别。
(4)采用与角距成比例的自适应误差容限,将传统的绝对误差阈值改为相对误差阈值,使得小角距对应小的误差容限,可提高匹配速度,再配合三角形角距乘积的排序选择方法,可进一步加快了匹配速度。
(5)针对已有方法增加星点对识别结果进行验证将显著增加计算量的问题,本发明每增加一颗,只增加1次根据角距搜索星对集合的计算,1次根据已有星的识别结果对集合进行扫描比对,完成对新增星的识别,1次识别后再与其余星点进行相对角距验证,计算量的增加较少。本发明的特点是利用了星表的赤经赤纬信息参与星点的验证。传统方法利用所有角距完成星对的搜索,再根据星点的几何逻辑关系完成验证。用第4去验证前3颗,计算量大约增加一倍(因为角距数增加一倍,4颗的角距数为
3颗的为
),用第5颗去验证前4颗,计算量大约是4颗星的1.7倍,是3颗星的3.3倍。本发明对6颗星的识别一共需进行6次角距的搜索和扫描,与传统方法对4颗星进行识别计算量相当。
附图说明
图1本发明方法星图识别流程图;
图2本发明三角形匹配流程图;
图3本发明对星点进行验证的流程图;
图4本发明实施例拍摄的星图与根据识别结果生成的星库图的对比图,其中,图4(a)是拍摄的星图,只显示了最亮的20个星点,且星点的大小和强度均做了增强处理,便于观察,图4(b)是根据识别结果生成的星库图,图中的数字1~6为进行星点识别的6颗星的编号。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细说明。
如图1所示,本发明提出了一种基于三角形匹配的星图识别方法,步骤如下:
(1)拍摄星图,通过图像识别找出最亮的N个星点,并确定每个星点在图中的位置,N为正整数且取值范围为7~9。
(2)按排列组合的方式从所述N个星点中任意选出N1=N-2个星点,共计P种组合。
N1比N小2,则最多可以规避N中的2颗伪星。N1值既不能太小也不能太大,太小则定姿精度较低,但太大对定姿精度提高帮助不大,而且视场中具备N1颗星的概率会大幅度下降。N1取5-7比较合适,既有较高精度,又容易保证视场内具备5-7颗以上星的概率。
(3)在所述P种组合中选择一种组合,在该组合中的N1个星点中进行三角形选择,并对星点进行编号。
三角形选择具体为:
(3.1)从该组合中的N1个点中任选出3个星点形成三角形。
(3.2)计算任选出的3个星点形成的三角形的3个角距。
(3.3)将所述3个角距进行排序,去掉最大的角距值,计算剩下的两个角距的乘积.
之所以是两个角距的乘积而不是三个,与后面的三角形匹配方法(步骤4)是对应的,即只用两个角距即完成三角形的初匹配。
(3.4)重复步骤(3.1)~(3.3),对所有形成的三角形进行上述计算,对得到的所有角距乘积进行排序,找出最小的角距乘积,与该乘积对应的三角形为选出的三角形,该三角形中最大角距对应的两个星点分别编号为2和3,剩下的星点编号为1。
(3.5)当前组合中剩下的星点编号依次为4~N1。
(4)对编号为1~3的三个星点进行三角形匹配,如果匹配成功,则得到星点1~3在星表中的K组星号,进入步骤(5);如果匹配失败,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
如图2所示,三角形匹配具体为:
(4.1)根据星点1与2的角距ang12以及星点1与3的角距ang13,在角距库中搜索出与之对应的匹配子集C12,C13。
所述步骤(4.1)在角距库中搜索出与之对应的匹配子集C12,C13,具体为:
根据angmn值,在角距库中搜索所有满足下列公式的角距对,
其中angmn为标号为m,n的星点的测量角距值,θi为角距库中第i行的角距值,第i行中的两个星号即为匹配子集Cmn的一行数据,ε为相对误差容限,取0.5%-2%,具体取值与相机的测角误差相关,需适当大于测角误差,而测角误差主要与拍摄相机镜头的畸变相关,同时与相机的工作环境温度相关。
采用相对误差取代传统的绝对误差,更加符合角距测量误差的特点。此外,采用相对误差容限取代绝对误差,还可以加快搜索速度,特别是对小角度的搜索,因为小角度对应小的绝对误差阈值。
(4.2)比对匹配子集C12与C13中的星号是否存在相同,且存在相同星号两行数据的另外两个星号不同,如果满足要求,则满足要求的组数为M组,每组中,相同的星号为星点1的星号,另外两个为2与3的星号,如果不满足要求,则匹配失败。
(4.3)验证M组的每组中,星点2与星点3的相对角距误差是否在阈值范围内,如果是,则匹配成功,则得到星点1~3在星表中的K组星号;如果所有M组中星点2与星点3的相对偏差均不在阈值范围内,则匹配失败,K≤M。
星点2与星点3的相对角距误差T
23通过公式
计算得到,其中,ang
23为编号2,3的星点的测量角距值,d
23为理论角距值,d
23的计算公式为:
cos(d23)=sin(la2)sin(la3)+cos(la2)cos(la3)cos(lo2-lo3);
其中,lo2与la2分别为星点2的赤经值和赤纬值,lo3与la3分别为星点3的赤经值和赤纬值,所述阈值为相对误差容限ε,取0.5%-2%。
传统的三角形匹配方法,比如发明“一种基于三角形特征的星图识别方法”(发明公开号CN 1796938A)、“快速三角形星图识别方法”(公开号CN101441082A),需要根据三角形的三个角距搜索出3个匹配子集,然后进行3次扫描处理工作,进行三角形的3点首尾确认,完成匹配。
本发明采用两个角距找出公共的星点1以及另外两个星点2与3,可减少一次匹配子集的搜索工作。利用2、3的测量角距ang23与根据星表赤经赤纬计算得到的理论值进行比较的方法完成三角形验证,可减少比对操作次数。因为根据2个匹配子集C12,C13匹配找出的三角形数要远小于匹配子集C23的数量。
本发明与传统根据角距找星对,再根据星对找首尾相接的三角形识别方法相同之处在于都需要先根据两个角距找星对,再在两个星对中找出相同的点,完成三角形的初步识别。不同之处在于第三个角距的确认方法上。传统方法需要根据第三个角距找星对,该星对再和初步识别结果进行比对,找出星号一致的点,实现识别。本发明则根据初步识别结果对应的赤经赤纬计算得到理论的角距值,通过比对理论角距值与实测值,完成三角形三点的识别。
所述星表具体为:星表内容为一矩阵,行数为总的导航星点数量,列数为3,每列数据依次为星号、该星的赤经值与赤纬值,矩阵中的数据从上往下按照星号的大小排序,星表通过扫描筛选常用天文星表生成。
星表扫描筛选常用天文星表的原则为亮度裁剪,即留下的星的视星等小于预设阈值,该阈值与星图拍摄相机性能匹配。该值确定的依据是保证视场内的星点数大于N颗的概率满足要求。
所述角距库具体为:角距库内容为一矩阵,行数为角距对的数量,列数为3,每列数据依次为星对角距、该星对中一个星在星表中的编号以及另一个星在星表中的编号;角距库由星表生成,覆盖星图视场内所有的角距值,角距库数据按照角距大小排序。
(5)利用星点4对星点1~3的K组星号进行验证,如果验证成功,则进入步骤(6),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(5.1)根据星点1和4的角距ang14,从角距库中搜索出与角距ang14匹配的星对,记为集合C14。
所述集合C14为一矩阵,行数为角距ang14匹配成功的星对数,列数为2,内容为匹配星对的两个星号。
(5.2)查询K组星号中的一组星点1的星号是否与集合C14中的星号重合,如果是,则集合中有重合星号的行中的另一个数为星点4在星库中的星号,将星点4的星号补入当前组中,如果不是,则该组星号被去除,重复本步骤,直至完成所有K组星号的查询,剩下K1组星号,每组4个星号,对应星点1~4,进入步骤(5.3);如果所有K组星号都不满足,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
(5.3)分别计算K1组中的一组星点4与星点2、星点4与星点3之间的相对角距误差Tmn。
通过公式
计算相对角距误差T
mn,其中,ang
mn为编号m,n的星点的测量角距值,d
mn为理论角距值,d
mn的计算公式为:
cos(dmn)=sin(lam)sin(lan)+cos(lam)cos(lan)cos(lom-lon);
其中,lom与lam分别为星点m的赤经值和赤纬值,lon与lan分别为星点n的赤经值和赤纬值。
(5.4)判断Tmn≤ε是否成立,ε为相对误差容限,取0.5%-2%,如果成立,则验证成功,完成数据记录,进入步骤(5.5);如果不成立,则剔除当前组星号数据,进入步骤(5.5)。
(5.5)重复步骤(5.3)~(5.4),直至完成所有K1组星号数据的判断,如果没有一组数据验证成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
如图3所示为利用星点n+1验证星点1~n的一组识别结果的流程图。当n为3时,即为利用星点4对星点1~3的1组星号进行验证的流程。
(6)利用星点5对星点1~4的Q组星号进行验证,如果验证成功,则进入步骤(7),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
利用星点5对星点1~4的Q组星号进行验证,具体为:
(6.1)根据星点1和5的角距ang15,从角距库中搜索出与角距ang15匹配的星对,记为集合C15,
所述集合C15为一矩阵,行数为角距ang15匹配成功的星对数,列数为2,内容为匹配星对的两个星号;
(6.2)查询Q组星号中的一组星点1的星号是否与集合C15中的星号重合,如果是,则集合中有重合星号的行中的另一个数为星点5在星库中的星号,将星点5的星号补入当前组中,如果不是,则该组星号被去除,重复本步骤,直至完成所有Q组星号的查询,剩下Q1组星号,每组5个星号,对应星点1~5,进入步骤(6.3);如果所有Q组星号都不满足,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;
(6.3)分别计算Q1组中的一组星点5与星点2、星点5与星点3、星点5与星点4之间的相对角距误差Tmn;
通过公式
计算相对角距误差T
mn,其中,ang
mn为编号m,n的星点的测量角距值,d
mn为理论角距值,d
mn的计算公式为:
cos(dmn)=sin(lam)sin(lan)+cos(lam)cos(lan)cos(lom-lon);
其中,lom与lam分别为星点m的赤经值和赤纬值,lon与lan分别为星点n的赤经值和赤纬值;
(6.4)判断Tmn≤ε是否成立,ε为相对误差容限,取0.5%-2%,如果成立,则验证成功,完成数据记录,进入步骤(6.5);如果不成立,则剔除当前组星号数据,进入步骤(6.5)
(6.5)重复步骤(6.3)~(6.4),直至完成所有Q1组星号数据的判断,如果没有一组数据验证成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图。
本发明每增加一颗,只增加1次根据角距搜索星对集合的计算,1次根据已有星的识别结果对集合进行扫描比对,完成对新增星的识别,1次识别后再与其余星点进行相对角距验证,计算量的增加量基本固定,与被验证星点数基本无关。传统方法,用第4去验证前3颗,计算量大约增加一倍(因为角距数增加一倍,4颗的角距数为
3颗的为
),用第5颗去验证前4颗,计算量大约是4颗星的1.7倍,是3颗星的3.3倍。
(7)按照步骤(5)和步骤(6),以此类推,完成利用星点N1对星点1~N1-1的星号进行验证,如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(3);如果已经遍历,则返回步骤(1)重新拍摄星图;如果验证成功且仅剩下一组星号,则得到星点1~N1的识别结果,完成星图识别。
基于上述星图识别方法,本发明还提出了一种基于三角形匹配的星图识别装置,包括:相机和处理器,相机用于拍摄星图,处理器中按照所述星图识别方法对所述相机拍摄的星图进行星图识别。
本发明还提出了一种基于三角形匹配的星图识别装置和一种基于三角形匹配的星图识别系统,装置包括:相机和处理器,相机用于拍摄星图,处理器按照上述方法对所述相机拍摄的星图进行星图识别。
系统包括:
拍摄模块:用于拍摄星图,通过图像识别找出最亮的N个星点,并确定每个星点在图中的位置;
组合选取模块:用于按排列组合的方式从N个星点中任意选出N1个星点,共计P种组合;
星图识别模块:用于根据组合选取模块选出的星点组合,进行星图识别处理,完成星图的识别。
星图识别模块进行星图识别处理,完成星图的识别,具体通过如下方式进行:
(1)在所述P种组合中选择一种组合,在该组合中的N1个星点中进行三角形选择,并对星点进行编号;
(2)对编号为1~3的三个星点进行三角形匹配,如果匹配成功,则得到星点1~3在星表中的K组星号,进入步骤(3);如果匹配失败,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(3)利用星点4对星点1~3的K组星号进行验证,如果验证成功,则进入步骤(4),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(4)利用星点5对星点1~4的Q组星号进行验证,如果验证成功,则进入步骤(5),如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;
(5)按照步骤(3)和步骤(4),以此类推,完成利用星点N1对星点1~N1-1的星号进行验证,如果不成功,则判断所述P种组合是否已经遍历,如果没有遍历,则在所述P种组合中重新选择一种组合,执行步骤(1);如果已经遍历,则重新拍摄星图;如果验证成功且仅剩下一组星号,则得到星点1~N1的识别结果,完成星图识别。
实施例:
针对空间飞行器自主定姿的需求,研制了一基于三角形匹配的星图识别装置,该装置完成星图拍摄与星图识别,最终给出了星图的识别结果,即建立了星图中的星点与星库中的星号一一对应关系,从而可以得到每个星点的赤经赤纬值,供后续姿态解算系统进行定姿解算。
该装置的相机视场15°×15°,焦距18.8mm,探测器规模为496×496,像素尺寸为10μm,对6等星的探测性噪比为8,镜头畸变小于1%,ε取1.5%。利用该装置进行星图识别处理具体流程如下:
(1)在北京市延庆郊区用相机垂直地面对星空进行星图拍摄,获得的星图如图4(a)所示,图中为了显示效果,对星点的强度和大小进行了增强。通过图像处理的方法在图中找出最亮的8个星点,其在图中的坐标如表1所示,图中左上角第一个像素坐标为(1,1),右下角为(496,496)。
表1拍摄星图中最亮8颗星的星点坐标
编号 |
横坐标 |
纵坐标 |
1 |
129.99 |
307.88 |
2 |
435.59 |
239.80 |
3 |
468.13 |
304.67 |
4 |
403.51 |
114.41 |
5 |
268.13 |
31.01 |
6 |
202.66 |
218.17 |
7 |
200.92 |
45.20 |
8 |
235.00 |
28.06 |
(2)按排列组合的方式从所述8个星点中任意选出6个星点,共计28种组合。
(3)在所述28种组合中选择一种组合,在该组合中的6个星点中进行三角形选择,并对星点进行编号。首先进行处理的组合为表1中的前6点组合。按照三角形选择的步骤得到的三角形为表1中的2、3、4构成的三角形,重新标号后的星点及其坐标如表2所示,其星点在图中的位置如图4(a)所示。
表2重新编号后的星点及其坐标
编号 |
横坐标 |
纵坐标 |
1 |
435.59 |
239.80 |
2 |
468.13 |
304.67 |
3 |
403.51 |
114.41 |
4 |
129.99 |
307.88 |
5 |
268.13 |
31.01 |
6 |
202.66 |
218.17 |
(4)对表2中编号为1~3的三个星点进行三角形匹配,共得到36组识别结果。具体过程为
(4.1)根据角距ang12=2.18°以及星点1与3的角距ang13=3.90°,在角距库中搜索出与之对应的匹配子集C12,C13。
角距库的部分数据如表3所示,数据共有30多万行,角距值上限为21°。第一列为角距值,单位为度,第二三列与该角距值对应的星号,角距库由星表生成。
表3角距库部分数据
星表通过6Mv裁剪扫描筛选Sky2000原始星表得到,共得到5007颗星。星表前9行数据如表4所示,第一列为星号,第二列为赤经,第三列为赤纬,赤经赤纬的单位为弧度。由星号可以通过星表得到该星的赤经赤纬值。
表4星表库前9行数据
星号 |
赤经(弧度) |
赤纬(弧度) |
1 |
0.099579 |
26.918047 |
2 |
0.128846 |
59.559683 |
3 |
0.182125 |
45.253481 |
4 |
0.219758 |
66.847983 |
5 |
0.269542 |
-48.809906 |
6 |
0.330279 |
49.981608 |
7 |
0.334296 |
-50.337264 |
8 |
0.390183 |
44.675439 |
9 |
0.396383 |
28.423658 |
C12共有307行数据,C13共有988行数据。C12与C13的部分数据如表5所示。
表5C12与C13部分数据
(4.2)比对C12与C13中的星号,共有283种组合匹配。其中一种匹配为表3中的C12第二行数据与C13的第3行数据,有共同星号2115。
(4.3)验证283组中,星点2与星点3的相对角距误差是否在阈值范围内,通过验证的有36组,部分数据见表6.
表6三角形识别结果部分数据
星点1 |
星点2 |
星点3 |
1773 |
1807 |
1700 |
4315 |
4292 |
4349 |
1925 |
1905 |
1957 |
2007 |
1983 |
2061 |
937 |
909 |
998 |
816 |
846 |
758 |
2067 |
2089 |
2010 |
4673 |
4695 |
4671 |
1292 |
1321 |
1234 |
1912 |
1858 |
2021 |
(5)利用星点4对星点1~3的36组星号进行验证,只有一组通过验证,得到星点1~4的星号为553、545、555、725。
(5.1)根据星点1和4的角距ang14=9.46°,从角距库中搜索出与角距ang14匹配的星对,记为集合C14,共有5638行数据。
(5.2)查询36组中的星号1是否出现在C14中,共得到100组结果,部分结果如表7所示。
表7星点1~4初步识别结果
星点1 |
星点2 |
星点3 |
星点4 |
2496 |
2465 |
2526 |
2658 |
2496 |
2465 |
2526 |
2735 |
2496 |
2465 |
2526 |
2534 |
2496 |
2465 |
2526 |
2737 |
244 |
232 |
281 |
1565 |
244 |
232 |
281 |
313 |
3647 |
3644 |
3676 |
3776 |
3647 |
3644 |
3676 |
2580 |
545 |
553 |
522 |
567 |
545 |
553 |
522 |
3055 |
553 |
545 |
555 |
616 |
(5.3)计算星点4与星点2、星点4与星点3之间的相对角距误差。
(5.4)判断所有相对角距误差是否小于1.5%,只有1组数据通过。
(6)利用星点5对星点1~4的1组星号进行验证,结果通过,得到星点1~5的星号为553、545、555、725、625。
(6.1)根据星点1和4的角距ang15=8.07°,从角距库中搜索出与角距ang15匹配的星对,记为集合C15,共有4119行数据。
(6.2)查询步骤(5)的1组结果中的星号1,即553,是否出现在C15中,共得到4组结果,如表8所示。
表8星点1~5初步识别结果
(6.3)计算星点5与星点2、星点5与星点3、星点5与星点4之间的相对角距误差。
(6.4)判断所有相对角距误差是否小于1.5%,只有1组数据通过。
(7)利用星点6对星点1~5的1组星号进行验证,结果通过,得到星点1~6的星号为553、545、555、725、625、671,对应的赤经赤纬值如表9所示,输出结果,完成识别。
表9星点识别结果
星点 |
赤经 |
赤纬 |
1 |
47.0422 |
40.9556 |
2 |
46.2941 |
38.8403 |
3 |
47.3740 |
44.8575 |
4 |
59.4635 |
40.0102 |
5 |
52.6437 |
47.9952 |
6 |
56.2985 |
42.5785 |
根据识别结果,通过姿态解算可以得到光轴的方向为赤纬54.5°、赤经41.5°,旋转-174.1°,再利用星库及视场仿真生成了该视场的理论星图,如图4(b)所示。对比图4(a)与4(b),可证明识别结果正确。此外根据拍摄时间将赤经赤纬转换得到的地理经纬度与星图拍摄地地理纬度吻合,进一步确认了识别的正确性。
关于计算时间,当算法语言为MALTAB、运行环境为普通PC、CPU性能指标为3.4GHz时,完成步骤(4),即三角形匹配的计算时间为16.6ms;完成步骤(5),即用第4个点确认前3点的时间为33.1ms,此处时间较多的原因是步骤(4)的识别结果有36组,根据ang14得到的星对有5638组,两者都较大,此外,确认相对角距需要计算2次角距值,增加了计算量;完成步骤(6),即用第5点确认前4点的时间为0.8ms;完成步骤(7),即利用第6点确认前5点的时间为1.7ms。
更改相对误差容限大小,相应的计算时间都会变化,相对误差容限越小,时间越短。当相对误差容限取1%时,上述时间依次为7.1ms、10.3ms、0.6ms、0.9ms,总体识别时间小于20ms。
对ang12=2.18°、ang13=3.90°、ang23=6.05°,构成的三角形进行了识别,比较了本方法与传统方法在第三个角距的确认上的计算时间,其中相对误差容限取1.5%。本方法的程序计算时间为6ms,传统方法为100ms,速度优势明显。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。