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
можно использовать для:
Показ изображения в заданной ориентации (поворот экрана).
Переворот шаблона Байера. Таким образом, шаблон может быть указан поставщиком сенсора.
НО
ROWORDER
не должен использоваться для переворота изображения для укладки. В противном случае новые изображения будут несовместимы со старыми темновыми кадрами и кадрами плоского поля.ROWORDER
не должен использоваться для переворота данных изображения при поиске астрономического решения. В противном случае такое астрономическое решение будет несовместимо с другими программами.
Программное обеспечение, использующее это ключевое слово
Siril (начиная с версии 0.99.4)
CCDCiel (начиная с версии 0.9.72)
KStars (начиная с 3.4.3)
SharpCap (начиная с версии 3.3)
FireCapture (начиная с версии 2.7)
N.I.N.A (начиная с версии 1.10)
MaxImDL (начиная с версии 6.23)
PixInsight (начиная с версии 1.8.8-6)
ASTAP (начиная с версии ß0.9.391)
APT (начиная с версии 3.86.3)
AstroDMx Capture (начиная с версии 0.80)
Astroart (начиная с версии 8.0)
Получение шаблона Байера
Порядок строк в изображении меняет то, как должен быть прочитан шаблон Байера, но есть так же два необязательных ключевых слова FITS, которые влияют на это: XBAYROFF
и YBAYROFF
. Эти ключевые слова задают смещение шаблона Байера, чтобы начать считывать её с первого столбца или первой строки.
Чтобы помочь разработчикам интегрировать ключевые слова ROWORDER
, XBAYROFF
и YBAYROFF
в их программное обеспечение, Han Kleijn из hnsky.org, создал несколько тестовых изображений, по одному для каждой комбинации из трёх ключевых слов. Эти изображения можно скачать по ссылке: Bayer_test_pattern_v6.tar.gz.
Список ключевых слов FITS
Siril имеет возможность читать и интерпретировать широкий диапазон ключевых слов. Ниже приведён список нестандартных ключевых слов, которые Siril регистрирует при необходимости. Некоторые ключевые слова, которые Siril имеет возможность читать, могут отсутствовать в этом списке. Например, ключевые слова CCDTEMP
или TEMPERAT
, которые указывают температуру сенсора, корректно считываются, но выводятся с ключевым словом CCD-TEMP
.
Ключевые слова 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 |