FITS

Спецификация

FITS означает Flexible Image Transport System (гибкая система передачи изображений) и является стандартным форматом астрономических данных, используемым профессиональными учёными, например в NASA. FITS это больше, чем просто формат изображений (как, например, JPG или TIFF). Он специально разработан для хранения научных данных, состоящих из многомерных массивов.

Файл в формате FITS состоит из одного или более заголовков и наборов данных (HDU). На первый HDU ссылаются как "первичный HDU" или "первичный массив". Поддерживаются пять первичных типов данных: 8-разрядные байты без знака, 16- и 32-разрядные целые числа со знаком, а также 32- и 64-разрядные числа с плавающей запятой одинарной и двойной точности. Формат FITS также может хранить 16- и 32-разрядные целые числа без знака.

Каждый блок заголовка состоит из любого количества ключевых слов длиной 80 символов, имеющих общий вид:

KEYNAME = value / comment string

Ключевые слова могут быть длиной до 8 символов и содержать только заглавные буквы, цифры 0-9, дефис и символ подчёркивания. За ключевым словом в столбцах 9-10 записи (обычно) следует знак равенства и пробел (= ), за которым находится значение ключевого слова. Последнее может быть целым числом, числом с плавающей запятой, строкой символов (заключённой в одинарные кавычки) или логическим значением (буква T или F).

Последним ключевым словом в заголовке всегда является END, не имеющее полей значения или комментария.

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

SIMPLE  =                    T / file does conform to FITS standard
BITPIX  =                   16 / number of bits per data pixel
NAXIS   =                    2 / number of data axes
NAXIS1  =                  440 / length of data axis 1
NAXIS2  =                  300 / length of data axis 2

Примечание

Siril не поддерживает 64 разрядные файлы FITS. Они читаются программой, но конвертируются в 32-разрядные файлы.

Сжатие

Сжатие это способ уменьшить размер изображения. Существует много методов сжатия, в зависимости от типа используемого изображения. Сжатие может быть с потерей, в случае JPEG, или без потери качества, как это предлагает PNG.

В Siril присутствует возможность работы со сжатыми файлами FITS. За счёт более длительного времени вычислений, размер изображений может быть значительно уменьшен. Siril предлагает несколько алгоритмов сжатия:

  • Rice: Алгоритм Райса простой и очень быстрый

  • GZIP 1: Алгоритм gzip используется для упаковки и распаковки пикселей изображения. Gzip это алгоритм сжатия, используемый свободной утилитой GNU с таким же названием.

  • GZIP 2: Байты в массиве значений пикселей изображения перетасовываются в порядке убывания значимости перед сжатием с помощью алгоритма gzip. Обычно это особенно эффективно при сжатии массивов с плавающей запятой.

С этими алгоритмами связана одна опция, Уровень квантования:

В то время как изображения в формате с плавающей точкой могут быть сжаты без потерь (используя gzip, поскольку алгоритм Райса сжимает только целочисленные массивы), эти изображения часто сжимаются не очень хорошо, потому что значения пикселей слишком зашумлены; менее значимые биты в мантиссе значений пикселей эффективно содержат несжимаемые случайные битовые шаблоны. Чтобы добиться более высокого сжатия, необходимо удалить часть этого шума, но без потери полезной информации. Если он слишком велик, один из них неправильно выбирает значения пикселей, что приводит к потере информации в изображении. Однако если он слишком мал, он сохраняет слишком много шума (или даже усиливает его) в значениях пикселей, что приводит к плохому сжатию.

Примечание

Поддерживаемые алгоритмы обеспечивают сжатие изображений без потерь (loss-less), когда применяются к целочисленным изображениям FITS; значения пикселей сохраняются без потери информация в ходе сжатия и распаковки. Изображения FITS с плавающей запятой (имеющие BITPIX = -32 или -64) сначала квантуются до масштабированных целочисленных значений, а потом сжимаются. Этот способ обеспечивает гораздо более высокие коэффициенты сжатия, что чем сжатие изображения с использованием GZIP. Однако это означает, что исходные значения с плавающей запятой не могут быть точно восстановлены при распаковке изображения. При правильном применении, это только удаляет 'шум' из значений с плавающей запятой без потери значимой информации.

Ориентация изображений FITS

Стандарт FITS это контейнер, описывающий как хранить данные изображения и метаданные. Профессиональные инструменты из ранней истории формата FITS, такие, как ds9 (Гарвард-Смитсоновский центр астрофизики), fv (просмоторщик FITS от NASA), хранят изображения в восходящем порядке (bottom-up). У нас может возникнуть соблазн сказать, что на самом деле это не имеет значения, но когда речь заходит о дебайеризации или астрометрии, возникают проблемы. Например, обычный шаблон Байера RGGB становится GBRG, если изображение перевёрнуто (upside-down).

В настоящее время, несмотря на это, большинство драйверов камер записывают данные в нисходящем порядке (top-down), и нам приходится иметь с этим дело.

По этой причине совместно с P. Chevalley из CCDCiel мы недавно предложили новое ключевое слово FITS. Мы призываем всех производителей данных, разработчиков INDI и ASCOM использовать его, чтобы упростить работу для всех.

Это ключевое слово — ROWORDER, имеющее тип TSTRING. Оно может иметь два значения: BOTTOM-UP и TOP-DOWN.

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

Почему некоторые программы вообще записывают изображения в восходящем порядке?

Потому что математика делает это именно так.

Спецификация FITS также говорит:

5.1. Соглашения об отображении изображений

Очень полезно принять соглашение об отображении изображений, переданных в формате FITS. Многие из существующих систем обработки изображений пришли к такому соглашению. Поэтому мы рекомендуем при записи FITS упорядочить пиксели таким образом, чтобы первый пиксель в файле FITS (для каждой плоскости изображения) был тем, который будет отображаться в левом нижнем углу (с увеличением первой оси вправо, а второй оси вверх) системой обработки изображений, записывающей FITS. Это соглашение явно полезно в отсутствие описания мировых координат. Это не мешает программе просматривать описания осей и переопределять это соглашение, а также не мешает пользователю запрашивать другое отображение. Это соглашение также не освобождает авторов FITS от предоставления полных и корректных описаний координат изображения, позволяющих пользователю определить значение изображения. Порядок отображения изображения — это просто соглашение для удобства, в то время как координаты пикселей являются частью физики наблюдения.

Предупреждение

Ключевое слово ROWORDER можно использовать для:

  1. Показ изображения в заданной ориентации (поворот экрана).

  2. Переворот шаблона Байера. Таким образом, шаблон может быть указан поставщиком сенсора.

НО

  1. ROWORDER не должен использоваться для переворота изображения для укладки. В противном случае новые изображения будут несовместимы со старыми темновыми кадрами и кадрами плоского поля.

  2. ROWORDER не должен использоваться для переворота данных изображения при поиске астрономического решения. В противном случае такое астрономическое решение будет несовместимо с другими программами.

Программное обеспечение, использующее это ключевое слово

Получение шаблона Байера

Порядок строк в изображении меняет то, как должен быть прочитан шаблон Байера, но есть так же два необязательных ключевых слова FITS, которые влияют на это: XBAYROFF и YBAYROFF. Эти ключевые слова задают смещение шаблона Байера, чтобы начать считывать её с первого столбца или первой строки.

Чтобы помочь разработчикам интегрировать ключевые слова ROWORDER, XBAYROFF и YBAYROFF в их программное обеспечение, Han Kleijn из hnsky.org, создал несколько тестовых изображений, по одному для каждой комбинации из трёх ключевых слов. Эти изображения можно скачать по ссылке: Bayer_test_pattern_v6.tar.gz.

Список ключевых слов FITS

Siril имеет возможность читать и интерпретировать широкий диапазон ключевых слов. Ниже приведён список нестандартных ключевых слов, которые Siril регистрирует при необходимости. Некоторые ключевые слова, которые Siril имеет возможность читать, могут отсутствовать в этом списке. Например, ключевые слова CCDTEMP или TEMPERAT, которые указывают температуру сенсора, корректно считываются, но выводятся с ключевым словом CCD-TEMP.

Ключевые слова, сохраняемые Siril

Ключевые слова FITS

Тип

Комментарий

MIPS-HI

Короткое целое без знака

Верхняя граница визуализации

MIPS-LO

Короткое целое без знака

Нижняя граница визуализации

MIPS-FHI

Одинарной точности с плавающей запятой

Верхняя граница визуализации

MIPS-FLO

Одинарной точности с плавающей запятой

Нижняя граница визуализации

BZERO

Двойной точности

Смещение диапазона данных к диапазону коротких целых без знака

BSCALE

Двойной точности

Коэффициент масштабирования по умолчанию

ROWORDER

Строка

Порядок строк в массиве изображения

INSTRUME

Строка

Название инструмента

TELESCOP

Строка

Телескоп, использованный для получения этого изображения

OBSERVER

Строка

Имя наблюдателя

DATE

Строка

Дата (по UTC), когда этот файл FITS был создан

DATE-OBS

Строка

Дата начала наблюдения в формате YYYY-MM-DDThh:mm:ss (по UT)

STACKCNT

Целое без знака

Количество уложенных кадров

EXPTIME

Двойной точности

Экспозиция отдельного кадра (в секундах)

LIVETIME

Двойной точности

Общая экспозиция (в секундах)

EXPSTART

Двойной точности

Время начала экспозиции (стандартная Юлианская дата)

EXPEND

Двойной точности

Время окончания экспозиции (стандартная Юлианская дата)

XPIXSZ

Одинарной точности с плавающей запятой

Размер пикселя по оси X (в микронах)

YPIXSZ

Одинарной точности с плавающей запятой

Размер пикселя по оси Y (в микронах)

XBINNING

Целое без знака

Режим биннинга камеры

YBINNING

Целое без знака

Режим биннинга камеры

FOCALLEN

Двойной точности

Фокусное расстояние камеры

CCD-TEMP

Двойной точности

Температура сенсора (в градусах Цельсия)

SET-TEMP

Двойной точности

Установленная температура (в градусах Цельсия)

FILTER

Строка

Название активного фильтра

IMAGETYP

Строка

Тип изображения

OBJECT

Строка

Название объекта интереса

APERTURE

Двойной точности

Апертура инструмента

ISOSPEED

Двойной точности

Установленная чувствительность камеры (ISO)

BAYERPAT

Строка

Цветной шаблон Байера

XBAYROFF

Целое

смещение массива Байера по X

YBAYROFF

Целое

смещение массива Байера по Y

GAIN

Короткое целое без знака

Усиление камеры

OFFSET

Короткое целое без знака

Смещение камеры

CVF

Двойной точности

Коэффициент преобразования (e-/adu)

AIRMASS

Двойной точности

Воздушная масса

SITELAT

Двойной точности

Широта места наблюдения (в градусах)

SITELONG

Двойной точности

Долгота места наблюдения (в градусах)

SITEELEV

Двойной точности

[м] Высота места наблюдения

DFTTYPE

Строка

Амплитуда/фаза дискретного преобразования Фурье

DFTORD

Строка

Низкая/высокая пространственные частоты, расположенные в центре изображения

DFTNORMX

Строка

Значение нормализации для канала #X

PROGRAM

Строка

Программное обеспечение, использованное для создания этого HDU

CTYPE1

Строка

Тип координат для первой оси

CTYPE2

Строка

Тип координат для второй оси

CUNIT1

Строка

Единицы измерения координат

CUNIT2

Строка

Единицы измерения координат

EQUINOX

Двойной точности

Время равноденствия

CTYPE3

Строка

Изображение RGB

OBJCTRA

Строка

Прямое восхождение центра изображения (чмс)

OBJCTDEC

Строка

Склонение центра изображения (гмс)

RA

Двойной точности

Прямое восхождение центра изображения (градусы)

DEC

Двойной точности

Склонение центра изображения (градусы)

CRPIX1

Двойной точности

Ось 1 опорного пикселя

CRPIX2

Двойной точности

Ось 2 опорного пикселя

CRVAL1

Двойной точности

Опорное значение оси 1 (градусы)

CRVAL2

Двойной точности

Опорное значение оси 2 (градусы)

CDELT1

Двойной точности

Размер пикселя по X (градусы)

CDELT2

Двойной точности

Размер пикселя по Y (градусы)

PC1_1

Двойной точности

Матрица линейных преобразований (1, 1)

PC1_2

Двойной точности

Матрица линейных преобразований (1, 2)

PC2_1

Двойной точности

Матрица линейных преобразований (2, 1)

PC2_2

Двойной точности

Матрица линейных преобразований (2, 2)

CD1_1

Двойной точности

Масштабная матрица (1, 1)

CD1_2

Двойной точности

Масштабная матрица (1, 2)

CD2_1

Двойной точности

Масштабная матрица (2, 1)

CD2_2

Двойной точности

Масштабная матрица (2, 2)

PLTSOLVD

Логическое

Решатель Siril