周逢道,马 晨,潘自超
(吉林大学仪器科学与电气工程学院,长春 130061)
星敏感器是卫星姿态控制系统的重要组成部分。现代化步伐的加快使得太空环境越来越复杂,太阳光和地气光等杂散光对星敏感器的干扰持续存在。杂散光使得星敏感器拍摄到的星图中的星点变得模糊,且难以将星点的边缘轮廓和星图背景区分开,不利于从图像中提取星点位置,从而导致星敏感器定姿精度下降。因此,如何有效地处理杂散光干扰,准确地提取星图中星点的位置坐标是目前航天领域利用星敏感器进行导航研究的一个重难点[1]。
现有减缓杂散光对星敏感器拍摄星图干扰的研究方向主要有卫星外部硬件、卫星控制策略以及图像处理3个方向[2]。其中对于卫星外部硬件的优化设计包括遮光罩的设计,遮光罩遮光角越大对杂散光的过滤能力越强[3],但遮光罩内壁也会带来一定向内散射的光线,恒星的信号也会被过大的遮光罩遮挡。对卫星控制策略的优化主要是通过工程师设计,规划卫星在特定的姿态下规避地气光,但这种方式规避太阳光等天体散发的杂散光较为困难。图像处理的方式范围较广[4-5],现有从图像处理角度出发提高星图中星点坐标提取精度的方式主要包含以下几种:1)对已知噪声进行滤波处理。常见的滤波方式包括高斯滤波、均值滤波、中值滤波和双边滤波等。这些方法可以有效降低已知来源的噪声对星敏感器定位的干扰,有效去除图像中的噪声粒,但同时会使图像中的边缘信息变得模糊,降低灰度图像的相邻像素梯度,损失一定的灰度信息,有可能导致星点坐标提取精度的损失。2)阈值分割法。常用的阈值分割算法分为全局阈值法和局部阈值法。全局阈值法为整幅图像确定一个阈值,适合前景和背景区分比较明显的图像,特别是处理灰度直方图且具有明显双峰的图像[6-7]。局部阈值法则是根据图像的具体特征,将其划分为若干区域,对每一块区域进行动态求解阈值[8]。局部阈值法往往适用于灰度直方图为多波峰的情况,虽其抗噪能力较强,但是又容易使得局部和细节过曝,且处理效率较全局阈值法低。对于阈值分割算法,阈值的选取是最为重要的一步,而最佳的阈值往往很难判断,所以此方法具有不确定性[9-10]。3)模糊图像复原方法。该方法主要分为以下两大类:盲复原方法和非盲复原方法[11-13]。该系列方法主要研究模糊核函数,通过分析星图模糊机理,研究星象运动轨迹,从而提高星点坐标提取精度,但实际星象运动轨迹和模糊复原轨迹的误差始终存在[14-16]。4)形态学处理。常见的形态学处理包括:腐蚀、膨胀、开运算和闭运算等。形态学处理大多可以将非完整的星点像素补全或减弱干扰信息的像素特征,但直接对星图进行形态学处理可能造成质心坐标点偏移,无法消除杂散光信号的干扰,因此其仅可以作为其他图像处理方式的辅助手段[17-18]。
综上所述,常见用于消除杂散光对星敏感器干扰的方式存在弊端,且都有相对比较严重的局限性,因此本文提出了一种基于Sobel算子的星敏感器星像坐标提取方法。该方法基于星点像素值与背景像素值差异较大的特性,以梯度大于某一阈值像素作为样板,认为该像素区域是星点的边缘,通过在原始星图上提取质心,从而达到消除星图中杂散光干扰信号的目的。仿真结果显示,该方法具有较好的普适性和鲁棒性。
星敏感器拍摄的星图大部分区域为星空背景,星点所占区域较少[19]。在没有杂散光干扰的情况下,可以通过像素区分星点和背景,其中星点位置的像素远高于背景像素。如图1所示,假设星图灰阶为8位,那么理想星图上星点区域的灰度值接近255,图像显示白色部分;星空背景的灰度值接近0,图像显示黑色部分,其像素特性如图1(b)所示,可见星点处像素值远高于星图背景,且相邻像素梯度相差较大。
(a)星图
在实际星敏感器工作的环境中,星图背景受到来自太阳光和地气光等杂散光干扰。由于杂散光的出现,使得星图背景的像素值升高,星图背景像素变得不均匀,增加了从图像处理的方式提取星点坐标的难度。实际环境下,星图及其像素分布如图2所示。由图2(b)像素特性可以看出,星点在杂散光的干扰下被淹没,增加了星点质心坐标提取的难度,甚至直接采用质心法难以提取恒星星点坐标。
(a)星图
为了减少太阳光和地气光等杂散光的干扰,需要利用图像锐化技术,使星图的星点边缘变得清晰。星图锐化处理的目的就是使恒星星像的边缘和轮廓线变得清晰,由此可以对其进行逆运算(如微分运算),该运算可以使星图中的星点变得清晰。从频率域来考虑,星图模糊的实质是因为其高频分量被衰减,因此可以利用高通滤波器使星图清晰。但要注意能够进行锐化处理的星图必须具有较高的信噪比,否则锐化后星图的信噪比反而更低,从而使得背景和干扰信号增加的比星点信号还要多。一般是先去除或减轻噪声后再进行锐化处理,因此星图的锐化可以用于星点边界的检测与提取,把星点的结构轮廓清晰地表现出来。星图的锐化方法主要有一阶微分锐化方法和二阶微分锐化方法,由于星敏感器需要较高的数据更新率,因此需要减少星图处理的时间,一般采用一阶微分锐化方法来降低计算时间。
一阶微分计算公式如式(1)
(1)
其中,∂f表示星图中(x,y)点的能量。离散之后的差分方程如式(2)
Δf(i,j)=[f(i+1,j)-f(i,j)]+
[f(i,j+1)-f(i,j)]
(2)
考虑到图像边界的拓扑结构性,根据这一原理派生出许多相关的方法,如一阶微分锐化又可分为单方向一阶微分锐化和无方向一阶微分锐化,后者又包括交叉微分锐化、Sobel锐化和Priwitt锐化。
Sobel算子是计算机视觉领域的一种重要处理方法,主要用于获得数字图像的一阶梯度信息,常见的应用和物理意义是边缘检测。Sobel算子是根据图像中每个像素的上下左右四邻域的灰度值加权差,在边缘处达到极值从而检测边缘。在技术上,它是一离散性差分算子,用来计算图像亮度函数的梯度近似值。在图像的任意一点使用此算子,将会产生对应的梯度矢量或者法矢量。Sobel算子不但拥有较好的检测效果,而且对噪声具有平滑抑制的作用,但是其得到的边缘较粗,且可能出现伪边缘。
Sobel算子使用2个3×3的矩阵算子分别和原始图片作卷积,分别得到横向Gx和纵向Gy的梯度值,如果梯度值大于某一个阈值,则认为该点为边缘点。其Gx方向的模板如式(3)所示
(3)
其Gy方向上的模板如式(4)所示
(4)
图像的梯度直观来说就是像素值在某个方向上的变化率,其计算方法如式(5)所示;有时为了简化计算会使用不开方的近似值来代替G,其替代公式如式(6)所示
(5)
或者
|G|=|Gx|+|Gy|
(6)
对于数字图像{f(i,j)}经典算子的定义如下:
设
A=|(f(i-1,j-1)+2(i-1,j)+
f(i-1,j+1))+(f(i+1,j-1)+
2(i+1,j)+f(i+1,j+1))|
(7)
B=|(f(i-1,j-1)+2(i,j-1)+
f(i+1,j-1))+(f(i-1,j+1)+
2(i,j+1)+f(i+1,j+1))|
(8)
则
S(i,j)=max(A,B)
(9)
或
S(i,j)=A+B
(10)
通过定义,可以利用2个方向模板与图像进行邻域卷积来完成算子的边缘检测。这2个方向模板一个检验水平边缘,一个检验垂直边缘。
基于Sobel算子的星图锐化实现过程如下:适当选取阈值M,作如下判断:若S(i,j)>M,则(i,j)为边缘点。S(i,j)为边缘图像,由于数据溢出的关系,通常不直接使用这种边缘图像,而使用的是由边缘点与背景点构成的图像,故称为二值图像。
原始的Sobel算子处理模板中各因子之和为0,由于正的因子与负的因子之和分别为4和-4,在极端情况下处理结果可能溢出。因此,在实际使用时,虽然Sobel算子检测所得的星点边缘光滑连续,但是星点边缘较粗,这是因为Sobel算子处理时需作二值化处理,即处理结果得到的是二值化后的星点边缘图,这种结果导致星点边缘图中幅值较小的边缘丢失了。为了克服这个缺陷,可以引入一个衰减因子Scale,去除计算的不良结果,以消除数据溢出的可能,这样就不再需要进行二值化处理,而且得到的是不失真的灰阶边缘图,从而保留了星图中所有星点边缘的数值。即S(z,j)=max(A,B)/Scale或S(z,j)=(A-B)/Scale,在灰阶边缘图中可看到幅度不等的各种星点边缘,其中,衰减因子Scale取4,它同时也是归一化因子,即2个灰度层的阶跃,交界处的处理结果就是星点的灰度差值。
因此,星图经过Sobel算子预处理后的结果如图3(c)所示。
(a) 单个星点原始星图
从图3中可以看出,杂散光干扰较强的星图,如果直接采用质心法从星图中提取星点坐标,不但会把强干扰信号也作为星点目标,而且由于提取星点坐标的阈值较大,会把星点目标的部分像素作为背景被滤除。因此,降低了星点坐标提取精度,甚至把整个弱星点目标的像素都作为背景滤除,减少了星敏感器视场内参与计算姿态的恒星数量,导致星敏感器姿态精度降低。而星图经过Sobel算子预处理后,星图中的强干扰信号和星图低频噪声全部被滤除,只剩下星点目标像素,因此可以在阈值较小的情况下实现对所有恒星星点坐标的提取,而不会滤除星点目标像素和弱星目标,从而提高了星敏感器姿态精度。
为了验证本文算法的可行性和可靠性,选用某型号卫星星敏感器进行试验。实验方法:将星模拟器和星敏感器放置在光学平台的暗室中,且暗室中安装一个探照灯来模拟杂散光,可以通过控制探照灯的开关来模拟暗室中是否存在杂散光;利用星敏感器拍摄星模拟器的星图,并通过低电压差分信号(Low Voltage Differential Signaling, LVDS)将星图传输给测试计算机,同时通过RS422把计算的坐标传输给测试计算机,测试计算机能够实时显示星敏感器拍摄的星图和星像坐标。实验模拟环境如图4所示。
图4 实验室模拟环境Fig.4 Laboratory simulation environment
暗室中分别设置不存在杂散光的环境和存在杂散光的环境,并分别采用传统的质心法和本文方法,对计算的结果进行比较。
测试方法:关闭暗室中的探照灯,此时暗室中没有任何杂散光,测试计算机给星敏感器发送指令,使星敏感器采用传统的坐标提取方法,将星敏感器拍摄的原始星图和提取的恒星星像坐标发送给测试计算机;然后通过测试计算机给星敏感器发送切换指令,使星敏感器工作在本文图像处理算法下,将星敏感器拍摄的原始星图和提取的恒星星像坐标发送给测试计算机,结果如图5和表1所示。
(a)原始图像
表1 无杂散光条件下提取恒星星像结果
根据表1中提取的恒星星象坐标数值结果可知,采用传统方法和本文方法提取的星像坐标是一致的,因此采用本文算法不会损失坐标精度。
测试方法:打开暗室中的探照灯,探照灯照射的光作为暗室的杂散光,效果如图6所示。此时暗室中存在杂散光,首先星敏感器把拍摄的原始星图发送给测试计算机,然后测试计算机给星敏感器发送指令,使星敏感器采用传统的坐标提取方法,计算星图的阈值为205。利用该阈值对原始星图进行二值化后,将二值化的图像发送给测试计算机,结果如图7(a)所示,此时星敏感器不能输出任何星像坐标。
(a)探照灯模拟杂散光干扰
给星敏感器发送切换指令,使星敏感器工作在本文图像处理算法下,计算星图的阈值为12。基于本文算法预处理后的星图如图7(b)所示,将提取的恒星星像坐标发送给测试计算机。
(a)传统算法二值化的星图
根据图7及表2中提取的恒星坐标结果显示,存在较强干扰时,采用传统方法无法从星图中提取坐标。只要恒星星像没有完全淹没在强光中,采用本文算法提取的星像坐标与相应的理想坐标相比,误差在0.5像素以内。
表2 存在杂散光环境下提取恒星星像结果
对于传统图像处理方法在杂散光干扰下难以有效提取星图中的恒星坐标,本文提出了一种基于Sobel算子的星敏感器星像坐标提取方法。根据实验仿真结果得出以下结论:
1)利用本文方法可以很好地提取未被杂散光淹没的恒星轮廓,通过Sobel算子计算后新的星图只有恒星星像,从而达到消除星图中杂散光干扰信号的目的。
2)结合图像形态学处理,星点质心提取的精度得到了较大的提高。
3)随着杂散光强度的升高,其在星图中所占范围增大,被淹没的星点增多,因此该方法适用于提取未被杂散光完全覆盖的星点。
经过本文算法处理后的仿真结果显示,该方法具有较好的鲁棒性与普适性。