کوچکسازی ستارهها و کار با ستارهها: سیر تحول روشها و پیادهسازی در PixelMath
کوچکسازی مناسب ستارهها میتواند سوژهٔ اصلی عکس را نمایانتر کند، بهویژه در نواحی متراکم از ستاره مانند محدودهٔ راه شیری که اگر ستارهها پردازش نشوند، آسمانی پر از ستاره بهشدت مزاحم سحابیها میشود. در این نوشته روشهای کوچکسازی ستارهها را از فیلترهای فرسایش (Erosion) سالهای دور تا روش رایج امروزی، یعنی استفاده از تصویر بدون ستاره و پیادهسازی آن در PixelMath، مرور میکنم.
روش سالهای دور: کوچکسازی ستارهها با فرسایش (Erosion)
نخستین شکل کوچکسازی ستارهها بر فرسایش (Erosion) تکیه داشت: در Photoshop از فیلتر «Minimum» و در PixInsight از Erosion استفاده میشد تا ستارههای داخل ناحیهٔ انتخابشده فرسوده و کوچک شوند. کسانی که دقیقتر کار میکردند، آن را با یک ماسک لبه همراه میکردند تا مرکز ستارهها فرسوده نشود.
راستش را بخواهید، من در ابتدا زیاد ستارهها را کوچک نمیکردم، چون Erosion سنتی اغلب ستارهها را خراب میکند (مثلاً ستارههای گرد را لوزیشکل میکند یا ستارههای الماسی را از بین میبرد). اما در برخی سوژهها، مانند سحابی بزرگ شاهتخته (Carina Nebula) که در محدودهٔ راه شیری قرار دارد، هر قدر هم ماسک ستارهها را خوب بسازید، باز هم در تصویر نهایی انبوهی از ستارهها مزاحم سحابی میشوند و در چنین حالتی چارهای جز کوچکسازی ستارهها نیست. به همین دلیل، بزرگترین نقطهضعف کوچکسازی با فرسایش، حساسیت شدید آن به کیفیت ماسک است؛ اگر ماسک خوب ساخته نشده باشد، بهراحتی در مرکز ستارهها و پیرامون آنها آرتیفکت پدید میآید.

نقطهٔ عطف: کوچکسازی ستارهها با تصویر بدون ستاره
پیشرفت زمانه کمکم کوچکسازی ستارهها را به کاری تبدیل کرد که تنها با کشیدن یک اسلایدر انجام میشود و میتوان انتخاب کرد که کدام ردهٔ اندازهٔ ستارهها کوچک شود. نکتهٔ کلیدی این است: مردم شروع کردند به استفاده از ابزارهای حذف ستاره (مانند StarNet++) برای کوچکسازی ستارهها، نه فقط برای حذف آنها. تا سال 2021 که کار به شکل script درآمد، همهچیز راحتتر شد و دیگر فیلتر Minimum در Photoshop یا Erosion در PixInsight چندان رایج نبود.
در PixInsight یک script آمادهٔ کوچکسازی ستارهها پدیدار شد که نه از فیلتر Minimum استفاده میکند و نه از Erosion، بلکه هدف خود را با ترکیب StarNet++ و Contour Mask به دست میآورد.

همینجا نکتهای را که بهسادگی اشتباه گرفته میشود روشن کنم: گزینهٔ «Create star mask» در StarNet++ در واقع ماسک تولید نمیکند، بلکه خود ستارههای حذفشده را میسازد. اگر این star_mask را با PixelMath در PixInsight یا با لایههای Photoshop دوباره به تصویر بدون ستاره اضافه کنید، چیزی به دست میآورید که تقریباً با تصویر اصلی و حذفنشده یکسان است.

آیا پس از کوچکسازی، همهٔ ستارهها هماندازه میشوند؟
یکی از دوستان علاقهمند زمانی گفت که پس از کوچکسازی، اندازهٔ همهٔ ستارهها یکسان میشود. آیا واقعاً چنین است؟ در واقع اینطور نیست — اندازهٔ ستاره پس از کوچکسازی عمدتاً به اندازهٔ اولیهٔ خود ستاره و ماسک کوچکسازی بستگی دارد.
در عمل، هر بار که ستارهها را کوچک میکنید نوع ستارههای موردنظر را انتخاب میکنید (بیشتر ستارههای کوچک و متوسط) و ماسکی مناسب و متناسب با اندازهٔ ستارهها میسازید؛ بنابراین پس از کوچکسازی هم اندازهٔ ستارهها همچنان با هم تفاوت دارد و فقط از پیرامون ستارهها میتوان رد کوچکسازی را تشخیص داد. تصویر بزرگشدهٔ SL 17 را در نظر بگیرید: این نتیجهٔ دو بار کوچکسازی ستارههاست (تا امروز بیش از دو بار انجام ندادهام).




پیادهسازی کوچکسازی ستارهها در PixelMath (حالت غیرخطی)
کوچکسازی ستارهها بر پایهٔ تصویر بدون ستاره را میتوان در PixInsight با PixelMath بهدقت انجام داد. مراحل تفکیکشده به این شرح است:
- فایل تصویر 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) میان لایهها هم اندکی فرق میکند.

نکتهٔ کلیدی: ستارهها را باید با «تقسیم معکوس» درست بیرون کشید
بسیاری از افراد تصویر را با روش حذف ستاره پردازش میکنند اما در پایان، هنگام بازگرداندن ستارهها شکست میخورند؛ گره کار دقیقاً در این است که ستارهها چگونه بیرون کشیده شدهاند.
اگر تصویر بدون ستاره را صرفاً از تصویر اصلی کم کنید تا ستارهها به دست آیند و سپس همان ستارهها را بازگردانید، نتیجه اغلب ستارههایی کمفروغ و با رنگ نادرست است که انگار opacity لایه را پایین آوردهاید. علت این است که بخشی از محتوای ستارهها در تصویر بدون ستاره باقی مانده و تفریق نتوانستهاست ستارهها را بهطور کامل بیرون بکشد.
روش بهتر این است که ستارههای کامل را با تقسیم معکوس به دست آورید؛ سپس پس از پایان پردازش تصویر بدون ستاره، ستارهها را با ضرب یا ضرب معکوس (screen blending mode) دوباره سر جایشان بگذارید.

خطی و غیرخطی: فرمول بیرون کشیدن و بازگرداندن فرق میکند
پس از آنکه RC Astro نرمافزار StarXTerminator (SXT) را عرضه کرد، دامنهٔ کاربرد حذف ستارهها از حالت غیرخطی به حالت خطی هم گسترش یافت. با این حال، مراحل و فرمولهای بیرون کشیدن و بازگرداندن ستارهها میان حالت خطی و غیرخطی همچنان اندکی فرق دارد و این نکته اغلب نادیده گرفته میشود.
حالت غیرخطی (تصویر پیشتر بهشدت کشیده شده و رابطهٔ میان پیکسلها دیگر رابطهٔ خطی اولیه نیست):
- بیرون کشیدن ستارهها: در SXT گزینهٔ «Unscreen Stars» را تیک بزنید، یا پس از حذف ستارهها با فرمول تقسیم معکوس
~(~Original_Nebula / ~Starless_Nebula)ستارهها را به دست آورید. - بازگرداندن ستارهها: در PixelMath از فرمول ضرب معکوس
~(~Nebula * ~stars)استفاده کنید؛ این همان فرمول ریاضی Screen Blending است.
حالت خطی (پس از اینتگریشن (integration) و پیش از کشش شدید، وقتی پیکسلها هنوز رابطهٔ خطی اولیهٔ خود را حفظ کردهاند):
- بیرون کشیدن ستارهها: در SXT گزینهٔ «Unscreen Stars» را تیک نزنید.
- بازگرداندن ستارهها: در PixelMath از فرمول جمع
Nebula + starsاستفاده کنید.

اگر روشن کنید تصویرتان در کدام حالت است و با فرمول متناظر ستارهها را بیرون بکشید و بازگردانید، از مشکل تیره شدن، تغییر رنگ یا شکست کامل ستارهها پس از بازگرداندن جلوگیری میکنید.