盛琳阳,周国辉,崔元全,赵 巍,赵国生,李丽萍
(哈尔滨师范大学)
基于单片FPGA的星提取星识别图像处理IP核研究*
盛琳阳,周国辉,崔元全,赵 巍,赵国生,李丽萍
(哈尔滨师范大学)
给出了一种星敏感器星提取和星识别算法的并行处理方案,设计了在一片FPGA芯片上实现星点提取和星识别功能的IP核.该IP核有利于提高星敏感器星图处理的数据更新率及可靠性,降低系统功耗,缩小系统体积.
FPGA;IP核;星敏感器
星敏感器是天文导航系统的主要设备,是一种高精度、高可靠性的姿态测量部件.星点提取和星识别是其关键的技术[1-2].近年来在星提取和星识别算法效率方面有了长足的进步,但是在算法设计和实现上却存在着忽视星提取和星识别的内在联系,对这两个部分的并行处理机制的研究不够深入的问题.由于应用领域的限制,在星提取和星识别的硬件实现方面具有一定的不足,落后于当前高速发展的、已经成熟了的电子技术.星点提取和星识别尽管经过了几十年的发展,却没有形成一个具有普适性的IP核.这构成了星敏感器数据更新率的提升和星敏感器技术进一步发展的瓶颈.
该文对星提取和星识别的并行处理机制作了研究,采用Xilinx Virtex-5系列的FPGA作为验证平台,设计了在一块芯片上实现星点提取和星识别图像处理的IP核,将星图量化、微处理器、识别算法等集成在一块芯片上,从而提高星图处理的数据更新率、提高系统的可靠性、降低系统功耗、缩小系统体积.
星提取和星识别具有高度的并行性[3].实现星提取和星识别的高速图像处理IP核的关键技术之一是要实现各个图像处理模块的高度并行机制.在分析星敏感器图像处理流程的基础上,给出如图1所示的并行处理方案.
图像的数据流以一定的时序依次传输星点的图像数据,包括数据有效期和消隐期.并行处理方案的基本原理是:在图像数据开始有效时启动图像统计特性流水线以确定图像分割的阈值;同时启动图像分割流水线,分割出星图中的星点;分割流水线启动后,要启动星点定位流水线确定星点坐标并计算星点的能量;当确定出三个星点以后启动星识别流水线进行星匹配,并进而计算星像坐标和天球坐标获取该时刻的三轴姿态数据.
星提取的关键问题是阈值分割和星点定位算法.
图1 IP核的并行处理方案
星图阈值的确定对星提取的准确性至关重要,直接影响到后续的星识别工作.这里采用自动(自适应)阈值法作为实际图像阈值的确定方法,其数学表达式为:
式中E为图像的均值,β为图像的方差,α是一个与噪声有关的系数,这里取5.
为利于并行处理,阈值采用相邻的上一幅星图的统计阈值.
星点定位算法采用质心法.设一颗恒星图像分布在一个矩形窗口内,包含目标的图像表示为Axy,窗口左上角像元坐标为(1,1),右下角像元坐标为(m,n),阈值化过程表述如下[4]:
质心法实际上就是计算二值化后图像的一阶矩,即
其中,Axy是像元灰度值,xc和yc是星点信号矩心横纵坐标,单位为像元,(xc,yc)代表了星点信号的定位位置.
星识别算法的优劣和并行程度的高低关乎到数据更新率和三轴姿态的精度.笔者选择当前应用最广泛的三角形算法,算法流程如下[5]:
(1)根据星点探测亮度,从观测星图中选取亮度最大的m颗恒星,作为待识别星组.
(2)如果3颗恒星不在同一条直线上,则这3颗恒星可以组成一个星三角形.按照这一规则,将待识别星组中所有的观测星三角形提取出来,并分别予以标识.则至多存在个待识别星三角形.
(3)取其中一个星三角形,计算其三个边长edge-星角距;
(4)在导航星表中搜索与三个星对角距误差在 ±εdist范围内的导航星对Stars.
(5)在Stars中搜索与星图中的导航星对星等差值在设定的误差门限 ±εbright内的导航星对NewStars.
(6)判定NewStars中是否包含唯一的导航星三角形;若包含则认为该次匹配成功,输出顶点恒星信息;否则该次匹配失败,转至步骤(7).
(7)判定星图中所有三角形是否完成匹配:若已经全部完成则继续下一步;否则转至步骤(3).
(8)检查星图识别记录,若不为空,则星图识别完成,进入姿态求解运算;否则,认为该次星图识别过程失败.
在此基础上,在导航星的选取、星座数据库的构造和算法等方面参考了文献[6]对三角形算法进行了改进,使数据库容量、实时性及识别成功率等都得到进一步改善.
设计采用Xilinx公司的FPGA XC5VFX100T作为验证的实际器件平台,充分利用FPGA中的两个PowerPC440和FPGA固有的并行性实现星点提取和星点识别的并行运算处理任务.按着实际的功能,将星提取和星识别高速图像处理IP核分成两个模块(如图2所示):星点提取模块和星识别模块.图中标识的XC5VFX100T模块1部分为星点提取模块;标识的XC5VFX100T模块2为星识别模块部分.
图2 IP核功能模块的划分
两个模块间的耦合度很小,一个模块的输出仅是另外一个模块的输入,故两个模块的设计可同步进行,在两个模块验证可靠后,将它们合并为一个统一的IP核.
星提取模块设计过程大致分为如下几个步骤:
(1)设计星图模拟器,星图模拟器应该能够接收PC机仿真星图的数据,并将图像数据按实际的图像时序提供给星提取模块.
(2)对星图进行预处理.
(3)采用FPGA统计上一幅星图的均值和均方根值,由此计算当前的星提取阈值.
(4)设计星点定位算法,利用第一块Power-PC440核确定星点.
(5)利用同一块PowerPC440处理器,确定星点质心坐标.
(6)将星点的质心坐标以及星点的灰度和以一定的编码格式传送给下一个模块.
(7)验证可靠后以实际的相机接口替换星模拟器.
星识别模块设计按如下步骤进行:
(1)按着和星提取模块相同的格式设计星点坐标及能量模拟器,作为星识别的稳定数据源.
(2)设计和星识别算法星相匹配的星库;星库存储于XC5VFX100T外扩的32MB SDRAM中.
(3)采用星跟踪算法,利用第二块Power-PC440微处理器,提取已知恒星星象坐标,并利用星图中的恒星星象坐标和天球坐标计算出星敏感器当前的三轴姿态.
(4)星识别模块验证可靠后,将星点坐标和能量模拟器用星提取模块的输出代替.
由于设计的IP核比较复杂,涉及到两大相对独立的模块设计,故在FPGA的设计中采用模块化的设计思路,对每个模块进行设计输入、综合,并将实现结果约束在预先设置好的区域内,最后将所有模块的实现结果有机的组织起来,形成星提取和星识别高速图像处理的IP核.
为验证IP核设计的正确性,采用星光模拟器对星敏感器进行静态测试.测试结果表明,基于单片FPGA的星提取星识别图像处理IP核工作正常,相对于使用两片以上集成电路的星提取星识别实现方案,该方案星图处理的数据更新率有所提高,同时也提高了系统的可靠性,降低了系统功耗,缩小了系统体积.
[1]岳蕊,周国辉.Tycho-2星表文件格式数据的读取[J].哈尔滨师范大学自然科学学报,2010,26(4):42-44.
[2]Leitmann M G,Rebordao J M.Star Imaging System.In-Flight Performance[J].SPIE,1994,2317:167 -177.
[3]周国辉,王晓东,郝志航.星敏感器图像处理系统的并行流水线操作研究[J].航天控制,2006,24(1):87 -91.
[4]李爽.基于FPGA的CCD星敏感器星图预处理[D].哈尔滨:哈尔滨工业大学,2007.
[5]张锐.基于CCD星敏感器的星图识别算法的设计与实现[D].郑州:解放军信息工程大学,2007.
[6]李立宏,林涛,宁永臣,等.一种改进的全天自主三角形星图识别算法[J].光学技术,2000,26(4):372 -274.
Research on Star Acquirement and Star Identification for IP Core Based on Single Chip FPGA
Sheng Linyang,Zhou Guohui,Cui Yuanquan,Zhao Wei,Zhao Guosheng,Li Liping
(Harbin Normal University)
In this paper,a parallel processing scheme for star acquirement and star identification are presented.IP core that achieves star point acquirement and star identification is designed on a single chip of FPGA.Experimental results demonstrate that such IP core helps enhance the ratio of data update and system reliability of star map processing for star sensor,and system power dissipation and system volume are both reduced significantly.
FPGA;IP core;Star sensor
2010-10-31
*黑龙江省教育厅科学技术研究项目资助(11541104)
(责任编辑:李佳云)