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

راهنمای کامل WBPP: رابط کاربری، فریم‌های master کالیبراسیون و روند اجرا

پیش‌پردازش و انباشت2021.03یادداشت‌های اولیه

این نوشته از یادداشت‌های سال‌های 2021–2024 گردآوری شده‌است؛ برخی ابزارها یا روندها به‌روزرسانی شده‌اند، پس هنگام خواندن به این نکته توجه کنید. بخشی از رابط‌ها، گزینه‌ها و رفتار نسخه‌ها که در متن به آن‌ها اشاره شده‌است (برای نمونه نسخه‌های 2.1.2 و 2.5) همگی وضعیت همان زمان را نشان می‌دهند. اما دربارهٔ خطاها و باگ‌های شناخته‌شده‌ای که هنگام اجرا با آن‌ها روبه‌رو می‌شوید، نوشتهٔ جداگانهٔ «WBPP Troubleshooting» را ببینید.

WBPP (WeightedBatchPreprocessing) اسکریپتی در PixInsight است که «کالیبراسیون، هم‌ترازی و اینتگریشن (integration)» را یک‌جا و به‌صورت خودکار تا انتها اجرا می‌کند و به‌طرز شگفت‌آوری راحت است. در این چند سال نسخه‌های آن پی‌درپی عوض شده‌است و من هم به‌تدریج یادداشت‌های پراکندهٔ فراوانی دربارهٔ آن نوشته‌ام؛ در این نوشته آن‌ها را در قالب توضیحی نسبتاً کامل گرد آورده‌ام و در سه لایه از آن سخن می‌گویم: مفاهیم بنیادی که چندان با نسخه‌ها تغییر نمی‌کنند، روند اجرای کنونی، و برخی تغییرهای مهم نسخه‌ها در این سال‌ها. از هر نسخه‌ای که استفاده می‌کنید، نخست مفاهیم را محکم بگیرید تا رابط هرطور هم که عوض شود دستپاچه نشوید.

مفهوم بنیادی یک: خروجی اینتگریشن WBPP فقط یک پیش‌نمایش است

این همان نکته‌ای است که بیش از همه می‌خواهم اول بگویم و بیش از همه هم نادیده گرفته می‌شود.

خودم هم در این دام افتاده‌ام: یک بار پس از استفاده از Drizzle Integration دیدم که مرکز ستاره‌ها (جایی که بیش از حد اشباع شده‌است) سیاه شده‌است. وقتی پی‌گیری کردم، معلوم شد مقصر اصلی همان اینتگریشن با WBPP بوده‌است.

WBPP هرچقدر هم راحت باشد، دربارهٔ آن master light که به‌صورت خودکار اینتگریشن می‌شود موضع سازندگان کاملاً روشن است — آن فقط یک پیش‌نمایش راحت از «کیفیتی که می‌توان به آن رسید» است، پس از استفاده باید دور انداخته شود و نباید به‌عنوان اثر نهایی به کار برود. پاسخ آن‌ها در انجمن را در ادامه نقل می‌کنم:

The integrated image generated by WBPP is just a convenience preview of the achievable image, but it should always be deleted/ignored, and the integration should always be done manually with the registered frames. This is the only way to obtain an optimal integrated image with full control over the normalization, pixel rejection and noise reduction tasks.

آن‌ها حتی نیمه‌شوخی گفتند که این جمله را باید «n+1 بار تکرار کرد، که در آن n خود به بی‌نهایت میل کرده‌است»: آن master light که WBPP می‌سازد نباید برای مقصود نهایی به کار برود، فقط یک پیش‌نمایش است؛ بهترین نتیجه تنها زمانی به دست می‌آید که با Image Integration دستی، pixel rejection (حذف پیکسل‌های پرت) و نسبت سیگنال به نویز (SNR) را بهینه کنید.

بنابراین عادت خودم این است: WBPP را حداکثر تا گام «هم‌ترازی ستاره‌ها» به کار می‌برم و اینتگریشن واقعی را به Image Integration دستی می‌سپارم. روش اصولی همان تفکیک مرحله‌هاست — کالیبراسیون (به عهدهٔ WBPP)، هم‌ترازی (Star Alignment) و اینتگریشن (Image Integration) — که هرچند چند گام بیشتر دارد، اما وقتی مشکلی پیش بیاید، خیلی راحت‌تر می‌توان فهمید کدام حلقه خراب شده‌است. این نظر قطعی من در سال‌های بعد هم شد؛ آن دو ویدیوی آموزشی بسیار مفصل WBPP از دوستان ژاپنی در سال‌های نخست را هم بسیار توصیه می‌کنم، اما همان یادآوری را باید به آن‌ها هم افزود: نتیجهٔ اینتگریشن را فقط به چشم مرجع نگاه کنید.

مفهوم بنیادی دو: روشن کنید کدام فایل‌های پوشهٔ Master خروجی نهایی هستند

پس از یک اجرای کامل WBPP، در پوشهٔ پیش‌فرض Master انبوهی فایل جا خوش می‌کند و بسیاری از دوستان تشخیص نمی‌دهند کدام تصویر همان چیزی است که می‌خواهند. اینجا کمی توضیح می‌دهم:

نمودار تفکیک انواع فایل‌های خروجی در پوشهٔ Master در WBPP

  • تصویر داخل کادر قرمز همان master light نهایی است که اینتگریشن آن انجام شده‌است و شما به دنبال آن هستید.
  • تصویر داخل کادر زرد تصویر مرجع (Ref) مربوط به Local Normalization است، نه master light؛ این دو را با هم اشتباه نگیرید.
  • تصویرهای بدون کادر همان فریم‌های master کالیبراسیون هستند و اینجا شامل master flat، master bias و master dark می‌شوند.

(البته در ادامهٔ بخش پیش، این «master light» همچنان ماهیت پیش‌نمایش WBPP را دارد؛ اگر سخت‌گیر باشید باز هم بهتر است خودتان یک بار دیگر اینتگریشن را انجام دهید.)

روند اجرای کنونی: بستهٔ کامل برای دوربین رنگی

WBPP با یک کلیک تا انتها می‌رود، اما در واقع پشت آن زنجیرهٔ بلندی از فرایندهای خودکار است که به ترتیب اجرا می‌شوند. برای نمونه با دوربین رنگی (OSC)، ترتیب کامل اجرا چنین است:

نمای ترتیب کامل اجرای بستهٔ کامل دوربین رنگی در WBPP

  1. Calibration File Integration: ساخت فریم‌های master کالیبراسیون
  2. Calibration: کالیبره کردن فریم‌های light
  3. Cosmetic Correction: حذف پیکسل‌های داغ (hot pixel) یا خط‌های خراب
  4. Debayer: دیبایر (جدا کردن RGB)
  5. Measurements: اندازه‌گیری فریم‌های light و دادن وزن به آن‌ها
  6. Reference frame selection: انتخاب تصویر مرجع برای هم‌ترازی
  7. Plate solving reference frames: plate solving (تعیین مختصات نجومی) روی تصویرهای مرجع
  8. Registration: هم‌ترازی ستاره‌ها
  9. LN reference generation: ساخت تصویر مرجع Local Normalization
  10. Local Normalization: اجرای Local Normalization
  11. Integration: اینتگریشن فریم‌های light
  12. RGB Combination: ترکیب دوبارهٔ سه کانال RGB

اگر بخواهیم فشرده‌تر بگوییم، می‌توان آن را در هشت گام خلاصه کرد: ساخت فایل‌های تصویر کالیبراسیون → کالیبراسیون تصویر → Cosmetic Correction → دیبایر (جدا کردن سه کانال RGB) → هم‌ترازی ستاره‌ها → Local Normalization → اینتگریشن تصویرها → ترکیب سه کانال RGB.

روند پیش‌پردازش دوربین رنگی، نسخهٔ فشرده

در اینجا دو گام ارزش آن را دارد که چند جمله بیشتر دربارهٔ آن‌ها گفته شود: جدا کردن RGB برای غلبه بر پاشندگی رنگی است (لبهٔ ستاره‌ها طوری دیده می‌شود که انگار دو سوی آن رنگ متفاوتی دارد) و بهایش زمان اجرای بیشتر است؛ و Drizzle Integration، اگر از آن استفاده کنید، هدفش اینجا بزرگ کردن تصویر نیست بلکه پرهیز از آرتیفکت است، پس تنها زمانی معنا دارد که تعداد فریم‌های دارای dither کافی باشد و معمولاً زیر 50 فریم می‌توان از آن صرف‌نظر کرد. در حاشیه دربارهٔ حس واقعی زمان: من یک بار 360 فریم 9 مگاپیکسلی را از کالیبراسیون یک‌نفس تا Drizzle Integration 1x بردم و بیش از یک ساعت طول کشید؛ پیکسل بیشتر فقط ماجرا را «هیجان‌انگیزتر» می‌کند.

نمای اجرای بستهٔ کامل روی 360 فریم 9 مگاپیکسلی

فریم‌های master کالیبراسیون: هوشمندی WBPP

WBPP در پردازش فریم‌های کالیبراسیون (flat، dark، bias و جز آن) طراحی‌های سنجیدهٔ فراوانی را در خود پنهان کرده‌است که ارزش دارد بخشی جداگانه به آن‌ها بپردازیم.

بهتر است فریم‌های کالیبراسیون را همان‌جا در WBPP از روی فایل‌های اصلی دوباره بسازید. خیلی‌ها پس از کالیبراسیون می‌بینند فریم‌های light مشکل دارند و دلیل اصلی‌اش اغلب این است که فایل‌های «Master ساخته‌شده با نرم‌افزار یا فرایندی دیگر» (master flat / bias / dark) را به کار برده‌اند. مطمئن‌ترین کار این است که فایل‌های اصلی کالیبراسیون را به WBPP بدهید تا خودش Master را از نو بسازد.

زمان نوردهی خطای کوچکی دارد؟ آن را به Exposure tolerance بسپارید. یک بار یکی از دوستان در گروه پرسید: او با کنترل سیگنال Eqmod فریم dark می‌گرفت و به دلیل تأخیر، فریم dark 5 ثانیه‌ای در عمل ممکن بود بین 4.980 و 5.02 ثانیه بیفتد، برای همین می‌خواست به عکاسی با NINA روی بیاورد. در واقع WBPP از پیش به این موضوع فکر کرده‌است: فریم‌های کالیبراسیونی که در بازهٔ زمانی مشخصی قرار می‌گیرند می‌توانند در یک گروه تعیین شوند و WBPP روی فریم‌های کالیبراسیون هم‌گروه به‌طور خودکار کار لازم را انجام می‌دهد و آن‌ها را خودکار با فریم‌های light جفت می‌کند. همین مقدار رواداری همان Exposure tolerance است.

تنظیم مقدار رواداری نوردهی Exposure tolerance در WBPP

تصویرهایی که در روزهای مختلف گرفته شده‌اند؟ با Grouping Keywords یک‌جا حلش کنید. WBPP پس از تغییر نسخه قابلیت گروه‌بندی پیدا کرد، پس حتی تصویرهایی را که در تاریخ‌های مختلف گرفته شده‌اند هم می‌توان یک‌باره با هم پردازش کرد — فقط کافی است در Grouping Keywords با یک کلیدواژه (برای نمونه تاریخ) دسته‌بندی کنید. مثلاً همان مجموعهٔ فایل‌های من که فریم flat هر روزش فرق داشت؛ WBPP باز هم توانست به‌طور خودکار بر پایهٔ تاریخ جداگانه کالیبره کند و لازم نبود دستی برای فریم‌های light و flat هر تاریخ جداگانه تنظیم بگذارم — بسیار راحت است.

گروه‌بندی و کالیبراسیون خودکار بر پایهٔ تاریخ با Grouping Keywords

فقط می‌خواهید فریم‌های master کالیبراسیون را بسازید؟ بدون فریم light هم می‌شود. این کاربردی است که خیلی‌ها از آن خبر ندارند: در نبود فریم light، فریم‌های dark، bias، flat و flat dark را به WBPP بدهید؛ خودش هوشمندانه و بر پایهٔ گام‌های درست، این فریم‌های کالیبراسیون را به فریم‌های master کالیبراسیون تبدیل می‌کند و در پوشهٔ تعیین‌شده بیرون می‌دهد، و شما را از دردسر ساختن دستی با فرایندهای گوناگون می‌رهاند.

فقط فریم‌های کالیبراسیون بدون فریم light، تا WBPP اختصاصاً فریم‌های master کالیبراسیون را بسازد

گزینه‌های صفحهٔ Light و ترفندهای شتاب‌بخشی

صفحهٔ Light در WBPP یک ردیف گزینه دارد که کاربر می‌تواند بنا بر نیاز آن‌ها را تیک بزند. در حالت پیش‌فرض، جز subframe weighting بقیه تیک نخورده‌اند.

توضیح کاربرد هر یک از گزینه‌های صفحهٔ Light در WBPP

حالا که می‌توان این گام‌ها را برداشت یا رها کرد، پرسشی کاربردی پیش می‌آید: با خاموش کردن پردازش‌های غیرلازم چقدر در زمان صرفه‌جویی می‌شود؟ من روی مجموعه‌ای از داده‌های خارجی که آزادانه قابل دانلود است آزمایش واقعی کردم؛ در مجموع 372 فریم 16 مگاپیکسلی. پس از کنار گذاشتن پردازش‌های غیرلازم، اجرا حدود 7 تا 8 برابر سریع‌تر شد (25 دقیقه و 03 ثانیه در برابر 03 دقیقه و 30 ثانیه) و کیفیت تصویر تنها اندکی افت کرد — روی دستگاه خودم حدود 15% و پس از فشرده‌سازی برای عبور از شبکه تقریباً دیده نمی‌شود. برای موقعیت‌هایی که با زمان مسابقه می‌دهید یا فقط می‌خواهید نگاهی کلی بیندازید، این معامله بسیار به‌صرفه است.

مقایسهٔ زمان اجرا پیش و پس از خاموش کردن بخشی از پردازش‌ها

اما اینکه کدام گام‌ها بیشترین زمان را می‌خورند و خاموش کردن کدام‌ها بیشترین اثر را دارد، در نوشتهٔ «WBPP Troubleshooting» دوباره به آن می‌پردازم.

تغییرهای نسخه‌ها: این‌ها بعدها اضافه شدند

WBPP در این سال‌ها چیزهای زیادی اضافه کرده‌است؛ چند نقطهٔ عطف مهم را مرتب می‌کنم تا بتوانید با نسخه‌ای که در دست دارید مقایسه کنید:

چند نکته دربارهٔ نسخهٔ 2.1.2. از این نسخه به بعد سه نکته ارزش توجه دارد: نخست، مشکل‌دار شدن فریم‌های light پس از کالیبراسیون اغلب به این دلیل است که فایل‌های Master ساخته‌شده با ابزارهای بیرونی قاطی شده‌اند (که پیش‌تر گفته شد)؛ دوم، Dark frame optimization بیشتر زمانی به کار می‌آید که طول نوردهی فریم light و فریم dark با هم نخواند (برای نمونه فریم light 20 دقیقه‌ای با فریم dark 30 دقیقه‌ای) و بهترین شرطش نوردهی طولانی و تعداد فریم زیاد است، ضمن اینکه این گزینه تنها با کلیک روی فایل light دیده می‌شود؛ سوم، برای کاربران CCD به‌مرور زمان defect پدید می‌آید، به‌ویژه column defect، که در گذشته برای حذف آن باید defect map می‌ساختند و کاری بسیار زمان‌بر بود، اما WBPP قابلیت Linear Pattern Subtraction را برای کمک به این کار فراهم کرده‌است.

گزینه‌های مربوط به WBPP 2.1.2 و Linear Pattern Subtraction

Execution Monitor (پنجرهٔ نظارت بر اجرا). پس از به‌روزرسانی به نسخه‌های تازه‌تر، هنگام اجرای WBPP پنجره‌ای به نام WBPP Execution Monitor باز می‌شود و به شما می‌گوید اکنون در کدام گام است و چه کارهایی انجام شده‌است؛ محتوای آن را هم می‌توان بالا و پایین کشید. در نسخه‌های قدیمی، کاربر جز خیره شدن به console جاری هیچ راهی برای دانستن پیشرفت کار نداشت و فقط می‌توانست صبر کند تا همه‌چیز تمام شود یا با خطایی متوقف شود تا بتواند با console وضعیت را بررسی کند.

پنجرهٔ نظارت بر اجرا WBPP Execution Monitor

قابلیت حافظهٔ پنهان (cache) — از نسخهٔ 2.5 به بعد. این یکی بهبود بسیار کلیدی است. پس از اجرای بستهٔ کامل، اگر خطایی ببینید یا نتیجه مطابق انتظار نباشد و چند تنظیم را عوض کنید، یعنی باید کل بسته را دوباره اجرا کنید؟ لازم نیست. کش WBPP خودش تشخیص می‌دهد: تا وقتی تنظیم تغییریافته روی تصویرها اثری ندارد، مستقیماً همان نتیجهٔ کش دفعهٔ پیش را به کار می‌گیرد؛ تنها آن بخشی از تصویرها که واقعاً تحت تأثیر قرار می‌گیرد دوباره پردازش می‌شود و به همین دلیل زمان اجرای دوم به‌شدت کوتاه می‌شود.

توضیح قابلیت کش در WBPP

اسکریپت بازتولیدپذیر در پوشهٔ log. جدیدترین نسخهٔ WBPP پس از اجرا، log تفصیلی و اسکریپت اجرا را در پوشهٔ log نگه می‌دارد. اگر آن اسکریپت را با Script Editor در PI بخوانید، کامپایل و اجرا کنید، یک Process Container باز می‌شود که همهٔ ICON فرایندهای زیرمنوی Pipeline در پنجرهٔ اصلی WBPP را در بر دارد و هر کدام را می‌توان جداگانه در PI باز کرد. این برای Debug بی‌اندازه راحت است — برای نمونه اگر بخواهید بدانید چرا Cosmetic Correction درست اجرا نشده یا اثری نداشته‌است، می‌توانید همان گام را از اینجا باز کنید و ببینید مشکل از پارامتر است یا باگ برنامه. کاربرد دیگرش این است: کسی که با پیش‌پردازش آشنا نیست می‌تواند با همین روش تک‌تک فرایندها و پارامترهای WBPP را بیرون بکشد و آن را الگویی مرجع برای اجرای دستی خودش قرار دهد.

خواندن اسکریپت اجرای WBPP با Script Editor و بازسازی Process Container

نخستین گام پس از باز کردن WBPP در واقع بارگذاری فایل‌ها نیست

در پایان به بنیادی‌ترین جایی برمی‌گردیم که در عین حال بیش از همه هم اشتباه انجام می‌شود. نخستین گام پس از باز کردن WBPP این نیست که با عجله «فایل‌های light، dark، flat و bias را بارگذاری کنید».

WBPP از معدود اسکریپت‌هایی است که محتوای دفعهٔ پیش را نگه می‌دارد. اگر پیش‌تر از آن استفاده کرده‌اید، همهٔ تنظیم‌ها هنوز سر جای خودشان هستند. پس گام نخست باید پاک کردن فهرست فایل‌ها باشد؛ اما اینکه پارامترهای دیگر هم با آن پاک شوند یا نه، بسته به نیاز است.

و گام دوم خیلی راحت از قلم می‌افتد و بسیاری از ویدیوهای آموزشی هم به آن اشاره نمی‌کنند — دکمهٔ Purge Cache را بزنید. پیش‌تر از فایدهٔ کش (از نسخهٔ 2.5 به بعد) گفتم: وقتی فقط بخشی از پارامترها را عوض می‌کنید، WBPP تنها همان بخش تغییریافته را اجرا می‌کند و بقیه را از کش برمی‌دارد. اما برعکس، وقتی یک بار اجرا کرده‌اید و دیگر به این محتوای کش نیازی ندارید، باید همه‌شان را پاک کنید، وگرنه هنگام اجرای فایل‌های جدید ممکن است به دلیل تکراری بودن محتوای کش خطاهای پیش‌بینی‌نشده‌ای پدید آید.

پس از باز کردن WBPP نخست فهرست فایل‌ها را پاک کنید، سپس Purge Cache را بزنید

تنظیم‌های پیش‌نیاز محیط برای کاربران Windows

اگر WBPP را روی Windows اجرا می‌کنید، بهتر است دو تنظیم محیطی را از همان ابتدا سروسامان دهید تا بعدها از انبوهی خطای بی‌سروته در امان بمانید (پیام‌های خطا و روش تشخیص مربوط به آن‌ها را با جزئیات در «WBPP Troubleshooting» ببینید):

پشتیبانی از مسیرهای بلند را فعال کنید. پس از یکی از به‌روزرسانی‌ها، WBPP روی Windows مدام هشدار مسیر بلند می‌داد و می‌گفت نمی‌تواند مسیری بیش از 256 کاراکتر بسازد. خودم یک بار به دلیل بلند بودن مسیر، فایل‌های خروجی WBPP ناقص درآمدند (چون فایل ذخیره نمی‌شد). راه حلش این است که در نوار وظیفه regedit را جست‌وجو کنید تا Registry Editor باز شود، مکان مربوطه را پیدا کنید، مقدار LongPathsEnabled را به 1 تغییر دهید و پس از راه‌اندازی دوبارهٔ PixInsight دیگر این هشدار ظاهر نمی‌شود.

هشدار مسیر بلند در Windows و تنظیم LongPathsEnabled در regedit

از مسیرهای دارای کاراکترهای غیر ASCII (مانند حروف چینی) پرهیز کنید. همین هم دلیلی است که استفاده از حروف چینی در مسیر فایل را توصیه نمی‌کنم. در Windows، اگر برنامهٔ پیش‌فرض برای باز کردن فایل PI باشد، دوبار کلیک روی فایلی که مسیرش حروف چینی دارد پیام خطایی بیرون می‌دهد که آن کاراکترهای درهم‌ریخته‌اش همان متن چینی است. راه دور زدنش این است: بدون تغییر مسیر، فایل را مستقیماً با کشیدن و رها کردن داخل PI بیندازید تا باز شود.

خطای کاراکترهای درهم‌ریخته هنگام باز کردن فایلی با مسیر چینی در PixInsight


وقتی همهٔ این‌ها را کنار هم بگذارید، تصویر کلی WBPP کمابیش روشن می‌شود: این یک موتور پیش‌پردازش خودکار و نیرومند است، اما باید به یاد داشته باشید که خروجی اینتگریشن آن فقط یک پیش‌نمایش است، باید بدانید کالیبراسیون را چگونه گروه‌بندی کنید، چگونه از کش خوب استفاده کنید، و پیش از شروع کار چه چیزی را پاک کنید و چه محیطی را تنظیم کنید. وقتی مفاهیم درست باشد، باقی‌اش فقط مسئلهٔ تمرین و مهارت است.