本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文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: интерфейс, мастер-калибровочные кадры и конвейер выполнения

Предобработка и сложение2021.03Ранние заметки

Эта статья составлена из заметок 2021–2024 годов. Некоторые инструменты и процессы с тех пор были обновлены, поэтому учитывайте это при чтении; упомянутые в тексте интерфейсы, опции и версионно-зависимое поведение (например, версии 2.1.2 и 2.5) отражают состояние на тот момент. Об ошибках и известных багах, с которыми вы можете столкнуться при выполнении, см. отдельную статью «Устранение неполадок WBPP».

WBPP (WeightedBatchPreprocessing) — это скрипт PixInsight, который автоматически прогоняет «калибровку, выравнивание и интеграцию» от начала до конца одним махом, и это поразительно удобно. За последние годы он обновлялся часто, и я постепенно написал немало разрозненных заметок о нём; в этой статье я собираю их в довольно полное изложение, разделённое на три уровня: основные понятия, которые почти не меняются от версии к версии, текущий конвейер выполнения и несколько важных изменений в версиях за прошедшие годы. Какую бы версию вы ни использовали, если сначала твёрдо усвоить понятия, то как бы ни менялся интерфейс, паниковать не придётся.

Ключевая мысль первая: результат интеграции WBPP — лишь предпросмотр

Это то, о чём я хочу сказать в первую очередь и что чаще всего упускают из виду.

Я сам однажды наступил на эти грабли: после одного сеанса с Drizzle Integration я обнаружил, что центры звёзд (пересвеченные области) вдруг стали чёрными. Разобравшись, я выяснил, что виновником оказалась интеграция через WBPP.

WBPP, конечно, удобен, но по поводу автоматически собранного им мастер-лайта официальная позиция предельно ясна — это лишь удобный предпросмотр «достижимого результата», который после использования следует выбросить, и его нельзя принимать за окончательный результат. Привожу ниже выдержку из официального ответа на форуме:

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 уже стремится к бесконечности»: мастер-лайт, который производит WBPP, не должен использоваться для окончательных целей — это лишь предпросмотр, а наилучший результат можно получить только через ручную Image Integration, оптимизирующую отбраковку пикселей (pixel rejection) и отношение сигнал/шум.

Поэтому у меня выработалась привычка: WBPP я использую самое большее до шага «выравнивание по звёздам» (Star Alignment), а настоящую интеграцию отдаю обратно ручной Image Integration. Правильный, разбитый на отдельные процедуры подход — калибровка (доверяется WBPP), выравнивание (Star Alignment) и интеграция (Image Integration) — требует на пару шагов больше, но зато, если что-то идёт не так, гораздо легче понять, какое звено цепочки сломалось. Со временем это стало моим твёрдым убеждением. Те два очень подробных обучающих видео по WBPP, снятые японскими любителями в ранние годы, я тоже настоятельно рекомендую, но к ним нужно добавить то же самое предупреждение: результат интеграции стоит воспринимать только как ориентир.

Ключевая мысль вторая: разберитесь, какие файлы в папке Master являются готовым результатом

После полного прогона WBPP в папке Master по умолчанию оказывается целая куча файлов, и многие не могут разобраться, какой из них — тот самый, нужный. Поясню здесь.

Схема, показывающая различия между видами выходных файлов в папке Master WBPP

  • Изображение в красной рамке — это и есть нужный вам готовый интегрированный мастер-лайт.
  • Изображение в жёлтой рамке — это референсное (Ref) изображение для Local Normalization, а не мастер-лайт, не путайте их.
  • Изображения без рамки — это мастер-калибровочные кадры: сюда входят мастер-флэт, мастер-биас (bias) и мастер-дарк.

(Впрочем, как уже говорилось в предыдущем разделе, этот «мастер-лайт» всё равно остаётся предпросмотром от WBPP — если хотите сделать всё как следует, вам всё равно придётся проинтегрировать его самостоятельно ещё раз.)

Текущий конвейер выполнения: полный набор для цветной камеры

WBPP работает в один клик от начала до конца, но за этим на самом деле стоит длинная последовательность автоматизированных процедур, выполняемых по порядку. На примере цветной камеры (OSC) полный порядок выполнения выглядит так:

Экран с полным порядком выполнения полного набора для цветной камеры в WBPP

  1. Calibration File Integration: создание мастер-калибровочных кадров
  2. Calibration: калибровка лайтов
  3. Cosmetic Correction: удаление горячих пикселей или бракованных линий
  4. Debayer: дебайеризация (разделение RGB)
  5. Measurements: измерение лайтов и присвоение весов
  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: интеграция лайтов
  12. RGB Combination: повторное объединение трёх каналов RGB

Если говорить более сжато, всё это можно свести к восьми шагам: создание файлов калибровочных изображений → калибровка изображений → Cosmetic Correction → дебайеризация (разделение трёх каналов RGB) → выравнивание по звёздам → Local Normalization → интеграция изображений → объединение трёх каналов RGB.

Сжатая версия конвейера предварительной обработки для цветной камеры

Здесь стоит сказать пару слов о двух шагах. Разделение RGB нужно, чтобы преодолеть хроматическую дисперсию (когда края звёзд с разных сторон выглядят разного цвета), и за это приходится платить дополнительным временем выполнения. Drizzle Integration, если она используется, здесь служит не для увеличения изображения, а для того, чтобы избежать артефактов, поэтому она имеет смысл только при достаточном числе кадров с дизерингом (dither) — как правило, при менее чем 50 кадрах её можно вообще не делать. Заодно о реальных ощущениях по времени: однажды я прогнал 360 девятимегапиксельных кадров от калибровки до Drizzle Integration 1x, и это заняло больше часа; при более высоком разрешении будет только «интереснее».

Экран выполнения полного набора для 360 девятимегапиксельных кадров

Мастер-калибровочные кадры: где проявляется сообразительность WBPP

В том, как WBPP обрабатывает калибровочные кадры (флэты, дарки, биасы и так далее), скрыто немало продуманных решений — этого достаточно, чтобы посвятить им отдельный раздел.

Калибровочные кадры лучше всего пересобирать в WBPP из исходных файлов. Немало людей замечают, что после калибровки с лайтами что-то не так, и главная причина чаще всего в том, что были применены «мастер-файлы, сделанные другим ПО или другими процессами» (мастер-флэт/биас/дарк). Самый надёжный способ — забросить исходные файлы калибровки в WBPP и дать ему пересоздать мастер-кадры.

Небольшая погрешность в выдержке? Доверьте это Exposure tolerance. Один энтузиаст как-то спросил в группе: он снимал дарки через сигнальное управление Eqmod, и из-за задержек его 5-секундные дарки на деле могли оказаться где-то между 4,980 и 5,02 с, поэтому он хотел перейти на съёмку через NINA. На самом деле WBPP уже давно всё предусмотрел: калибровочные кадры в пределах определённой разницы во времени можно отнести к одной группе, и WBPP автоматически выполнит нужную обработку для калибровочных кадров одной группы, а также автоматически сопоставит их с лайтами. Именно это значение допуска и есть Exposure tolerance.

Настройка Exposure tolerance (допуска по выдержке) в WBPP

Изображения, снятые в разные дни? Всё решается разом через Grouping Keywords. После обновления в WBPP появилась функция группировки, так что даже снимки, сделанные в разные даты, можно закинуть все вместе и обработать за один раз — достаточно классифицировать их в Grouping Keywords по ключевому слову (например, по дате). Как в моём наборе файлов: флэты отличались день ото дня, но WBPP всё равно мог автоматически калибровать их раздельно по датам, и мне не нужно было вручную настраивать сопоставление лайтов и флэтов для каждой даты — очень удобно.

Автоматическая группировка и калибровка по датам через Grouping Keywords

Хотите сделать только мастер-калибровочные кадры? Можно обойтись без лайтов. Это способ использования, о котором многие не знают: без единого лайта закиньте в WBPP дарки, биасы, флэты и дарк-флэты, и он умно, в правильной последовательности, превратит эти калибровочные кадры в мастер-калибровочные кадры и выведет их в указанную папку — избавляя вас от необходимости собирать их вручную разными процессами.

Только калибровочные кадры без лайтов — чтобы WBPP специально создал мастер-калибровочные кадры

Опции страницы Light и приёмы ускорения

На странице Light в WBPP есть ряд опций, которые пользователь может отмечать по своему усмотрению. По умолчанию всё, кроме subframe weighting, не отмечено.

Пояснение назначения различных опций на странице Light в WBPP

Раз эти шаги можно включать и выключать, возникает практический вопрос: сколько времени можно сэкономить, отключив ненужную обработку? Я провёл реальный тест на наборе свободно скачиваемых данных из-за рубежа — всего 372 кадра по шестнадцать мегапикселей — и после исключения ненужной обработки скорость выросла примерно в 7–8 раз (25 мин 03 с против 03 мин 30 с), а качество изображения пострадало лишь незначительно — разница примерно 15% на локальной машине, а после сжатия при передаче по сети она почти незаметна. Для случаев, когда вы спешите или просто хотите сначала посмотреть общую картину, такой компромисс вполне оправдан.

Сравнение времени выполнения до и после отключения части обработки

О том, какие шаги отнимают больше всего времени и какие эффективнее всего отключать, я ещё расскажу в статье «Устранение неполадок WBPP».

Изменения по версиям: то, что появилось позже

За эти годы в WBPP добавили немало всего. Отмечу несколько важных вех, чтобы вам было удобно сверить их с той версией, что у вас на руках.

Несколько моментов версии 2.1.2. Начиная с этой версии стоит отметить три момента: во-первых, проблемы с лайтами после калибровки часто возникают из-за подмешанных внешних мастер-файлов (см. выше); во-вторых, Dark frame optimization в основном применяется, когда длительности лайта и дарка не совпадают (например, 20-минутный лайт при 30-минутном дарке), лучше всего работает при длинных выдержках и большом числе кадров, а сама опция становится видна только после клика по файлу лайта; в-третьих, у пользователей CCD со временем постепенно появляются дефекты, особенно column defect (дефект столбца) — раньше для их устранения приходилось строить defect map, что было очень трудоёмко, и WBPP предоставил Linear Pattern Subtraction, чтобы помочь с этим справиться.

Опции, связанные с WBPP 2.1.2, и Linear Pattern Subtraction

Execution Monitor (окно мониторинга выполнения). После обновления до более новой версии во время выполнения WBPP выскакивает окно WBPP Execution Monitor, которое сообщает, на каком шаге вы сейчас находитесь и какая работа была проделана, — содержимое можно даже прокручивать и перетаскивать вверх-вниз. В старых версиях, кроме как пристально смотреть на текущую консоль, у пользователя вообще не было способа узнать прогресс — оставалось только ждать, пока всё не закончится, или пока выполнение не остановится из-за ошибки, и лишь тогда можно было что-то проверить через консоль.

Окно мониторинга выполнения WBPP Execution Monitor

Функция кэша (Cache, с версии 2.5). Это ключевое улучшение. Если после полного прогона вы обнаружили ошибку или что-то не оправдало ожиданий и изменили некоторые настройки — неужели снова придётся запускать всё заново? Не обязательно. Кэш WBPP сам определит: пока изменённые настройки не влияют на изображения, он просто использует кэшированные результаты предыдущего запуска; заново обрабатывается только та часть изображений, на которую действительно повлияли изменения, поэтому время второго запуска сокращается очень заметно.

Пояснение функции кэша в WBPP

Воспроизводимый скрипт в папке log. После выполнения новейшая версия WBPP сохраняет в папке log подробный лог и скрипт выполнения. Если прочитать этот скрипт в Script Editor PI, скомпилировать и выполнить его, появится Process Container, содержащий значки всех процессов из подменю Pipeline главного окна WBPP, — каждый из них можно открыть в PI по отдельности. Это чрезвычайно удобно для отладки: например, если вы хотите разобраться, почему Cosmetic Correction не сработала как следует или вообще не дала эффекта, вы можете открыть этот шаг отсюда и проверить, дело ли в параметрах или в баге программы. Другое применение: тем, кто плохо знаком с предварительной обработкой, этот способ позволяет прочитать все шаги и параметры, использованные WBPP, и взять их за образец для собственного ручного выполнения.

Чтение скрипта выполнения WBPP через Script Editor и воспроизведение Process Container

Первый шаг после открытия WBPP — на самом деле не загрузка файлов

Напоследок вернёмся к самому базовому — и при этом самому уязвимому для ошибок — моменту. Первый шаг после открытия WBPP — вовсе не спешить «загружать файлы лайтов, дарков, флэтов и биасов».

WBPP — один из немногих скриптов, которые сохраняют содержимое с прошлого использования. Если вы уже пользовались им раньше, все настройки останутся на месте. Поэтому первым шагом должна быть очистка списка файлов; а стоит ли заодно сбрасывать остальные параметры — зависит от ваших нужд.

А второй шаг легко пропустить, и многие обучающие видео о нём тоже не упоминают — нажать Purge Cache. Ранее я говорил о пользе кэша (с версии 2.5): когда меняется лишь часть параметров, WBPP заново обрабатывает только изменившиеся части, а для остального использует кэш. Но, наоборот, когда вы уже прогнали данные и это кэшированное содержимое больше не нужно, его необходимо полностью очистить, иначе при обработке новых файлов из-за дублирования кэшированного содержимого могут возникнуть непредсказуемые ошибки.

После открытия WBPP сначала очистите список файлов, затем нажмите Purge Cache

Предварительная настройка окружения для пользователей Windows

Если вы запускаете WBPP в Windows, есть две настройки окружения, которые лучше сразу привести в порядок с самого начала — это избавит вас от целой кучи необъяснимых ошибок позже (соответствующие сообщения об ошибках и диагностику подробно см. в статье «Устранение неполадок WBPP»):

Включите поддержку длинных путей. После одного из обновлений WBPP в Windows часто стал выдавать предупреждение о длинном пути, сообщая, что не может создать путь длиннее 256 символов. У меня самого из-за слишком длинного пути файлы, выведенные WBPP, оказывались повреждены (потому что их не удавалось сохранить). Решение — найти regedit через поиск на панели задач, открыть Редактор реестра, найти соответствующее место и изменить значение LongPathsEnabled на 1; после перезапуска PixInsight это предупреждение больше не появится.

Предупреждение Windows о длинном пути и настройка LongPathsEnabled в regedit

Избегайте путей с символами не из ASCII (например, китайскими). Это также причина, по которой я не советую использовать китайские символы в пути к файлу. В Windows, если программой по умолчанию для открытия файла назначен PI, двойной клик по файлу с путём, содержащим символы не из ASCII, вызывает сообщение об ошибке, а те нечитаемые символы в нём — это как раз китайский текст. Обходной путь: не меняя путь, просто перетащите файл в PI — тогда он откроется.

Ошибка с нечитаемыми символами, которую PixInsight показывает при открытии файла с китайским путём


Если сложить всё вышесказанное вместе, общая картина WBPP становится довольно ясной: это мощный автоматизированный движок предварительной обработки, но нужно помнить, что его интегрированный результат — лишь предпросмотр, нужно уметь группировать калибровку, разумно пользоваться кэшем, а также знать, что очищать и какое окружение настраивать перед началом работы. Если понятия усвоены правильно, всё остальное — вопрос практики.