Zmenšování hvězd a práce s hvězdami: vývoj metod a pracovní postup v PixelMath
Přiměřené zmenšování hvězd dokáže zvýraznit hlavní objekt snímku – zejména v oblastech hustě posetých hvězdami, jako je oblast Mléčné dráhy, kde bez zásahu nebe plné hvězd vážně ruší mlhovinu. Tento článek shrnuje metody zmenšování hvězd, od erozních filtrů dřívějších let až po dnes převažující postup přes starless snímek a jeho realizaci v PixelMath.
Dřívější postup: zmenšování hvězd erozí (Erosion)
Nejstarší forma zmenšování hvězd se opírala o erozi (Erosion): v programu Photoshop se pro to používal filtr „Minimum“, v programu PixInsight Erosion – hvězdy ve vybrané oblasti se erodovaly, aby se zmenšily. Pečlivější postup kombinoval erozi s hranovou maskou, aby se zabránilo erodování až do středu hvězd.
Upřímně řečeno jsem hvězdy původně příliš nezmenšoval, protože tradiční Erosion hvězdy často poškozovala (například z kulatých hvězd udělala kosočtverce, nebo zničila diamantové hvězdy). U některých cílů, jako je mlhovina Carina ležící v oblasti Mléčné dráhy, ale ani při sebelepší masce hvězd nezmizí ve výsledném snímku množství hvězd, které ruší mlhovinu, a tehdy se zmenšení hvězd nedá vyhnout. Právě proto je největší slabinou zmenšování hvězd erozí extrémní citlivost na kvalitu masky – pokud maska není dobře udělaná, ve středech hvězd a kolem nich snadno vznikají artefakty.

Zlomový bod: zmenšování hvězd pomocí starless snímku
Pokrok doby proměnil zmenšování hvězd postupně v něco, co lze zvládnout pouhým posunutím posuvníku, přičemž si můžete volně nastavit, jakou velikostní třídu hvězd chcete zmenšit. Klíčové bylo, že lidé začali nástroje pro odstranění hvězd (jako StarNet++) používat i ke zmenšování hvězd, ne jen k jejich odstranění. V roce 2021, po zpřístupnění ve formě skriptů, se to stalo ještě pohodlnějším a filtr „Minimum“ v PS nebo Erosion v PI už zdaleka nebyly tak oblíbené.
V PI se objevil hotový skript pro zmenšení hvězd. Nepoužívá filtr „Minimum“ ani Erosion, ale dosahuje výsledku metodou kombinace StarNet++ s Contour Mask.

Tady mimochodem vyjasním jeden bod, který se snadno chápe špatně: volba „Create star mask“ ve StarNet++ ve skutečnosti generuje nikoli masku, nýbrž samotné odstraněné hvězdy. Pokud pomocí PixelMath v PI nebo vrstev v PS přidáte tento star_mask zpět ke starless snímku, dostanete výsledek téměř totožný s původním obrazem, ze kterého hvězdy nebyly odstraněny.

Budou po zmenšení všechny hvězdy stejně velké?
Jeden ze spřízněných astrofotografů kdysi tvrdil, že po zmenšení hvězd budou mít všechny hvězdy stejnou velikost. Je to skutečně tak? Ve skutečnosti ne – velikost zmenšené hvězdy závisí především na původní velikosti hvězdy a na masce pro zmenšení hvězd.
V praxi si při každém zmenšování hvězd vyberete typ hvězd, které chcete zmenšit (především malé a střední), a vytvoříte masku odpovídající velikosti hvězd; po zmenšení se velikosti hvězd stále mohou lišit, jen z okolí hvězd lze poznat, že bylo zmenšení provedeno. Jako příklad může posloužit zvětšený snímek SL 17 – jde o výsledek dvou provedených zmenšení (víc než dvakrát jsem to zatím nezkusil).




Postup zmenšování hvězd v PixelMath (nelineární stav)
Zmenšování hvězd pomocí starless snímku lze v PI přesně provést pomocí PixelMath. Jednotlivé kroky jsou následující:
- Připravte si soubor se snímkem A a jeho starless snímek, soubor B.
- Pomocí STF spolu s HistogramTransformation současně snižte jas A i B (posuňte midtone doprava).
- Invertujte A a B se sníženým jasem (klávesy Ctrl+I).
- Vydělte invertované A invertovaným B a získáte invertovaný snímek hvězd C (PixelMath).
- Vynásobte C invertovaným B a získáte invertovanou verzi D snímku se zmenšenými hvězdami (PixelMath).
- Invertujte D zpět na normální snímek se zmenšenými hvězdami (Ctrl+I).
Kroky 5 a 6 jsou ve skutečnosti přesně vzorec pro screen blending mode. Pokud chcete silnější zmenšení, můžete v kroku 2 snížit jas A a B ještě víc. Schematický vzorec:
afterimage = ~((~mtf_low(beforeimage) / ~mtf_low(starless)) * ~starless)

Stejnou metodu lze reprodukovat i v programu Photoshop nebo Affinity Photo, rozdíl je v tom, že se místo toho použijí vrstvy, a režimy prolnutí (blending mode) mezi vrstvami se také mírně liší.

Klíč: hvězdy je třeba správně extrahovat pomocí „invertovaného dělení“
Mnoho lidí zpracovává snímek metodou starless, ale na konci se jim nepodaří úspěšně přidat hvězdy zpět – jádro problému spočívá v tom, jak byly hvězdy extrahovány.
Pokud prostě jen odečtete starless snímek od původního obrazu, abyste získali hvězdy, a pak je přidáte zpět, výsledkem bývají tlumené hvězdy s nesprávnou barvou, které vypadají, jako byste snížili krytí vrstvy. Důvodem je, že část obsahu hvězd zůstala na starless snímku, takže odečítání nedokázalo hvězdy extrahovat úplně.
Lepší způsob je získat úplné hvězdy pomocí invertovaného dělení; po dokončení zpracování snímku bez hvězd pak hvězdy vrátíte násobením nebo invertovaným násobením (screen blending mode).

Lineární a nelineární stav: vzorce pro extrakci a vrácení hvězd se liší
Poté, co RC Astro uvedla na trh StarXTerminator (SXT), se oblast použití odstranění hvězd rozšířila z nelineárního stavu i na lineární stav. V lineárním a nelineárním stavu se ale kroky a vzorce pro extrakci a vrácení hvězd přesto mírně liší, a tento bod se často přehlíží.
Nelineární stav (snímek už prošel výrazným roztažením, takže pixely už nejsou v původním lineárním vztahu):
- Extrakce hvězd: v SXT zaškrtněte „Unscreen Stars“, nebo po odstranění hvězd získejte hvězdy pomocí vzorce invertovaného dělení
~(~Original_Nebula / ~Starless_Nebula). - Vrácení hvězd: v PixelMath použijte vzorec invertovaného násobení
~(~Nebula * ~stars), což je zároveň matematický vzorec pro Screen Blending.
Lineární stav (po složení snímků, před výrazným roztažením, kdy jsou pixely stále v původním lineárním vztahu):
- Extrakce hvězd: v SXT nezaškrtávejte „Unscreen Stars“.
- Vrácení hvězd: v PixelMath použijte vzorec sčítání
Nebula + stars.

Když si ujasníte, ve kterém stavu se váš snímek nachází, a použijete odpovídající vzorce pro extrakci a vrácení hvězd, vyhnete se problému, že hvězdy po vrácení ztmavnou, změní barvu nebo se to celé nepovede.