一种基于前向光线跟踪技术的星图模拟方法 【技术领域】
本发明涉及一种基于前向光线跟踪技术的星图模拟方法,属于计算机仿真与算法优化领域。
背景技术
随着自主导航技术日趋成熟,商用电荷耦合器件CCD(Charge Coupled Device)日益推广,量测精度高的CCD星敏感器倍受青睐。实现自主导航、快速且识别率高的星图识别算法必不可缺。对星图识别算法最初实验测试,由于航天实验费用大,往往不可能进行实时空间实验;因此,为了检验识别算法性能以及对观测星选择的合理性问题进行有效验证,通常采用计算机仿真模拟技术在地面上模拟星空。
星图模拟技术目前主要利用基本星表中赤经(RA)、赤纬(DEC)和星等(MAG)信息通过计算机软硬件技术来实现。传统的星图模拟方法通过坐标转换的方式确定星像点在CCD像平面上的位置,而像点亮度则是采用服从二维高斯分布的点扩散函数PSF(Point SpreadFunction)进行模拟。这种传统的星图模拟方法回避了星敏感器光学系统对星图的影响,像点的位置和亮度的计算也不够精确。
【发明内容】
本发明的目的是为了解决上述问题,提出一种基于前向光线跟踪技术的星图模拟方法,利用前向光线跟踪技术实现了一种高精度的星图模拟方法,利用前向光线跟踪技术进行星图模拟的方法,根据恒星点光源的位置、亮度和光学系统透镜组形状及材料属性,通过光线反射和折射计算星像在CCD平面的精确位置,从而获得模拟的星图。
本发明提供的一种基于前向光线跟踪技术的星图模拟方法,通过如下步骤来实现:
步骤一:建立存储天球中恒星数据的全天星数据库。
步骤二:根据光轴指向和视场大小查询数据库,得到目标恒星作为光源。
步骤三:光学系统透镜组的初始化。
步骤四:编写前向光线跟踪模版类。
步骤五:调用前向光线跟踪模版类,得到模拟的星图,结束本次模拟。
本发明的优点在于:
(1)充分利用前向光线跟踪模版类实现高精度的星图模拟;
(2)本发明中恒星发出为平行光,即同一光源发出的光线都具有相同的方向矢量,对每一条光线的处理方法相同,并行度很高,采用并行计算可以极大的提高计算效率;
(3)充分考虑了星敏感器光学系统透镜组对模拟星图效果的影响,可以用于光学系统设计。
【附图说明】
图1为本发明基于前向光线跟踪技术的星图模拟方法流程图;
图2为前向光线跟踪模版类模拟单一光源成像的示意图;
图3为单一光源光线与透镜主光轴平行时的模拟星图;
图4为单一光源光线与透镜主光轴成45°角时的模拟星图;
图5为在某光轴指向条件下的模拟星图。
【具体实施方式】
下面将结合附图和实施例对本发明作进一步的详细说明。
本法明的一种基于前向光线跟踪技术的星图模拟方法,流程如图1所示,包括以下步骤:
步骤一:建立存储天球中恒星数据的全天星数据库。
全天星数据库存储天球中恒星的赤经RA、赤纬DEC和星等MAG信息;
步骤二:根据光轴指向和视场大小查询数据库,得到目标恒星作为光源;
在一定光轴指向条件下,根据视场大小获得能够出现在视场内恒星的赤经RA和赤纬DEC的跨度,通过查询步骤一中的全天星数据库得到目标恒星,将目标恒星作为光源。
步骤三:星敏感器光学系统透镜组的初始化;
星敏感器光学系统透镜组完成光学成像的功能,透镜的个数根据所设计的星敏感器精度的高低确定,精度越高,透镜组越复杂,透镜个数越多,透镜组完成初始化。
步骤四:编写前向光线跟踪模版类;
流程如图2所示,具体包括:
a、初始化光源。
编写表示光线矢量的模版类,将其命名为模版类VectorR3;模版类VectorR3中包含三个双精度成员变量xb、yb和zb,表示空间的三维坐标,模版类VectorR3中实现空间三维矢量的加、减、点乘、叉乘、数乘、求模、求共轭和规一化运算,所述的模版类VectorR3提供本发明中下述模版类的矢量运算;
编写表示光源的模版类,将其命名为模版类LightSource;模版类LightSource表示光源,包含光源的位置矢量Location、光线的方向矢量Direction和光源所处介质的折射率Intensity三个成员,由于恒星距离地球足够远,认为恒星发出平行光,即同一光源发出的光线都具有相同的方向矢量;其中位置矢量Location和方向矢量Direction均为模版类VectorR3对象。
b、初始化光学透镜。
编写透镜模版类,将其命名为模版类Lens,模版类Lens包含透镜的位置、形状和材料属性三个成员。
透镜的形状和位置根据下式确定:
F(x,y,z)=Ax2+2Bxy+2Cxz+2Dx+Ey2+2Fyz+2Gy+Hz2+2Iz+J=0(1)
式中:x,y,z分别代表透镜地三维坐标,A,B,C,D,E,F,G,H,I,J为常数,通过式(1)得到透镜的形状。
透镜模版类Lens可以派生出不同形状的透镜类,如球形透镜,椭球形透镜,以及一般的二次曲面形状的透镜;
模版类Lens中还包含求透镜上任一点(xp,yp,zp)的法线的函数,如式(2):
x-xpδfδx|P=y-ypδfδy|P=z-zpδfδz|P(xp,yp,zp)---(2)]]>
式中,(xp,yp,zp)为透镜上任意一点,通过式(2)得到该点在透镜上的法线方程。
c、光线与透镜求交。
编写求交的模版类,命名为模版类GetIntersection;模版类GetIntersection包含光线与透镜求交点的函数,根据模版类LightSource中的光线位置矢量Location和方向矢量Direction以及模版类Lens中透镜的位置、形状,计算光线与透镜的交点(xq,yq,zq);如下式所示,二次曲面形状的透镜与目标光源求交:
r(t)=P0+αt-∞<t<+∞F(x,y,z)=Ax2+2Bxy+2Cxz+2Dx+Ey2+2Fyz+2Gy+Hz2+2Iz+J=0---(3)]]>
式中,P0为光源的起点,由全天星数据库中的位置矢量Location得出,α为光源的方向矢量Direction,r(t)为光线上任意一点,t表示光线传播的距离。
d、求交点(xq,yq,zq)处的反射光线与折射光线的方向和光强。
编写求折射光线的模版类和求反射光线的模版类,分别计算得到反射光线的方向与光强和折射光线的方向与光强,分别命名为模版类GetRefraction和模版类GetReflection;
根据模版类LightSource中光源方向矢量Direction得出光线的入射角i;根据模版类Lens中透镜的材料得出透镜的折射率n;
模版类GetRefraction和模版类Getreflection根据光线入射角i、透镜的折射率n和法线方程通过折射定律和反射定律求出折射光线和反射光线的方向,反射角为i,折射角为i′;
模版类GetRefraction和模版类Getreflection根据入射角i、透镜的折射率n、折射角为i′通过下式求出入射光线和反射光线的光强;
R=12[sin2(i-i′)sin2(i+i′)+tan2(i-i′)tan2(i+i′)]T=12[n2cosi′n1cosi4cos2isin2i′sin2(i+i′)+n2cosi′n1cosi4cos2isin2i′sin2(i+i′)cos2(i-i′)]---(4)]]>
式中,R和T称为反射率和透射率,分别是同一时间同一界面上反射光和折射光从入射光获得的平均辐射能与入射光投射到界面上的平均辐射能的比值,i为光线的入射角;i′为光线的折射角;n为透镜的折射率。
e、判断折射光线与反射光线是否到达成像面。
如果光线已经到达成像面,则进行下一步即步骤(f);如果存在多个透镜,则需判断光线有没有到达成像面,如果没有到达成像面还需要继续跟踪光线到达下一个透镜,进行求交计算并求解折射光线和反射光线,即步骤c、d;
f、获得星图。
编写光线与CCD成像面求交点的模版类,命名为模版类GetImage,通过模版类GetImage计算得到星像在像平面。模版类GetImage中包含CCD成像面的形状、位置参数和光线与CCD成像面的求交计算。每一束平行光线与成像面的交点确定一颗恒星在CCD成像面中的像的位置和光强,计算所有到达CCD成像面的光线,从而获得模拟的星图。像平面与光线的联立方程组如下式所示:
r(t)=P0+αt-∞<t<+∞r·n=d0---(5)]]>
式中,P0为光线的起点,α为光线的方向,参数t表示光线传播的距离;r为平面上任一点的矢量,n为CCD像平面的法矢量,d0为平面常数,通过求解参数t,最终得到交点的坐标;
步骤五:调用前向光线跟踪模版类,得到模拟的星图,结束本次模拟;
将步骤二中得到的光源、步骤三中的透镜组输入到前向光线跟踪模版类,调用前向光线跟踪模版类,得到模拟的星图,结束本次模拟。在调用前向光线跟踪模版类时,可以指定每一个光源所发出的平行光线的数量,数量越大则计算精度越高,计算速度会降低;反之则计算速度高精度低。
采用前向光线跟踪模版类模拟单一光源成像的示意图如图2所示,分别包括光线直射和斜射两种情况,光源采用蒙特卡罗法生成40000条随机平行光,单一光源光线与透镜主光轴平行时的模拟星图、单一光源光线与透镜主光轴成45°角时的模拟星图如3、图4所示,成像面上分别得到了一个圆形光斑和一个椭圆形光斑,光斑中心较亮而周围较暗。仿真结果表明,采用前向光线跟踪算法计算得到的星像与理论上的成像结果一致。
通过本发明获得的模拟星图效果如图5所示,其中全天星数据库中存储了38,990颗星等小于8的恒星数据,视场指定为10°×10°,根据星敏感器瞬时光轴指向,将会有一些恒星出现在视场内。每一颗恒星都是星敏感器光学系统的一个光源,采用蒙特卡洛法随即生成10,000条平行光线。光学系统采用了一个椭球型薄透镜。