Версия для печати Версия для печати

Автоматический разбор и начальная обработка отснятых фитов в pixInsight

Сегодня я цельный день, почти что без продыху (отвлёкся только чтобы поснимать наши с Антохой любимые астероиды), занимался написанием одного Javascript скрипта под замечательную астро-программу pixInsight. Потребность в нём зрела некоторое время и … сегодня я не выдержал.

Суть задачи, стоящей перед скриптом — автоматизировать процесс калибровки, косметики, перекладки по полочкам и выравнивания отснятых мною фитов. Задача, вроде бы тривиальная и негоже кичиться, что я решил её, но … дьявол кроется в деталях.

В обсерватории сейчас три астрографа. На каждом сейчас стоят ч/б камеры с колёсами фильтров. Я могу снимать с разной выдержкой и в разном бине. В итоге, количество возможных вариантов калибровки равно кол-во астрографов множить на кол-во фильтров, множить на варианты длительности лайта, множить на варианты биннинга. Чтобы учесть все эти варианты, я нафигачил на рабочий стол пикса такое огромное количество иконок. Потом я создавал ProcessContainer, в который уже по файл-маскам накликивал разные калибровки.

pix-desktop

Фиты с БТИ в зелёном фильтре в бин2, выдержкой 200 секунд я калибровал бы иконкой IVAN_ImageCalibrate_bin2_200_G (её нет на скрине, я не снимаю в бин2 цвета на БТИ. Но если бы снимал…).  Другие фиты — другой иконкой. Третьи — третей.

После калибровки я bin1 загонял в косметику bin1, а bin2 лайты — в косметику bin2.

Дальше я шёл в папку с файлами и запускал скриптик на PHP, дополняющий файлы префиксом ivan-2016-10-18- (инструмент и дата). Я переносил фиты в папку с именем объекта. В подпапку по имени фильтра, подпапку src для исходников и cc — для откалиброванных и косметированных фитов. Дальше _c_cc фиты я выравнивал по опорному. Не забывая следить, какие уже выранял, а какие только появились (через отдельную папку todo).

Не надоело читать? Мне сейчас надоело описывать эту процедуру. А уж делать её каждый день после астроночи… бр…

И тут меня осенило! Лучше день потерять, а потом за пять минут долететь! (С) Мультик «Крылья, ноги и хвосты» :). И сегодня я как раз потерял тот день. Что ж, что делает скрипт? Частично я описал это выше. Поэтому, возможно, немного повторюсь.


1. Первое важное правило для работы скрипта заключается в настройке именования файлов в закладке «Autosave» программы MaximDL, которой я пользуюсь для съёмки лайтов.

В этой закладке нужно попросить максима создавать папку по дате съёмки. Делается это через треугольник у Options, где нужно установить флажок напротив «Auto-Subfolder». Теперь максим в папке сохранения фитов будет сначала создавать папку типа 2016-10-18, только потом складывать отснятый фит в неё.

2. Второе правило тоже касается именования. В той же закладке Autosave нужно именовать каждый записанный фит по шаблону, воспринимаемому скриптом. В Autosave Filename пишем имя объекта (или макс пишет сам после перехода на объект), например, M57. В suffix пишем, например «-L-bin1-5m». Что означает съёмка в L-фильтре в биннинге 1 (то есть без биннинга), выдержка 5 минут.

В итоге мы получаем папку 2016-10-18, а в ней файлы M57-001-L-bin1-5m.fit, M57-002-L-bin1-5m.fit и т.п. Если была съёмка в R, G и B фильтрах в бин 2, например, то в той же папке так же появятся фиты M57-001-R-bin2-1m.fit и другие по тому же шаблону.

3. Третье правило заключается в подготовке структуры папок и именования калибровочных файлов. Она подробно описана в краткой документации, идущей в начале скрипта. Здесь же опишу кратко.

Папка C:\ASTRO\Calibrate. В моём примере такой путь до калибровочных, но можно изменить и на свой, переменная в начале скрипта. В процессе использования я пойму, как сделать удобней. Но для версии v0.1 подходит.

В этой папке создаём папки по названию астрографов. У меня их три, именуются ivan, newton и mak-f6. Это именование сложилось исторически. Если астрограф один. то и его имя будет одно.

В папке каждого астрографа создаются папки bin1 для съёмки без биннинга (в биннинге 1х1). bin2 — для съёмки в биннинге 2 и т.п., если используются другие биннинги (обычно только 1 и 2, но вдруг и 4?).

В папку биннинга, например, C:\ASTRO\ivan\bin1 уже записываются мастер-файлы калибровки. Их имена тоже важны. Пока что прога не учитывает температуру лайтов, эту фичу добавлю в ближайших версиях. Так что кидаем фиты в «текущей» температуре. К примеру, обе KAF8300 камеру у меня сейчас работают в -30°С. Их и кидаю.

bias.fit — мастербиас.

dark-5m.fit — мастердарк из пятиминутных дарков. Пока прога не умеет, но скоро будет находить ближайшую выдержку из имеющихся дарков. Ну или использовать dark.fit, как универсальный для любой выдержки. Сейчас приходится копировать дарк в dark-1m.fit, dark-15m.fit и т.п. для всех используемых выдержек. Временное неудобство.

flat-L.fit — мастер флет в фильтре L. Так же планирую использовать универсальный файл flat.fit, если не найден флет в нужном фильтре. Пыль именно на фильтре не так критична, т.к. он отнесён далеко от сенсора. Куда противней пыль на сенсоре и покровном стекле камеры.

Мастера я готовлю в Script -> Batch Processing -> Batch Preprocessing скрипте.


Запускаем скрипт. В папке, указанной в переменной inputPath он сканирует все фиты и находит подходящие в папке инструмента, папке даты (например, C:\ASTRO\_z\ivan\2016-10-18\, где C:\ASTRO\_z — это папка, указанная в inputPath).

Скрипт определяет, нет ли в той же папки даты откалиброванного фита (суффикс _с). Если нет, то он:

  • калибрует файл подходящим биннингом, дарком подходящей выдержки и флетом подходящего фильтра из папки подходящего инструмента;
  • занимается косметикой файла на основе иконки процесса с именем cosmetic_инструмент_выдержка.
    Почему понадобилась иконка? Потому что каждый мастердарк требует подбора значения для автоматической косметики. Потому что в некоторых камерах нужна косметика битых столбцов / колонок. Это можно настроить только вручную. Но настройка эта разовая до следующей замены дарка;
  • создаёт папку outputPath / имя объекта / имя фильтра (например, C:\ASTRO\M57\L), в которую складывает все исходники в папку src и все откалиброванные файлы после косметики в папку cc;
  • если есть файл C:\ASTRO\M57\ref.fit, то откалиброванный файл после косметики будет выравнен по этому опорному кадру. Выравненный фит с суффиксом _r будет расположен в папке C:\ASTRO\M57\L и доступен для сложения.
    Если ref.fit не существует, то первый попавшийся фит будет скопирован в ref.fit и станет опорным для остальных. В сложных случаях лучше заранее создать папку с именем объекта и положить нужный ref.fit в неё;

Я не делал сложения выравненных фитов, т.к. во-первых, сейчас скрипт обрабатывает фиты по одному. А для суммы нужна пакетная обработка. Во-вторых, потому что я складываю в фитстакере с тщательным подбором коэффициента сигмаклипинга и отбраковкой перед сложением.

Вот и всё. Текущую версию скрипта можно пока что скачать здесь:
http://download.milantiev.com/astro/pixiInsight.scripts/

Не перезаморочился ли я? Не знаю. Через пару недель скажу.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *