巡星客
与AI协作开发深空摄影自动化脚本:从想法到交实现的完整旅程
图像后期精选2026年6月14日

与AI协作开发深空摄影自动化脚本:从想法到交实现的完整旅程

Target_RGB_Final.jpgTarget_RGB_Final.jpgTarget_RGB_Final.jpgTarget_RGB_Final.jpg

与Ai协作开发深空摄影自动化脚本:从想法到实现的完整旅程

本文基于 DeepSky RGB AutoProcess v11.0 的开发全过程整理,记录一位天文爱好者如何与AI协作,将繁琐的后期处理流程转化为自动化工具。

一、引言:为什么要把后期交给代码

深空摄影的后期,是很多人入坑后最痛苦的环节。PixInsight 流程复杂——GraXpert 去背景、RGB 合成、SPCC 校色、NXT 降噪、BXT 反卷积、MAS 拉伸、SXT 去星、CT 调色、SCNR 去绿……二三十个步骤,参数错一个,整晚成果可能白费。

每次后期都要花上几个小时,对着屏幕反复调参。更头疼的是,换一套素材又要重来。我就想:能不能让脚本帮我做掉大部分重复工作?我只负责最终把关?PixInsight 支持 PJSR 脚本,但学习曲线陡。我不懂编程,一个念头出现了:如果让AI帮我写呢,会达到什么效果? 这个念头开启了一段持续若干天的协作旅程。最终产出的脚本,成功在我电脑上跑通,上述几张图片均为该脚本自动化完成,我并没有做半点手动干预,可能效果还可以手动改进,之所以不这么干,我只是想在这里真实的呈现效果。这篇文章不是技术文档,而是这段旅程的完整记录。

二、从第一句话到第一个原型:需求不需要完美

一切开始得很简单。我对AI(kimi)说了一句话:

"帮我写一个深空RGB自动处理脚本,能自动识别 R/G/B 文件,做 GraXpert、SPCC、NXT、BXT,然后非线性处理。"

就这么一句话。里面甚至没说清楚"非线性处理"具体是什么。但AI理解了核心意图:这是 PixInsight 环境下的深空后期脚本,分两个阶段——线性阶段(去背景、校色、降噪),非线性阶段(拉伸、调色、出图)。

不到几分钟,AI 给出了第一个版本:对话框选文件夹、自动找 R/G/B 文件、按顺序跑流程。非线性阶段也有骨架:MAS 拉伸 → HT/CT 调整 → SCNR 去绿 → 保存。我把脚本丢进 PixInsight,选了一套素材,点了运行。十分钟后,一张完成图出现在屏幕上。虽然不完美——背景有点偏色,星点略硬——但流程是通的。这意味着我可以开始迭代了,而不是从零搭建架构。

这是与AI协作的第一个诀窍:不要试图一次性描述完美需求。给出一个清晰但粗略的目标,让AI快速搭建原型,然后你在"跑通"的基础上提反馈。 一句大白话 + 一个可运行的原型,方向立刻就正了。

三、让脚本长出"品味":审美是怎么被量化的

第一个原型能跑,但出来的图不太行。背景偏红,星点过硬,颜色整体偏素。手动调每次换素材都要重来,我需要把审美偏好变成脚本能理解的规则。这个过程经过了三步磨合。

第一步,把"感觉"变成"数值"。

我盯着屏幕说"背景太亮了",AI 把这个反馈变成了代码里的检测逻辑。后来我直接给了具体数据:

"目前可以看出来h确实增强了,背景有点发红,星系核心过曝"

AI 把这句话拆解成三个可量化的问题:背景发红、核心过曝、HII增强过强。然后给出了背景亮度区间、红色比例上限、过曝检测阈值。这些数值是根据我的反馈和深空摄影常见标准综合出来的。

第二步,建立评分机制。

我们设计了一个0到100分的综合评分系统,覆盖颜色平衡、对比度、饱和度、背景质量、红色/绿色比例、整体亮度六个维度。合格线60分。低于60分,脚本认为"不合格"。

第三步,引入重试机制。

如果 Phase 2 非线性处理完后评分低于60分,脚本关闭当前结果,根据问题类型自动调整参数,再重新跑一次。最多重试3次。饱和度过低就提升c曲线,背景过亮就降低目标背景值,过曝就收敛拉伸强度。

一开始我担心重试会越调越糟,但AI引入了"每次重试更保守"的防护策略——第二次重试时,BXT 锐化参数自动降低,避免雪上加霜。这种设计逻辑,来自AI的工程经验,不是我拍脑袋想的。

当这个闭环跑通时,脚本不再是一个"按顺序执行命令"的工具,而是一个有反馈系统的自动化流程。它能自己判断好坏,自己修正错误。不同目标、不同设备的素材差异很大,固定参数注定不可能通用,自适应才是关键。

四、当AI的理解与摄影师的审美打架:磨合的艺术

自动化流程虽然智能,但审美这件事,人和代码的视角并不总是一致的。开发过程中,至少有三四次需要校准。

第一次:暗云去哪儿了?

脚本跑完后,暗云几乎看不到了。我直接说:

"压太暗了,把云气都压没了。"

AI第一次放宽压暗幅度,但暗云出来后背景又开始发灰。我进一步要求:暗部不能压,反而要轻微提亮;中间调保持不变,只压高光。AI把这条规则写进代码:CT的K曲线中,暗部轻微提升,中间调保持不动,亮部轻微压暗。

这条规则后来成了"暗云保护红线"——任何亮度调整都不能跨越它。这是审美边界的设定

第二次:星点不该像针

BXT 反卷积后,星点变得非常锐利。我直接给了方案:

"星点处理:轻微缩星+0.4 convolution柔化"

AI 实现为三步:HT缩星 → MT缩星 → Convolution。0.45 这个数值是我试出来的——0.4 有点糊,0.5 太软,0.45 刚好。AI把"试出来的经验"固化成了固定参数,以后每次处理都不用手动调。

第三次:饱和度不是越高越好看

有一次最终出图,色彩有点"浮"。我直接说:

"最后出图饱和度稍微降低点,目前太艳丽"

AI把CT的c曲线饱和度基础值从0.50降到0.35,并增加自适应规则:如果图像本身饱和度已偏高,再额外降低。这让脚本在素材本身就很浓艳时,能自动收敛。这些磨合的本质,是把摄影师的审美直觉翻译成代码能执行的条件语句。AI负责"如何高效实现"和"如何保证不崩溃";我负责"这个边界在这里,不要再过去了"。

五、跨平台:别人的电脑才是考场

脚本在我电脑上跑得很稳,但拿到Mac上测试,立刻报错:

"include file not found: scripts/AdP/WCSmetadata.jsh"

问题出在路径。Windows版脚本库在 C:/Program Files/...,Mac版在 /Applications/...,而脚本硬编码了Windows路径。生成两个版本——Windows版和Mac版,分别指向各自的安装目录。

这件事让我意识到,脚本不是"写完就完了",而是需要实际跨平台验证。AI生成的代码在自己的环境跑通只是第一步,拿到别人机器上跑通才是闭环。

另一个坑是GraXpert的路径。不同安装位置脚本找不到,最后预留注释让用户手动改一行路径。在工程上,标注清楚比隐藏问题更重要

六、备选回退链:当首选工具掉链子

有一次运行,GraXpert 直接弹窗报错:

"cx_Freeze: Python error in main script"
"xml.etree.ParseError: not well-formed"

素材路径里有中文和空格,GraXpert 对编码处理有问题。我第一时间想到:如果 GraXpert 不可用,脚本不应该崩溃,而是要有备选方案。

"把没有 GraXpert 插件的情况做一个替代,一旦发现 GraXpert 出现报错或不成功的情况,用 DBE 或者 GC 来替代。"

AI 设计了三级备选回退链

1. 首选:GraXpert(外部AI,效果最佳)

2. 备选1:ABE(PI内置,参数最简单)

3. 备选2:DBE(PI内置,采样点自动分布)

4. 备选3:GC(PI内置,最后防线)

5. 终极回退:直接复制原文件(跳过背景提取,保证流程不中断)

你不需要安装 GraXpert 也能用脚本。如果 ABE 和 DBE 都可用,脚本自动降级到内置方案,流程不中断。只有所有方案都失败时才复制原文件——背景没去掉,但后续流程继续,至少不会白跑一趟。

依赖外部工具的脚本,必须设计备选回退链。把"单点依赖"变成"多选回退",是脚本鲁棒性的关键。

七、从RGB到LRGB:让图像更有层次

初始版本只处理RGB三通道。但很多目标我还同时拍了L(明度)和H(Ha)通道。脚本需要扩展到可选的LRGB+Ha模式。

HII增强:加小红花

有些素材的红色星云区域不够突出。Ha叠加必须在颜色校准之前完成,否则校准会把红色"拉平",效果大打折扣。

出图后HII确实变红了,但背景也跟着发红。Ha信号叠加时,把背景也一起染了色。需要先去掉Ha中的背景部分,只保留真正的发射线信号。但"去掉多少"是个微妙的平衡:去得太干净,信号也没了;去得太轻,背景又跟着上色。

试了几次参数后,并且仔细学习参考静佬的文章,我反馈:

Q值需要很小(0.05附近)"

提纯力度降下来后,Ha保留了大部分信号,同时背景被干净地去掉。增强强度也试了几次:一开始太猛,HII区域直接过曝;后来太轻,效果不明显;最终找到平衡点。

第二轮测试:

"目前可以看出来h确实增强了,背景有点发红,星系核心过曝"

效果出来了,但两个问题还在。核心过曝说明Ha在星系核心推得太高;背景发红说明截断还不够干净。又调整了几轮,最终才把背景保护和HII增强同时做到位。

L通道:让图像更锐更有层次

HII增强在RGB上稳定后,我开始处理L通道。L通道是明度信息,负责图像的锐度和细节。单独处理L通道的好处:可以比RGB更强地降噪和锐化,不用担心色彩噪声;然后和RGB合成时,L提供明度骨架,RGB提供颜色,最终图像比纯RGB更有层次、更锐利。

我注意到L和RGB合成后的效果,比单独RGB明显更通透。L通道的完整流程:去背景 → 降噪 → 锐化 → 过曝检测 → 保存。然后在第二阶段和RGB合成,L管明度,RGB管颜色。L和RGB的LRGB合成,才是让图像从"平面"变"立体"的关键。所以后来调整方向,把重点放在L通道自身的降噪和锐化上,以及LRGB合成的时机和方式。

一个教训

在实现HII增强时,遇到了一个PixInsight内部的技术兼容性问题。多通道同时处理时,某些写法在不同版本里表现不一致。AI尝试了几种方案后发现,一个更可靠但代码更长的方案反而更稳定。这件事的启发是:跨版本稳定才是第一位的。当AI说"这个写法兼容性更好"时,值得听它的。

八、协作方法论:如何让AI成为你的"结对程序员"

1. 先跑通,再优化

不要试图一次性写出完美需求。先让AI做一个"能跑"的最小版本,验证大方向正确。细节参数上,AI和你都需要数据反馈。

2. 反馈时带上数据,不要只说"感觉"

"效果不好"对AI几乎等于无效信息。我后来学会了直接贴数据:

"目前可以看出来h确实增强了,背景有点发红,星系核心过曝"

或者直接把PixInsight的Console输出粘贴给AI。数据越具体,修复越精准。

3. 利用AI的工程经验,弥补你的盲区

我一开始没想过"重试机制""备选回退"这些概念。是AI主动提出:"如果质量不合格,是否需要自动调整参数重试?"以及"如果NXT不可用,是否用MMT备选?"这些设计模式来自AI的工程经验。作为用户,你要做的不是想出这些方案,而是在AI提出时,果断说"好,加上"

4. 把审美边界写进代码注释

每次磨合出一个"红线"(暗云不能压暗、饱和度不能高于0.35),我都让AI在代码里加注释。这不仅是给别人看的,也是给AI自己看的——后续修改时不会无意中把红线越过去。

5. 接受"某些事情必须手动完成"

有些参数AI无法自动确定。HII增强的Q值,不同素材比例不同,需要人工试验。GraXpert的安装路径,每台电脑不同。在这些地方,AI的任务是"提供可配置参数,给出合理的默认值"。

九、边界与建议

1.自动化的边界

交给代码的:重复性流程、参数自适应、批量一致性、跨平台执行、备选回退。

留给人的:最终审美把关、特殊目标处理、素材质量评估、参数初值调试、外部工具路径配置。

脚本不是替代你,而是把你从80%的重复劳动中解放出来,让你把精力集中在20%的关键决策上。

2.给天文摄影同好的建议

1.明确痛点。不要为自动化而自动化。痛点越具体,脚本实用性越强。

2.先让AI做流程图。确认步骤顺序和依赖关系,比直接写代码更容易发现逻辑漏洞。

3. 准备一套测试素材。这是你"最熟悉的敌人"——你知道它应该出什么效果。反复跑,差距在哪里就反馈给AI改哪里。

4. 记录每次反馈。让AI把修改原因写成注释,后续迭代不会"反复横跳"。

5. 不要追求100%自动。80%的自动化就已经能带来巨大效率提升。剩下的20%,手动干预不仅更快,而且更安全。

6. 做好版本备份。手动保存 v1.0 / v2.0 / v3.0,某次修改出问题能立刻回退。

十、结语:从一个人到一对搭档

DeepSky_RGB_AutoProcess.js 从第一句话到最终交付,经历了超过一百轮对话。它从一个简单的线性→非线性流程,成长为一个有质量检测、有自适应重试、有跨平台兼容、有备选回退链的自动化工具。这个成长过程,本质上是一个摄影师和一个AI程序员的结对编程过程。

AI 不是替代你的判断,而是把你的判断放大和加速。审美是你的,边界是你定的,最终的"好不好看"也是你说了算。AI 负责把这些判断变成可靠的代码,在深夜的电脑前替你重复执行,在别人的机器上稳定运行。

深空摄影的本质,是人类在渺小中捕捉辽阔。而当你能把繁琐的后期交给代码,你就有更多时间仰望星空,思考下一次该拍什么目标。

开发者:沉浸

脚本:DeepSky RGB AutoProcess v11.0

适用:PixInsight 1.9.3+

评论 (0)

暂无评论