缩星与星点处理:方法演进与 PixelMath 实战
适当缩减星点,可以让拍摄的主体更明显,尤其在银河区这类星点密集的区域,若不处理,满天星点会严重干扰云气。这篇把缩星方法从早年的侵蚀滤镜,一路整理到现在主流的去星图像法与 PixelMath 实战。
早年做法:侵蚀(Erosion)缩星
最早的缩星,靠的是侵蚀(Erosion):在 Photoshop 中用“最小化滤镜”,或在 PixInsight 中用 Erosion,对选区的星点进行侵蚀,让星点变小。更讲究一点,会配合边缘蒙版使用,避免侵蚀到星点中心。
老实说,我原本不太缩星,因为传统的 Erosion 常常会把星点弄坏(例如把圆星点弄成菱形、或破坏钻石星)。但有些目标,例如位在银河区的船底座大星云,就算星点蒙版做得再好,成品仍会有大量星点干扰云气,这时就不得不缩星。也因此,侵蚀缩星最大的罩门,就是对蒙版质量极度敏感,蒙版没做好,星点中心与周边很容易产生伪影。

转折点:用去星图像来缩星
时代的进步,让缩星逐渐变成拉拉滑块就能完成、要缩哪种大小等级的星点都可自定义。关键在于:大家开始拿去星工具(如 StarNet++)来缩星,而不只是拿它去星。 到了 2021 年,Script 化之后更方便,PS 的最小化滤镜或 PI 的 Erosion 已经不太流行了。
PI 出现了现成可用的缩星脚本,它并不使用最小化滤镜或 Erosion,而是采用 StarNet++ 搭配 Contour Mask 的方法来达成。

这里顺带澄清一个容易搞错的点:StarNet++ 中那个“Create star mask”选项,产生的其实并不是蒙版,而是被去掉的星点本身。如果你用 PI 的 PixelMath 或 PS 的图层,把这个 star_mask 加回已去星的图像,就会得到几乎等同于没去星的原图像。

缩星后星点会不会都变一样大
曾有同好表示,缩星之后星点大小都会变成一样。那是否真是如此?其实不然——缩完的星点大小,主要取决于原本的星点大小与缩星蒙版。
实务上,每次缩星时挑选要缩小的星点类型(以中小型星点为主),并制作符合星点大小的适当蒙版,缩完之后的星点大小依然可以有分别,只是能从星点周边看出缩星的痕迹。以 SL 17 的放大图像为例,就是共缩星两次的结果(我目前没做过两次以上)。




PixelMath 缩星实作(非线性状态)
以去星图像来缩星,可以在 PI 中用 PixelMath 精准完成。分解步骤如下:
- 准备好图像文件 A,以及 A 的去星图像文件 B。
- 用 STF 配合 HistogramTransformation,同时调低 A 与 B 的亮度(往右移动 midtone)。
- 反相调低亮度后的 A 与 B(键盘 Ctrl+I)。
- 将反相 A 除以反相 B,得到反相星点图像 C(PixelMath)。
- 将 C 乘上 B 的反相,得到缩星图像的反相 D(PixelMath)。
- 把 D 反相变回正常的缩星图像(Ctrl+I)。
其中步骤 5、6 实际上就是 screen blending mode 的公式。若希望缩星幅度更强,可以在步骤 2 把 A 与 B 的亮度调得更低。示意性公式如下:
afterimage = ~((~mtf_low(beforeimage) / ~mtf_low(starless)) * ~starless)

同样的方法也可以在 Photoshop 或 Affinity Photo 中重现,差别在于改用图层来完成,图层间的混合模式(blending mode)也略有不同。

关键:星点要用“反相除法”正确取出
很多人用去星方式修图、最后加回星点却失败,关键就出在星点是怎么取出来的。
如果只是单纯把去星图像从原图像减去得到星点,再把星点加回,结果往往是星点黯淡、颜色不正确,看起来像是调低了图层不透明度。原因是有部分星点的内容被留在了去星图像上,减法没能把星点完整取出来。
较好的方式,是用反相除法取得完整星点;处理完无星图像后,再用乘法或反相乘法(screen blending mode)把星点放回去。

线性与非线性:取出与放回的公式不同
在 RC Astro 推出 StarXTerminator(SXT)之后,去星的适用范围从非线性状态延伸到了线性状态。不过线性与非线性状态下,取出星点与放回星点的步骤与公式仍稍有不同,这点常被忽略。
非线性状态(图像已经过大幅拉伸,像素间不再是原始线性关系):
- 取出星点:SXT 勾选“Unscreen Stars”,或在去星后用反相除法公式
~(~Original_Nebula / ~Starless_Nebula)取得星点。 - 放回星点:PixelMath 使用反相乘法公式
~(~Nebula * ~stars),这也就是 Screen Blending 的数学公式。
线性状态(叠完图后、大幅拉伸之前,像素间呈现原始线性关系):
- 取出星点:SXT“不”勾选“Unscreen Stars”。
- 放回星点:PixelMath 使用加法公式
Nebula + stars。

搞清楚自己的图像处于哪个状态、用对应的公式取出与放回星点,就能避免星点放回后变暗、变色或失败的问题。