本站提供正體中文版。切換到正體中文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

线性与非线性状态下,取出与放回星点的公式对照

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