2023-04-04 21:46:33 +08:00

74 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 流星探测原理2
上一篇我们讲了流星的探测手段和光学流星观测的难点和对策,这一篇来讨论一下流星视频多站观测的主要流程。
简而言之,我们对流星的视频观测,就是从用摄像机拍摄天空,到计算出流星轨迹的过程。计算流星的轨迹需要多个站点分别测量流星的坐标,而流星的坐标来自于流星在视频画面中的位置,所以单站必须首先可以拍摄到流星的视频。所以,对流星的视频观测主要分成以下三个步骤:
1. 拍摄到流星的视频
1. 测量流星的视频坐标,并转换成天球坐标
1. 用多站计算流星的三维轨迹
这个思路我们从已有的流星观测软件就可以看出UFOCapture 套件就分成三部分UFOCapture 负责流星监测UFOAnalyzer 负责测量流星坐标UFOOrbiter 负责对流星进行定轨。其他流星监测网的自有软件也基本符合这个思路。
## 拍摄流星的视频
流星的持续时间决定了需要用视频观测,而随机性决定了我们需要大视场长时间观测。一个很明显的道理:你拍到的流星数量,跟观测的时间成正比。所以为了拍摄到更多的流星,流星相机一般是长时间连续工作的,日落后就开始观测,日出前才停止。
与普通的天文观测不同,每个课题申请大型望远镜的观测时间常常以天或者小时计,而观测到的数据可能会处理几个月到一年,因此有大量的时间对图像进行精细的处理。而流星探测不一样,只要天气是好的,相机就会一直开着,一直会产生大量的数据。
因为流星观测拍的是“视频”,它产生的数据量也显著大于大型望远镜(可能 LSST 这样的巡天望远镜除外)。假设一个 1920×1080 的单色相机,每个像素 1 字节,每秒拍摄 30 帧画面,产生的数据量就是 1920×1080×1×30≈60MB/s每分钟就是 3.6GB,每小时就是 216GB。如果是彩色相机数据量还会变成 3 倍;如果是 16 位的相机,就再 2 倍;如果是 4k 的相机,就再乘以 4。积累起来会变成天文数字。
如此多的数据量就造成一个问题:我们常见的“先存下来再慢慢处理”模式就不合适了。一方面,每天存储如此大的数据量成本非常高;另一方面,相机每天工作 10 个小时,而这些数据必须得在 24 小时内处理完,否则第二天的数据就又堆积起来了。
更可恨的是,没有流星雨的夜晚,可能一整晚也就只有十几颗流星而已,这十几颗流星的视频加在一起可能也没有一分钟,正可谓沙()里淘金,投入产出完全不成正比。
以上种种,都指向一种方案:实时检测视频画面中有没有流星,如果有就存储下来,没有就直接把数据扔掉,不写入硬盘里了。那么实时检测流星来得及吗?检测出有流星的时候,是不是流星已经消失了?不用怕,我们可以在内存中缓存前面几秒的视频,当发现有流星的时候,自动从前面几帧开始保存,流星消失之后,再往后保存几帧,防止流星被拦腰截断。很多手机拍照也有时间回溯的功能,用的就是这个原理。
那么这样做,就意味着我们的软件可以实时处理几百 MB 每秒的数据流一定要非常高效才行同时准确性也要尽可能高如果把流星漏过去了数据就永远消失了。所以我一直认为流星监测软件是流星视频观测中的核心技术。正因如此UFOCapture 能在爱好者群体中经久不衰,拥有难以替代的位置。
## 测量流星的坐标
现在我们有了流星的视频,下一步就是测量流星的坐标了。一般来说,我可以指着拍到的视频说:“流星在这!”但这并不是计算机能听懂的方式,甚至也不是其他流星相机的运行者能听懂的方式。
流星定轨对流星坐标测量提出了要求:因为我们要综合多个站点的流星坐标,让它们的“射线”相交于同一点,所以所有观测站都要采用相同的坐标系。如果每个观测站采取的坐标系稍有不同,那相当于射线的方向有偏差,就无法相交到一起;并且,观测站的地理位置也一样重要,如果观测站的位置不对,相当于射线的端点有偏差,几条射线也没法相交到一起。
所以,我们最终输入的流星坐标,一定要采用国际公认的、天地统一的坐标系。这样的坐标系有没有呢?当然有,那就是国际天球参考架 ICRS。关于天体测量的内容非常复杂不过简单来说我们日常使用的赤经赤纬依赖这个参考架而地面上的坐标例如 wgs84 体系的经纬度,也可以换算到这个参考系里。
我们可以建立一个以地心为坐标原点,坐标轴**不**随地球自转的坐标系(也就是地心惯性坐标系 ECI观测站的坐标就是射线的端点流星的赤经赤纬就是射线的方向向量。这样所有观测站的观测结果就可以统一了。
思路是这么个思路,实际怎么操作呢?
第一步,我们测量流星在画面上的像素坐标。这一步比较简单,用现有的天文测光软件魔改一下就可以胜任,简单讲就是寻找流星的峰值,或者重心的位置。
第二步,把像素坐标转化成天球坐标。这两个坐标的对应关系主要受两个因素影响,第一是相机镜头的畸变,第二是相机的指向。
我们用最简单的近似(尤其对长焦的望远镜成立)来看,视场是 x°有 y 个像素宽,那么流星与画面中心的距离是 z 像素的话,那它离画面中心就是 z(x/y)度。但对广角镜头来说,这个简单的关系并不完全成立。
一般来说,同一个物体在广角镜头的画面中心或边缘,它大小是不一样的,这就是所谓对的畸变。在画面的边缘,如果“底片比例尺”小于(x/y)的话,就是所谓的桶形畸变,如果大于,就是枕形畸变。
![](image/20220927214355.png)
![](image/20220927214424.png)
这些畸变的参数与镜头的光学设计有关,可能会包含在镜头的参数表里;但是也不能直接拿来用,因为实际的畸变还与镜头的安装方式有关:镜头的光轴稍微歪了一点,对焦距离不一样,这些参数就都会变。
而对畸变参数的实际测量,就有几个不同的方式。在计算机视觉领域比较常见的方式是拍摄一个棋盘格的板子,有现成的算法可以寻找棋盘格上的各点,然后计算畸变参数。而在天文上,会采用画面中的恒星来计算像素坐标与天球坐标的关系,其中就涵盖了对畸变的拟合。
而相机的指向也有两个成分:其一是相机是怎么固定在地面上的(也就是相机的朝向),这个基本上是固定的;其二是地球自转到了什么地方,这个只与时间有关。这一步的计算比较简单,就是给坐标乘上几个旋转矩阵就好了。
总的来说,最朴素的方式就是把上面所说的畸变参数、相机指向都测量好,假设它是不随时间变化的(例如我有个鱼眼镜头,我非常精确地把它调整到画面中心正好是天顶),那么只要沿着这个流程计算就好了。不过实际上,相机的畸变和指向都会随时间有微小的变化:在不同季节,热胀冷缩会导致镜头的形状有些许变化;而一阵大风就有可能会把相机的指向吹歪一点。这些误差都会随时间累积。
所以,实际观测中我们都会用画面中恒星的位置来进行实时的校准,在恒星数量足够的时候,每颗流星都做一次。因为恒星的天球坐标是已知的,在同时知道恒星的图像坐标和天球坐标的时候,就可以计算上面说的所有参数了。这样得到的流星坐标是最准确的。
## 多站计算流星的三维轨迹
用两个观测站测量的流星坐标来计算流星的实际位置,本质上就是一个几何问题。求两条直线的交点。在实际操作中,由于观测误差,两条射线是不会严格相交的,而是会稍稍错开一点,此时对流星位置的最佳估计就是与各个射线距离(或距离的平方)之和最小的那个点。
而这么做还有一个隐藏假设:那就是两个站点的时间是精确同步的。我们说到对流星的视频观测时,其实不只是需要短曝光带来的高时间分辨率,还需要与之匹配的高时间精度。很遗憾,大多数爱好者器材并不能做到如此的时间精度。我认为,时间精度是在流星监测中长期被忽视的一个方面,而根据一些研究,时间的偏差会显著影响对流星定轨的精度。
![](image/20220928044658.png)
一条流星的轨迹包含很多个点,如果我们对每个点都进行三位定位,就可以得出一条折线,这是各种误差造成的。而如果我们假设流星轨迹大致是一条直线,流星在这条直线上逐渐减速,这样就可以对整条轨迹进行拟合,得出的轨迹的误差就比单独每个点的误差小,因此持续时间长、数据点多的流星,定轨精度就更高。而此时,流星轨迹模型的选择就非常重要:近几年有一些文章[^1]指出,之前经常采用的一个模型并不非常合理。也有模型无关的定轨程序发布,在之后的文章中我们来详细解读。
[^1]: [Estimating trajectories of meteors: an observational Monte Carlo approach I. Theory](https://academic.oup.com/mnras/article/491/2/2688/5626361)