密集星场的测光研究及其进展在恒星物理星系动力学、星系形成和演化及宇宙学等众多天文学领域具有重要意义。随着天文研究的进步和发展,对密集星场测光软件的要求越来越高。密集场测光软件作为天文研究的重要组成部分,不仅要实现自动寻星、孔径测光、建立点扩散函数(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)大小。