星图识别题目及算法实现——数学建模(十六)

天文导航中的星图识别
天体导航是基于已知的天体的坐标位置和运动规律。利用观测天体的天文坐标值确定导航体的空间位置等导航参数。与其他导航技术相比,天文导航是一种自主导航,不需要地面设备,不受人工或天然电磁场的干扰,不向外界辐射能量,隐蔽性好,固定姿态、方位、定位精度高。它的定位误差与时间无关。天体导航已广泛应用于卫星、航天飞机、远程弹道导弹等航天器。
星敏感器是导航体自主姿态测量的核心部件。它是通过对空间中的恒星进行观测来实现高精度的姿态测量。恒星是天文导航中最重要的天体类型。在天文导航中,恒星可以看作是具有一定光谱特征的理想点源,它位于无穷远处,几乎是静止的。
在天体坐标系中,赤经和赤纬可以用来描述某一时刻恒星的位置信息。恒星在天球上的投影点称为恒星的位置。根据不同的需要编制的天空中恒星的相关数据表称为星表。星表是星图识别的主要依据,也是确定姿态的基准。常用的星表通常包含丰富的信息,如恒星的位置、自运动、星等(亮度)、颜色、距离等。对于天文导航,感兴趣的信息主要是恒星的位置和星等。附件1提供了一个简单的星表,其中提供了一些恒星在天体坐标系中的位置信息(以赤经、赤纬、单位:角度为标志)和星等。
全天自主星图识别是星敏感器技术中的一项关键技术。星图识别是将星敏感器当前视场中的星(星图)与导航星库中的参考星进行匹配。星图识别一般包括图像采集和预处理、特征提取、匹配识别等过程。
图像预处理包括噪声去除和星点形心提取。为了简化,目前没有考虑去除噪声和提取质心的具体问题,认为所讨论的星图图像已经完成了图像预处理。
一种简单的星表,利用其位置(赤经、赤纬)和亮度信息,从基本星表中选择具有一定亮度范围的导航星。除了导航星表外,星敏感器还需要根据特征提取算法构造导航星的特征向量,存储由特征向量组成的导航星特征数据库。
提取出观测星的特征后,可以找到特征相似的导航星。如果你发现一个导航星的特征是唯一接近的,你可以认为这两个是匹配的。匹配识别过程与特征提取方法密切相关。后续的导航体定位和姿态确定问题将不予考虑。
在星图识别的相关工作中,需要天体坐标系、星敏感器坐标系、星敏感器图像坐标系。其简单定义为:
(1)天体坐标系。以天赤道为基圆,以春分时圆为主圆,以春分点为主点。天体坐标系以赤经和赤纬为坐标量。

图1星敏感器坐标系、图像坐标系和前视投影成像示意图
(2)星敏感器坐标系。投影中心的光轴上的感光表面的距离,也就是说,光学中心,见图1)是原点的坐标,与光轴asaxis(稍后讨论,光轴交点与天球记录点),接管一行点两边平行的光敏面轴和轴。图1为星敏感器坐标系、图像坐标系和前视投影图像的示意图。
(3)图像坐标系。光敏面中心(点在平面上的投影点)为坐标原点,平行于光敏面两侧的直线为轴和轴。参见图1。
请使用附件1中提供的相关资料和数据,对以下问题进行建模和分析:
已知的三颗恒星的位置,即它们在天体坐标系中的赤经和赤纬是已知的;,为来自恒星的平行光的星像质心的中心,由星敏感表面上的星敏感光学系统成像(见图1);表示,。
(1)建立了用参数、、等方法计算天体坐标系中点位置信息的数学模型,并给出了具体的求解算法。
(2)若不使用数值信息,通过参数等方法建立了计算天体坐标系中点位置信息的数学模型,并给出了具体的求解算法。
(3)一般来说,星敏感器的视场中有3颗以上的星。讨论如何在不同几何位置上选取三颗星,以提高点在天体坐标系中位置信息求解的准确性,并分析相应的误差。
(4)当星敏感器视场中有超过3颗星时,请讨论用于定位的星数及星间几何位置是否影响定位精度。
(5)分析星图识别是否存在更好的特征,提高星图识别算法的实时性,降低误匹配率。请构建相应的特征提取模型,设计相应的星图识别算法,确定附件2给出的四幅星图中每幅星图对应的星号。
附件1简单星表
附件2 4星图相关数据

参考算法,可见:
天文导航中星图识别算法

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
栅格算法(Rasterization Algorithm)是星图识别中的一种常用算法,它将天空分割成一个个小的栅格,并通过对每个栅格进行处理来识别星体。下面是栅格算法的伪代码实现: ``` 1. 初始化栅格大小和位置 2. 读入星图图像,并将其转化为灰度图 3. 对于每个栅格 4. 计算栅格中所有像素的平均灰度值 5. 如果平均灰度值超过设定阈值,则认为该栅格中有亮点,否则认为没有亮点 6. 输出所有含有亮点的栅格的中心坐标 ``` 下面是栅格算法的 Python 实现代码: ```python import numpy as np from PIL import Image # 初始化栅格大小和位置 GRID_SIZE = 10 GRID_STEP = 5 # 读入星图图像,并将其转化为灰度图 img = Image.open('star_map.jpg').convert('L') width, height = img.size # 计算栅格数量 grid_num_x = (width - GRID_SIZE) // GRID_STEP + 1 grid_num_y = (height - GRID_SIZE) // GRID_STEP + 1 # 对于每个栅格 for i in range(grid_num_y): for j in range(grid_num_x): # 计算栅格中所有像素的平均灰度值 x = j * GRID_STEP y = i * GRID_STEP grid = img.crop((x, y, x + GRID_SIZE, y + GRID_SIZE)) mean = np.mean(grid) # 如果平均灰度值超过设定阈值,则认为该栅格中有亮点,否则认为没有亮点 threshold = 150 if mean > threshold: # 输出所有含有亮点的栅格的中心坐标 print('Star found at ({}, {})'.format(x + GRID_SIZE // 2, y + GRID_SIZE // 2)) ``` 注意,这只是栅格算法的简单实现,实际中还需要考虑一些优化,例如栅格大小和步长的选择、阈值的调整等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值