朱晓峰

一只生之无趣死之乏味的丧家之犬

0%

107 Piscium 恒星光谱计划

前言

记录一下实现一个想法的过程

真实影像

远程天文台拍摄过程

107_psc_deepsky_shooting

原图

处理过程

107_psc_pixinsight

光谱图像制作

获取原始数据

  1. 数据源:https://www.eso.org/sci/observing/phase3/data_streams.html
  2. 搜索HD编号:HD 10476,找到两份光谱数据,选择合适的下载,最好包含可见光波段

107_psc_search_spectrum

处理光谱数据

  1. 读取数据,并转换合适的单位
  2. 降采样(可选)
  3. Savitzky-Golay滤波
  4. 输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
from astropy.io import fits
from scipy.signal import savgol_filter
import matplotlib.pyplot as plt

# 导入文件
filepath = os.path.join(r'./spectrum', 'ADP.2016-09-27T07_02_47.049.fits')
f = fits.open(filepath)
spec = f[1]
data = spec.data

# 获取数据,并转换单位
wave_nm = [wvl/10 for wvl in list(data.field(0)[0])]
flux = list(data.field(1)[0])

# 降采样
wave_nm = wave_nm[0::3]
flux = flux[0::3]

# Savitzky-Golay滤波
flux = savgol_filter(flux, 53, 1, mode= 'nearest')

# 设置输出图片尺寸、标题、纵轴、横轴
plt.figure().set_size_inches(24, 4)
plt.title('HD 10476 Spectrum Comparison')
plt.xlabel('Wavelength (nm)')
plt.ylabel('Flux (ADU s-1 mW-1)')

# 绘制
plt.plot(wave_nm, flux)
plt.show()

滤波前的结果

107_psc_specturm_no_filter

滤波后的结果

107_psc_specturm

创建渐变光谱背景

由于我的Adobe Photoshop 2022没有自带的光谱渐变,所以我只能手工创建

色阶并不是均分的,因为在人眼可见光中,红光占的谱线宽度比别的颜色要更宽,所以在编辑颜色的渐变时,给红色到黑色更长的渐变过程

107_psc_PS_gradient_editor

合并图层

107_psc_PS_gradient_merge_layer

用universe sandbox软件做模拟效果图

107_psc_universe_sandbox

最后PS合成

  1. 添加背景
  2. 调整光谱背景的对比度
  3. 将python导出的光谱曲线导入
  4. 增加波长刻度
  5. 增加黑色的竖线,调整透明度
  6. 增加文字,外发光效果

107_psc_PS_all_layers

后记

我发现天文数据虽然很公开,但都是在自己平台发布自己天文设备采集到的数据,导致搜寻数据困难,而且数据格式不一,虽然有很多数据整合平台,但感觉反而更乱了,花了很大精力,开了无数个chrome标签页,爆了无数次内存,才终于找到可见光波段的光谱数据

滤波调参时,有一个重要参考,至少要将钠的D1、D2两条很近的吸收带分辨出来

虽然全球各地有很多远程天文台可以租用,总有夜晚晴朗的天文台,但仍然很容易观测失败,例如天空突然飞来一堆云、对焦失败、赤道仪故障星点拉线等

用恒星光谱作为礼物可能是个还不错的选择,但这不是流水线式的工作,最重要的还是真诚。