Итак, я продолжаю допиливать свой велосипед для работы с фитсами. Теперь добавлены еще кое-какие полезные штуки. Глядишь, до нового года хотя бы процентов 10 предполагаемого функционала запилю. А там еще немного — и будет автомат для технических ночей (а то и не только). Чтобы перечислить возможности, просто сделаю:
./fitsread -h
Использование: fitsread [аргументы] [префикс выходного файла]
Где аргументы:
-4, --conn4=arg label 4-connected components with giventhreshold
-8, --conn8=arg label 8-connected components with giventhreshold
-B, --binarize=arg binarize image by threshold (in %%from dynamic range)
-D, --del-rec удалить все записи с указанной подстрокой
-a, --add-rec добавить запись в FITS-шапку
-b, --bottom=arg the lowest value, all data less than 'bottom' vould be set to it
-d, --del-key удалить указанный ключ
-h, --help отобразить эту справку
-i, --infile=arg входной файл
-o, --outfile=arg выходной файл
-p, --pipeline установить параметры конвейера, аргументы: type:[help]:...
type - тип преобразования (help для справки)
help - список доступных для данного 'type' опций
-s, --stat отобразить статистические параметры входного и выходного изображения
-t, --top=arg the lowest value, all data more than 'top' vould be set to it
-v, --verbose уровень подробностей вывода (каждый -v увеличивает его)
--inplace записать изменения в тот же файл
--mean вычислить среднее арифметическое всех перечисленных изображений
--median вычислить медиану всех перечисленных изображений
--rewrite перезаписать выходной файл, если он существует (только с опцией -i)
--sum вычислить сумму всех перечисленных изображений
Итак, добавлены: работа с FITS-шапкой (добавление, изменение и удаление записей); обрезка по заданным уровням (нужно иной раз бывает при конвейерной обработке); пакетная обработка изображений (среднее арифметическое, медиана и сумма всех перечисленных в параметрах изображений); бинаризация изображения по заданному (в доле от динамического диапазона) уровню, если уровень указан как отрицательное число, бинаризованное изображение инвертируется; маркировка 4- и 8-связных областей (на выходе получается файл с нумерованными областями вроде картинок ниже).
Конечно, этого мало. Как минимум нужно еще добавить вычисление параметров пятен по найденным маскам с 4- или 8-связностью, а для этого нужно будет еще автоматом вычислять фон и вычитать из изображения. Кроме того, неплохо было бы еще добавить автоматическое "выпрямление" длиннощелевых спектров для большего удобства дальнейшей обработки (это я на будущее для применения со снимками с IRBIS), ну и работу с "пачками" изображений (когда в одном файле находится несколько изображений).
Пронумерованные пятна на гартманнограмме
Нумеруя связанные области инвертированного изображения легко вытащить фон для дальнейшего извлечения