图片处理-专业星空堆栈
把你给的一批星空 / 星野照片自动堆栈成一张更干净、更出片的图。支持常见格式(JPG / PNG / TIFF)和相机 RAW 格式(CR2 / CR3 / NEF / ARW / DNG / RAF / RW2 / ORF / SR2 / PEF / NRW)。
什么时候用
- 用户给了一批星空照片,要求「堆栈 / 叠加 / 降噪 / 出星轨 / 出流星」。
- 关键词:星空堆栈、星轨、流星雨、银河降噪、深空叠加、stacking、light frames。
工作流程
- 收图:让用户给出图片所在文件夹路径或文件通配符(例如
"D:/astro/2026-09-20/*.jpg"或"D:/astro")。RAW 和常规格式混放也没问题。 - 确认要素:按下方「可自定义要素」确认参数。默认行为是
stack(普通堆栈,不降噪)+ 自动对齐 + PNG(8bit,易预览) + 自动拉伸;降噪与调色都是可选的,用户不指定就不做。想省事可先用一键预设--preset(如galaxy银河暖金)。出片颜色可从 10 个专业调色模板里选一个(或--grade all一次出 10 张对比)。要最高画质后期空间,建议-o xxx.tif出 16bit。 - 跑脚本:用 managed python venv 运行
star_stack.py(命令见下)。张数多 / 图很大时加--low-mem(分块+落盘,防内存溢出),或--resize 2400降分辨率。 - 交付:把结果图用
present_files展示,并简要说明用了什么模式/预设/参数、处理了 N 张图、套了哪个调色模板。
命令示例
# 1) 默认:普通堆栈、不降噪、自动对齐、PNG 易预览
python star_stack.py -i "D:/astro/*.cr2" -o "D:/astro/stacked.png"
# 2) 一键预设(银河暖金,自动选好模式/对齐/调色,直接出片)
python star_stack.py -i "D:/astro" --preset galaxy -o "D:/astro/stacked.png"
# 3) 选择降噪(中值,抗飞机/卫星线)后再堆栈
python star_stack.py -i "D:/astro/*.cr2" --denoise median -o "D:/astro/stacked.png"
# 4) 堆栈后套一个调色模板直接出片(银河金核),并控制调色强度 0.7
python star_stack.py -i "D:/astro/*.jpg" --grade milky_gold --grade-strength 0.7 -o "D:/astro/stacked.png"
# 5) 一次性输出全部 10 个调色版本,挑最满意的
python star_stack.py -i "D:/astro/*.jpg" --grade all -o "D:/astro/stacked.png"
# 6) 光污染 / 背景偏色中性化(按暗部像素做白平衡)
python star_stack.py -i "D:/astro" --bg-neutralize --preset galaxy_blue -o "D:/astro/stacked.png"
# 7) 星轨(不旋转对齐,lighten 合成)
python star_stack.py -i "D:/astro/*.jpg" --mode star-trail --align none -o "D:/astro/trail.jpg"
# 8) 流星雨(lighten 合成,保留亮迹)
python star_stack.py -i "D:/astro/*.jpg" --mode meteor --align none -o "D:/astro/meteor.png"
# 9) 大批量 / 大图:低内存模式 + 中值降噪 + 16bit TIFF 出图
python star_stack.py -i "D:/astro" --low-mem --denoise median -o "D:/astro/stacked.tif"
# 10) Sigma 截断降噪(去飞机/卫星拖线更干净)
python star_stack.py -i "D:/astro/*.NEF" --denoise sigma --sigma-k 2.5 -o "D:/astro/stacked.tif"
# 11) 查看清单
python star_stack.py --list-presets # 一键预设
python star_stack.py --list-grades # 调色模板
python star_stack.py --version # 版本
> 运行用的 python 指 ~/.workbuddy/binaries/python/envs/default/Scripts/python.exe(Windows;已预装 numpy/Pillow/opencv-python-headless/rawpy/tifffile)。
一键预设(--preset)
预设只是把常用组合一次设好;你在命令行里显式写的参数会覆盖预设。
| 预设 | 效果 |
|---|---|
galaxy |
银河 · 自动对齐 + 不降噪 + 暖金调(milky_gold),直接出片 |
galaxy_blue |
银河冷调 · 自动对齐 + 深空蓝(deep_blue) |
deepsky |
深空 · 自动对齐 + 中值降噪去拖线 + 自然色(适合张数多的深空) |
startrail |
星轨 · lighten 合成 + 冷调(cold_trail,不动对齐) |
meteor |
流星 · lighten 合成保留亮迹 + 自然色 |
natural |
自然原色 · 仅堆栈 + 自动对齐,最贴近原始 |
可自定义要素(给用户的选择项)
| 要素 | 可选值 | 说明 / 默认 |
|---|---|---|
一键预设 --preset |
galaxy / galaxy_blue / deepsky / startrail / meteor / natural |
常用组合一键设好;显式参数优先覆盖。见上方预设表 |
堆栈模式 --mode |
stack(普通堆栈,默认)<br />star-trail(星轨)<br />meteor(流星) |
stack=对齐后叠加;星轨/流星=保留运动亮迹做 lighten 合成 |
降噪 --denoise(可选) |
off(默认不降噪)<br />median(中值,抗飞机/卫星线)<br />mean(均值)<br />sigma(Sigma 截断去异常,配 --sigma-k) |
默认 off;只有用户明确要求降噪时才开启。张数越少越不建议强降噪 |
对齐 --align |
auto(星点平移对齐,默认)<br />none(原位置直接叠) |
三脚架固定且画面不动用 none 更快更稳;有轻微位移/抖动用 auto |
对齐下采样 --align-downscale |
整数(默认 1200,0=不下采样) | 对齐时先降到此最长边做相位相关,大图更快更稳 |
对齐位移上限 --max-shift |
整数像素,0=不限制 | 超过此位移视为异常不做对齐(默认 0,仅做超出图幅的异常检测) |
对齐置信度 --min-resp |
0~1(默认 0.02) | 相位相关峰值过低(画面无稳定平移/云多)时按“已对齐”处理,避免误移 |
调色模板 --grade(可选) |
none(默认不调色)<br />自然原色/深空蓝/银河金核/赛博霓虹/极光绿/电影青橙/冷调星轨/暖调温馨/高对比黑白/梦幻紫粉<br />all(全部 10 个都出) |
堆栈后套色直接出片;选 all 一次出 10 张对比挑最满意的。见下方清单 |
调色强度 --grade-strength |
0~1(默认 1.0) | 0=不改色、1=完整套用,中间值做过渡(怕调过头时用 0.5~0.8) |
背景中性化 --bg-neutralize |
开关(默认关) | 按暗部像素做白平衡,抵消光污染/城市光造成的背景偏色 |
低内存 --low-mem |
开关(默认关) | 逐帧落盘 + 分块合成,处理大图且张数多时防内存溢出;结果与普通模式一致 |
输出格式 --format |
png(8bit,默认,通用易预览)<br />tiff(16bit 无损,留最多后期空间,推荐出 .tif)<br />jpg(8bit,有损) |
不指定时按 -o 后缀推断;例:-o result.tif 即出 16bit TIFF |
色调拉伸 --stretch |
on(自动百分位拉伸+可选 gamma,默认)<br />off(原样线性输出) |
让暗部星空更通透。可用 --p-low/--p-high/--gamma 微调 |
参考帧 --reference |
整数索引(0 起) | 对齐以第几张为基准,默认第 0 张 |
限用张数 --max-images |
整数,0=全部 | 张数太多想抽样时限制 |
缩小边长 --resize |
整数(最长边像素)或留空 | 大图/多张防内存溢出,例如 2000~3000 |
暗场 --dark |
暗场帧路径(可选) | 提供主暗场帧可减去热噪/坏点 |
| RAW 处理 | 自动用相机白平衡 + sRGB + 16bit | 如需改可在脚本内 load_image 调整 |
10 个专业星空调色模板(--grade)
| 模板名 | 风格 | 适用 |
|---|---|---|
natural 自然原色 |
接近传感器真实色彩,中性不偏色 | 想保留原始观感 / 自己后期 |
deep_blue 深空蓝 |
冷调蓝青,经典夜空氛围 | 一般星空、蓝调时刻 |
milky_gold 银河金核 |
暖金高光,强化 Hα 红橙星云 | 银河核心、星云 |
cyberpunk 赛博霓虹 |
品红/青分离调色,高饱和科幻感 | 创意、赛博风 |
aurora_green 极光绿 |
阴影偏绿,夜光氛围 | 极光、绿色气辉 |
cinematic 电影青橙 |
阴影青、高光橙,大片质感 | 风光、电影感 |
cold_trail 冷调星轨 |
低饱和冷色 | 长曝光星轨 |
warm_cozy 暖调温馨 |
暖白平衡,柔和琥珀感 | 地景带暖光 |
mono 高对比黑白 |
去色高反差 | 极简星轨 / 艺术 |
dreamy_purple 梦幻紫粉 |
紫粉色调,柔美 | 艺术、氛围片 |
依赖
- Python ≥ 3.10
numpyPillowopencv-python-headlessrawpytifffile- 安装:
python -m pip install -r requirements.txt
注意事项
- 星轨 / 流星模式建议
--align none(固定三脚架时画面本就对齐,lighten 合成才能拉出连续轨迹;若对齐会把轨迹拉直)。 - 降噪模式张数越多越干净,一般 ≥ 10 张效果明显;若图很大(>4000 万像素)且张数多,用
--low-mem或--resize否则内存吃紧。 - 对齐是平移对齐(专为固定三脚架设计):相机与星空相对静止、只存在轻微位移/抖动时最准;若带赤道仪或有人为大幅转动,请用
--align none。 --bg-neutralize适合有城市光 / 光污染的片子;若片子背景本就中性,可不开。- RAW 默认 16bit 输出,TIFF 同样 16bit,后期空间最大。