本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文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: خطاهای رایج و باگ‌های شناخته‌شده

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

این نوشته از یادداشت‌های سال‌های 2022–2025 گردآوری شده‌است؛ برخی ابزارها یا روندها از آن زمان به‌روزرسانی شده‌اند، پس هنگام خواندن به این نکته توجه کنید. پیام‌های خطا و رفتار نسخه‌ها که در متن آمده، همگی همان‌گونه‌اند که در آن زمان ثبت شده‌اند. برای آشنایی با رابط کاربری WBPP، فریم‌های master کالیبراسیون و روند اجرای عادی، به نوشتهٔ همراه «The Complete Guide to WBPP» مراجعه کنید.

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

نخستین گام عیب‌یابی: ابتدا Process Console را ببینید

وقتی در پردازش PixInsight مشکلی پیش می‌آید، نخستین چیزی که همیشه باید به یادتان بیاید بررسی Process Console است. این پنجره به شما می‌گوید خطا کجا رخ داده‌است و از چه نوعی است؛ نقطهٔ آغاز هر تشخیصی همین است.

اما WBPP یک اسکریپت است و تا زمانی که اسکریپت در حال اجرا نباشد، console جمع می‌شود و نمی‌توان آن را انتخاب کرد. بنابراین برای دیدن console غالباً باید ابتدا WBPP را ببندید. این کار دردسر به نظر می‌رسد، اما در بسیاری از مشکلات تنها سرنخ موجود است — راه‌حل چند باگی که در ادامه می‌آید، همگی از همان یک خط قرمز درون console آغاز شد.

خطاها و باگ‌های مرحلهٔ کالیبراسیون

شکست کالیبراسیون (failed) — ابتدا PI را ببندید و دوباره باز کنید. اگر هنگام اجرای WBPP همان کالیبراسیون نخست (که از فریم‌های master کالیبراسیون استفاده می‌کند) بی‌درنگ شکست بخورد و status واژهٔ failed را با رنگ قرمز نشان دهد، می‌توانید کل روند را موقتاً متوقف کنید، PI را ببندید، WBPP را دوباره باز کنید و یک بار دیگر اجرا کنید؛ آنگاه این خطای شکست کالیبراسیون معمولاً ناپدید می‌شود. هنگام پردازش تصاویر OSC دست‌کم چهار بار با این باگ روبه‌رو شده‌ام و هر بار با همین ترفند حلش کرده‌ام.

نمایی که در مرحلهٔ کالیبراسیون WBPP وضعیت status را با رنگ قرمز failed نشان می‌دهد

فریم‌های flat مدام در کالیبراسیون خطا می‌دهند — به پردازش دستی گام‌به‌گام بازگردید. برخی نسخه‌های WBPP باگی دارند که پیوسته باعث خطای کالیبراسیون فریم‌های flat می‌شود. در چنین مواقعی، اینکه بتوانید خودتان گام به گام و به‌صورت دستی پردازش کنید اهمیت پیدا می‌کند. به همین مناسبت، مراحل Pre-Process را هم مرور کنیم:

  1. Calibration: light − dark / ((flat − flat dark) * med(flat))
  2. Cosmetic Correction
  3. Debayer: درون‌یابی روی ماتریس Bayer
  4. Star Alignment
  5. NSG
  6. Integration

خطاهای کالیبراسیون فریم‌های flat در WBPP و مرجعی برای مراحل پردازش دستی جداگانه

وقتی نمی‌توان به خودکارسازی اعتماد کرد، تفکیک روند و اجرای دستی آن در عمل آسان‌تر می‌کند که بفهمید مشکل از کدام مرحله است.

مشکلات مسیر: دو علت احتمالی برای File I/O Error

هنگام استفاده از WBPP در Windows، اگر در مرحلهٔ کالیبراسیون (calibration) پیام File I/O Error ظاهر شود، معمولاً یکی از این دو علت در کار است:

  1. مسیر فایل به‌همراه نام فایل بیش از حد طولانی است و از محدودیت سیستم فراتر می‌رود، پس باید کوتاه شود.
  2. در پوشهٔ مقصد نمی‌توان نوشت، برای نمونه وقتی خروجی را روی یکی از پوشه‌های سیستمی تنظیم کرده باشید.

نمای خطایی که در مرحلهٔ کالیبراسیون WBPP پیام File I/O Error را نشان می‌دهد

علت نخست از همه رایج‌تر است. برای درمان ریشه‌ای «مسیر بیش از حد طولانی» می‌توانید در Windows پشتیبانی از مسیرهای بلند را فعال کنید (در regedit مقدار LongPathsEnabled را روی 1 بگذارید)؛ همچنین توصیه می‌شود از مسیرهایی که کاراکترهای غیر ASCII (مانند حروف چینی) دارند پرهیز کنید. جزئیات این دو پیش‌نیاز محیطی را در بخش تنظیم محیط Windows در نوشتهٔ «The Complete Guide to WBPP» نوشته‌ام و اینجا تکرارشان نمی‌کنم.

باگ «سرریز نشدن 60 ثانیه» در مختصات RA/DEC

این دشوارترین مشکل است و بیش از همه ارزش دارد که جداگانه دربارهٔ آن سخن بگوییم، چون نشانه‌هایش بی‌نهایت گوناگون‌اند اما ریشه‌شان یکی است: در FITS Header، در مختصات بُعد (RA) و میل (Dec) مقدار ثانیه برابر «60» ظاهر شده اما به دقیقه منتقل نشده‌است.

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

بار نخست: WBPP نتوانست فایل را بارگذاری کند. WBPP را بستم و به Process Console نگاه کردم و دیدم که خطی از یکی از اسکریپت‌های js پیام «مختصات نامعتبر» می‌دهد. آن موقع گمان کردم باگی در WBPP است؛ پیام خطا را در اینترنت جست‌وجو کردم و تازه آنگاه در PixInsight Forum چند گزارش دقیقاً مشابه پیدا کردم — معلوم شد همان مشکل مختصات مانع بارگذاری تصویر در WBPP شده‌است. با اینکه جهت کار روشن شده بود، باز هم یک ساعت میان چند صد فریم light گشتم تا آن تصویر مشکل‌دار را بیابم: مختصات OBJCTDEC آن نادرست بود. در PI process FITSHeader را باز کردم، تا OBJCTDEC پایین آمدم و مقداری را که «باید منتقل می‌شد اما نشده بود» تغییر دادم — در این نمونه -69 26 60 را به -69 27 0 تبدیل کردم — و آنگاه این فریم بی‌دردسر بارگذاری شد و فایل‌های بعدی هم دیگر به‌خاطر آن گیر نکردند.

تصحیح مختصات OBJCTDEC که منتقل نشده‌است، با استفاده از process FITSHeader

بار دوم: فایل‌ها افزوده نمی‌شدند و console پیام too much recursion می‌داد. بعدها یک بار دیگر هم با آن روبه‌رو شدم: هنگام افزودن فایل‌ها به WBPP نرم‌افزار قفل کرد و در پایان هیچ فایلی افزوده نشد. WBPP را بستم و به Console نگاه کردم؛ InternalError: too much recursion با رنگ قرمز آنجا بود. پس از باز کردن دوبارهٔ WBPP دیدم بخشی از فایل‌ها بارگذاری شده‌اند و بخشی نه؛ با بررسی آن‌هایی که بارگذاری نشده بودند، همان‌طور که انتظار می‌رفت باز هم ناهنجاری در FITS Header بود — این بار DEC مقدار -46 01 60 را نشان می‌داد، در حالی که ثانیهٔ «60» باید به -46 02 00 منتقل می‌شد. به‌محض اینکه WBPP چنین مقدار نادرستی را بخواند قفل می‌کند و تصاویر بعدی را هم با خود می‌کشد تا آن‌ها نیز بارگذاری نشوند. راه‌حل همان است: FITS Header را باز کنید، ثانیه‌ها را دستی منتقل کنید و پس از اصلاح، فایل‌ها را دوباره بیفزایید. وقتی همهٔ فایل‌ها با موفقیت بارگذاری شوند، WBPP به‌طور خودکار پیام تشخیصی نشان می‌دهد، برای نمونه «60 of 60 light frames were added».

نمایش پیام خطای InternalError: too much recursion در console

فیلد DEC در FITS Header که مقدار ناهنجار -46 01 60 را نشان می‌دهد

نتیجهٔ مشترک: این مشکل، یعنی منتقل نشدن خودکار مختصات، تا آنجا که تاکنون دیده‌ام تقریباً همیشه زمانی رخ داده که نرم‌افزار عکاسی MDL (کنترل از راه دور) بوده‌است، هرچند نمی‌توان رد کرد که نرم‌افزارهای عکاسی دیگر هم همین ایراد را داشته باشند. بنابراین هر گاه WBPP قفل کرد و فایل‌ها افزوده نشدند، نخست در Process Console نوع خطا را بررسی کنید و سپس Header مختصات RA/DEC را از نظر باگ «سرریز نشدن 60 ثانیه» وارسی کنید؛ پس از اصلاح دستی، مشکل در بیشتر موارد حل می‌شود.

کارایی: چرا اجرای بستهٔ کامل این‌قدر طول می‌کشد

در پایان از مشکلی بگوییم که به بیان دقیق «خطا» نیست، اما واقعاً آدم را عذاب می‌دهد — بستهٔ کامل WBPP به‌راستی بیش از حد کند است. یک بار برای پنج تصویر که می‌خواستم از آن‌ها HDR بسازم، بستهٔ کامل را چهار ساعت تمام اجرا کردم (دستگاه آن زمان AMD R5-4650G با DDR4 3200 32GB و Gen4 SSD بود و تصاویر 24 مگاپیکسل؛ چنین انتظاری واقعاً آدم را به فکر عوض کردن رایانه می‌اندازد).

نمای اجرایی که در آن بستهٔ کامل WBPP چهار ساعت طول کشیده‌است

در این میان دو بخش به‌ویژه وقت زیادی می‌برند:

  1. Separated RGB: پردازش جداگانهٔ کانال‌های RGB عکس رنگی برای حذف ابیراهی رنگی.
  2. Local Normalization: انتخاب چند تصویر از بهترین‌ها به‌عنوان مرجع و اعمال Local Normalization روی بقیهٔ تصاویر.

اگر این دو مورد را غیرفعال کنید، WBPP بسیار سریع‌تر می‌شود. اینکه آیا ارزش دارد این دو را فدای سرعت کنید یا نه، به توقع شما از نتیجهٔ نهایی بستگی دارد — دربارهٔ اندازه‌گیری عملی این پرسش که «کدام مراحل را خاموش کنیم، چقدر در وقت صرفه‌جویی می‌شود و چقدر کیفیت از دست می‌رود»، در «The Complete Guide to WBPP» مجموعه‌ای از داده‌ها دارم که شتابی 7 تا 8 برابری را نشان می‌دهد و می‌توانید به آن مراجعه کنید.


منطق این دفترچهٔ عیب‌یابی را جمع‌بندی کنیم: هر وقت مشکلی پیش آمد، نخست Process Console را ببینید؛ اگر کالیبراسیون failed شد، PI را ببندید و دوباره باز کنید؛ اگر فریم‌های flat مدام در کالیبراسیون خطا دادند، به پردازش دستی گام‌به‌گام بازگردید؛ File I/O Error بیشتر به‌خاطر مسیر بیش از حد طولانی است یا پوشه‌ای که نمی‌توان در آن نوشت؛ و اگر چیزی بارگذاری نشد، برنامه قفل کرد یا پیام recursion داد، بروید و بررسی کنید که آیا در RA/DEC داخل FITS Header ثانیه‌ای برابر 60 بدون انتقال مانده‌است یا نه. این چند ترفند را خوب به خاطر بسپارید، آنگاه از پس بیشتر بدقلقی‌های WBPP برمی‌آیید.