راهنمای کامل WBPP: رابط کاربری، فریمهای master کالیبراسیون و روند اجرا
این نوشته از یادداشتهای سالهای 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 light نهایی است که اینتگریشن آن انجام شدهاست و شما به دنبال آن هستید.
- تصویر داخل کادر زرد تصویر مرجع (Ref) مربوط به Local Normalization است، نه master light؛ این دو را با هم اشتباه نگیرید.
- تصویرهای بدون کادر همان فریمهای master کالیبراسیون هستند و اینجا شامل master flat، master bias و master dark میشوند.
(البته در ادامهٔ بخش پیش، این «master light» همچنان ماهیت پیشنمایش WBPP را دارد؛ اگر سختگیر باشید باز هم بهتر است خودتان یک بار دیگر اینتگریشن را انجام دهید.)
روند اجرای کنونی: بستهٔ کامل برای دوربین رنگی
WBPP با یک کلیک تا انتها میرود، اما در واقع پشت آن زنجیرهٔ بلندی از فرایندهای خودکار است که به ترتیب اجرا میشوند. برای نمونه با دوربین رنگی (OSC)، ترتیب کامل اجرا چنین است:

- Calibration File Integration: ساخت فریمهای master کالیبراسیون
- Calibration: کالیبره کردن فریمهای light
- Cosmetic Correction: حذف پیکسلهای داغ (hot pixel) یا خطهای خراب
- Debayer: دیبایر (جدا کردن RGB)
- Measurements: اندازهگیری فریمهای light و دادن وزن به آنها
- Reference frame selection: انتخاب تصویر مرجع برای همترازی
- Plate solving reference frames: plate solving (تعیین مختصات نجومی) روی تصویرهای مرجع
- Registration: همترازی ستارهها
- LN reference generation: ساخت تصویر مرجع Local Normalization
- Local Normalization: اجرای Local Normalization
- Integration: اینتگریشن فریمهای light
- RGB Combination: ترکیب دوبارهٔ سه کانال RGB
اگر بخواهیم فشردهتر بگوییم، میتوان آن را در هشت گام خلاصه کرد: ساخت فایلهای تصویر کالیبراسیون → کالیبراسیون تصویر → Cosmetic Correction → دیبایر (جدا کردن سه کانال RGB) → همترازی ستارهها → Local Normalization → اینتگریشن تصویرها → ترکیب سه کانال RGB.

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

فریمهای 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 است.

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

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

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

حالا که میتوان این گامها را برداشت یا رها کرد، پرسشی کاربردی پیش میآید: با خاموش کردن پردازشهای غیرلازم چقدر در زمان صرفهجویی میشود؟ من روی مجموعهای از دادههای خارجی که آزادانه قابل دانلود است آزمایش واقعی کردم؛ در مجموع 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 را برای کمک به این کار فراهم کردهاست.

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

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

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

نخستین گام پس از باز کردن WBPP در واقع بارگذاری فایلها نیست
در پایان به بنیادیترین جایی برمیگردیم که در عین حال بیش از همه هم اشتباه انجام میشود. نخستین گام پس از باز کردن WBPP این نیست که با عجله «فایلهای light، dark، flat و bias را بارگذاری کنید».
WBPP از معدود اسکریپتهایی است که محتوای دفعهٔ پیش را نگه میدارد. اگر پیشتر از آن استفاده کردهاید، همهٔ تنظیمها هنوز سر جای خودشان هستند. پس گام نخست باید پاک کردن فهرست فایلها باشد؛ اما اینکه پارامترهای دیگر هم با آن پاک شوند یا نه، بسته به نیاز است.
و گام دوم خیلی راحت از قلم میافتد و بسیاری از ویدیوهای آموزشی هم به آن اشاره نمیکنند — دکمهٔ Purge Cache را بزنید. پیشتر از فایدهٔ کش (از نسخهٔ 2.5 به بعد) گفتم: وقتی فقط بخشی از پارامترها را عوض میکنید، WBPP تنها همان بخش تغییریافته را اجرا میکند و بقیه را از کش برمیدارد. اما برعکس، وقتی یک بار اجرا کردهاید و دیگر به این محتوای کش نیازی ندارید، باید همهشان را پاک کنید، وگرنه هنگام اجرای فایلهای جدید ممکن است به دلیل تکراری بودن محتوای کش خطاهای پیشبینینشدهای پدید آید.

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

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

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