縮星與星點處理:方法演進與 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。

搞清楚自己的影像處於哪個狀態、用對應的公式取出與放回星點,就能避免星點放回後變暗、變色或失敗的問題。