《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于VC的密集星场测光软件设计
基于VC的密集星场测光软件设计
来源:微型机与应用2011年第9期
林 众
(暨南大学 计算机科学系,广东 广州 510632)
摘要: 介绍了密集星场测光软件的研究背景和设计目标,描述了基于VC密集星场测光软件的实现,以及使用自己设计的程序对山东威海天文台1 m望远镜观测的M39星团进行实际测量的实验结果。结果表明对于比较稀疏区域的亮星(约14 mag)内部精度达到0.003 mag,而对于较密集区域的暗星(约17 mag)内部精度达到0.128 mag。
Abstract:
Key words :

摘  要: 介绍了密集星场测光软件的研究背景和设计目标,描述了基于VC密集星场测光软件的实现,以及使用自己设计的程序对山东威海天文台1 m望远镜观测的M39星团进行实际测量的实验结果。结果表明对于比较稀疏区域的亮星(约14 mag)内部精度达到0.003 mag,而对于较密集区域的暗星(约17 mag)内部精度达到0.128 mag。
关键词: 密集星场;自动寻星;点扩散函数测光

 密集星场的测光研究及其进展在恒星物理星系动力学、星系形成和演化及宇宙学等众多天文学领域具有重要意义。随着天文研究的进步和发展,对密集星场测光软件的要求越来越高。密集场测光软件作为天文研究的重要组成部分,不仅要实现自动寻星、孔径测光、建立点扩散函数(PSF)模型、星象分组、光度拟合等功能还要能方便广大天文研究者使用。而国际现有的密集场测光软件都是基于Linux的,对于非计算机专业的研究者来说安装和使用十分不便。
 设计和实现基于VC的密集星场测光软件是解决上述问题的有效途径。本系统采用MFC架构结合STL库,在Windows平台上开发,提高了代码的运行效率,为二次开发提供了极大的扩展性和灵活性。
1 需求分析
 为了在密集场中测量出星像的亮度,通常的点扩散函数测光方法是在实际拍摄的CCD图像上拟合一个二维的光度分布函数模型(点扩散函数)并在这个模型上加一个天空背景[2]。因此要实现密集星场测光,计算机软件必须完成如下任务:
 (1)自动寻星。自动寻星是指能自动在CCD图像上搜寻并初步定位一些亮度比较强的物体,并且这些物体代表了实际的星象。
 (2)孔径测光。在稀疏场,孔径测光[5]是一种可靠的测光方法,在密集场孔径测光,为最后的光度拟合提供了合适的初值。
 (3)建立点扩散函数(PSF)模型。一个准确的点扩散模型必须被建立用来在密集星场测光。
 (4)光度拟合。一旦PSF模型被建立,就可以把它放在不同的星像上来拟合它们的光度。
2 程序流程
 系统采用VC6.0和WindowsXP开发环境,系统的程序流程图如图1所示。

3 主要模块软件实现
3.1 动态链接库模块

 动态链接库模块主要调用了CFISIO库实现对FIT文件的读取,使用了如下函数:
 打开fit文件:
 fits_open_image(&fptr, FilePath, READONLY, &status);
 读取图像数据类型:
 fits_get_img_type(fptr,&BITPIX,&status);
 读取图像维数:
 fits_get_img_dim(fptr,&NAXIS,&status);
 读取图像各维的长度:
 fits_get_img_size(fptr,NAXIS,NAXES,&status);
 读取曝光时间:  
 fits_read_keyword( fptr,keyname,m_exposure,NULL ,&status );
 关闭文件:
 fits_close_file(fptr,&status);
 其中fptr为fits文件句柄,status为状态指针,NAXIS只能为2,表示二维图像。NAEXS[0]存储横向像素数,NAEXS[1]存储纵向像素数。
3.2 自动寻星模块
 首先,选择一颗中等亮度的处在比较稀疏区域的星象,用二维高斯拟合法[4]来测得这颗星的半高全宽(full width half maximum);然后选择一个形如图2所示的高斯模板来与原始图像做卷积。在卷积后的图像上识别星象。这个卷积核(nbox)一般取3倍的高斯函数标准差(即1.274倍的FWHM)大小。

 

 

 设卷积前的灰度分布函数为D(x,y),卷积后为H(x,y),可以得到如图3所示的在X方向的一维灰度分布函数。其中G表示一个降低了的高斯函数,1表示一颗星象,2表示一个双星,3代表一个勉强解析到的星系,4代表一个宇宙射线,5表示一个低值的坏像素。

 卷积后:(1)星系轮廓的高度被抑制了,而星像的轮廓并没有明显变化;(2)双星的轮廓分开了;(3)天空背景被抑制到0值附近。但对于宇宙射线和坏像素点还没有明显区别。下面将分别计算星像的锐度和圆度2个参数值用以识别它们。
 (1)星象锐度(sharp)表示了最优拟合的高斯函数的中心点与其周围像素灰度的平均值的强度之比,可用来剔除宇宙射线。对于宇宙射线或者其他的非常窄的轮廓来说,由于其亮度大多分布在中心像素上,因此其sharp值大于1。对于正常的星象来说,这个值的范围是0.2~1之间。计算公式如下:

 其中hx和hy分别表示一维高斯函数拟合值的高度。再以卷积区域的局部最大值(必须高于一定的阈值,如4倍天空背景的标准偏差)的坐标为初始值,再次使用高斯定心算法给出星像的初步中心。
3.3 点扩散函数模块
 点扩散函数一般是用来反映光强(灰度)随距离星象中心距离变化的函数。它反映了大气宁静度、图像抖动以及望远镜跟踪误差等的综合效应。一个恒星的星像轮廓大部分是由仪器点扩散函数和大气扰动以及跟踪误差综合的结果[1]。这里使用式(4)的Gauss函数,把这个函数正确地放置在一颗星像上,对这个函数在星像范围内每个像素所占的面积积分,取其积分结果和该像素观测流量值之差,以此达到最接近的拟合,从而建立起所采用的点扩散函数[4]。

 具体算法如下:
 (1)首先定义2个半径。①PSFRAD:在这个以像素为单位半径的圆形区域内定义PSF。通常要比最亮的星的半径稍微大一些。②FITRAD:在这个以像素为单位半径的圆形区域内进行最小二乘拟合,通常应该等于星像的半高全宽,在比较密集时稍小。
 (2)选星。挑选比较不密集的、没有伴星、没有星云的比较好的星像,星像的中心距离图像边缘大于PSFRAD。但如果选出的星在接下来的高斯拟合中迭代次数超出25次,将被忽略。这里建议挑选6~18颗星。
 (3)初始定出星象中心和天空背景(前面的寻星和孔径测光给出)。
 (4)使用(4)式对第一颗星分格点进行双变量高斯拟合。如果某个方向上的σ<=1,处理区域为3×3,如果σ>3,处理区域为7×7,其余为5×5。σ初始值为2.0。相邻两次迭代拟合时,测量所得的星象中心位置在X轴和Y轴方向上的偏差绝对值均不大于0.001及H、σx、σy的偏差均不大于0.01时退出迭代。
 (5)用实际星像轮廓减去求出的最佳高斯拟合函数求出残差表。
 (6)加入其他候选星提高信噪比。
这里求出的PSF是由高斯函数和残差表组成的。
3.4 光度拟合模块
 将真实的图像数据减去点扩散函数值得到残差。这个残差是由天空背景、随机噪声以及不合适的点扩散函数参数组成。使用最小二乘[5]拟合式(5)使得残差最小,用以调整点扩散函数的参数,从而得到合适的参数值,并计算出最终的星等。

式中Δi,j代表(i,j)像素处的残差,Pk表示经过位置平移和亮度缩放后第k颗星的PSF,Δx0,k表示第k颗星中星像中心在x方向上的修正量,Δy0,k表示第k颗星中星象中心在y方向上的修正量,Δh0,k表示第k颗星的亮度缩放因子的修正量,n表示星的个数。
 找出测量比较准确的中等亮度星作为参考星,计算它们的平均星等mi,r。通过m′i,j=mi,j-mi,r计算星像之间的亮度差,然后在多幅图像中统计这些亮度差的平均值及标准差δj,最后用δj来衡量测量的内部精度。
 通过使用自己开发的程序,对山东大学威海天文台1米望远镜所拍摄M39星团CCD图像进行实际测量。结果表明:在使用相同的星建立点扩散函数的情况下,对于比较稀疏区域的亮星(约14 mag)内部精度达到0.003 mag,而对于较密集的区域的暗星(约17 mag)内部精度达到0.128 mag。
参考文献
[1] Da Costa G S. Basic photometry techniques [J]. ASPC,1992,24:90-104.
[2] STETSON P B. On the growth-curve method for calibrating stellar photometry with CCDs [J]. PASP,1990,102:932-948.
[3] Stetson P B. DAOPHOT: a computer program for crowded-field stellar photometry [J]. PASP,1987,99:191-227.
[4] 李展,彭青玉,韩国强.CCD图像数字定心算法的比较.天文学报,2009,340-348.
[5] 曾开华,彭青玉,高精度恒星孔径测光注释[J].天文研究与技术,2010,7:124-131.

此内容为AET网站原创,未经授权禁止转载。