APP下载

基于VC的密集星场测光软件设计

2011-05-17林众

网络安全与数据管理 2011年9期
关键词:星象测光密集

林众

(暨南大学 计算机科学系,广东 广州 510632)

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

图1 系统流程图

打开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)大小。

图2 fwhm=4.8,卷积核为7×7的高斯模板

设卷积前的灰度分布函数为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之间。计算公式如下:

图3 卷积前后的一维灰度分布

其中 i0、j0表示在卷积区域的局部最大值的坐标,<Di,j>表示周围像素灰度平均值。

(2)星像的圆度代表星象在x方向和y方向的流量分布对比,可用来剔除坏像素。正常星像在各个方向上的流量应该基本对称,而坏像素通常不对称(例如由于电荷溢出产生的十字)。对于正常的星像来说,这个值的范围在-2~2之间。计算公式如下:

其中hx和hy分别表示一维高斯函数拟合值的高度。再以卷积区域的局部最大值 (必须高于一定的阈值,如4倍天空背景的标准偏差)的坐标为初始值,再次使用高斯定心算法给出星像的初步中心。

3.3 点扩散函数模块

点扩散函数一般是用来反映光强(灰度)随距离星象中心距离变化的函数。它反映了大气宁静度、图像抖动以及望远镜跟踪误差等的综合效应。一个恒星的星像轮廓大部分是由仪器点扩散函数和大气扰动以及跟踪误差综合的结果[1]。这里使用式(4)的Gauss函数,把这个函数正确地放置在一颗星像上,对这个函数在星像范围内每个像素所占的面积积分,取其积分结果和该像素观测流量值之差,以此达到最接近的拟合,从而建立起所采用的点扩散函数[4]。

其中 x0、y0,表示星像中心的所在位置。

具体算法如下:

(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计算星像之间的亮度差,然后在多幅图像中统计这些亮度差的平均值m′j及标准差σ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 crowdedfield stellar photometry[J].PASP,1987,99:191-227.

[4]李展,彭青玉,韩国强.CCD图像数字定心算法的比较.天文学报,2009,340-348.

[5]曾开华,彭青玉,高精度恒星孔径测光注释[J].天文研究与技术,2010,7:124-131.

猜你喜欢

星象测光密集
耕地保护政策密集出台
密集恐惧症
一致星象和凸象超几何函数的一些性质
星象馆
本月话题机内测光系统
夜读
相机探秘测光指南
全球导航四大系统密集发射卫星
欧盟等一大波家电新标准密集来袭
天文学家