































最近观测天文学课的其中一个大作业是选择一个深空天体作为目标,写观测计划,并最终拿到数据之后做一个比较艺术性的摄影图片出来. 感觉这件事情其实是比较有意思的,虽然实际拍摄的过程是天文协会的学长们用远程台完成,但是后续的图像处理比较有门道,因此想写下来记录一下. 当然,我没有用到 PS (PhotoShop),因为并不是很会使用这种比较偏向摄影的软件,同时不太想在电脑上下载一个 Adobe 全家桶,毕竟是学校的花钱买的版本,如果离开学校就无法使用,比较难受.
下面的内容大多数都是用这些软件完成的:AstroImageJ,Siril 以及 PixInsight.
这里有必要简单说一下各个软件的定位.
首先 AstroImageJ 是一个偏向学术上分析数据的软件,它有很多图像叠加、处理的功能,但是主要都是为了科研上的数据处理而服务,也就是说,它并不偏向于图片的编辑和美化 (或者说根本就没有这方面功能),只是简单地把图片里面的数据整合好,能够做下一步的数据处理;另外它自己已经有很多数据整理的功能,我看到官网上面甚至写了可以用它画一个 exoplanet transit 的光变曲线出来. 它的使用比较简单,我们课堂上是用这个软件来演示如何做 RGB 滤镜的三色合成,以及更早的做星点对齐、叠加平场、暗场的基础操作.
Siril 是一个「astronomical image processing tool」,它包含了 AstroImageJ 对于图像处理的大多数功能,但是数据处理的能力稍微弱一点. 我自己体验下来发现,Siril 的星点对齐算法应该是比 AstroImageJ 先进一点,因为后者使用的是某个网站的 API,速度慢尚且不说,精度也就那样,不然服务器和数据传输的压力实在是有点大. 这个软件的一大优点在于,相比 PixInsight,它是免费的.
PixInsight (下称 PI) 可以说是深空摄影领域的集大成者,拥有非常强大的功能、高度自定义化的界面以及先进的算法. 缺点是极其昂贵,但是我们学校天文协会的学长给了我他的 License,因此我可以骗过官方的审查,姑且是免费地用着这个高贵的软件.
注意
说起这个,我校天文系曾经在大服务器上运行某个盗版软件供全系师生使用,但是某一位外国留学生非常看不下去这种「罪恶」的行径,遂向官方举报我们系的操作,导致我们系只能全款购买该软件的正版.
我想说的是,大家别举报我.
回到 PI,这东西另一个缺点是学习曲线极为陡峭,甚至初学根本无从下手. 如果有系统学习 PI 的需要,可以看看这个:PixInsight 入门到精通 | 星空 π 对,这应该是中文材料里面最权威的一个教程;另外我遇到一些问题也会去 PI 的官方论坛去看看有没有比较好的解答,这也是入门的一个比较好的参考资料. 不过鉴于我是在完成一项作业,在这种情境下可能用 AI 反而是最快的,因此我直接让我的 codex CLI 阅读我的
.fits文件,告诉我使用 PI 修改的建议.
首先肯定是要积累足够的数据. 要拍的内容有:平场、暗场、bias 和普通的各滤镜图像,其中只有 bias 是不需要和滤镜相关的,其他的图片要分通道拍摄. 当然,这里用是 CCD 的场合,如果用彩色 CMOS 应该是没这么多麻烦的事情,因为不用分通道 —— 但是用 CCD 一般来说会得到更好的数据.
下面是一个典型的文件结构:
.
├── biases
│ ├── 2026-04-17_14-06-16_LIGHT_S_1x1_8.80_gain56_0.00s_0037.fits
│ ├── ...
│ └── 2026-04-17_14-06-33_LIGHT_S_1x1_8.80_gain56_0.00s_0039.fits
├── darks
│ ├── _2025-06-10_04-52-52_DARK_H_-9.90_gain56_600.00s_0053.fits
│ ├── ...
│ └── _2025-06-10_05-12-55_DARK_H_-10.00_gain56_600.00s_0055.fits
├── flats
│ ├── FlatWizard-L_2026-04-22_20-30-34_FLAT_H_3.20_gain56_6.25s_0000.fits
│ ├── ...
│ └── FlatWizard-L_2026-04-22_20-30-51_FLAT_H_2.70_gain56_6.25s_0002.fits
├── lights
│ ├── 2026-04-16_22-08-21_LIGHT_H_1x1_0.50_gain56_600.00s_0002.fits
│ ├── ...
│ └── 2026-04-16_22-56-24_LIGHT_H_1x1_-0.00_gain56_600.00s_0004.fits
├── masters
│ ├── bias_stacked.fit
│ ├── ...
│ └── pp_flat_stacked.fit
├── process
└── result_H_6000s.fit这是我的 H 滤镜,也就是 Hα\text{H}\alpha 谱线滤镜的图片文件夹,仅选取部分文件. 但是其实一开始并不是这样,是为了在 Siril 里面做图像叠加修改的文件结构,这一点之后会写.
一般开始的时候是会按照 flats, lights, biases, darks 的四个文件夹分类好,因为拍摄的时候它们分别是一起拍摄的;同时 lights 文件夹中的不同通道之间的照片一般也混在一起,因为都是在拍摄一段时间某个通道之后用滤镜轮换新的一个滤镜拍摄下一张. 这时只能通过图片命名中类似 *_R_* 这样的字段来判定它们分别是用什么滤镜拍摄的.
前面说到,课堂上我们用的是 AstroImageJ 进行演示,然而我实际完成这个操作是使用 Siril.
注意
下面大多数图片来源于 Sharon 老师的课件内容. 并且,这个方法的效果确实不够优秀,详细讲解的原因仅仅是它每一步都有明显的物理含义,而不像 Siril 和 PixInsight 一样直接一个脚本跑完直接获得最终图像;后者过于黑箱,对初学者理解整个图像处理的过程并不能起到积极作用.
首先打开软件,选择顶栏的 Files,然后打开自己拍摄数据文件夹中的随机一个文件.
之后选择顶栏的 Process,如图所示选择 Data reduction facility.

上一步做完之后会跳出好几个窗口,首先选择下图这个界面,在 SIMBAD Object ID 中填写自己拍摄的目标的名称. 下图中示例选择的是 M101,我自己拍摄的是 NGC 2903.

填写目标名称之后 AstroImageJ 会在数据库中搜索并且把后面的信息全部填写清楚.
之后选择下图的窗口:

这一步是最重要的构建步骤.
把所有的文件夹名称选择好,比如现在要构建 R 滤镜的各个 master image,那么就分别在 Bias Subtraction, Dark Subtraction, Flat Division 和 Science Image Processing 几处把文件夹的路径填写好,点击右边的文件夹图标可以直接在文件管理器或者 Finder 中选择. 右边第二栏是填写文件的通配名称,因为可能只要用到 R 滤镜的图片,所以在右边用含有通配符的文件名把所有 R 滤镜拍摄的图片选择出来. 这一点非常重要,因此请注意最右侧的那个数字,如果和实际 R 滤镜拍摄的图片数量不一致,那么就要检查是不是通配文件名的某些地方写法有问题.
第一个要构建的是 bias. 这时候把所有的几个功能中的 Enabled 选项都取消掉,Build 选项只留下 Bias Subtraction 的那一个,然后点击下面的 START. (当然,要 Enable 最上面的那几个文件名通配符选项,不然无法读取文件.)
构建 bias 之后,AstroImageJ 会在 bias 文件夹下输出一个 master bias 文件,这是将所有 bias 合成之后的结果. 现在取消 Bias Subtraction 的 Build 选项,选择 Enable,然后选择 Dark Subtraction 的 Build 选项,也就是利用已经构建好的 master bias 来构建 dark.
点击 START.
接下来按照同样的步骤构建 flat,也就是取消选择前两个的 Build 选项,改为 Enable,并选择 Flat Division 的 Build 选项,点击 START.
关于
Image Correction的选项:勾选 Plate Solve 之后会自动处理 bias, dark 和 flat 的不同曝光时间,所以建议勾选让图片亮度更加正常.
最后构建这个滤镜总的图像. 也就是,点击下面 Save Calibrated Images 的 Enable 选项,并且将 master flat,master bias 和 master dark 全部 Enable,之后点击 START,这样就获得了初步处理过后的某一个滤镜对应的所有图片. 当前的情况是,每个滤镜的 light 图片都已经经过处理,可以开始下一步的对齐与合成.
现在选择顶栏的 Files - Import - Image Sequence. 弹出下面的这个窗口:

这里基本不用改变默认的配置,如果需要的话可以更改 Filter 后面的名字,标注一下这是哪一个滤镜的图片以便后续做区分. 之后直接点击 OK 就能导入单个滤镜的所有图片,作为一个 image sequence.
对齐 image sequence. 导入之后自动弹出一个文件预览窗口,聚焦这个窗口对图片序列进行操作. 选择顶栏的 Process - Align Stack using WCS or apertures,弹出下面的窗口:

(勾选的部分和图片一致即可.)
配置好选项后点击 OK,这时候鼠标指针会变成一个十字架的形状,用鼠标在图像序列中的任意一张图片上选择几个比较亮的星点,作为对齐的基准 (大概三到十个差不多,多选的话可能跑的慢一点). 选择足够的星点之后 Enter,开始进行图像对齐.
提示
这里有一个 tricky 的点,如果在拍摄某一个目标的时候发生了翻中天之类的操作,整个图像会翻转 180 度. 实际上 AstroImageJ 在设计上应该是可以自动处理这一类的问题,但是我实际使用的时候发现它做得非常差... 因此我当时采取的措施是,不自己来选星点,而是选择顶栏 WCS - Plate solve using Astrometry.net (with options)... 这个选项. 选完之后会弹出这个窗口:

(这个图是我写文章的时候临时截图的. 而且我想吐槽一句为什么 MacOS 自己的截图功能会导致图片周围有一圈透明部分... 虽然我知道这样看起来很高级很炫酷就是了...)
其中,那个 API key 之类的东西可以去 nova.astrometry.net 申请一个,似乎能通过 GitHub 账号登录之类,反正几分钟就可以弄好. 由于我并不清楚上述图片中选项的具体含义,因此我也没有改变默认设置,直接点击 START 开始标定. AstroImageJ 这时候会调用上述那个网站的 API,然后由它的算法自动选定点进行标定;这样做的好处是,它应该是直接把标定的内容和方向等信息写进了这个 .fits 格式图片的 header 里面,所以后面处理翻中天或者是某些星点的位置发生变化的时候,效果比之前手动选择要好不少;缺点也很明显,跑起来异常缓慢,可能一张比较大的文件要跑十几分钟.
总之这一步把整个图像序列中的所有图片全部对齐好了,下一步可以进行合成操作.
选择顶栏选项 Process - Combine stack slices into single image...,检查一下图片数量没什么问题,选择 Sum Slices,点击 OK 开始单通道合成. 最终输出的结果就是这个滤镜的所有图像合成的结果.
注意
这里可能出现一种异常情况:星点看起来不是一个点,而是一条线,像是被拉长了. 这种问题只有一种可能 —— 望远镜拍摄的时候导星偏了. 补救的措施是,回到上一步对齐的步骤,找找是哪一张图片偏离比较大,然后把它排除在合成的图像序列之外. 至少这是用 AstroImageJ 的一种解决方案,当然这个方案并不是很好,但是实属无奈之举. 如果用其他软件,它们的算法内会有相应的一些功能可以优化最后的图片质量.
以上是 AstroImageJ 的星点对齐和单通道叠加方法. 下面我们来看看 Siril 如何完成这些操作.
Siril 将上面所有操作集成在一个脚本中. 但是 Siril 不人性化的地方在于,它强制要求这个脚本处理的所有图片按照自己的规定存放在特定名称的文件夹中,否则 Siril 根本无法找到对应的文件,会直接退出脚本.
并不知道到底是谁想出来这种逆天设计的... 但凡做个通配符呢?不过我看 Siril 似乎可以自己导入脚本,没准有时间在 codex 帮助下能够写一个更加智能的版本出来罢.
Siril 以「工作目录」作为自己工作的主线. 如果想要完成星点对齐和单通道合成这样的操作,那么文件目录应该是这样的:
.
├── B
├── G
├── H
│ ├── biases
│ │ ├── 2026-04-17_14-01-34_LIGHT_S_1x1_8.30_gain56_0.00s_0000.fits
│ │ ├── ...
│ │ └── 2026-04-17_14-06-33_LIGHT_S_1x1_8.80_gain56_0.00s_0039.fits
│ ├── darks
│ │ ├── _2025-06-10_03-42-41_DARK_H_-10.00_gain56_600.00s_0046.fits
│ │ ├── ...
│ │ └── _2025-06-10_05-12-55_DARK_H_-10.00_gain56_600.00s_0055.fits
│ ├── flats
│ │ ├── FlatWizard-L_2026-04-22_20-30-34_FLAT_H_3.20_gain56_6.25s_0000.fits
│ │ ├── ...
│ │ └── FlatWizard-L_2026-04-22_20-33-00_FLAT_H_-1.30_gain56_6.25s_0019.fits
│ └── lights
│ ├── 2026-04-16_22-08-21_LIGHT_H_1x1_0.50_gain56_600.00s_0002.fits
│ ├── ...
│ └── 2026-04-17_01-17-04_LIGHT_H_1x1_-9.90_gain56_600.00s_0011.fits
├── L
└── R上面其实写过一次了,这里重申一遍. 注意,所有和脚本有关的文件夹 (flats, lights, biases, darks) 名字都不能更改,必须严格等于当前的名字,否则脚本报错.
在 Siril 中选择左上角那个小房子的图标,这代表选择工作目录. 然后选择某一个滤镜对应的文件夹,这里以 H 为例. 选择之后,点击 脚本 - Siril 脚本文件 - Mono_Preprocessing.ssf. 系统会自动开始运行脚本,可以在右侧的 log 中看到脚本当前的状态.
脚本运行结束之后生成的文件就是完成单通道合成之后的结果,一般用 result_... 来命名.
我并没有使用过 AstroImageJ 进行过三色合成,所以下面用 Siril 和 PixInsight 来完成三色合成的工作.
仍然是几步点击就可以完成,当然效果实在一般. 我们在上一步已经得到每个通道的 master 文件,这里直接点击「图像处理」里面的「合成 - RGB 合成」即可,如下图:

在弹出的窗口界面中,为每个通道选择对应的文件:这里,luminance 对应 L 通道;如果像我一样有 H 通道的图片,可以点击 + 号添加,H 通道就是 Hα\alpha 滤镜对应的通道.
在完成初步的合成之后就是进一步的调整了. 在 Siril 中,一般直接选择「图像处理 - 拉伸」中的直方图拉伸即可,点击弹出窗口中带齿轮的图标即可开始自动拉伸. 但是效果并不是很好,因此只能手动用鼠标调整各个通道的曲线,这一过程异常折磨且很难调出想要的结果,因此我想在这里略去它.
用 PI 最好的地方就是它太全面了. 下面是 PI RGB 合成的方法 (其中很大一部分是我边修改边和 GPT 的对话形成的):
以上是整个图像处理中我完成的所有具体操作. 最终我采用的是 Siril 对齐、PI 做颜色合成和后期处理的方式,成果如图:
webp 版本 (243KB)

原图 (11.3MB)

看起来还不赖 (至少作为初次尝试?),当然可提升空间还很大很大. 下次再有拍摄的机会我可能会尝试用 PS 多做一些调整,希望能够得到更好的图像.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。