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

کوچک‌سازی مناسب ستاره‌ها می‌تواند سوژهٔ اصلی عکس را نمایان‌تر کند، به‌ویژه در نواحی متراکم از ستاره مانند محدودهٔ راه شیری که اگر ستاره‌ها پردازش نشوند، آسمانی پر از ستاره به‌شدت مزاحم سحابی‌ها می‌شود. در این نوشته روش‌های کوچک‌سازی ستاره‌ها را از فیلترهای فرسایش (Erosion) سال‌های دور تا روش رایج امروزی، یعنی استفاده از تصویر بدون ستاره و پیاده‌سازی آن در PixelMath، مرور می‌کنم.

روش سال‌های دور: کوچک‌سازی ستاره‌ها با فرسایش (Erosion)

نخستین شکل کوچک‌سازی ستاره‌ها بر فرسایش (Erosion) تکیه داشت: در Photoshop از فیلتر «Minimum» و در PixInsight از Erosion استفاده می‌شد تا ستاره‌های داخل ناحیهٔ انتخاب‌شده فرسوده و کوچک شوند. کسانی که دقیق‌تر کار می‌کردند، آن را با یک ماسک لبه همراه می‌کردند تا مرکز ستاره‌ها فرسوده نشود.

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

مقایسهٔ پیش و پس از کوچک‌سازی ستاره‌ها در سال‌های دور، همراه با ماسک StarNet++ (سحابی بزرگ شاه‌تخته)

نقطهٔ عطف: کوچک‌سازی ستاره‌ها با تصویر بدون ستاره

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

در PixInsight یک script آمادهٔ کوچک‌سازی ستاره‌ها پدیدار شد که نه از فیلتر Minimum استفاده می‌کند و نه از Erosion، بلکه هدف خود را با ترکیب StarNet++ و Contour Mask به دست می‌آورد.

نمایی از کوچک‌سازی ستاره‌ها به کمک script مبتنی بر StarNet++

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

«star mask» که StarNet++ تولید می‌کند در واقع خود ستاره‌هاست و افزودن دوبارهٔ آن تصویر را بازمی‌گرداند

آیا پس از کوچک‌سازی، همهٔ ستاره‌ها هم‌اندازه می‌شوند؟

یکی از دوستان علاقه‌مند زمانی گفت که پس از کوچک‌سازی، اندازهٔ همهٔ ستاره‌ها یکسان می‌شود. آیا واقعاً چنین است؟ در واقع این‌طور نیست — اندازهٔ ستاره پس از کوچک‌سازی عمدتاً به اندازهٔ اولیهٔ خود ستاره و ماسک کوچک‌سازی بستگی دارد.

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

پس از کوچک‌سازی، اندازهٔ ستاره‌ها همچنان متفاوت است و رد کوچک‌سازی از پیرامون آن‌ها دیده می‌شود (SL 17)

نمای بزرگ‌شدهٔ SL 17 که اثر دو بار کوچک‌سازی را نشان می‌دهد

کوچک‌سازی با روش تصویر بدون ستاره، ستاره‌هایی طبیعی‌تر به دست می‌دهد

مقایسهٔ موضعی پیش و پس از کوچک‌سازی ستاره‌ها

پیاده‌سازی کوچک‌سازی ستاره‌ها در PixelMath (حالت غیرخطی)

کوچک‌سازی ستاره‌ها بر پایهٔ تصویر بدون ستاره را می‌توان در PixInsight با PixelMath به‌دقت انجام داد. مراحل تفکیک‌شده به این شرح است:

  1. فایل تصویر 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) میان لایه‌ها هم اندکی فرق می‌کند.

بازسازی کوچک‌سازی ستاره‌ها با PixelMath از طریق لایه‌های Photoshop، با ذکر حالت ترکیب هر لایه

نکتهٔ کلیدی: ستاره‌ها را باید با «تقسیم معکوس» درست بیرون کشید

بسیاری از افراد تصویر را با روش حذف ستاره پردازش می‌کنند اما در پایان، هنگام بازگرداندن ستاره‌ها شکست می‌خورند؛ گره کار دقیقاً در این است که ستاره‌ها چگونه بیرون کشیده شده‌اند.

اگر تصویر بدون ستاره را صرفاً از تصویر اصلی کم کنید تا ستاره‌ها به دست آیند و سپس همان ستاره‌ها را بازگردانید، نتیجه اغلب ستاره‌هایی کم‌فروغ و با رنگ نادرست است که انگار 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 استفاده کنید.

مقایسهٔ فرمول‌های بیرون کشیدن و بازگرداندن ستاره‌ها در حالت خطی و غیرخطی

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