本节摘要:归算是把"第几行第几列像素上的一个光斑"翻译成"某参考架某历元的天球坐标"的全过程。本节按顺序走完这条链:探测器与仪器改正(平场、畸变、电荷转移)、大气与几何改正(折射、色散、光行差、引力偏转)、坐标平面的选择(切平面投影与标准坐标)、底片模型的建立与使用——含一个三参考星仿射解算的完整手算数例——以及空间任务的全局解思想。关键词:归算、底片模型、标准坐标、光行差。
夜班结束,硬盘里躺着几百帧图像。每一帧上,一颗星是一个光斑,记录为像素坐标与强度。要把它们变成星表,得依次穿过五道关卡:探测器改正(把 CCD 读数变成真实光度分布)、质心与畸变改正(把光斑位置变成焦面理想坐标)、底片解算(把焦面坐标挂到天球上)、几何与大气改正(把"看见的方向"还原成"真实的方向")、历元归算(把不同时刻的位置统一到同一坐标架)。整条链一环扣一环,任何一环的模型误差都向下传递——4.1 节的预算表就是这条链的质量说明书。

看这张链式图时记住一个方向约定:从左到右是"观测归算成坐标",实际程序里更常用反向——把星表的参考架坐标预报成今晚的像素位置,与实测比对,残差进平差。方向反过来,公式不变,只是"已知与未知"换了座位。
按"影响观测方向"的物理来源分组:
| 组 | 改正项 | 量级 | 说明 |
|---|---|---|---|
| 大气 | 折射 | 天顶距 45 度处约 1 角分 | 2.1 节的量级表,地面必改 |
| 大气 | 色散 | 大天顶距角秒级 | 沿地平纬方向拉长星像 |
| 光行 | 周年光行差 | 最大 20.5 角秒 | 观测者速度造成 |
| 光行 | 周日光行差 | 最大 0.32 角秒 | 自转速度造成,毫角秒级必改 |
| 相对论 | 光线引力偏转 | 日缘 1.75 角秒 | 视线近太阳时必改 |
| 视差 | 地心到日心改正 | 最近星 0.77 角秒 | 观测点位置造成 |
| 仪器 | 焦面畸变与畸变模型 | 视场边缘角秒级 | 标定或底片模型吸收 |
| 仪器 | 电荷转移效率 | 毫角秒级偏移 | 空间任务辐射损伤项 |
这张表与 2.1 节的效应量级表同源,但视角不同:2.1 节问"什么时候必须改",这里问"在哪一道关卡改、拿什么模型改"。值得注意的是最后两行的仪器项:地面程序的畸变被底片模型吸收(下一小节),空间任务的畸变要单独标定(焦面拼接的畸变图),电荷转移效率则是 Gaia 时代的新成员。
光行差值得再强调一次几何:观测者以每秒 30 千米运动,星光方向相对真实方向前倾约 20 角秒量级。归算时要把观测方向"退回"到质心系真实方向,预报时反向加上。第一章说过它与视差同为一年的椭圆、相位差四分之一周期——归算链条里它是必扣项,忘扣它解出的视差会被污染上约二十角秒量级的错误信号,任何最小二乘都会以巨大的残差立刻报警。
天球是球面,CCD 是平面,中间需要一张投影。天体测量用切平面(圆柱或等角投影都不如它普及):在视场中心选一个切点,星的方向与平面相交得到两个坐标,称为标准坐标,习惯记作 ξ 与 η。视场几度以内,投影畸变是角秒级以下的高阶小量,主项就是线性的——这正是底片模型能工作的几何基础。
标准坐标把"球面问题"变成了"平面问题":像素坐标与标准坐标之间只隔一个平面变换。最常用的模型是六常数仿射:
ξ = a + b·x + c·y η = d + e·x + f·y
六个常数的物理含义清楚:a、d 是平移(底片原点偏移),b、f 是两个方向的尺度,c、e 混合了旋转与剪切。参考星足够时再补三项二次项,模型升到九常数,吸收焦面畸变的弯曲与微分折射的梯度。
设一帧图像里有三颗参考星,像素坐标与星表标准坐标(单位角秒)都已知:
参考星 像素 x 像素 y 标准坐标 ξ 标准坐标 η A 100 100 500 400 B 300 100 700 400 C 100 300 500 600 目标星 200 250 待求 待求
先解 ξ 的三个系数。A 与 B 像素 y 相同、ξ 差 200,像素 x 差 200,所以尺度 b 等于 200 除以 200 等于 1,且 x 方向每像素一角秒。A 与 C 像素 x 相同、ξ 相同,说明 y 不影响 ξ,系数 c 为零。把 A 代回:500 等于 a 加 1 乘 100,得 a 等于 400。于是 ξ 等于 400 加 x。
η 同理。A 与 C 像素 x 相同、η 差 200,像素 y 差 200,得 f 等于 1;A 与 B 的 η 相同,e 为零;d 等于 400 减 1 乘 100 等于 300。η 等于 300 加 y。
目标星像素(200,250)代入:ξ 等于 400 加 200 等于 600,η 等于 300 加 250 等于 550。验算用参考星回代,三颗星全部闭合。
这个数例干净得像教科书插图——真实数据当然不会如此:参考星的星表坐标带着误差、质心带着噪声、模型需要二次项,所以真实解算用最小二乘而非代数消元,参考星从三颗加到一二十颗,还要检查剔除残差过大的星(多半是参考星自身有伴星或星表错)。但流程与本质完全一样:**用已知点解出两个平面之间的映射,再用映射求未知点。**底片解算做得多了你会发现,它就是"用直尺在星图上给新星星定位"的机器版。
上述流程是局部解:一次曝光、一个视场、一批参考星、一次平差,视场之间互不往来。地面程序与历史上的照相巡天都是这个范式,它的精度上限受参考星表制约——4.1 节预算表里"参考星表误差"一项就是它的天花板。
空间任务把解算升维成全局解:没有"参考星表"可依赖(它自己就是参考架的制造者),于是把仪器标定参数、卫星姿态参数、每个源的天体测量参数全部放进同一个方程组,数十亿参数联合迭代求解。初始值粗略,解一轮、更新标定与姿态、再解一轮,收敛到自洽——3.3 节说的"全球刚性球",在代数上就是这个巨型方程组。Gaia 的数据处理联盟为此建了六个数据中心,4.3 节末尾讲星表构建时会回到这里。
局部解与全局解的选择哲学值得写进笔记:有外部参考架可用(且够准),局部解便宜稳健;要自建参考架,只能全局解。第 6 章的下一代任务规划里,这个选择直接决定任务的构型与成本。
底片比例尺顺手算一个实例,建立像素与角秒的手感:1 米镜配 8 的焦比,焦距 8 米,比例尺等于 206265 除以 8000 毫米,约每毫米 25.8 角秒;配 13 微米的像元,每像素约 0.34 角秒。一台 4 千像素宽的 CCD 横跨约 22 角分的视场——知道这三档换算(毫米、像素、角分),任何望远镜的视场都能口算;反过来,像素角秒、焦距、像素尺寸三量知二求一,把这三行换算写进观测日志本扉页是老观测者的传统。
给仿射模型的威力与短板各配一个数字。威力:视场里参考星网格吸收整体的平移旋转缩放,哪怕底片的尺度刻错百分之一(零点几毫角秒每角分),只要参考星分布均匀,目标星相对网格的位置不受影响——差分的天性。短板:畸变的二阶项吃不掉。设想焦面畸变让视场边缘相对中心弯了 0.5 角秒,六常数仿射只能把线性部分吸收,弯曲的残余按平方留在边缘:目标星在视场中心附近残余近零,挪到边缘就吃到大半。数值感受:视场对角线十分之一处的二次畸变残余约为边缘值的百分之一——0.5 角秒的边缘畸变,在半程处残余几十毫角秒,在中心附近亚毫角秒。这就是毫角秒程序都把目标锁在视场中心小区域、并要求参考星对称包夹的原因:不是仪式感,是二次项的数学。
历史上处理跨底片拼接还有一套"底片重叠法":相邻底片共享的参考星把各帧的模型串成网,误差沿网传播时被大量交叉约束稀释,星图因此从单帧拼成巡天。它与现代全局解思想一脉相承——重叠区域就是两个"视场"的基本角。
关系间接但真实:平场误差会改变光斑的像素间强度分布,质心随之偏移;坏像素若落在光斑上,质心偏移可达十分之几像素。毫角秒级程序要求光度改正也是毫角秒级,光度的马虎最后都变成位置的偏移。
可以,而且"差分视差程序"常这么干——同一视场反复观测,直接在像素坐标上解视差与自行,最后一步才挂到天球。省去每帧的底片解算,代价是结果绑定在这台仪器的焦面上。可行与否取决于科学目标要不要绝对位置。
三个惯犯:时间系统用错(2.2 节的 69 秒问题);光行差加了两次(模型与坐标预报里各一次);底片模型参考星太少导致系数病态(三颗星解六常数刚好够,任何一颗出问题整帧报废)。写归算代码,单元测试的标准就是 2.1 节说过的"极点零点回代闭合"。
下一节到达流水线终点:把一串归算好的位置序列送进最小二乘,解出位置、自行与视差——并亲手算出它的不确定度。