本站提供简体中文版。切换到简体中文This site is available in English.View in Englishこのサイトには日本語版があります。日本語で表示이 사이트는 한국어로도 제공됩니다.한국어로 보기Diese Website ist auch auf Deutsch verfügbar.Auf Deutsch ansehenEste sitio web también está disponible en español.Ver en españolQuesto sito è disponibile anche in italiano.Visualizza in italianoCe site est également disponible en français.Afficher en françaisEste site também está disponível em português.Ver em portuguêsDeze website is ook beschikbaar in het Nederlands.In het Nederlands bekijkenЭтот сайт также доступен на русском языке.Смотреть на русскомयह वेबसाइट हिन्दी में भी उपलब्ध है।हिन्दी में देखेंهذا الموقع متاح أيضًا باللغة العربية.عرض بالعربيةSitus ini juga tersedia dalam bahasa Indonesia.Lihat dalam bahasa IndonesiaBu site Türkçe olarak da mevcut.Türkçe görüntüleTa strona jest dostępna także po polsku.Wyświetl po polskuTrang web này cũng có phiên bản tiếng Việt.Xem bằng tiếng Việtاین وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسی

縮星與星點處理:方法演進與 PixelMath 實作

拉伸與非線性2021.01

適當縮減星點,可以讓拍攝的主體更明顯,尤其在銀河區這類星點密集的區域,若不處理,滿天星點會嚴重干擾雲氣。這篇把縮星方法從早年的侵蝕濾鏡,一路整理到現在主流的去星影像法與 PixelMath 實作。

早年做法:侵蝕(Erosion)縮星

最早的縮星,靠的是侵蝕(Erosion):在 Photoshop 中用「最小化濾鏡」,或在 PixInsight 中用 Erosion,對選取區的星點進行侵蝕,讓星點變小。更講究一點,會配合邊緣遮罩使用,避免侵蝕到星點中心。

老實說,我原本不太縮星,因為傳統的 Erosion 常常會把星點弄壞(例如把圓星點弄成菱形、或破壞鑽石星)。但有些目標,例如位在銀河區的船底座大星雲,就算星點遮罩做得再好,成品仍會有大量星點干擾雲氣,這時就不得不縮星。也因此,侵蝕縮星最大的罩門,就是對遮罩品質極度敏感,遮罩沒做好,星點中心與周邊很容易產生人造物。

早年配合 StarNet++ 遮罩的縮星前後比較(船底座大星雲)

轉捩點:用去星影像來縮星

時代的進步,讓縮星逐漸變成拉拉滑桿就能完成、要縮哪種大小等級的星點都可自訂。關鍵在於:大家開始拿去星工具(如 StarNet++)來縮星,而不只是拿它去星。 到了 2021 年,Script 化之後更方便,PS 的最小化濾鏡或 PI 的 Erosion 已經不太流行了。

PI 出現了現成可用的縮星腳本,它並不使用最小化濾鏡或 Erosion,而是採用 StarNet++ 搭配 Contour Mask 的方法來達成。

以 StarNet++ 為基礎的腳本化縮星示意

這裡順帶澄清一個容易搞錯的點:StarNet++ 中那個「Create star mask」選項,產生的其實並不是遮罩,而是被去掉的星點本身。如果你用 PI 的 PixelMath 或 PS 的圖層,把這個 star_mask 加回已去星的影像,就會得到幾乎等同於沒去星的原影像。

StarNet++ 產生的「star mask」其實是星點本身,加回去可還原影像

縮星後星點會不會都變一樣大

曾有同好表示,縮星之後星點大小都會變成一樣。那是否真是如此?其實不然——縮完的星點大小,主要取決於原本的星點大小縮星遮罩

實務上,每次縮星時挑選要縮小的星點類型(以中小型星點為主),並製作符合星點大小的適當遮罩,縮完之後的星點大小依然可以有分別,只是能從星點周邊看出縮星的痕跡。以 SL 17 的放大影像為例,就是共縮星兩次的結果(我目前沒做過兩次以上)。

縮星後星點大小仍有分別、並可從周邊看出縮星痕跡(SL 17)

SL 17 放大檢視縮星兩次的效果

以去星影像法縮星,得到更自然的星點結果

縮星前後的局部對照

PixelMath 縮星實作(非線性狀態)

以去星影像來縮星,可以在 PI 中用 PixelMath 精準完成。分解步驟如下:

  1. 準備好影像檔 A,以及 A 的去星影像檔 B。
  2. 用 STF 配合 HistogramTransformation,同時調低 A 與 B 的亮度(往右移動 midtone)。
  3. 反相調低亮度後的 A 與 B(鍵盤 Ctrl+I)。
  4. 將反相 A 除以反相 B,得到反相星點影像 C(PixelMath)。
  5. 將 C 乘上 B 的反相,得到縮星影像的反相 D(PixelMath)。
  6. 把 D 反相變回正常的縮星影像(Ctrl+I)。

其中步驟 5、6 實際上就是 screen blending mode 的公式。若希望縮星幅度更強,可以在步驟 2 把 A 與 B 的亮度調得更低。示意性公式如下:

afterimage = ~((~mtf_low(beforeimage) / ~mtf_low(starless)) * ~starless)

以 PixelMath 縮星的分解步驟示意

同樣的方法也可以在 Photoshop 或 Affinity Photo 中重現,差別在於改用圖層來完成,圖層間的混合模式(blending mode)也略有不同。

以 Photoshop 圖層重現 PixelMath 縮星,並標註各圖層混合模式

關鍵:星點要用「反相除法」正確取出

很多人用去星方式修圖、最後加回星點卻失敗,關鍵就出在星點是怎麼取出來的。

如果只是單純把去星影像從原影像減去得到星點,再把星點加回,結果往往是星點黯淡、顏色不正確,看起來像是調低了圖層不透明度。原因是有部分星點的內容被留在了去星影像上,減法沒能把星點完整取出來。

較好的方式,是用反相除法取得完整星點;處理完無星影像後,再用乘法或反相乘法(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

線性與非線性狀態下,取出與放回星點的公式對照

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