# Добро пожаловать в документацию Siril!

Это документация к версии 1.4.4.

Siril это инструмент для обработки астрономических изображений.

Siril позволяет калибровать, выравнивать, складывать и улучшать изображения в различных форматах файлов, даже файлы последовательностей изображений (кубы FITS, видео и файлы SER). Также Siril может анализировать изображения с помощью инструментов астро- и фотометрии.

Язык программирования — C, с частями на C++. Основная разработка ведётся с использованием самых последних версий разделяемых библиотек в GNU/Linux. - Желающие внести свой вклад — добро пожаловать.

В документации предпринята попытка описать все функции Siril. Если эквивалент функции из графического интерфейса пользователя существует в командной строке, он указан во врезке. Другие полезные ресурсы можно найти на нашем основном веб-сайте siril.org.

Совет

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

По ссылке команды приведён список доступных в Siril команд.

О любых проблемах в документации, пожалуйста, сообщайте по следующему адресу: https://gitlab.com/free-astro/siril-doc.

О проблеме с переводом документации следует сообщать здесь: https://gitlab.com/free-astro/siril-localized-doc.

## Установка

Каждая версия Siril доступна на 3-х основных платформах — Windows, MacOS, GNU/Linux, и может быть загружена с веб-сайта Siril. Поскольку Siril это свободное программное обеспечение, вы можете скомпилировать его из исходных кодов.

Совет

Может быть полезным проверить целостность только что скачанного двоичного файла или пакета. Список контрольных сумм SHA в формате json доступен по этой ссылке.

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

Командная строка Siril

    capabilities

Отображает список возможностей Siril на основе опций компиляции и среде, в которой исполняется программа

Порядок версий Siril

Начиная с версии 1.0, стабильные версии Siril (например, 1.0, 1.2) обозначаются чётными номерами и предназначены для повседневного использования. Версии в разработке, которые обозначаются нечётными номерами, например, 0.99.0 или 1.1.0, обычно недоступны в виде пакетов или исполнимых файлов и пользователю необходимо самостоятельно их компилировать. Последняя, третья цифра в номере версии, так называемая минорная версия (например, 1.0.1, 1.0.2, 1.0.3 и пр.), соответствует количеству выпусков, которые включают исправления ошибок и иные небольшие дополнения.

### Минимальные системные требования

Для обеспечения оптимальной производительности рекомендуется, чтобы ваша система соответствовала следующим минимальным требованиям:

- Оперативная память: Для обеспечения стабильной работы на всех системах рекомендуется использовать не менее 8 Гб оперативной памяти. Бо́льший объём оперативной памяти полезен, поскольку Siril активно использует доступную оперативную память для выполнения задач обработки данных.

- Хранилище: Для ускорения операций чтения/записи рекомендуется использовать SSD-диск (твердотельный накопитель), поскольку это выражается в на порядок более быстрой работе по сравнению с обычными жёсткими дисками (HDD)

Специфические требования к платформам:

- Windows: Windows 8.1 или новее.

- macOS: macOS 13 Ventura or later.

- GNU/Linux: Минимальные специфические требования отсутствуют. Достаточно любого современного дистрибутива.

### Установка в разных ОС

На следующих страницах описаны процедуры установки для различных операционных систем.

#### Установка в GNU/Linux

##### Установка в Debian

Двоичный пакет доступен для тестируемого и старая версия для стабильного выпусков Debian. Пакет может быть установлен через apt, с использованием привилегий суперпользователя:

##### Установка в Ubuntu или Linux Mint

###### Официальные репозитории

Как и для debian, пакет доступен в репозиториях, но версия может быть устаревшей:

    sudo apt install siril

###### Репозитории PPA

Более новая версия доступна в нашем PPA, установка из которого является предпочтительным способом установить Siril в Ubuntu или Linux Mint:

    sudo add-apt-repository ppa:lock042/siril
    sudo apt-get update
    sudo apt-get install siril

##### Установка через AppImage

Для систем GNU/Linux мы решили предоставить пакетные двоичные файлы AppImage (x86_64) и flatpack, которые работают в системах, подобных GNU/Linux. Чтобы запустить двоичный файл AppImage, вам просто нужно загрузить его и разрешить запуск с помощью команды:

    chmod +x Path/To/Application/Siril-x.y.z-x86_64.AppImage

Укажите данной команде правильный путь и номер версии (x.y.z) к двоичному файлу AppImage. После этого двойной щелчок по AppImage запускает Siril.

##### Установка через flatpack

Другим способом установки стабильной версии siril является использование flatpak, — утилиты для развёртывания и управления пакетами в Linux. Для установки через flatpak введите следующую команду:

    flatpak install flathub org.siril.Siril

Затем, для запуска приложения:

    flatpak run org.siril.Siril

#### Установка в Microsoft Windows

##### Установка с помощью инсталлятора

Рекомендуемый способ установки Siril — использовать программу установки, которая проведёт вас шаг за шагом.

На первом экране программы установки вам необходимо принять соглашение, чтобы продолжить.

Последний экран программы установки. Вы можете запустить Siril сразу после установки и открыть руководство, объясняющее первые шаги.

Мастер настройки Siril корректно установит все необходимые файлы, и в конце у вас будет выбор создавать или не создавать ярлык на рабочем столе.

Примечание

Siril будет установлен в C:\Program Files\Siril. Если у вас нет прав на установку в эту папку, используйте вместо этого переносимую версию (см. Установка переносимой версии.)

##### Установка переносимой версии

Если вы хотите использовать Siril без установки каких либо файлов на свой компьютер (например, если у вас отсутствуют права администратора на компьютере), то рекомендуется использовать переносимую версию. Она поставляется в виде zip-файла, который вам просто нужно извлечь в папку по вашему выбору, затем перейти в папку `bin` для запуска `siril.exe`. Вы также можете создать ярлык на своем рабочем столе, чтобы упростить запуск приложения.

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

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

##### Установка в Windows с Msys2

Эти инструкции предназначены для компиляции в Windows с MSYS2 с использованием набора инструментов UCRT64. Для MSYS2 требуется 64-разрядная версия Windows 10 или новее и этот дистрибутив не работает с файловыми системами FAT.

Примечание

Начиная с версии Siril 1.4.2, UCRT64 является единственной поддерживаемой средой сборки для Windows. Среда MinGW64, ранее поддерживавшаяся как альтернатива, была объявлена устаревшей проектом MSYS2 15 марта 2025 года. Несколько зависимостей Siril уже были удалены из индекса пакетов MinGW64, и ожидается, что за ними последуют другие. Все будущие версии Siril будут создаваться исключительно с использованием UCRT64.

Если вы используете установщик или переносимые двоичные файлы, представленные на веб-сайте Siril, то это изменение очевидно для вас. Если вы собираете Siril из исходных текстов, вы должны использовать среду UCRT64.

Использование UCRT64 также увеличивает число файлов, которые могут обрабатываться в последовательности до 8192.

Загрузите MSYS2 64bit, платформу для распространения и компиляции программного обеспечения для Windows, и запустите программу установки `x86_64` для 64-разрядной архитектуры. При запросе укажите директорию, куда будет установлена MSYS2 64-bit.

Запустите MSYS2 непосредственно из программы установки или позднее MSYS2 MinGW UCRT x64 из меню «Пуск» или нажав на ярлык.

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

Убедитесь, что запущена оболочка UCRT x64 (значок в верхней части окна терминала жёлтый).

Сначала обновите базу пакетов и основные системные пакеты набрав (больше информации о pacman на этой странице):

    pacman -Syu

###### Установка зависимостей

Для установки зависимостей, введите следующую команду:

    curl -s -o siril-deps.sh https://gitlab.com/free-astro/siril/-/raw/master/build/windows/native-gitlab-ci/siril-deps.sh
    bash siril-deps.sh

Примечание

Ссылка выше указывает на последнюю версию сценария для установки зависимостей. В прошлом у нас была тенденция не удалять какие-либо зависимости (а добавлять новые), поэтому, даже если вы хотите создать стабильную ветку, вы должны использовать последнюю версию сценария для установки зависимостей. В случае, если зависимость отсутствует для конкретной версии, вы всегда можете проверить сценарий по соответствующему тегу в репозитории GitLab.

###### Сборка из исходных кодов

Исходный код хранится в репозитории Gitlab. Чтобы скачать его, воспользуйтесь командой:

    git clone https://gitlab.com/free-astro/siril.git
    cd siril
    git submodule update --init

Теперь создайте систему сборки и скомпилируйте код:

    meson setup _build --buildtype release
    ninja -C _build install

Для запуска вашей сборки Siril, запустите оболочку MSYS2 UCRT64 и введите команду:

    siril

Для запуска программы, вы так же можете создать ярлык для `siril.exe`, расположенный по умолчанию в `C:\msys2\ucrt64\bin\`.

Для обновления вашей версии, запустите оболочку MSYS2 UCRT64, а потом:

    pacman -Syu
    cd siril
    git pull --recurse-submodules
    meson setup _build --reconfigure
    ninja -C _build && ninja -C _build install

Если команда `git pull` не показывает никаких изменений, то нет необходимости в повторной сборке. В противном случае указанные выше команды обновять вашу сборку. После этого запустите Siril с помощью:

    siril

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

Начиная с версии Siril 1.3.6, в вашей системе должен быть установлен Python, если вы самостоятельно собираете Siril из исходного кода. При первом запуске Siril, самостоятельно собранного из исходного кода, вам будет нужно сделать это из нативной среды Windows, а не из оболочки MSYS2, чтобы Siril мог обнаружить Python, установленный в Windows, а не в MSYS2. Если пропустить этот шаг, вы получите уведомление в консоли, и модуль sirilpy не будет инициализирован. Это необходимо сделать лишь один раз. Как только виртуальное окружение (venv) будет настроено, вы сможете вернуться к запуску siril из оболочки MSYS2, как обычно.

To launch Siril in a Windows environment, either open a Windows terminal and run `C:\msys2\ucrt64\bin\siril.exe`, or locate this file in Explorer and double-click it.

#### Установка в macOS

##### Установка нашего приложения

Приложение для macOS доступно для:

- Intel (macOS 13 Ventura+)

- Apple Silicon (macOS 13 Ventura+)

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

Появится новое окно. Перетащите иконку `Siril` и сбросьте её на иконку `Приложения`.

Поздравляем, Siril установлен.

##### Установка из Homebrew

Homebrew похож на MacPorts и предоставляет пакеты (они же formula) для установки либо путём компиляции их из исходных кодов, либо с использованием предварительно скомпилированных двоичных файлов (они же bottles). Чтобы установить Homebrew, нажмите здесь. Siril может быть установлен с помощью команды:

    brew install siril

Примечание

Пожалуйста, имейте в виду, что Homebrew использует аналитику. Чтобы отключить это, выполните: `brew analytics off`. Подробнее об этом вы можете прочитать в разделе Brew Analytics.

#### Установка из исходных кодов

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

##### Получение исходных кодов

Исходный код хранится в репозитории git, который в первый раз вы можете загрузить с помощью этой команды:

    git clone --recurse-submodules https://gitlab.com/free-astro/siril.git

И обновить его в последующем, используя следующие команды в корневом каталоге siril:

    git pull
    git submodule update --recursive

##### Зависимости

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

- gtk+3 (библиотека графического интерфейса пользователя), по крайней мере, версия 3.20.

- adwaita-icon-theme (иконки) поддержка внешнего вида приложений gtk.

- cfitsio (поддержка изображений FITS).

- fftw (Библиотека дискретных преобразований Фурье).

- gsl (The GNU Scientific Library), версии 1 или 2 начиная с релиза 0.9.1 или ревизии SVN 1040.

- OpenCV и компилятор C++ для некоторых операций с изображениями.

- Little CMS система управления цветом с открытым исходным кодом

- wcslib для управления мировой системой координат, аннотаций и фотометрической калибровки цвета.

- gtksourceview4 для многострочного редактирования текста. GtkSourceView предоставляет подсветку синтаксиса, операции отмены/повтора, загрузку и сохранение файлов, операции поиска и замены, систему дополнения при наборе, печать, отображение нумерации строк и другие функции, обычные для редактора исходного кода.

Примечание

Даже если Siril может запускаться в консоли начиная с версии 0.9.9, он по-прежнему компонуется с графическими библиотеками, поэтому вам всё равно понадобится GTK+ для компиляции и запуска программы.

Необязательные зависимости:

- openmp поддержка мультипотоковости. Хотя эта зависимость опциональна, её использование настоятельно рекомендуется, поскольку это существенно улучшает производительность приложения. По умолчанию эта опция включена. Это означает, что если openmp не установлена на вашей машине, необходимо добавить `-Dopenmp=false` в настройках meson.

- libraw, libtiff, libXISF, libjpeg, libjxl, libpng, libheif for RAW, TIFF, XISF, JPEG, JPEG XL, PNG, HEIF and AVIF images import and export. The libraries are detected at compilation-time.

- FFMS2 для нативной поддержки видео как последовательностей изображений. Это также позволяет извлекать кадры из многих видов видео для других целей, помимо астрономии. В версиях < 2.20 есть досадная ошибка, поэтому рекомендуется установить последнюю версию.

- ffmpeg (или libav), предоставляющая libavformat, libavutil (>= 55.20), libavcodec, libswscale и libswresample для экспорта последовательностей mp4.

- wcslib для управления мировой системой координат, аннотаций и фотометрической калибровки цвета.

- Exiv2 для управления метаданными изображения.

- libcurl для запросов при выполнении астрометрии и фотометрии.

- libgit2 для поддержания локального клона репозитория siril-scripts.

###### Зависимости для компиляции

Для установки из исходных кодов, вам необходимо установить базовые пакеты разработки:

    git, autoconf, automake, libtool, intltool, pkg-tools, make, cmake, gcc, g++

Компиляторы gcc и g++ из этого списка могут быть заменены на clang и clang++ (мы используем их для разработки), и, возможно, другими.

Пакеты autotools (autoconf, automake, возможно, некоторые другие) могут быть заменены на meson.

##### Типовой процесс сборки

Siril может быть скомпилирован с помощью autotools или meson.

###### Meson

Рекомендуемый способ это использовать meson и ninja:

    meson setup _build --buildtype release

    cd _build
    ninja
    ninja install

Для отключения некоторых зависимостей или функций, используйте опции meson `-Dfeature=false` или `-Ddisable-feature=yes`, соответственно.

Список всех доступных опций конфигурации приведён ниже.

Опция | Тип | Значение | Варианты | Описание
--- | --- | --- | --- | ---
relocatable-bundle | список | platform-default | [ 'yes', 'no', 'platform-default' ] | сборка с использованием ресурсов, которые считаются связанными под тем же префиксом
openmp | логический | true | Н/Д | сборка с поддержкой OpenMP
exiv2 | логический | true | Н/Д | сборка с поддержкой exiv2
libgit2 | логический | true | Н/Д | сборка с интеграцией libgit2
libraw | логический | true | Н/Д | сборка с поддержкой LibRaw
libtiff | логический | true | Н/Д | сборка с поддержкой TIFF
libjpeg | логический | true | Н/Д | сборка с поддержкой JPEG
libjxl | логический | true | Н/Д | сборка с поддержкой JPEG XL
libpng | логический | true | Н/Д | сборка с поддержкой PNG
libheif | логический | true | Н/Д | сборка с поддержкой HEIF
libXISF | логический | true | Н/Д | сборка с поддержкой XISF
ffms2 | логический | true | Н/Д | сборка с поддержкой FFMS2
ffmpeg | логический | true | Н/Д | сборка с поддержкой FFmpeg
libcurl | логический | true | Н/Д | Использовать libcurl для доступа к сети
criterion | логический | false | Н/Д | сборка с поддержкой criterion
flatpak-id | строка |  | Н/Д | устанавливает flatpak-builder если компилируется flatpak

###### Autotools

Компиляция с помощью autotools хорошо известна в мире Unix. После загрузки исходных кодов и установки всего необходимого, обычный способ компиляции следующий:

    ./autogen.sh
    make
    make install

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

Возможно, вы захотите передать компилятору определенные параметры, например, такие, если бы вы хотели оптимизацию и установку в /opt вместо /usr/local, используемого по умолчанию:

    CFLAGS='-mtune=native -O3' ./autogen.sh --prefix=/opt

Для запуска Siril имя команды siril или siril-cli.

##### Установка в Debian и подобных системах

Возможно, вы захотите создать пакет `.deb` вместо использования неупакованной версии, в этом случае обратитесь к этой справке. В частности, для установки зависимостей вы можете использовать команду:

    apt build-dep siril

В противном случае вот список пакетов для текущей версии:

- Пакеты, необходимые для компиляции системы:

    autoconf automake make gcc g++ libtool intltool pkg-config cmake

- Пакеты с обязательными зависимостями:

    libgtk-3-dev libcfitsio-dev libfftw3-dev libgsl-dev libopencv-dev
    liblcms2-dev wcslib-dev libgtksourceview-4-dev

- Пакеты с необязательными зависимостями:

    libcurl4-gnutls-dev libpng-dev libjpeg-dev libtiff5-dev
    libraw-dev gnome-icon-theme libavformat-dev libavutil-dev libavcodec-dev
    libswscale-dev libswresample-dev libgit2-dev libheif-dev
    libexiv2-dev libjxl-dev liblz4-dev libpugixml-dev libxisf-dev

для поддержки видео (AVI и прочие):

    libffms2-dev

##### Установка в Arch Linux

В AUR доступны два пакета: siril и `siril-git`. Скачайте ``PKGBUILD` или репозиторий, установите зависимости, запустите makepkg для создания пакета и `pacman -U` для его установки.

Зависимости (обязательные и несколько необязательных):

    pacman -S base-devel cmake git intltool gtk3 fftw cfitsio gsl opencv
    exiv2 libraw wcslib gtksourceview4

##### Версия LittleCMS

Для сборки Siril необходима lcms2 версии 2.14 или выше. Эта версия нужна для обеспечения оптимизации кода управления цветом. Подходящая версия доступна в Debian testing и Ubuntu 23.04. Вместе с этим, текущая версия Ubuntu LTS предоставляет более раннюю версию lcms2, что могут делать и другие дистрибутивы ОС. Если вы используете более раннюю ОС, не предоставляющую lcms2 >= 2.14, вы можете установить пакеты из более новой версии вашего дистрибутива вручную, либо вы можете установить lcms2 из исходного кода, доступного в их репозитории git.

##### Неудачи сборки

Каждый коммит в git Siril автоматически собирается в стандартной среде сборки для Linux, Windows и MacOS с использованием инфраструктуры gitlab CI. Это значит, что мы с высокой долей вероятности уверены в том, что компиляция основной ветки и отмеченных выпусков будет успешной при условии корректно настроенной среды сборки и наличии всех необходимых зависимостей.

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

Если вы все еще считаете, что обнаружили проблему сборки, не отмеченную конвейером CI — например, если вы осуществляете сборку на другой платформе, такой как BSD, которую разработчики не используют регулярно, — тогда не стесняйтесь говорить о проблеме на gitlab.

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

##### Системный Python

Если вы компилируете Siril самостоятельно, удостоверьтесь, что у вас установлена рабочая система Python, включая pip и venv. Обратите внимание на последний пункт, поскольку в некоторых системах (по крайней мере, в системах на базе Debian / Ubuntu, возможно, и в других) Python разделен на множество пакетов, и вы должны убедиться, что пакеты, предоставляющие pip и venv, установлены.

## Графический интерфейс пользователя

Графический интерфейс пользователя позволяет обрабатывать ваши изображения вручную, равно как использую сценарии или вводя команды. Чтобы узнать, как использовать Siril в автономном режиме (headless mode), обратитесь к этому разделу.

Графический интерфейс Siril написан с использованием GTK, свободной, кроссплатформенной библиотеки для создания графических пользовательских интерфейсов. В настоящее время используется GTK3.

В последующих разделах будут описаны основное окно и полезные меню.

### Основной интерфейс

После запуска Siril, открывается основной интерфейс.

Примечание

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

Область изображения

В этой области отображается загруженное в данный момент изображение. Нажмите на Красный, Зелёный или Синий, для переключения между разными слоями (только для цветных изображений, для монохромных доступна отдельная вкладка Ч/Б).

При нажатии правой клавишей на изображении, появляется контекстное меню:

Совет

Когда не загружено ни одного изображения, двойное нажатие по области изображения вызывает диалог Открыть.

#### Отменить

Отменяет самое последнее действие.

#### Повторить

Повторяет последнее отменённое действие.

#### PSF

Вычисляет PSF для текущего выделения и выполняет быструю фотометрию.

#### PSF для последовательности

Вычисляет PSF для данного выделения во всех изображений в текущей последовательности.

#### Выбрать звезду

Применяет определение звезды в текущем выделении. Результат будет открыт в диалоге Динамическая PSF.... Обратите внимание, что эта операция менее строгая, чем поиск звёзд на всём изображении, поскольку предполагает что вы сделали выделение, содержащее звезду. Таким образом эта операция может использоваться для выбора звёзд, пропущенных функцией поиска звёзд на всём изображении.

#### Выделение

Применяет ограничения к области выделения.

#### Кадрировать

Предоставляет интерфейс к функциям Кадрировать и Вращение и обрезка.

Совет

Если загружено изображение CFA, кадрирование будет ограничено границей CFA, так что эффективный шаблон CFA останется неизменным для будущих операций. Для шаблонов Bayer CFA это означает, что выбранная область обрезки будет иметь размер, кратный 2×2, и может быть смещена на 1 пиксель в направлениях x и y, чтобы быть выровненной с началом шаблона Bayer. Для шаблонов X-Trans размер кадрирования будет кратен 6×6 и может смещаться на 5 пикселей в каждом направлении.

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

Rotating a CFA image by arbitrary angles will destroy the CFA pattern: you should progress your workflow to the point where the CFA pattern has been debayered or Bayer drizzled before doing anything that applies rotation or scaling.

#### ROI

Предоставляет интерфейс для установки или очистки области интереса (Region of Interest, ROI) для обработки ROI. Обратите внимание, что эта строка меню неактивна, если режим ROI в настройках установлен в "Автоматически из выделения".

#### Выравнивание RGB

Выравнивает RGB-каналы изображения. Поддерживается ряд способов регистрации для выравнивания:

- Всё звёздное небо за 2 шага Используется процедура выравнивания всего звёздного неба за 2 шага с кадрированием с помощью центра тяжести (размеры изображения при этом сохраняются). Данный алгоритм настраивается с 8-ю степенями свободы, что позволяет корректировать сдвиг, вращение и скос изображения. Это рекомендуемый алгоритм для изображений, содержащих звёзды. Данный алгоритм является глобальным и не требует выделения.

- KOMBAT Используется алгоритм выравнивания KOMBAT, который, в первую очередь, предназначен для выравнивания планет, но работает и для изображений глубокого космоса. Алгоритм обеспечивает только регистрацию посредством сдвига, но работает быстро. Для работы алгоритма необходимо выделение.

- Регистрация по одной звезде Это более старый алгоритм, который обеспечивает регистрацию только по сдвигу, основываясь на движении одной звезды. Это очень быстро, но регистрация не может обеспечить такого числа степеней свободы, как регистрация всего звёздного неба за 2 шага. Данный способ может подойти, если вы уверены, что вам необходимо только скорректировать смещение изображения. Для работы этого алгоритма требуется выбрать одну звезду.

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

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

Это инструмент для выравнивания RGB. Он не предназначен и не будет работать для выравнивания невыровненных LRGB-композиций. Для выравнивания последних, необходимо либо заранее выравнивать слои, которые будут использованы для последующего совмещения, либо использовать инструмент совмещения RGB для выравнивания.

Вернуться к иллюстрации

Открыть

Нажмите на эти иконки (слева направо) чтобы:

- открыть файл

- открыть недавний файл

- сменить рабочую директорию

Вернуться к иллюстрации

Укладка на лету

Нажмите эту кнопку, чтобы начать сессию Укладка на лету.

Вернуться к иллюстрации

Отменить/Повторить

Используйте эти кнопки для отмены/повтора последних действий. Возможно только в том случае, если последнее действие было выполнено через пользовательский интерфейс, а не путём ввода команды.

Вернуться к иллюстрации

Обработка изображений

Нажмите на эту кнопку, чтобы вызвать меню Обработка.

Вернуться к иллюстрации

Инструменты

Нажмите на эту кнопку, чтобы вызвать меню Инструменты.

Вернуться к иллюстрации

Сценарии

Нажмите на эту кнопку, чтобы получить доступ к списку доступных scripts и запустить сценарий.

Вернуться к иллюстрации

Информационная панель

На этой панели отображается информация о версии Siril и текущей рабочей директории.

- Справа приведена информация о доступном объёме оперативной памяти и дискового пространства.

- Вы можете так же менять количества доступных Siril потоков, используя значки +/-.

Вернуться к иллюстрации

Сохранить

Эти кнопки используются для сохранения результатов:

- сохранить (перезаписать) текущее изображение.

- сохранить под другим именем и/или расширением.

  Диалог сохранения файлов.

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

- сделать снимок текущего вида изображения (включая растягивание, если таковое применено). Возможны два варианта. Либо снимок сохраняется в буфере обмена, либо непосредственно копируется на диск в рабочую директорию.

- изменить разрядность текущего изображения. Доступны 16- и 32-битные режимы.

Вернуться к иллюстрации

Открывает главное меню (оно же burger menu). Позволяет получить доступ к настройкам, документации и многому другому.

Вернуться к иллюстрации

Вкладки

Выбор одной из вкладок. Вы можете переключаться между вкладками, используя клавиши `F1` – `F7`.

Больше подробностей можно найти:

Вкладки | Клавиша
--- | ---
Конвертация | `F1`
Последовательность | `F2`
Калиборовка | `F3`
Регистрация | `F4`
График | `F5`
Укладка | `F6`
Журнал | `F7`

Вернуться к иллюстрации

Вкладка

Отображает информацию, специфическую для выбранной в настоящий момент вкладки.

Вернуться к иллюстрации

Поведение мыши

Siril использует GTK для сопоставления основной, дополнительной и средней кнопок мыши. Обычно они сопоставляются с левой, правой и средней (кнопка `колесо` `прокрутки`) физическими кнопками мыши, однако в определенных настройках они могут быть сопоставлены по-разному (например, пользователи-левши могут настроить переключение левой и правой кнопок).

1. Основная кнопка мыши

   Основная кнопка мыши используются для ряда целей:

   - Для выбора области на изображении

   - С зажатой `Ctrl` (или `Cmd` в MacOS), для перемещения изображения

   - При активном инструменте создания профиля интенсивности, создаёт линию, вдоль которой будет построен профиль интенсивности и выбирает точки, соответствующие известным длинам волны / волновым числам в настройках спектроскопии

   - В инструменте совмещения в RGB выбирает центр вращения при использовании выравнивания вручную

   - В инструменте удаления градиента — для создания образцов

   - В режиме фотометрии — для выполнения фотометрии звезды

   - Для выбора положений для предварительных просмотров регистрации

   - Двойное нажатие на основную кнопку мыши когда не загружено ни одного изображения вызывает диалог Открыть.

2. Дополнительная кнопка мыши

   Дополнительная кнопка мыши используется для:

   - Вызова контекстного меню изображения (за исключением режима фотометрии)

   - В инструменте удаления градиента — для удаления образцов

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

3. Средняя кнопка мыши

   Средняя кнопка мыши используются для:

   - Для перемещения по изображению в текущем масштабе

   - С нажатой клавишей `Ctrl` (или `Cmd` на MacOS) — создание квадратного выделения подходящего для фотометрии размера

   - Двойное нажатие выставляет размер изображения к предустановленному значению. Это поведение настраивается на вкладке Интерфейс в диалоге Настройки. Доступны следующие варианты:

     - Всегда подгонять изображение под размер окна

     - Полный размер изображения с центром в позиции курсора

     - Переключение между подгонкой изображения под размер окна или показом изображения в его полный размер с центром в позиции курсора

4. Колесо прокрутки

   - `Колесо` `прокрутки` используется для масштабирования изображения.

Командная строка

Наберите команду и нажмите `Ввод`.

- Вы можете нажать кнопку в конце командной строки, чтобы получить помощь по использованию команды.

- Чтобы прервать текущий процесс, нажмите на кнопку Стоп.

Вернуться к иллюстрации

Расширить

Нажмите на эту панель, чтобы показать/скрыть всю вкладку.

Вернуться к иллюстрации

Ползунки

Используйте верхний и нижний ползунки, чтобы настроить, соответственно, точки белого и чёрного при предварительном просмотре изображения (в линейном режиме).

Совет

Нажатие на название загруженного в данный момент изображения или последовательности позволяет скопировать это название в буфер обмена (полезно для вставки в команду).

Вернуться к иллюстрации

Предварительный просмотр

Выберите режим предварительного просмотра загруженного изображения из следующих:

- Линейный

- Логарифмический

- Квадрат. корень

- Квадратичный

- Asinh

- Авторастягивание (установите флажок Расширить, чтобы использовать более широкую, до 24 бит (устанавливается в настройках), LUT вместо используемой по умолчанию 16-битной)

- Гистограмма

В режиме Авторастягивания со цветными изображениями переключатель справа включает/отключает привязку каналов. При разъединении, 3 слоя растягиваются независимо друг от друга, чтобы получить более сбалансированное изображение.

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

Это лишь предварительный просмотр изображения, а не реальные данные (за исключением Линейного режима). Не забудьте растянуть ваши изображения перед сохранением.

Вернуться к иллюстрации

Специализированные режимы просмотра

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

- в виде негатива

- в ложных цветах

Вернуться к иллюстрации

Инструменты астрометрии

Используйте эти переключатели, чтобы показать:

- астрономические аннотации

- небесную сетку

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

Чтобы эти кнопки были активны, загруженное изображение должно иметь астрономическое решение.

Вернуться к иллюстрации

Быстрая фотометрия

Используйте эту кнопку, чтобы переключиться в режим быстрой фотометрии.

Вернуться к иллюстрации

Профиль интенсивности

Используйте эту кнопку, чтобы переключиться в режим профиля интенсивности.

Вернуться к иллюстрации

Масштабирование

Используйте эти кнопки чтобы:

- Отдалить изображение

- Приблизить изображение

- Подогнать изображение под размеры окна

- Показать изображение в полный размер

Совет

`Ctrl`+`нажатие` `на` `левую` `кнопку` `мыши` позволит перемещаться по изображению

Совет

`Ctrl`+`прокручивание` `колеса` `мыши` приближают/отдаляют изображение, а `Ctrl` + `0` / `1` подгоняют масштаб к размеру окна/полному размеру, соответственно.

Совет

При перетягивании основной кнопки мыши с зажатыми `Ctrl`+`Shift`, будет измерена дистанция между двумя точками. Если метаданных достаточно, измерение будет выполнено в градусах, минутах и угловых секундах, в противном случае — в пикселях.

Вернуться к иллюстрации

Геометрические преобразования

Используйте эти кнопки чтобы:

- Повернуть влево

- Повернуть вправо

- Отразить по горизонтали

- Отразить по вертикальной оси

Вернуться к иллюстрации

Выбор кадров

Нажмите на эту кнопку, чтобы открыть диалог выбора кадров.

Вернуться к иллюстрации

### Главная панель

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

Главная панель Siril.

Примечание

The toolbar is only active when an image is loaded in memory.

#### Display Group

##### Display mode

The first control is a drop-down menu button showing the current display mode (`Linear` by default). Clicking it opens the list of all visual modes available in Siril:

- Linear — direct rendering of pixel values. This is the reference mode.

- Logarithm — applies a logarithmic transfer function, compressing bright areas and bringing out faint details.

- Square root — applies a square root transfer function, a gentler alternative to the logarithm.

- Squared — applies a quadratic transfer function, boosting bright areas at the expense of the shadows.

- Asinh — applies an inverse hyperbolic sine transfer function, offering a smooth and natural-looking stretch.

- AutoStretch — automatically computes and applies a stretch for a visually pleasing result. A High definition sub-option is available to increase the precision of the stretch computation.

- Histogram — applies a stretch based on the image histogram for a balanced display.

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

Only Linear mode (with both visualisation sliders at their minimum and maximum positions) reflects the true pixel values. All other modes are purely visual aids. Stretch the histogram before exporting to an external tool.

##### Channel linking

Immediately to the right of the mode selector is a toggle button showing a chain link icon.

- Closed chain — the R, G and B channels are linked in AutoStretch mode.

- Broken chain — the channels are stretched independently.

#### Visual Rendering Group

##### Negative view

Toggles the display between the normal view and the negative view of the image. Useful for detecting subtle artefacts or faint gradients.

##### False colour / rainbow colormap

Toggles between normal display and a false colour rendering (rainbow palette). This mode helps visualise intensity variations across the image more clearly.

#### Astrometry Group

##### Object annotation

- Left-click — displays the names of celestial objects if WCS (World Coordinate System) information is available in the image.

- Right-click — opens the list of available astrometric catalogues to select the annotation source.

##### Celestial grid

Shows or hides the celestial coordinate grid (right ascension / declination) if WCS information is available in the image.

#### Analysis Group

##### Photometry / PSF

Switches to photometry / PSF mode. In this mode:

- A click on a star performs a PSF (Point Spread Function) fit and displays the photometric parameters.

- If a sequence is loaded, a right-click on the displayed image applies the PSF/photometry analysis to the entire sequence.

##### Intensity profile cut

Activates the intensity profile cut tool: draw a segment between two points on the image to display a graph of the pixel values along that line.

#### Zoom Group

##### Отдалить изображение

Reduces the zoom factor (shrinks the displayed image). Usual keyboard shortcut: `-`.

##### Приблизить изображение

Increases the zoom factor (enlarges the displayed image). Usual keyboard shortcut: `+`.

##### Fit to window

Toggle button. When active, the image is automatically scaled to fill the available area of the window.

##### Actual size — 1:1

Displays the image at its actual size (1 image pixel = 1 screen pixel).

#### Geometric Transformations Group

##### Rotate 90° counter-clockwise

Applies a 90° counter-clockwise rotation to the image.

##### Rotate 90° clockwise

Applies a 90° clockwise rotation to the image.

##### Horizontal mirror

Applies a horizontal flip (reflection about the vertical axis).

##### Отразить по вертикали

Applies a vertical flip (reflection about the horizontal axis).

#### Sequence Group

##### Sequence image list

Shows or hides the side panel listing the images in the current sequence, along with the registration data associated with each frame.

### Главное меню

Настройки

Открывает меню настроек.

Руководство Siril

Открывает сайт с документацией.

Проверка обновлений

Проверяет наличие новой версии.

Клавиатурные сокращения

Открывает окно со всеми доступными Клавиатурные комбинации.

О программе

Открывает диалог с информацией о версии и благодарности.

### Меню «Инструменты»

Меню инструментов

В этом меню, появившемся с версией Siril 1.4, собраны разные инструменты, такие как анализ изображений, астрометрия, фотометрия и др.

Меню содержит несколько вложенных меню и подменю, организованных следующим образом:

- Анализ изображений

    - Статистика

    - Оценка шума

    - Аберрации

    - Показать наклон

    - Показать искажения

    - Динамическая PSF

- Астрометрия

    - Астрономическое решение изображений

    - Аннотировать

- Фотометрия

    - Создать файл со списком звёзд сравнения

    - Автоматическая кривая блеска

    - Сохранить результаты

        - Кривая блеска (формат ETD)

        - Формат AAVSO

- Управление цветом

- Заголовок FITS

- Данные об изображении

Для получения детальной информации по каждому пункту меню, кликните по соответствующей записи.

### Меню «Обработка»

Это меню описано в деталях по следующей ссылке.

### Обработка области интереса

Siril предоставляет ряду функций обработку области интереса (ROI). Обработка области интереса выполняет две задачи:

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

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

Обработка области интереса не является универсальной для всех операций над изображениями в Siril. Фактически, для значительного числа операций это не будет иметь смысла. Например, для геометрически операций, когда содержимое области интереса будет отображаться на другую часть изображения. Обработка области интереса не поддерживается операциями, требующими несколько входящих изображений, например, Восстановить звёзды, Совмещение в RGB или Математические операции над пикселями.

#### Операции, поддерживающие обработку области интереса

Следующие операции над изображениями поддерживают обработку области интереса:

- Реконструкция Эта операция может быть очень медленной, поэтому обработка области интереса позволяет быстрее подобрать наилучшие настройки для вашего изображения, проверяя их на небольшой его области.

- Подавление шума Это может быть очень медленным процессом, поэтому обработка области интереса позволяет быстрее подобрать необходимые настройки.

- Растягивание по asinh Пользователь может захотеть оценить эффект от растягивания по asinh или любой из следующих операций над изображением, сравнивая с необработанной областью. Обработка области интереса позволяет это.

- Обобщённое гиперболическое преобразование

- Растягивание гистограммы

- Преобразование кривых

- Насыщенность

- Медианный фильтр

- Удалить зелёный шум (SCNR)

- Фильтры сохранения краёв

- Подавить фиолетовые ореолы

Остальные операции над изображениями не поддерживают обработку области интереса.

Примечание

Обработка области интереса в общем не предназначена для обработки части изображения.

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

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

#### Установка области интереса

Доступны две опции для установки области интереса:

- Вручную Эта опция подразумевает, что область интереса будет устанавливаться и очищаться вручную с использованием подменю ROI ‣ Установить ROI к выделению в меню, вызываемым правой кнопкой мыши.

- Автоматически из выделения Эта опция автоматически синхронизирует область интереса с текущим выделением и автоматически очищает её при очистке выделения.

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

#### Очистка области интереса

В режиме ручного управления областью интереса, опция очистки области располагается в подменю ROI ‣ Очистить ROI в меню, вызываемым правой кнопкой мыши.

В режиме автоматической установки области интереса, просто очистите текущее выделение и область интереса будет очищена.

Область интереса будет очищена в следующих случаях:

- При закрытии текущего изображения,

- При открытии нового изображения,

- При открытии последовательности и изменении отображаемого кадра.

#### Визуализация

Когда область интереса установлена, она отображается в окне изображения как область, ограниченная красной пунктирной линией, похожей по стилю на область выделения. Однако когда открыт диалог операции над изображением, которая поддерживает обработку области интереса (или область интереса была установлена при уже открытом диалоге), цвет линии, ограничивающей область интереса изменится на зелёный. Это означает, что для текущей операции включена обработка области интереса.

#### Команды Siril

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

#### Преобразования цветового пространства

Любые операции, удаляющие, назначающие или преобразующие ICC-профиль изображения, удалят область интереса, если таковая установлена.

### Окно с данными об изображении

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

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

Значения по умолчанию — биннинг отсутствует (1×1), а фокусное расстояние и размер пикселя сохранены в настройках. Значения, сохранённые в настройках, можно задать из этого диалогового окна, установив флажок Сохранить как значения по умолчанию, прежде чем нажать на кнопку Закрыть. Их также можно задать, выполнив астрометрическое решение изображения, также называемое решение пластин (plate solving), если в настройках включена опция обновления значений по умолчанию когда найдено астрономическое решение.

Значения, отображаемые в этом окне, будут сохранены в текущем загруженном изображении, и, если это изображение сохранено как FITS, они будут сохранены в заголовке FITS.

Управление биннингом может осуществляться в двух режимах, в зависимости от программного обеспечения для захвата изображений: задаётся реальный размер пикселя, но его необходимо умножить на коэффициент биннинга (когда установлен флажок Реальный размер пикселя), или задаётся размер пикселя, уже умноженный на коэффициент биннинга (когда флажок снят).

### Клавиатурные комбинации

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

## Рабочая директория

Рабочая директория (`wd`), она же текущая рабочая директория (`cwd`) — это директория, в которой работает Siril. Её выбор это важный шаг, особенно при использовании сценариев. Неверный выбор `cwd` ответственен за 90% неудач при выполнении сценариев. Эта директория выбирается нажатием на кнопку Домой, имеющей форму . В этой директории Siril по умолчанию сохраняет изображения (если не указан иной путь) и где осуществляет поиск последовательностей.

После того как директория была выбрана, путь к ней легко можно узнать в заголовке окна приложения, под версией программы, как показано на рисунке ниже.

Путь к рабочей директории, указанный в заголовке. Представлен вариант для Linux.

## Настройки

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

Начиная с версии 1.2.0, настройки доступны как через пользовательский интерфейс, так и программно, с помощью команд set/get.

По умолчанию файл с настройками расположен:

- `~/.config/siril/configX.Y.ini` (Linux)

- `%LOCALAPPADATA%\siril\configX.Y.ini` (Windows)

- `~/Library/Application Support/org.free-astro.Siril/siril/configX.Y.ini` (MacOS)

Где X и Y мажорный и минорный номера выпуска.

Если вы хотите иметь несколько файлов с конфигурацией, вы можете выбрать какой использовать, открыв терминал и набрав:

    siril -i path/to/my_other_config.ini

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

Чтобы использовать siril как показано строкой выше, необходимо, чтобы Siril был в системной переменной path. В противном случае необходимо указать полный путь к исполняемому файлу Siril.

### Настройки (графический интерфейс)

Настройки доступны через главное меню или через клавиатурное сочетание `Ctrl` + `P`. В настройках 10 страниц, каждая из которых освещает определённую группу функций. Настройки позволяют более или менее продвинутым пользователям оптимизировать Siril для наилучшего удовлетворения их потребностей. Некоторые настройки могут негативно воздействовать на работу Siril, поэтому желательно изменять настройки только тогда, когда вы знаете, что делаете. В нижней части окна настроек расположены три кнопки: Сброс сбрасывает все настройки к значениям по умолчанию, Отмена отменяет текущие изменения, а Применить закрывает диалоговое окно и сохраняет настройки.

#### Дебайеризация FITS/SER

Страница 1 диалога настроек

The FITS/SER debayer tab allows the user to define the debayer settings for FITS, SER or TIFF files. Consequently, this tab is only usable for a user with an OSC camera. It is advisable to leave the default settings as Siril will automatically define the correct settings to use. However, in the case of a TIFF file that is not an AstroTIFF, or a file that does not have all the required keywords, it may be necessary to adjust the settings manually.

- Row-order preference: You can choose to use header ROW-ORDER keywword if present and fallback to either Top-Down or Bottom-Up if not present. Or you can force a preferred orientation. More explanation on this keyword can be found here.

- Bayer/mosaic pattern: This drop-down menu allows you to choose the type of Bayer matrix used by the camera. It is generally indicated in the manufacturer's information. If Bayer information from file's header if available is ticked, the value specified in this dropdown will only be used in case the information is not present in the header. If the option is unticked, it is always used.

- X offset: In rare cases, files are recorded with a Bayer array shift. We can define an offset of 1 on the X axis, and an offset of 1 on the Y axis. Here the value defines if there is an offset in X. Note that this is used only when Bayer information from file's header if available is unticked or when the header does not contain this information.

- Смещение по Y: смещение массива Байера по Y.

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

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

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

- VNG4 (Threshold-Based Variable Number of Gradients), алгоритм работает в области 5×5 пикселей вокруг каждого исходного пикселя. Это очень хороший алгоритм для ровных областей изображения (например, фон неба), но создает артефакты в высококонтрастных областях (например, звёзды).

- AHD (Adaptive Homogeneity-Directed), это другой хорошо известный алгоритм дебайеризации. Однако обычно он демонстрирует артефакты фона и плохие формы звёзд.

- AMaZE (Aliasing Minimization and Zipper Elimination), это алгоритм, который даёт хорошие результаты, особенно при съёмке с низким уровнем шума.

- DCB (Double Corrected Bilinear), более современный алгоритм, демонстрирующий некоторые артефакты фона, подобно AHD.

- HPHD (Heterogeneity-Projection Hard-Decision), старый алгоритм, демонстрирующий хорошие результаты, но достаточно медленный.

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

- RCD (Ratio Corrected Demosaicing) предназначен для сглаживания ошибок в коррекции цвета, которые имеют место у многих методов интерполяции. Этот алгоритм хорошо себя ведёт на круглых границах, например, звёздах, и поэтому является алгоритмом по умолчанию в Siril.

Для сенсоров X-Trans, независимо от указанного в настройках, используется специальный алгоритм Markesteijn. Для это алгоритма возможно указать желаемое качество с помощью опции Качество дебайеризации X-Trans. Она определяет количество проходов алгоритма дебайеризации X-Trans Markesteijn. Значение по умолчанию — 1, немного лучшим, но более медленным будет 3.

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

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

#### Параметры FITS

Страница 2 диалога настроек

На странице Параметры FITS сгруппированы все настройки, связанные с нативным форматом файлов, используемом Siril.

- Расширение: по умолчанию значение установлено в .fit. Однако многие программы захвата используют расширение .fits. В таком случае необходимо обновить это значение. Все файлы, создаваемые Siril, будут использовать расширение, указанное здесь. Более того, могут быть загружено только те последовательности, которые имеют расширение, указанное в настройках. Таким образом нельзя одновременно открыть последовательности .fits и .fit, не обновив это значение. Поддерживаются следующие расширения:

  - .fit

  - .fits

  - .fts

  Ко всем им можно прибавить расширение .fz, если файл сжатый.

  Командная строка Siril

      setext extension

  Устанавливает расширение, используемое и понимаемое последовательностями.
  Аргумент extension может быть "fit", "fts" или "fits"

- Тип по умолчанию: По умолчанию Siril работает с 32-битными числами с плавающей точкой в диапазоне [0, 1]. Это лучший способ иметь высокую точность. Однако из соображений места, занимаемого файлами на жёстком диске, пользователь может принять решение работать с 16-битными числами без знака (в диапазоне [0, 65535]). Будьте осторожны, поскольку в этом случае возможна потеря большого количества информации при укладке.

- Кубы FITS могут содержать изображения разного размера: Это может быть полезно при использовании научных файлов FITS, которые не созданы в Siril и содержат множественные изображения разного размера. В противном случае такие файлы рассматривались бы как неверные файлы Siril FITSEQ. Хорошим примером использования этой опции являются изображения космического телескопа «Джеймс Уэбб». Пример изображения приведён по ссылке.

- Включить совместимость с Aladin (CTYPE3 = 'RGB '): Aladin рассматривает 3D-куб FITS как изображение RGB (Красный, Синий и Зелёный компоненты), если в заголовке указано ключевое слово FITS `CTYPE 3 = 'RGB'`. В этом случае поддерживаются любые значения `BITPIX`. Без установки ключевого слова FITS `CTYPE3 = 'RGB'` только куб FITS с 3 кадрами одинакового размера и с `BITPIX=8` будет автоматически определен как RGB FITS.

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

Эта опция может конфликтовать с функцией астрометрии и должна быть включена если она действительно необходима.

- Обновить размер пикселей при биннинге: Используется для вычисления масштаба изображения. Размер пикселя может быть задан двумя способами: указывается реальный размер пикселя, который умножается на коэффициент биннинга (если флажок установлен), или указывается размер пикселя уже умноженный на коэффициент биннинга (если флажок снят). Данная настройка зависит от программы захвата, использованной для создания файлов FITS.

- Встроить ICC-профили в сохранённые файлы FITS: Как правило, этот параметр следует оставить включённым, если только вам не требуется совместимость с программой, которая не поддерживает файлы FITS со встроенными ICC-профилями (в настоящее время такие программы неизвестны).

- Проверять контрольные суммы файлов в заголовке FITS (DATASUM и CHECKSUM): Проверять контрольные суммы, если они существуют. Проверка происходит каждый раз при чтении файла, что может существенно отразиться на производительности Siril при работе с последовательностью.

- Сжатие FITS: Сжатие может иметь смысл в тех случаях, когда пространство на жёстком диске является важным аспектом. Больше информации доступно в разделе, посвящённом формату FITS.

  При сжатии к файлу добавляется расширение `.fz`. Siril имеет возможность открывать последовательность с расширением fz без необходимости изменения настроек.

Командная строка Siril

    setcompress 0/1 [-type=] [q]

Определяет, сжимать изображения или нет.
0 означает, что сжатие выключено, а 1 включает сжатие.
Если сжатие включено, его тип должен быть явно указан опцией -type= ("rice", "gzip1", "gzip2").
Связанное со сжатием значение квантования должно быть в диапазоне [0, 256].
Например, "set compress 1 -type=rice 16" устанавливает тип сжатия (rice) со значением квантования 16

#### Астрометрия

Страница 3 диалога

Совет

Не забудьте, что вы можете прокрутить окно, поскольку ряд опций находятся внизу окна.

На данной вкладке располагаются настройки, связанные с астрометрией, которая является важным инструментом Siril. После получения астрономическое решение изображения, т.е. когда астрометрия была успешной, возможно показать названия известных объектов. В частности тех, которые указаны в крупных астрономических каталогах. Раздел Аннотации позволяет указать, какие каталоги могут быть использованы для показа названий объектов. В настоящее время этих каталогов 8 и они могут быть исключены из выделения, чтобы Siril их игнорировал:

- Каталог Мессье (M)

- Новый общий каталог (NGC)

- Индекс-каталог (IC)

- Каталог ярких туманностей Линдc (LdN)

- Каталог Шарплесса (Sh2)

- Каталог ярчайших звёзд

- Линии созвездий МАС

- Названия созвездий МАС (положения получены с этой страницы)

В дополнение к этому списку, имеются два каталога, которые наполняются пользователем. Первый содержит объекты глубокого космоса, второй — объекты Солнечной системы. Эти каталоги лучше описаны в разделе документации, посвящённом аннотациям.

Под списком астрономических каталогов располагается поле для ввода предпочитаемого кода обсерватории Международного астрономического союза (МАС). Это трёхзначный код, который можно использовать для указания ближайшей астрономической обсерватории МАС, чтобы улучшить точность определения местоположения при запуске conesearch -cat=solsys. Если аргумент -obscode= не указан, по умолчанию используется это значение, а не геоцентрическое значение, которое используется в противном случае. Заголовок поля является ссылкой на сайт Центра малых планет, где размещён актуальный список кодов обсерваторий МАС, чтобы вы могли легко найти код ближайшей к вашему местоположению обсерватории.

После нажатия на кнопку Показать имена небесных тел (только если изображение имеет астрономическое решение), на изображении отображаются аннотации. Так же возможно отобразить небесную сетку, нажав на кнопку . Последняя, по умолчанию, добавляет компас в центре изображения. Раздел Компас определяет положение компаса на экране.

Раздел Мировая система координат позволяет выбрать

- Формализм 1: В формализме `PC i_j` элементы матрицы \(m_{ij}\) (матрица линейного преобразования) кодируются в карточках заголовков `PC i_j` (значения с плавающей точкой), а si - как `CDELT i`. Индексы i и j используются без начальных нулей, например, `PC 1_1` и `CDELT 1`. Значения по умолчанию для `PC i_j` равно 1.0 если \(i = j\) и 0.0 в противном случае. Матрица `PC i_j` не должна быть вырожденной; она должна иметь обратную матрицу. Более того, все `CDELT i` не должны быть равны нулю.

- Формализм 2: Ключевые слова `CD i_j` (значения с плавающей точкой) кодируют результат \(s_i m_{ij}\). Индексы i и j используются без начальных нулей, например,``CD 1_1``. Матрица `CD i_j` не должны быть вырожденной и должна иметь обратную матрицу. Для совместимости со старыми интерпретаторами FITS вместе с `CD i_j` допустимы `CDELT i` и `CROTA i`, но они игнорируются новыми программами.

The Local star catalogues part of the dialog window concerns the use of local catalogs to platesolve images. This feature is described in details in the local star catalogues section of this documentation.

В разделе Настройки решателя доступен ряд опций, контролирующих внутренний решатель Siril и решатель astrometry.net.

Низ страницы 3 диалога

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

- Допуск масштаба: процент, определяющий допустимые нижнюю и верхнюю границы масштаба. Данный масштаб умножается или делится на 1 + это значение / 100.

- Степень полиномиальной коррекции: решатели пластин могут использовать полиномиальную коррекцию (SIP) для работы с оптическими искажениями. Здесь указывается степень полиномиальной модели. Значение 0 отключает её.

- Радиус цели: допустимый радиус (в градусах) вокруг координат цели для решения. Не используется для решения вслепую (без указания цели).

- Макс. секунд для попытки решения: допустимое время поиска решения для каждого файла каталога. Может использоваться как общее время для решения только в том случае, если команда solve-field сконфигурирована таким образом в файле настроек.

Последний раздел посвящён решателю пластин solve-field из набора astrometry.net.

- Не удалять таблицы .xyls: список звёзд передаётся команде solve-field в виде таблицы FITS. Установите этот флажок, чтобы сохранить этот файл в рабочей директории.

- Не удалять файлы .wcs: результаты команды solve-field хранятся в заголовке FITS файла, оканчивающимся .wcs. Установите флажок, чтобы не удалять этот файл.

- Расположение локального решателя astrometry.net: для того, чтобы использовать локальный решатель Asrometry.net, необходимо указать Siril путь к директории с установленным решателем. На UNIX-подобных системах путь к решателю обычно находится в переменной `PATH` и в указании пути нет необходимости. На Windows, если вы не изменяли директорию установки по умолчанию, то ею является %LOCALAPPDATA%\cygwin_ansvr и Siril будет искать её без дополнительных настроек. Если вы используете cygwin и компилировали astrometry.net из исходных кодов, то здесь вам необходимо указать расположение корневой директории cygwin.

- Показать вывод solve-field: отображать вывод решателя в журнале Siril. В противном случае будет отображён только результат работы решателя.

#### Предобработка

Страница 4 диалога настроек

Во вкладке «Предобработка» располагаются элементы, связанные с шагами, выполняющимися до завершения укладки. В частности, здесь можно управлять библиотеками кадров шума считывания, темновых кадров, кадров плоского поля и искажений, названием файла, полученного в результате укладки, или специфичными коррекциями для камер, использующих сенсор X-Trans.

- Библиотеки мастер-кадров: В этом разделе можно загрузить мастер-кадр шума считывания, темновой мастер-кадр и мастер-кадр плоского поля, которые будут использованы по умолчанию в ходе предобработки, если справа от текстового поля установлен флажок Использовать по умолчанию. Каждый путь так же сохраняется в зарезервированном ключевом слове `$defbias`, `$defdark`, `$defflat` и `$defdisto` (один знак `$`), которые могут использоваться при сохранении результатов укладки и/или решения пластин. Что касается шума считывания, можно использовать не только путь к файлу. Действительно, в команде Siril мы призываем пользователей использовать синтетические кадры шума считывания, как это описано в этом руководстве. В этом случае возможны несколько значений, если первым символом является знак `=`. Возможно использовать фиксированное целое значение, например `=500` или умножение с применением ключевого слова `$OFFSET` (один знак `$`), при условии, что последнее зарегистрировано в заголовке файла FITS, например `10*$OFFSET`. Больше подробностей приведено в соответствующем руководстве.

- Укладка: В этом разделе мы указываем название по умолчанию, которое будет дано результату укладки. В качестве ключевого слова можно использовать любое значение из заголовка FITS, окружив его символом `$`. Если этого ключевого слова не существует, то будет использована переменная, в противном случае — значение переменной. Другое зарезервированное ключевое слово, которое можно использовать, это `$seqname$`, содержащие название загруженной последовательности. Например, следующее название по умолчанию `$seqname$stacked_$LIVETIME:%d$s` с названием последовательности `r_pp_light_` и следующим заголовком:

      ...
      DATE    = '2022-12-08T22:21:14' / UTC date that FITS file was created
      DATE-OBS= '2015-08-21T22:18:25' / YYYY-MM-DDThh:mm:ss observation start, UT
      STACKCNT=                   13 / Stack frames
      EXPTIME =                 300. / Exposure time [s]
      LIVETIME=                3900. / Exposure time after deadtime correction
      EXPSTART=     2457256.42945602 / Exposure start time (standard Julian date)
      EXPEND  =     2457256.51666667 / Exposure end time (standard Julian date)
      ...

даст в итоге `r_pp_light_stacked_3900s.fit`.

Примечание

Пути к библиотекам и при укладке по умолчанию поддерживают разбор путей.

- Исправления в файлах Xtrans: Этот раздел настроек очень специфичен и касается лишь процессоров некоторых сенсоров Xtrans. Действительно, из-за расположения автофокуса (АФ), некоторые изображения, полученные на этих камерах, содержат большой квадрат в центре темновых кадров и кадров шума считывания. В Siril доступен алгоритм для удаления этого квадрата на следующих камерах:

  > - Fujifilm X-T1

  > - Fujifilm X-T2

  > - Fujifilm X-T20

  > - Fujifilm X-Pro2

  > - Fujifilm X-E3

  > - Fujifilm X-H1

Артефакт X-Trans, исправленный алгоритмом Siril

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

#### Фотометрия

Страница 5 диалога настроек

Фотометрия, являющаяся исследованием света, это другая функция, доступная в Siril. В этом разделе настроек вы можете определить установки, связанные с этим инструментом.

Окружность апертурной фотометрии

Основной принцип апертурной фотометрии — это сложение светового потока в указанном радиусе от центра объекта, после чего из этой суммы вычитается общий вклад фона неба в этой области (вычисляемый в кольце, образованным внутренним и внешним радиусами). Результатом этой операции является световой поток непосредственно от объекта, позволяющий вычислить инструментальный блеск (instrumental magnitude). Подробности см. в разделе Фотометрия.

- Возможно изменить внутренний и внешний радиусы для оптимизации размера вычисляемого значения неба, чтобы избежать присутствия звёзд внутри кольца. Внешний радиус всегда должен быть больше внутреннего. По умолчанию радиуса светового потока установлен вдвое больше, чем FWHM PSF. Эту функцию, однако, можно отключить и задать фиксированное значение вручную.

- Диапазон значений пикселей позволяет пользователю установить придел, за которым пиксель рассматривается неподходящим для фотометрии. Действительно, выполнение фотометрии на насыщенных данных (saturated data) никогда не приводит к хорошим результатам. Вместе с этим, даже приближение к высоким значениям может оказаться неподходящим, поскольку этом может происходить в нелинейном режиме работы сенсора. Чтобы избежать этой области, по умолчанию установлено значение 50000 ADU, однако оно может варьировать от сенсора к сенсору. Так же допустимы отрицательные значения, поскольку шум может усредняться вокруг положительного значения, но всё равно давать несколько пикселей с отрицательными значениями.

- В заключение, настоятельно рекомендуется установить значение усиления ADC в электронах на ADU, если оно известно. Это значение используется при вычислении неопределённостей, если не указано в заголовках обрабатываемых изображений.

#### Инструменты анализа

Страница 6 диалога настроек

В настоящий момент только один инструмент анализа изображений требует настройки. Это инструмент «Аберрации». На данной вкладке вы можете настроить:

- Размер панели, определяющий размер размещаемого изображения (в пикселях). Чем больше значение, тем больше размер изображения на панели. Слишком большое значение может не дать рассмотреть дефекты на звёздах.

- Размер окна, в пикселях, определяет размер диалога. Обычно это хорошая идея увеличить это значение при использовании экранов с разрешением 4K.

Окно инструмента "Аберрации"

#### Интерфейс

Страница 7 диалога настроек

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

Совет

Не забудьте, что вы можете прокрутить окно, поскольку ряд опций находятся внизу окна.

- По умолчанию язык Siril определяется языком системы. Вместе с этим, возможно изменить язык и установить его в соответствии с вашими потребностями. Следует помнить, что разработка Siril ведётся на английском.

- Доступны две темы:

  > - Тёмная тема (по умолчанию)

  > - Светлая тема

  Для полной работоспособности, смена темы потребует перезапуска приложения.

- Кроме того, можно настроить масштаб шрифта для пользователей экранов с разрешением 4K Ultra-HD или использовать символьные значки для некоторых значков. Эти настройки так же требуют перезапуска приложения.

- По умолчанию Siril запоминает размер и положение окна приложения при каждом закрытии программы. Установка флажка Запоминать размер и положение окна позволяет отключить такое поведение.

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

- Режим просмотра по умолчанию позволяет отображать изображения согласно предпочтениям пользователя. По умолчанию используется Линейный режим. Поскольку линейный режим действительно отражает то, что представляет собой изображение, новичкам рекомендуется оставить эту настройку по умолчанию. Легко забыть, что вы находитесь в режиме автонастройки просмотра, и не понять, почему сохранённые изображения выглядят не так, как они отображаются на экране. Однако вы всегда можете настроить режим отображения в основном окне.

- По этому же принципу гистограммы могут отображаться в двух режимах с помощью Режима показа по умолчанию. Это Линейный или Логарифмический режимы. Последний может быть очень полезен при работе с инструментом Обобщённого гиперболического преобразования. Режим показа гистограммы может быть, однако, изменён для каждого окна отдельно. Данная установка в настройках это скорее установка поведения по умолчанию.

- Область интереса (ROI) это установка, позволяющая выбрать тип выделения, который будет применён к области интереса: Вручную или Автоматически из выделения. В деталях эти установки описаны в соответствующем разделе Установка области интереса.

- Поведение мыши обеспечивает настройку поведения мыши. Начиная с версии 1.3.0, это позволяет настраивать поведение двойного клика средней кномпкой мыши для установки заданного уровня масштабирования. Предустановленный уровень масштабирования можно настроить либо на масштабирование по размеру, либо до 100% с центром в позиции курсора мыши, либо на переключение между масштабированием по размеру и до 100% с центром в позиции курсора мыши. Вместе с другими улучшениями в управлении панорамированием и масштабированием с помощью средней кнопки мыши это улучшает удобство работы с Siril одной рукой.

- Настройка кнопок мыши открывает диалог настройки мыши. Это позволяет вам полностью перенастроить поведение мыши для Siril, изменив поведение по умолчанию, добавив или удалив функции мыши. Это может быть особенно полезно для пользователей с ограниченными возможностями, чтобы переназначить существующие функции мыши на другие кнопки или для того, чтобы им не требовались клавиши-модификаторы. Также этом может полезно любому пользователю с мышью с бо́льшим количеством кнопок (или колёсами с двусторонней прокруткой) для назначения новых действий (таких, как сохранение, отмена, прокрутка через активную последовательность) с помощью кнопок мыши или осей прокрутки способом, который ранее был невозможен, или с помощью двухсторонних колёс прокрутки.

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

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

  Совет

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

- Вы можете указать некоторые цвета для текста и рисунков, отображаемых на изображении в разделе Цвета. Чтобы выполнить это, просто нажмите на кнопку цвета и выберите необходимый цвет. Данный выбор касается 5 пунктов:

  - Образцы для извлечения фона

  - Стандартные аннотации

  - аннотации объектов глубокого космоса

  - аннотации объектов Солнечной системы

  - аннотации временных объектов

#### Управление цветом

##### Рабочие цветовые пространства

###### Предпочитаемое цветовое пространство

Эти настройки указывают набор рабочих цветовых пространств, а именно линейное рабочее пространство RGB, нелинейное рабочее пространство RGB со стандартной кривой передачи тона цветового пространства (tone response curve, TRC) и Ч/Б рабочее пространство с TRC, соответствующей рабочему пространству RGB. Доступны следующие опции: sRGB, наиболее подходящей для работы с изображениями для использования в интернете; Rec2020, которая является рекомендуемым Siril цветовым пространством с широким цветовым охватом; и Из файлов, позволяющая определять свой собственный набор профилей с помощью диалога выбора файлов.

###### Внешние цветовые профили

Данные диалоги выбора файлов можно использовать только вместе с выбранным выше параметром «Из файлов» для предпочитаемого цветового пространства.

- RGB ICC-профиль: Этот диалог позволяет выбрать RGB ICC-профиль для предпочитаемого цветового пространства.

- Ч/Б ICC-профиль: Этот диалог позволяет выбрать Ч/Б ICC-профиль. Этот профиль должен иметь кривую воспроизведения тона (TRC), соответствующую таковой выбранного цветового пространства RGB.

Пример того, как настроить пользовательский цветовой охват RGB, соответствующий Pro Photo RGB, доступен на этой странице.

###### Визуализация цветового охвата

This button opens a reference image comparing the gamuts offered by the built-in sRGB and Rec2020 color spaces with the gamuts of some other well-known RGB color spaces.

##### Пользовательские профили

- Custom monitor profile: This option allows you to choose a custom monitor profile, for example if you have calibrated your monitor or are using a wide gamut monitor. There is also a button to clear the current selection, and a check box to set whether or not the custom monitor profile is active. If it is not active, the display transform will target a standard sRGB display.

- Rendering intent: This option allows you to choose your preferred ICC rendering intent, which is used for the color transform from the working space to the monitor profile. A description of the available intents is available on the Theory page. A check button is also provided to set whether or not to use Black Point Compensation.

- Output device proofing profile: This option allows you to choose a soft proofing profile for an output device. If no profile is set here, soft proofing will target the display profile. There is also a button to clear the current selection and a check box to set whether or not the soft proofing profile is enabled. If it is not enabled, the soft proofing display mode will not be available.

##### Опции импорта / экспорта файлов

- Treat non color-managed files as sRGB for export to supported formats: This option is for images that do not have a color profile assigned. If the option is checked, when an image without an ICC profile is exported to a format that supports ICC profiles, it will be saved with a sRGB ICC profile or a Gray profile with a TRC that matches the standard sRGB TRC. This is essentially the behaviour of previous versions of Siril. It will often work OK, but does not represent a properly color managed workflow. The option is on by default, but it is better to avoid the issue by using the auto conversion / assignment options to ensure that images will have an ICC profile assigned and be properly color managed at the time you wish to save them.

- Export 8-bit images using: This option sets the color space to export 8-bit images that support embedding ICC profiles: the choice is between sRGB and your working color space as chosen with the Working RGB Gamut option above.

- Export high bit depth images using: This option sets the color space to export 16-bit images that support embedding ICC profiles: the choice is between sRGB and your working color space as chosen with the Preferred Color Space option above.

- Export intent: this sets the intent for transforming images from their assigned color space to the color space they are to be saved in. Leave this set to Relative Colorimetric to ensure your saved images look consistent with how you saved them. Other intents should probably only ever be chosen here for debugging purposes and similar.

One preference is in the FITS Options tab:

- Embed ICC profiles in FITS images and FITSEQ sequences: This option enables ICC profile embedding in FITS files: the profiles are embedded within an extra HDU inside the FITS file, with the name "ICCProfile", which matches the embedding method used by other major astrophotography software. It is strongly recommended to leave this option enabled.

Совет

Export of images to 8-bit and 16-bit formats that do not support embedded ICC profiles will always be in the sRGB color space.

##### Автоматическое преобразование / назначение

###### Auto assign working color space

This set of check boxes sets the occasions on which an image will automatically be assigned the working color space. The possibilities are: on load, on stacking, on stretching and on the output of compositing tools (pixelmath / RGB composition).

The default is to assign the working color space on stretching, as this is the point at which you typically switch the viewer mode to Linear and start to stretch your image to look the way you want it to. This is when color management starts to matter.

However, you can also assign the color space at earlier stages in processing if you want to. There is little benefit or drawback to doing so in most circumstances, but if you expect to be exporting images before stretching them then selecting the other check boxes will ensure that a color profile is always assigned.

Совет

A color profile will never be automatically assigned if Siril believes it is a single channel extracted from a 3-color image using RGB, HSV, HSL, CIE L*a*b* or Green extraction. There is no ICC profile that can sensibly be assigned in this case. You should consider the file to be raw data until you are ready to either re-composite it with other data or process it to look good in its own right, at which point you should assign your preferred working color space.

Split-out CFA, Ha and OIII channels can safely be assigned a linear version of the working space, and this will be done if the pedantic option described below is active.

If you want to avoid color profiles completely you can select "Never", but this will result in a non-color managed workflow and your images may not look consistent when viewed in other software or when output to different output devices.

###### Тщательно назначать линейные ICC-профили

When auto-assigning ICC profiles to:

- loaded images that lack an ICC profile and show no evidence of previous stretching,

- newly stacked images,

- newly composited images

Siril will assign a linear ICC profile. This is usually technically correct, as such images will still contain linear light data. The option is made available should you want it, however it is generally unnecessary: see the profiles page for an explanation of why. You may wish to use this in order to benefit from the display transform by applying your stretches to the original linear data while previewing the effect in sRGB (or your custom monitor profile): in this case you should deselect the following auto-conversion box, so that the profile remains linear during stretching, and then manually convert the data to your working profile on completion of stretching.

###### Преобразовать другие цветовые профили в рабочий профиль?

This drop-down sets Siril's behaviour if an image is loaded with an ICC profile that is different to the selected working profile. The optons are: Never, Always and Ask every time. The default is Never, as this avoids unrequested change to the image, however for a consistent workflow you may wish to select Always, so that you are always editing in your preferred color space. Ask every time is an option, but it can be annoying especially as it regards the v2 export profiles as being different to the v4 built-in working profiles, so although it is provided for users who wish to manage every detail, it is not particularly recommended.

##### Встроенные профили

###### Экспорт встроенных профилей

Siril uses profiles from the Elle Stone collection of color profiles to provide its built-in profiles. As these are distributed under a Creative Commons BY-SA-3.0 licence which requires sharing the profiles, a button is provided to export all the built-in profiles to the working directory.

In order to provide a profile capable of the Perceptual sRGB intent, the ICC Preference profile with perceptual lookup tables is provided. To export this you will need to accept the same terms and conditions text as you do to download it from the ICC website.

#### Сценарии

Страница 8 диалога настроек

- На вкладке Сценарии, по сути, располагаются пути, по которым Siril должен искать сценарии. Действительно, по умолчанию и в зависимости от используемой операционной системы, сценарии устанавливаются в определенном месте:

  - `/usr/local/share/siril/scripts` или `/usr/share/siril/scripts` для GNU/Linux.

  - `C:\Program Files\Siril\scripts` для Windows.

  - `/Applications/Siril.app/Contents/Resources/share/siril/scripts` для MacOS, если приложение было установлено в папку Applications.

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

  Поскольку приложение для macOS подписано и заверено, изменить сценарии внутри пакета невозможно. В противном случае приложение не запустится. Поэтому вам нужно настроить другой путь, указывающий на папку, где у вас есть права на запись.

- Поле Директории хранения сценариев позволяет указать пути к пользовательским директориям со сценариями, которые вы создали и/или модифицировали. Нажатие на кнопку, расположенную непосредственно под этим полем, запускает повторный просмотр директорий и обновление списка сценариев в соответствующем меню.

- Раздел Окна с предупреждениями предназначен для отключения:

  1. Предупреждающего текста, который отображается перед выполнением сценария.

  2. Проверки ключевого слова `requires`, находящегося в самом начале сценария для проверки совместимости сценария с версией Siril. Мы рекомендуем не отключать эту настройку.

- The Siril Script Repository field is where scripts that have been validated by the Siril team are automatically uploaded. However, these may have been written by third-party developers. You can enable/disable this feature with the Enable use of the siril-scripts online repository button, and define automatic or manual updates with Automatic updates and Manual update. To display a script in the script menu, simply select it.

- The Reset python venv will kill all running python scripts and reset the virtual environment "venv" directory to an as-new state. Any modules that have been installed by scripts will require re-installation. This is normally not necessary but is provided as a last resort to restore the venv to a pristine state as an aid to troubleshooting.

#### Производительность

Страница 9 диалога настроек

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

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

- Фикс. объём (Гбайт): Siril ограничит себя фиксированным объёмом памяти и, при необходимости, уменьшит размер рабочих задач. Указание объёма памяти бо́льшего, чем доступен вашей системе может привести к падению siril или операционной системы.

- Настройка Разрядность по умолчанию для расширенного режима авторастягивания устанавливает разрядность по умолчанию для расширенного режима авторастягивания. Бо́льшая разрядность требует экспоненциально бо́льших объёма памяти для LUT и времени для повторного вычисления, но гораздо лучше сглаживает артефакты квантования на изображениях с очень узкими пиками гистограммы. Разрядность по умолчанию будет применена следующем переключении режима просмотра, и может быть применена сейчас с помощью кнопки справа. Нажмите на кнопку Установить разрядность для установки выбранной разрядности.

- Мультипотоквое FFTW: этот флажок позволяет FFTW использовать несколько потоков. Это может быть быстрее, (хотя производительность не возрастает линейно с числом процессоров из-за расходов на синхронизацию), но стадия планирования FFTW требует бо́льшего времени для мультипотоковых систем. Таким образом первое FFT для изображения указанного размера будет существенно медленнее при использовании нескольких потоков.

- Стратегия планирования FFTW: в данном списке можно указать необходимую стратегию планирования FFTW. Библиотека FFTW имеет несколько алгоритмов вычисления быстрых преобразований Фурье (FFT) и будет планировать заданное FFT для оптимизации скорости. Результаты этих планов сохраняются для повторного использования в файле кэша, под названием "Wisdom". Следовательно, дополнительное время, потраченное на предварительное планирование, может принести свои плоды, если вы рассчитываете много FFT одинакового размера. Необходимо отметить, что файл Wisdom специфичен для конкретной машины и не должен использоваться совместно на разных машинах. После обновления памяти или процессора или существенного изменения программной среды (основные изменения операционной системы или версии Siril) этот файл необходимо удалить и создать с нуля. В порядке убывания скорости стратегий планирования, Оценка является самой быстрой: фактически эта стратегия не производит никаких измерений, но выполняет планирование на основе набора эвристик. Следующая по скорости — Измерить. Этот метод фактически сравнивает скорость вычисления FFT различными внутренними методами FFTW и выбирает самый быстрый. В результате этап планирования занимает больше времени. Полная стратегия планирования рассматривает ещё больше возможных планов, а Исчерпывающая — ещё больше. Если вы всегда обрабатываете изображения определённого размера, то более "дорогие" стратегии планирования могут быть более целесообразными из соображений кеширования, но если вы работаете с большим количеством изображений разного размера, то более "дешевый" алгоритм планирования может оказаться более подходящим.

- Ограничение по времени планирования FFTW: останавливает планирование FFTW через указанный промежуток времени. Это переопределит стратегию планирования. Обратите внимание, что ограничение по времени строго не соблюдается: FFTW завершит любое непрерываемое вычисление, которое выполняется в момент достижения ограничения, и, если оно установлено равным нулю, FFTW всегда, как минимум, будет выполнять планирование с использованием стратегии Оценка.

- Drizzle: High resolution Drizzle weight files: When this button is toggled, weight files produced by the drizzle algorithm will be of the same bitdepth than the images. This can be important when trying to get the best possible FWHM on the stacked image, but it is very much space consuming. By default, it is unticked and the weight files are saved in 8-bit.

#### Разное

Страница 10 диалога настроек

На последней вкладке располагаются все настройки, не попадающие в другие разделы.

- Использование кнопок Отмена/Возврат требует места на диске. Иногда очень много места. В разделе Директория подкачки может быть указана директория, содержащая файлы подкачки, необходимые для корректного функционирования пары отмена/возврат. Доступное место на диске указывается справа от диалога выбора файлов. Мы рекомендуем не изменять настройки по умолчанию, если только у вас нет веских причин сделать это. Поскольку выбор хорошей директории имеет решающее значение, можно вернуться к настройкам по умолчанию, нажав на Исходные параметры.

- В разделе Окна с предупреждениями можно отключить всплывающие предупреждения, которые предназначены в помощь новичкам.

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

- Расположение исполняемого файла StarNet. Для использования StarNet в Siril необходимо указать Siril путь к исполняемому файлу StarNet. Для устаревших установок StarNet++ v1, использующих разные исполняемые файлы для обработки монохромных и RGB-изображений, может быть указан любой — Siril автоматически определит второй, если установлены оба файла. Обратите внимание, что для старых установок НЕОБХОДИМО сохранить исходные имена исполняемых файлов rgb_starnet++ и mono_starnet++. Для всех новых версий StarNet с одним исполняемым файлом Siril определит версию эвристически и соответствующим образом взаимодействует с ней.

- Расположение файла с весами StarNet: Новые версии StarNet, основанные на библиотеке Torch, предоставляют возможность указать расположение файла с весами нейросети, который необязательно должен находиться в директории с исполняемым файлом. Этот параметр позволяет установить расположение файла с весами для передачи StarNet, и его можно использовать для сброса с помощью соответствующей кнопки. Примечание: этот параметр работает только с установками StarNet, основанными на библиотеке Torch. При использовании более старых установок StarNet, файл с весами должен находиться в одной директории с исполняемым файлом.

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

Необходимо указать расположение версии StarNet для командной строки, а не с графическим интерфейсом пользователя.

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

В macOS может быть трудно найти путь к каталогу, поскольку Apple не упрощает просмотр некоторых директорий. Хитрость заключается в том, чтобы набрать `Shift` + `Cmd` + `g` в открытом диалоге выбора файлов, а затем напрямую ввести путь установки, который обычно задается Homebrew. Обычно это `/usr/local/bin` на компьютерах Intel и /`/opt/homebrew/bin/` в версиях Apple Silicon.

- GraXpert Executable Location: In order to use GraXpert in Siril, it is necessary to tell Siril the path where the GraXpert executable is located. If you find any difficulty in getting GraXpert working with Siril, check that it works by itself before submitting a bug report: all Siril does is execute the third party software, so if it doesn't work by itself then it will not work when called from Siril either.

- Авторские права в TIFF: При сохранении файлов TIFF возможно настроить авторские права в соответствующих метаданных EXIF.

- Обновления: По умолчанию Siril проверяет обновления при запуске. Вы можете отключить это поведение, если не хотите, чтобы приложение запрашивало наш веб-сайт.

### Настройки (команды)

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

Для получения списка всех доступных переменных, введите в командной строке siril:

    get -A

Это выведет список всех переменных с их текущим значением и кратким описанием в журнал (используйте опцию в нижнем регистре -a, чтобы опустить описание).

Этот список представлен в таблице ниже:

Переменная | По умолчанию ([Диапазон]) | Тип | Комментарий
--- | --- | --- | ---
core.wd | (не установлено) | директория | текущая рабочая директория
core.extension | .fit | строка | расширение файла FITS
core.force_16bit | false | логический | не использовать 32 бита для разрядности пикселей
core.fits_save_icc | true | логический | встроить профили ICC в FITS при сохранении
core.allow_heterogeneous_fitseq | false | логический | позволять кубам FITS иметь разные размеры
core.mem_mode | 0 [0, 1] | целочисленный | режим памяти (0 — отношение, 1 — объём)
core.mem_ratio | 0.9 [0.05, 4] | двойной точности | доля доступной памяти
core.mem_amount | 10 [0.1, 1e+06] | двойной точности | объём памяти в Гб
core.hd_bitdepth | 20 [17, 24] | целочисленный | разрядность расширенного авторастягивания
core.script_check_requires | true | логический | в сценарии необходима команда requires
core.pipe_check_requires | false | логический | в именованном канале необходима команда requires
core.check_updates | false | логический | проверка обновлений при запуске
core.lang | (не установлено) | строка | активный язык siril
core.swap_dir | зависит от ОС | директория | директория подкачки
core.binning_update | true | логический | обновить размер пикселя после биннига
core.wcs_formalism | 1 [0, 1] | целочисленный | формализм WCS, используемый в заголовке FITS
core.catalogue_namedstars | ~/.local/share/kstars/namedstars.dat | строка | Путь к каталогу namedstars.dat
core.catalogue_unnamedstars | ~/.local/share/kstars/unnamedstars.dat | строка | Путь к каталогу unnamedstars.dat
core.catalogue_tycho2 | ~/.local/share/kstars/deepstars.dat | строка | Путь к каталогу deepstars.dat
core.catalogue_nomad | ~/.local/share/kstars/USNO-NOMAD-1e8.dat | строка | Путь к каталогу USNO-NOMAD-1e8.dat
core.catalogue_gaia_astro | ~/.local/share/siril/gaia_astrometric.dat | строка | Путь к локальному астрометрическому каталогу Gaia
core.catalogue_gaia_photo | ~/.local/share/siril/gaia_photometric.dat | строка | Путь к локальному фотометрическому каталогу Gaia
core.rgb_aladin | false | логический | добавить CTYPE3='RGB' в заголовок FITS
core.use_checksum | false | логический | Проверять контрольные суммы, если они существуют
core.copyright | (не установлено) | строка | авторские права пользователя для размещения в заголовке файла
core.starnet_exe | (не установлено) | строка | расположение исполняемого файла StarNet
core.starnet_weights | (не установлено) | строка | расположение файла с весами StarNet-torch
core.graxpert_path | (не установлено) | строка | расположение исполняемого файла GraXpert
core.asnet_dir | (не установлено) | строка | директория установки asnet_ansvr
core.fftw_timelimit | 60 | двойной точности | ограничение времени планирования FFTW
core.fftw_conv_fft_cutoff | 15 | целочисленный | Минимальный размер ядра свёртки для использования FFTW
core.fftwf_strategy | 0 | целочисленный | Стратегия планирования FFTW
мультипотоковое FFTW | true | логический | мультипотоковое FFTW
core.max_slice_size | 32769 [512, 32769] | целочисленный | Maximum slice size for automated slice processing
starfinder.focal_length | 0 [0, 999999] | двойной точности | фокусное расстояние (в мм) для настройки радиуса
starfinder.pixel_size | 0 [0, 99] | двойной точности | размер пикселя (в мкм) для настройки радиуса
debayer.use_bayer_header | true | логический | шаблон из заголовка файла
debayer.pattern | 0 [0, 7] | целочисленный | индекс шаблона Байера
debayer.interpolation | 8 [0, 9] | целочисленный | тип интерполяции
debayer.orientation | 0 [0, 3] | целочисленный | row-order preference
debayer.offset_x | 0 [0, 1] | целочисленный | Смещение шаблона Байера по X
debayer.offset_y | 0 [0, 1] | целочисленный | Смещение шаблона Байера по Y
debayer.xtrans_passes | 1 [1, 4] | целочисленный | Число проходов для алгоритма X-Trans Markesteijn
photometry.gain | 2.3 [0, 10] | двойной точности | электронов/ADU для оценки шума
photometry.inner | 20 [2, 100] | двойной точности | внутренний радиус кольца фона
photometry.outer | 30 [3, 200] | двойной точности | внешний радиус кольца фона
photometry.inner_factor | 4.2 [2, 50] | двойной точности | коэффициент для автоматического расчёта внутреннего радиуса
photometry.outer_factor | 6.3 [2, 50] | двойной точности | коэффициент для автоматического расчёта внешнего радиуса
photometry.force_radius | true | логический | значение апертуры светового потока
photometry.auto_aperture_factor | 4 [1, 5] | двойной точности | Отношение радиус/половина FWHM
photometry.aperture | 10 [1, 100] | двойной точности | значение апертуры для вычисления светового потока
photometry.minval | -1500 [-65536, 65534] | двойной точности | минимально надёжное значение пикселя для фотометрии
photometry.maxval | 60000 [1, 65535] | двойной точности | максимально надёжное значение пикселя для фотометрии
photometry.discard_var_catalogues | 4 [0, 7] | целочисленный | каталоги, которые будут использованы для исключения переменных звёзд из списка звёзд сравнения
photometry.redpref | (не установлено) | строка | предпочитаемый красный фильтр для SPCC
photometry.greenpref | (не установлено) | строка | предпочитаемый зелёный фильтр SPCC
photometry.bluepref | (не установлено) | строка | предпочитаемый синий фильтр SPCC
photometry.lpfpref | (не установлено) | строка | предпочитаемый НЧ фильтр DSLR для SPCC
photometry.oscfilterpref | Без фильтра | строка | предпочитаемый цветной фильтр для SPCC
photometry.monosensorpref | (не установлено) | строка | предпочитаемый монохромный сенсор для SPCC
photometry.oscsensorpref | (не установлено) | строка | предпочитаемый цветной сенсор для SPCC
photometry.is_mono | true | логический | является ли сенсор SPCC монохромным?
photometry.is_dslr | false | логический | является ли сенсор SPCC DSLR?
photometry.nb_mode | false | логический | мы находимся в узкополосном режиме?
photometry.r_wl | 656.28 | двойной точности | длина волны красного узкополосного фильтра
photometry.r_bw | 6 | двойной точности | полоса пропускания красного узкополосного фильтра
photometry.g_wl | 500.7 | двойной точности | длина волны зелёного узкополосного фильтра
photometry.g_bw | 6 | двойной точности | полоса пропускания зелёного узкополосного фильтра
photometry.b_wl | 500.7 | двойной точности | длина волны синего узкополосного фильтра
photometry.b_bw | 6 | двойной точности | полоса пропускания синего узкополосного фильтра
astrometry.asnet_keep_xyls | false | логический | не удалять таблицы .xyls
astrometry.asnet_keep_wcs | false | логический | не удалять файлы .wcs
astrometry.asnet_show_output | false | логический | показать вывод solve-field в журнале
astrometry.sip_order | 3 [1, 5] | целочисленный | степень полиномиальной коррекции
astrometry.radius | 10 [0.01, 30] | двойной точности | радиус вокруг координат цели (градусы
astrometry.max_seconds_run | 30 [0, 100000] | целочисленный | максимальное кол-во секунд для попытки решения
astrometry.update_default_scale | true | логический | обновить по результатам фокусное расстояние и размер пикселя, используемые по умолчанию
astrometry.percent_scale_range | 20 [1, 50] | целочисленный | процент, определяющий допустимые нижнюю и верхнюю границы масштаба
astrometry.default_obscode | (не установлено) | строка | код МАС для обсерватории по умолчанию
analysis.panel | 256 [127, 1024] | целочисленный | размер панели диалога аберраций
analysis.window | 381 [300, 1600] | целочисленный | размер окна диалога аберраций
compression.enabled | false | логический | включено сжатие FITS
compression.method | 0 [0, 3] | целочисленный | метод сжатия FITS
compression.quantization | 16 [8, 256] | двойной точности | коэффициент квантования для 32-битных значений с плавающей точкой
compression.hcompress_scale | 4 [0, 256] | двойной точности | коэффициент масштаба HCompress
gui_prepro.cfa | false | логический | тип сенсора для косметической коррекции
gui_prepro.equalize_cfa | true | логический | выравнять плоские каналы
gui_prepro.fix_xtrans | false | логический | включить коррекцию для сенсора X-Trans
gui_prepro.xtrans_af_x | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_af_y | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_af_w | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_af_h | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_sample_x | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_sample_y | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_sample_w | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.xtrans_sample_h | 0 | целочисленный | использовать, если не найдено никакой модели X-Trans
gui_prepro.bias_lib | (не установлено) | строка | мастер-кадр шума считывания по умолчанию
gui_prepro.use_bias_lib | false | логический | использовать мастер-кадр шума считывания по умолчанию
gui_prepro.dark_lib | (не установлено) | строка | темновой мастер-кадр по умолчанию
gui_prepro.use_dark_lib | false | логический | использовать темновой мастер-кадр по умолчанию
gui_prepro.flat_lib | (не установлено) | строка | мастер-кадр плоского поля по умолчанию
gui_prepro.use_flat_lib | false | логический | использовать мастер-кадр плоского поля по умолчанию
gui_prepro.disto_lib | (не установлено) | строка | мастер-кадр дисторсии по умолчанию
gui_prepro.use_disto_lib | false | логический | использовать мастер-кадр дисторсии по умолчанию
gui_prepro.stack_default | $seqname$stacked | строка | название результата укладки по умолчанию
gui_prepro.use_stack_default | true | логический | использовать предпочитаемое название результата укладки
gui_registration.method | 0 [0, 7] | целочисленный | индекс выбранного метода регистрации
gui_registration.interpolation | 4 [0, 5] | целочисленный | индекс выбранного метода интерполяции
gui_registration.clamping | true | логический | использование метода фиксации для интерполяции методом Ланцош-4 или бикубической интерполяции
gui_registration.drizz_weight_match_bitpix | false | логический | Match Drizzle weights bitpix to sequence
gui_stack.method | 0 [0, 4] | целочисленный | индекс выбранного метода
gui_stack.normalization | 3 [0, 4] | целочисленный | индекс метода нормализации
gui_stack.rejection | 5 [0, 7] | целочисленный | индекс метода выбраковки
gui_stack.weighting | 0 [0, 4] | целочисленный | индекс метода присвоения веса
gui_stack.sigma_low | 3 [0, 20] | двойной точности | нижнее значение σ для выбраковки
gui_stack.sigma_high | 3 [0, 20] | двойной точности | верхнее значение σ для выбраковки
gui_stack.linear_low | 5 [0, 20] | двойной точности | значение нижнего порога для выбраковки
gui_stack.linear_high | 5 [0, 20] | двойной точности | значение верхнего порога для выбраковки
gui_stack.percentile_low | 3 [0, 100] | двойной точности | нижнее значение процентиля для выбраковки
gui_stack.percentile_high | 3 [0, 100] | двойной точности | верхнее значение процентиля для выбраковки
gui.first_start | (не установлено) | строка | первый запуск siril
gui.silent_quit | false | логический | не спрашивать перед выходом
gui.silent_linear | false | логический | не спрашивать перед сохранением в нелинейном режиме
gui.remember_windows | true | логический | запоминать положение окна
gui.main_win_pos_x | 0 | целочисленный | положение главного окна
gui.main_win_pos_y | 0 | целочисленный | положение главного окна
gui.main_win_pos_w | 0 | целочисленный | положение главного окна
gui.main_win_pos_h | 0 | целочисленный | положение главного окна
gui.pan_position | -1 | целочисленный | положение двухстороннего разделителя
gui.extended | true | логический | главное окно расширено
gui.maximized | false | логический | главное окно развёрнуто
gui.theme | 0 [0, 1] | целочисленный | индекс выбранной темы
gui.font_scale | 100 | двойной точности | масштаб шрифта в процентах
gui.icon_symbolic | false | логический | стиль иконок
gui.script_path |  | список строк | список каталогов со сценариями
gui.use_scripts_repository | true | логический | use and sync online scripts repository
gui.use_scripts_repository | true | логический | использование и синхронизация удалённого репозитория spcc-database
gui.auto_update_scripts | true | логический | auto sync online scripts repository
gui.auto_update_spcc | true | логический | автосинхронизация удалённого репозитория spcc-database
gui.selected_scripts |  | список строк | список сценариев, выбранных из репозитория
gui.warn_scripts_run | true | логический | предупреждать при запуске сценария
gui.show_thumbnails | true | логический | показывать миниатюры при выборе файлов
gui.thumbnail_size | 256 | целочисленный | размер миниатюр
gui.selection_guides | 0 | целочисленный | количество направляющих элементов сетки
gui.show_deciasec | false | логический | показать десятые доли угловых секунд при наведении
gui.default_rendering_mode | 0 [0, 6] | целочисленный | режим по умолчанию
gui.display_histogram_mode | 0 [0, 1] | целочисленный | режим показа гистограммы по умолчанию
gui.roi_mode | 0 | целочисленный | режим выбора области интереса
gui.roi_warning | true | логический | включить предупреждения диалога ROI
gui.mmb_zoom_action | 0 | целочисленный | Изменение масштаба по двойному клику по средней кнопке
gui.mouse_speed_limit | 0 | двойной точности | Mouse smooth scroll speed limit
gui.color_bkg_samples | rgba(255, 51, 26, 1.0) | строка | настроить цвет образцов фона
gui.color_std_annotations | rgba(128, 255, 77, 0.9) | строка | настроить цвет стандартных аннотаций
gui.color_dso_annotations | rgba(255, 128, 0, 0.9) | строка | настроить цвет аннотаций объектов глубокого космоса
gui.color_sso_annotations | rgba(255, 255, 0, 0.9) | строка | настроить цвет аннотаций объектов Солнечной системы
gui.color_tmp_annotations | rgba(255, 0, 0, 0.9) | строка | настроить цвет аннотаций временных объектов
gui.custom_monitor_profile | (не установлено) | строка | путь к пользовательскому ICC-профилю монитора
gui.soft_proofing_profile | (не установлено) | строка | путь к ICC-профилю программной цветопробы
gui.icc_custom_monitor_active | false | логический | пользовательский профиль монитора активен
gui.icc_soft_proofing_active | false | логический | профиль цветопробы устройства вывода активен
gui.custom_RGB_ICC_profile | (не установлено) | строка | путь к пользовательскому RGB ICC-профилю
gui.custom_gray_ICC_profile | (не установлено) | строка | путь к пользовательскому Ч/Б ICC-профилю
gui.rendering_intent | 1 | целочисленный | тип цветопередачи при управлении цветом
gui.proofing_intent | 1 | целочисленный | тип программной цветопробы при управлении цветом
gui.export_intent | 1 | целочисленный | color management export intent
gui.default_to_srgb | true | логический | при экспорте нецветоуправляемых изображений по умолчанию используется sRGB
gui.working_gamut | 0 | целочисленный | color management working gamut
gui.export_8bit_method | 0 | целочисленный | color management export profile for 8bit files
gui.export_16bit_method | 1 | целочисленный | color management export profile for 16bit files
gui.icc_autoconversion | 0 | целочисленный | автоматическое преобразование изображений с профилем ICC в рабочее цветовое пространство
gui.icc_autoassignment | 4 | целочисленный | кодирует опции автоматического назначения ICC-профиля
gui.icc_rendering_bpc | true | логический | включить отображение компенсации точки чёрного
gui.icc_pedantic_linear | false | логический | тщательно назначать линейные ICC-профили
gui.mouse_actions |  | список строк | настройка действий мыши. Непрозрачная структура данных, отредактируйте её используя графический интерфейс
gui.scroll_actions |  | список строк | настройка действий при прокрутке. Непрозрачная структура данных, отредактируйте её используя графический интерфейс
gui_astrometry.compass_position | 1 [0, 5] | целочисленный | индекс положения компаса над сеткой
gui_astrometry.cat_messier | true | логический | показывать объекты каталога Мессье в аннотациях
gui_astrometry.cat_ngc | true | логический | показывать объекты каталога NGC в аннотациях
gui_astrometry.cat_ic | true | логический | показывать объекты каталога IC в аннотациях
gui_astrometry.cat_ldn | true | логический | показывать объекты каталога LDN в аннотациях
gui_astrometry.cat_sh2 | true | логический | показывать объекты каталога SH2 в аннотациях
gui_astrometry.cat_stars | true | логический | показать звёзды в аннотациях
gui_astrometry.cat_const | true | логический | показать созвездия в аннотациях
gui_astrometry.cat_const_names | true | логический | показать названия созвездий в аннотациях
gui_astrometry.cat_user_dso | true | логический | показать пользовательские объекты глубокого космоса в аннотациях
gui_astrometry.cat_user_sso | true | логический | показать пользовательские объекты Солнечной системы в аннотациях
gui_pixelmath.pm_presets |  | список строк | список предустановок математических операций
script_editor.highlight_syntax | true | логический | подсветка синтаксиса в редакторе сценариев
script_editor.highlight_bracketmatch | true | логический | подсвечивать парную скобку в редакторе сценариев
script_editor.rmargin | true | логический | показать правую границу в редакторе сценариев
script_editor.rmargin_pos | 80 | целочисленный | положение правой границы в редакторе сценариев
script_editor.show_linenums | true | логический | показать номера строк в редакторе сценариев
script_editor.show_linemarks | false | логический | показать метки строк в редакторе сценариев
script_editor.highlight_currentline | true | логический | подсветить текущую строку в редакторе сценариев
script_editor.autoindent | true | логический | автоматически добавлять отступы к новым строкам
script_editor.indentontab | true | логический | добавлять отступы к выбранным строкам в редакторе сценариев с помощью клавиши tab
script_editor.smartbs | true | логический | Поведение умной клавиши Backspace в редакторе сценариев
script_editor.smarthomeend | true | логический | Поведение умных клавиш Home / End в редакторе сценариев
script_editor.showspaces | false | логический | Показывать видимые символы пробела и табуляции в редакторе сценариев
script_editor.shownewlines | false | логический | Показывать символ новой строки в редакторе сценариев
script_editor.minimap | false | логический | Показывать миникарту в редакторе сценариев

(*). Для каталогов kstars значением по умолчанию будет `~/.local/share/kstars/`, независимо от используемой ОС.
В любом случае вам нужно будет скачать их и указать место их расположения.
See section about using local star catalogues.

Значения можно получить с помощью команды `get`:

Командная строка Siril

    get { -a | -A | variable }

Получает значение переменной, используя её имя или отображает все переменные с помощью -a (имя и значение) или -A (подробный список)
См. также SET для обновления значений
Ссылка: set

Значения можно изменить с помощью команды `set`:

Командная строка Siril

    set { -import=inifilepath | variable=value }

Обновляет значение настройки, используя имя её переменной с заданным значением или набором значений, используя существующий ini-файл с опцией -import=.
См. GET для получения списка переменных или их значений
Ссылка: get

## Форматы файлов

Siril может открывать и работать с рядом форматов файлов. Однако чтение только двух форматов поддерживается нативно и позволяет создавать последовательности: FITS и SER.

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

### Разрядность

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

Для повседневного использования 8-битных изображений, в которых для кодирования пикселя в изображении используются значения в диапазоне [0, 255], более чем достаточно. Однако фотографирование астрономических объектов более требовательно и обычно при этом работа идёт с изображениями с разрядностью по крайней мере 16 бит, т.е. в диапазоне [0, 65535]. Более того, 32-битная точность позволяет сохранить едва различимые данные. В последнем случае пиксели кодируются в диапазоне [0, 4294967295], или, как это имеет место в Siril, дробными значениями в диапазоне [0, 1]. Возможно найти форматы, кодирующие пикселей в 64 битах (в диапазоне [0, 1]), но такие форматы редки и имеют специфические области применения. В частности, формат FITS позволяет это.

Однако не все форматы изображений поддерживают 16-битную глубину цвета, не говоря уже о 32-битной. Это следует иметь, выбирая формат для работы.

Линейное изображение, сохранённое с глубиной цвета 16 бит

Это же изображение, сохранённое с глубиной цвета 8 бит. Практически все данные потеряны

### Распространённые форматы файлов

В данном разделе описаны стандартные форматы файлов, читаемые всеми программами обработки изображений. Эти форматы разработаны для удовлетворения потребностей некоторое время назад и могут устареть. Более того, ни один из этих форматов не был разработан для обработки астрономических данных. Поэтому они, как правило, должны использоваться в конце процесса обработки.

#### AVIF

AVIF это современный формат изображений, основанный на видеокодеке AV1. В этом формате используется контейнерный формат HEIC. Siril поддерживает чтение изображений с глубиной цвета (разрядностью) до 12 бит. Поддержка сжатия без потерь может быть доступна в зависимости от кодеков, скомпилированных в установленной libheif. AVIF поддерживает цветовые профили, использующие как встроенные профили ICC, так и идентификаторы NCLX: встроенные профили ICC поддерживаются полностью. Присутствует частичная поддержка идентификаторов NCLX (они преобразуются в эквивалентный профиль ICC, хотя в настоящее время поддерживаются только наиболее вероятные профили NCLX).

Расширение файла для этого формата — .avif.

#### BMP

Файлы с расширением .bmp это файлы растровых изображений, используемые для хранения цифровых растровых изображений. Такие изображения являются аппаратно-независимыми растровыми изображениями (Device Independent Bitmap, DIB). Такая независимость позволяет открывать файл на нескольких платформах, таких как Microsoft Windows и Mac. В файлах формата BMP сохраняются данные в виде двумерных цифровых изображений, как монохромных, так и цветных, с различной глубиной цвета.

В настоящее время этот формат больше не используется и предпочтение отдаётся другим типам файлов.

#### HEIF

HEIF это современный формат изображений, основанный на видеокодеке x265. В этом формате используется контейнерный формат HEIC. Siril поддерживает чтение изображений с глубиной цвета (разрядностью) до 12 бит. Поддержка сжатия без потерь может быть доступна в зависимости от кодеков, скомпилированных в установленной libheif. HEIF поддерживает цветовые профили, использующие как встроенные профили ICC, так и идентификаторы NCLX: встроенные профили ICC поддерживаются полностью. Присутствует частичная поддержка идентификаторов NCLX (они преобразуются в эквивалентный профиль ICC, хотя в настоящее время поддерживаются только наиболее вероятные профили NCLX).

Расширения файла для этого формата — .heic и .heif.

#### JPEG

Вероятно, наиболее часто используемый формат, чтобы делиться изображениями на форумах, по электронной почте или на USB-носителях. Этот формат позволяет более или менее сильное (деструктивное) сжатие, обеспечивающее идеальный размер файлов для обмена. Расширение файлов этого формата — .jpg или .jpeg*.

Формат JPEG, однако, кодируется только в 8-битном формате. Из-за сжатия, приводящего к появлению артефактов, этот формат не очень подходит для астрономических изображений, и мы обычно предпочитаем формат PNG.

#### JPEG XL

Вслед за рядом предыдущих обновлений формата JPEG (JPEG 2000, JPEG XR...) формат JPEG XL представляет собой значительный скачок в возможностях с намерением заменить все растровые форматы. Независимо от того, будет это достигнуто это или нет, у этого формата есть несколько функций, которые делают его интересным для астрофотографии. Поэтому в Siril добавлена поддержка чтения и записи. Он поддерживает высокую разрядность, до 32 бит с плавающей точкой; поддерживает сжатие с потерями и без потерь: при сжатии с потерями достигается гораздо лучшая степень сжатия, чем в формате JPEG, при тех же настройках качества, а при сжатии без потерь достигается гораздо лучшая степень сжатия, чем в формате PNG. Обратите внимание, что метаданные FITS не будут сохранены при сохранении в формате JPEG XL: основное использование этого формата в Siril, скорее всего, будет в качестве архивного формата для окончательной визуализации изображений. Это также может быть полезно при экспорте для Интернет-страниц: формат пока не поддерживается браузерами широко, но Safari поддерживает его изначально; доступна экспериментальная или с помощью дополнений поддержка в Firefox и Chrome, так что мы можем увидеть, что поддержка станет более доступной в будущем.

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

Расширение файла для этого формата — .jxl.

#### PNG

Portable Network Graphics (PNG) — это формат файлов растровой графики, который поддерживает сжатие данных без потерь. Расширение формата — .png. Изображения в оттенках серого в формате PNG поддерживают широчайший диапазон глубины пикселей для любого типа изображений. Поддерживаются значения глубины 1, 2, 4, 8 и 16 бит, охватывающие всё — от простых чёрно-белых сканов до полноэкранных медицинских и необработанных астрономических изображений.

Откалиброванные данные астрономических изображений обычно хранятся в виде 32-разрядных или 64-разрядных значений с плавающей запятой, а некоторые необработанные данные представлены в виде 32-разрядных целых чисел. PNG напрямую не поддерживает ни один из этих форматов.

Однако этот формат является отличным выбором для сохранения конечного изображения после обработки.

#### TIFF

Tagged Image File Format (TIFF или TIF), представляет растровые изображения для использования на различных устройствах, соответствующих этому стандарту формата файлов. Он способен описывать двухуровневые, в оттенках серого, с индексированной палитрой и полноцветные изображения в нескольких цветовых пространствах. Формат поддерживает как схему сжатия без потерь, так и с потерями, что позволяет приложениям, использующим этот формат, выбирать между пространством и скоростью обработки. Расширение либо .tiff, либо .tif.

Формат TIFF имеет множество преимуществ. Он поддерживает кодировку до 32-х бит на пиксель и предлагает широкий спектр возможных полей в метаданных, что делает его хорошим кандидатом для хранения астрономических данных.

В сотрудничестве с другими разработчиками, используя формат TIFF, мы создали псевдостандарт Astro-TIFF.

#### NetPBM

Проектом Netpbm используются и определены несколько графических форматов. Portable pixmap format (PPM), portable graymap format (PGM) и portable bitmap (PBM) — это форматы файлов изображений, предназначенные для простого обмена между платформами. Возможные расширения файла: .pbm, .pgm (для файлов в оттенках серого) и .ppm.

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

#### AVI

Это медиаконтейнер, способный содержать данные с различными аудио- и видеокодеками. Некоторые видеокодеки, обеспечивающие сжатие без потерь, в прошлом использовались для получения изображений в астрономии. Однако это формат, который не содержит метаданных, пригодных для астрономии, ограничен 8-битными изображениями и не даёт никаких гарантий того, что содержащиеся в нём данные являются необработанными.

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

Этот формат входящих файлов в настоящее время устарел. Мы рекомендуем использовать вместо него формат SER.

### 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-разрядные файлы.

#### Filenames

FITS files should have an extension ".fit", ".fits" or ".fts"; uppercase variations are accepted but not recommended. It is possible to select your preferred extension in the Preferences dialog, and this will be used for saving FITS files, but all permitted extensions will be accepted for reading FITS images or sequence frames.

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

The FITS file library cfitsio interprets square brackets in filenames as providing filtering options. Therefore regardless of whether square bracket characters are permitted in filenames by your operating system, they must not be used in FITS files.

#### Сжатие

Сжатие это способ уменьшить размер изображения. Существует много методов сжатия, в зависимости от типа используемого изображения. Сжатие может быть с потерей, в случае 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-файлы, создаваемые крупными астрономическими миссиями, такими как миссии космического телескопа Хаббл (HST) НАСА или космического телескопа Джеймса Уэбба (JWST), часто являются более сложными, чем типичные файлы FITS, используемые астрономами любителями. Эти файлы обычно устроены как последовательности FITS (также называемые FITS-кубами), но с важным отличием: отдельные изображения внутри этих последовательностей могут иметь разные размерности.

Эта особенность позволяет хранить многомерные данные, собранные в различных условиях, где каждый кадр или изображение в последовательности может иметь различное разрешение или размер. Например, данные от телескопа Джеймса Уэбба (JWST) часто включают такие неоднородные наборы данных из-за особенностей его инструментов и режимов наблюдения.

В Siril , при обработке подобных научных файлов FITS важно включить опцию, которая позволяет работать с изображениями различной размерности внутри FITS-куба. Это можно сделать, включив параметр Кубы FITS могут содержать изображения разного размера во вкладке Параметры FITS настроек программы.

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

Currently, Siril is unable to process FITS files with `NAXES[2] > 3`. This feature is planned for future versions of the software, so FITS cubes with more than three axes are not supported at the moment.

Пример изображения, полученного космическим телескопом Джеймс Уэбб, загруженного в Siril

#### Ориентация изображений 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` не должен использоваться для переворота данных изображения при поиске астрономического решения. В противном случае такое астрономическое решение будет несовместимо с другими программами.

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

- Siril (начиная с версии 0.99.4)

- CCDCiel (начиная с версии 0.9.72)

- Indi (с июля 2020)

- KStars (начиная с 3.4.3)

- SharpCap (начиная с версии 3.3)

- FireCapture (начиная с версии 2.7)

- N.I.N.A (начиная с версии 1.10)

- MaxImDL (начиная с версии 6.23)

- INDIGO (с июля 2020)

- 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`.

Совет

Siril is able to read and compare checksums if they are present in the FITS header. However, by default and for software performance reasons, `CHECKSUM` and `DATASUM` cards are automatically removed from HDU headers when a file is opened, and any `CHECKSUM` or `DATASUM` cards are stripped from headers when an HDU is written to a file. Nevertheless, they can be saved at the user's request, using the -chksum option of the save command, or via the graphical user interface.

FITS keywords saved by Siril. For reasons of clarity, astrometry SIP keywords are not listed.
Ключевые слова FITS | Тип | Комментарий
--- | --- | ---
BZERO | Двойной точности | Смещение диапазона данных к диапазону коротких целых без знака
BSCALE | Двойной точности | Коэффициент масштабирования по умолчанию
MIPS-HI | Короткое целое без знака | Верхняя граница визуализации
MIPS-LO | Короткое целое без знака | Нижняя граница визуализации
MIPS-FHI | Одинарной точности с плавающей запятой | Верхняя граница визуализации
MIPS-FLO | Одинарной точности с плавающей запятой | Нижняя граница визуализации
PROGRAM | Строка | Программное обеспечение, использованное для создания этого HDU
FILENAME | Строка | Original Filename
DATE | Строка | Дата (по UTC), когда этот файл FITS был создан
DATE-OBS | Строка | Дата начала наблюдения в формате YYYY-MM-DDThh:mm:ss (по UT)
IMAGETYP | Строка | Тип изображения
ROWORDER | Строка | Порядок строк в массиве изображения
EXPTIME | Двойной точности | [s] Exposure time duration
TELESCOP | Строка | Телескоп, использованный для получения этого изображения
OBSERVER | Строка | Имя наблюдателя
FILTER | Строка | Название активного фильтра
APERTURE | Двойной точности | Апертура инструмента
ISOSPEED | Двойной точности | Установленная чувствительность камеры (ISO)
FOCALLEN | Двойной точности | [мм] Фокусное расстояние
CENTALT | Двойной точности | [град.] Высота телескопа
CENTAZ | Двойной точности | [град.] Азимут телескопа
XBINNING | Целое без знака | Режим биннинга камеры
YBINNING | Целое без знака | Режим биннинга камеры
XPIXSZ | Двойной точности | [um] Pixel X axis size
YPIXSZ | Двойной точности | [um] Pixel Y axis size
INSTRUME | Строка | Название инструмента
CCD-TEMP | Двойной точности | [degC] CCD temperature
SET-TEMP | Двойной точности | [degC] CCD temperature setpoint
GAIN | Короткое целое без знака | Усиление сенсора
OFFSET | Короткое целое без знака | Sensor gain offset
CVF | Двойной точности | [e-/ADU] Electrons per A/D unit
BAYERPAT | Строка | Цветной шаблон Байера
XBAYROFF | Целое | смещение массива Байера по X
YBAYROFF | Целое | смещение массива Байера по Y
FOCNAME | Строка | Название фокусировчного оборудования
FOCPOS | Целое | [step] Focuser position
FOCUSSZ | Целое | [мкм] Шаг фокусёра
FOCTEMP | Двойной точности | [degC] Focuser temperature
STACKCNT | Целое без знака | Количество уложенных кадров
LIVETIME | Двойной точности | [s] Exposure time after deadtime correction
EXPSTART | Двойной точности | [JD] Время начала экспозиции (стандартная Юлианская дата)
EXPEND | Двойной точности | [JD] Время окончания экспозиции (стандартная Юлианская дата)
OBJECT | Строка | Название объекта интереса
AIRMASS | Двойной точности | Airmass at frame center (Gueymard 1993)
SITELAT | Двойной точности | Широта места наблюдения (в градусах)
SITELONG | Двойной точности | Долгота места наблюдения (в градусах)
SITEELEV | Двойной точности | [м] Высота места наблюдения
DFTTYPE | Строка | Амплитуда/фаза дискретного преобразования Фурье
DFTORD | Строка | Низкая/высокая пространственные частоты, расположены в центре изображения
DFTNORM1 | Двойной точности | Значение нормализации для канала #1
DFTNORM2 | Двойной точности | Значение нормализации для канала #2
DFTNORM3 | Двойной точности | Значение нормализации для канала #3
CTYPE3 | Строка | Изображение RGB
OBJCTRA | Строка | Прямое восхождение центра изображения (чмс)
OBJCTDEC | Строка | Склонение центра изображения (гмс)
RA | Двойной точности | Прямое восхождение центра изображения (градусы)
DEC | Двойной точности | Склонение центра изображения (градусы)
CTYPE1 | Строка | TAN (gnomic) projection
CTYPE2 | Строка | TAN (gnomic) projection
CUNIT1 | Строка | TAN (gnomic) projection + SIP distortions
CUNIT2 | Строка | TAN (gnomic) projection + SIP distortions
EQUINOX | Двойной точности | Время равноденствия
CRPIX1 | Двойной точности | Ось 1 опорного пикселя
CRPIX2 | Двойной точности | Ось 2 опорного пикселя
CRVAL1 | Двойной точности | Опорное значение оси 1 (градусы)
CRVAL2 | Двойной точности | Опорное значение оси 2 (градусы)
LONPOLE | Двойной точности | Native longitude of celestial pole
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

### Astro-TIFF

В 2022 Хан Клейндж (Han Kleijn), разработчик ASTAP, предложил внести свой вклад в разработку нового псевдостандарта, используя формат TIFF и возможности заголовков файлов FITS. Таким образом был создан формат Astro-TIFF.

#### Для чего нужен новый стандарт?

В настоящее время наиболее используемым форматом для астрофотографии является FITS. Этот формат, разработанный профессиональными учёными, отвечает всем требованиям любителей. И хотя его большая гибкость вызывает некоторые опасения по поводу совместимости, он остаётся предпочтительным форматом.

Существуют и другие специализированные форматы, но обычно они связаны с конкретным программным обеспечением. Например, формат XISF, разработанный командой PixInsight. Последний, хотя его часто запрашивают в Siril, является форматом, предназначенным для проприетарного программного обеспечения PixInsight. Так что интерес к развитию совместимости с Siril минимален, и мы сделали это только для чтения в цикле 1.4.x.

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

Наконец, формат TIFF поддерживает сжатие (как и FITS), что позволяет получать изображения меньшего размера.

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

Датировка: 2022-06-21

- Файлы полностью соответствуют спецификации TIFF 6.0, включая дополнение 2.

- Заголовок FITS записывается в базовый тег TIFF Описание изображения. Code 270, Hex 010E.

- Заголовок соответствует спецификации FITS, за исключением того, что строки могут быть короче 80 символов и оканчиваться на CR+LF (0D0A) или LF (0A).

- Первая строка в описании является первой строкой заголовка и начинается с `SIMPLE`. Последняя строка заголовка начинается с `END`.

Рекомендации

- `TIFFtag_orientation=1` (вверху-слева) Ориентация следует следующим соглашениям. Пиксель `FITS_image[1,1]` — внизу слева. `TIFF_image[0,0]` — вверху слева. Эти пиксели первыми записываются в файл или читаются из файла. Таким образом, при записи изображения FITS в файл TIFF с сохранением ориентации для пользователя первым записываемым пикселем является `FITS_image[1,NAXIS2]`.

- `TIFFtag_compression=8` (Deflate) или 5 (LZW).

- Для изображений в градациях серого `TIFFtag_PhotometricInterpretation = 1` (минимальное значение — чёрное, максимальное — белое).

- Записывать все доступные ключевые слова.

Замечания

- Подобный формат TIFF предназначен для использования с 16-битными астрономическими изображениями — кадрами отдельных субэскпозиций (light), темновыми кадрами (dark), кадрами плоского поля (flat) и темновыми кадрами плоского поля (flat-dark), но может использоваться и в 32-битном формате. Возможно преобразование FITS в TIFF и обратно, но разработчик приложения может решить только экспортировать (запись) или только импортировать (чтение) в формате Astro-TIFF.

- Если включено астрономическое решение, то оно должно соответствовать ориентации изображения.

- Некоторые ключевые слова избыточны (например, `NAXIS1`, `NAXIS2`, `BZERO` и `BITPIX`) и не требуются. Размеры и тип изображения в формате TIFF являются главными.

- Шаблон для дебайеризации, указанный в заголовке, должен совпадать с ориентацией изображения.

- Заголовок будет видим во многих программах для обработки изображений.

Пример заголовка Astro-TIFF, который выглядит так же как и заголовок файла FITS:

    SIMPLE  =                    T / file does conform to FITS standard
    BITPIX  =                  -32 / number of bits per data pixel
    NAXIS   =                    2 / number of data axes
    NAXIS1  =                 6248 / length of data axis 1
    NAXIS2  =                 4176 / length of data axis 2
    NAXIS3  =                    1 / length of data axis 3
    EXTEND  =                    T / FITS dataset may contain extensions
    COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
    COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H
    BZERO   =                    0 / offset data range to that of unsigned short
    BSCALE  =                    1 / default scaling factor
    DATE    = '2022-12-14T16:05:47' / UTC date that FITS file was created
    DATE-OBS= '2022-05-06T20:29:20.019000' / YYYY-MM-DDThh:mm:ss observation start,
    INSTRUME= 'ZWO CCD ASI2600MM Pro' / instrument name
    OBSERVER= 'Unknown '           / observer name
    TELESCOP= 'iOptron ZEQ25'      / telescope used to acquire this image
    ROWORDER= 'TOP-DOWN'           / Order of the rows in image array
    XPIXSZ  =                 3.76 / X pixel size microns
    YPIXSZ  =                 3.76 / Y pixel size microns
    XBINNING=                    1 / Camera binning mode
    YBINNING=                    1 / Camera binning mode
    FOCALLEN=              370.092 / Camera focal length
    CCD-TEMP=                 -9.8 / CCD temp in C
    EXPTIME =                  120 / Exposure time [s]
    STACKCNT=                  126 / Stack frames
    LIVETIME=                15120 / Exposure time after deadtime correction
    FILTER  = 'Lum     '           / Active filter name
    IMAGETYP= 'Light Frame'        / Type of image
    OBJECT  = 'Unknown '           / Name of the object of interest
    GAIN    =                  100 / Camera gain
    OFFSET  =                   50 / Camera offset
    CTYPE1  = 'RA---TAN'           / Coordinate type for the first axis
    CTYPE2  = 'DEC--TAN'           / Coordinate type for the second axis
    CUNIT1  = 'deg     '           / Unit of coordinates
    CUNIT2  = 'deg     '           / Unit of coordinates
    EQUINOX =                 2000 / Equatorial equinox
    OBJCTRA = '09 39 54.932'       / Image center Right Ascension (hms)
    OBJCTDEC= '+70 00 10.118'      / Image center Declination (dms)
    RA      =              144.979 / Image center Right Ascension (deg)
    DEC     =              70.0028 / Image center Declination (deg)
    CRPIX1  =               3123.5 / Axis1 reference pixel
    CRPIX2  =               2088.5 / Axis2 reference pixel
    CRVAL1  =              144.979 / Axis1 reference value (deg)
    CRVAL2  =              70.0028 / Axis2 reference value (deg)
    CD1_1   =         -0.000580606 / Scale matrix (1, 1)
    CD1_2   =         -4.12215e-05 / Scale matrix (1, 2)
    CD2_1   =         -4.11673e-05 / Scale matrix (2, 1)
    CD2_2   =          0.000580681 / Scale matrix (2, 2)
    PLTSOLVD=                    T / Siril internal solve
    HISTORY Background extraction (Correction: Subtraction)
    HISTORY Plate Solve
    END

#### Сохранение Astro-TIFF в Siril

В Siril вы можете сохранить файлы Astro-TIFF, выбрав формат TIFF в диалоге сохранения, когда нажимаете на кнопку Сохранить как. В выпадающем списке диалога есть возможность выбора между сохранением в стандартном формате TIFF или в формате Astro-TIFF. Последний является форматом по умолчанию.

Диалог сохранения с опцией Astro-TIFF

Командная строка Siril

    savetif filename [-astro] [-deflate]

Сохраняет текущее изображение в виде несжатого 16-битного файла TIFF filename.tif. Опция -astro позволяет сохранить в формате Astro-TIFF, а -deflate включает сжатие.
См. также SAVETIF32 и SAVETIF8

#### Образцы файлов

- Файл Astro-TIFF созданный в Siril (32 бита, несжатый).

- Файл Astro-TIFF созданный в Siril (32 бита, сжатый).

### SER

Формат SER это простая последовательность изображений, похожая на несжатые ролики. Документацию можно найти на официальной странице. Ссылка на последнюю версию документации в формате PDF доступна так же на сайте free-astro.

С обновлениями версий 2 и 3, формат SER поддерживает цветные изображения, что делает его прекрасной заменой обычного формата AVI или других форматов роликов, создаваемых более старыми программами захвата, во всех астрономических ситуациях. Сжатые изображения не следует использовать для астрономии, но их всё равно можно преобразовать в формат SER, что увеличит размер файлов при том же качестве, но упростит работу с ними.

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

Основная проблема с AVI и другими контейнерами заключается в том, что они предназначены для работы со многими кодеками и пиксельными форматами, что хорошо для роликов общего назначения, но требует от астрономического программного обеспечения поддержки обработки большого массива фактически различных форматов файлов. Программное обеспечение для создания роликов общего назначения часто недостаточно подходит для обработки 16-битных значений на пиксель или некоторых несжатых форматов данных. В случае SER только один формат файла поддерживает всё это, поэтому для Siril, например, сейчас разрабатывается обработка только для SER.

#### Структура файла

Файл SER состоит из трёх частей:

- заголовок длиной 178 байт, содержащий информацию об изображениях и наблюдении

- данные изображения, «сырые» (raw) данные пикселей

- необязательный трейлер, содержащий даты всех изображений в последовательности

#### Обработка цвета

В версии 3 SER (2014) существуют два способа обработки цветных изображений. Если данные поступают напрямую с сенсора, предпочитаемым способом, вероятно, будет использование одноплановых изображений и интерполяция данных из массива цветных светофильтров (аналогично форматам файлов CFA, используемым астрономическим программным обеспечением).

Другой способ, добавленный в 3 версию, это использование трёх плоскостей для представления данных изображения RGB. SER третьей версии поддерживает RGB/BGR 8/16-битные данные. Это может быть полезно, если данные конвертированы из источника с неизвестным массивом фильтров или для конвертации общего назначения.

#### Проблема спецификации с порядком байтов

Поскольку файлы SER могут содержать изображения с 16-битной разрядностью, порядок байтов должен быть чётко указан. Спецификация допускает, чтобы порядок байтов был либо от старшего к младшему (big-endian), либо от младшего к старшему (little-endian), чтобы облегчить создание файла в различных системах, при условии, что используемый порядок байтов задокументирован в заголовке файла.

По неизвестной причине несколько первых программ, поддерживающих SER, не соблюдают спецификацию, касающуюся флага порядок байтов. В спецификации указано, что для заголовка Little Endian используется логическое значение, и они используют его как заголовок BigEndian, где 0 соответствуют порядку от младшего к старшему (little-endian) и 1 - от старшего к младшему (big-endian). Следовательно, чтобы не нарушать совместимость с этими первыми реализациями, более поздние программы, такие как Siril, GoQat, Ser-player и многие другие, также решили реализовать этот заголовок в значении, противоположном спецификации.

### IRIS PIC

Формат PIC — это проприетарный формат изображений, созданный для программного обеспечения IRIS от Кристиана Буила (Christian Buil). Чтобы обеспечить совместимость с IRIS, Siril имеет возможность читать файлы этого типа. Gоскольку формат является проприетарным, чьи технические характеристики неизвестны, не вся информация заголовка будет сохранена при преобразовании в FITS.

Siril не может записывать в формате PIC.

### PixInsight XISF

PixInsight представила файловую структуру, получившую название расширенный формат сериализации изображений (Extensible Image Serialization Format) или XISF. Этот формат был написан для замены формата FITS, обычно используемого в астрофотографии. По сути, этот формат был разработан для программного обеспечения PixInsight и многие важные типы метаданных хранятся в частных пространствах имён, на которые, по мнению разработчиков Pixinsight, нельзя полагаться, и они могут произвольно изменяться в зависимости от версии спецификации XISF. Более того, способ использования ключевых слов для описания конкретной функции может быть очень непрозрачным. В результате преимущества, которые это могло бы принести PixInsight, как правило, равны нулю для другого программного обеспечения. Более того, формат файла FITS является признанным и широко используемым форматом в сообществе. NASA использует его для своих собственных изображений. Он очень гибкий и мощный и содержит все функции, необходимые для современной обработки астрофотографий.

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

## Управление цветом

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

В этом разделе документации есть несколько разделов, цель которых — дать общее представление о том, что такое управление цветом, как оно может помочь вам и как оно работает в Siril.

### Приступая к работе

Добро пожаловать в новую систему управления цветом Siril! Управление цветом может показаться сложным, поэтому на этой странице будет рассказано об основных принципах, которые вам необходимо знать для начала работы. Мы рассмотрим две настройки, которые упростят вашу жизнь.

#### Настройки по умолчанию

Настройки по умолчанию обеспечивают поведение, аналогичное предыдущим версиям Siril.

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

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

Если изображения не имеют цветового профиля, то при первом растягивании им присваивается предпочитаемое цветовое пространство (sRGB). Именно в этот момент вам следует использовать линейный режим просмотра, чтобы изображение отображалось на экране так, как вы хотите, и, следовательно, именно сейчас управление цветом становится важным.

Изображения будут экспортированы во все 8- и 16-битные форматы с использованием цветового пространства sRGB.

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

#### Настройка фотопринтера

Если вы собираетесь делать отпечатки своих работ, рассмотрите следующие настройки.

На снимке экрана монитор остается в режиме sRGB, поскольку пользовательский профиль монитора не установлен. Если у вас есть доступ к необходимому оборудованию для калибровки монитора, вы можете настроить пользовательский профиль, адаптированный к вашему монитору (Как это сделать, не входит в компетенцию Siril, но вы, возможно, захотите ознакомиться со свободным программным продуктом ArgyllCMS.)

Предпочитаемым цветовым пространством является Rec 2020. Это цветовое пространство с широким цветовым охватом лучше подходит для рабочего процесса, ориентированного на печать, поскольку преобразование RGB в CMYK, выполняемое принтером, с меньшей вероятностью приведет к искажению профиля CMYK.

При загрузке изображений, если с ними связан цветовой профиль, они будут преобразованы в формат Rec 2020. Если у изображений нет цветового профиля, при первом растягивании с ними будет связан предпочитаемый цветовой профиль (Rec 2020).

#### Тип цветопередачи

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

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

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

Изображения будут экспортированы в 8-битные форматы, как sRGB, но в форматы с высокой разрядностью — как Rec2020 (и вам следует сохранить окончательную версию в стандартном для полиграфии 16-битном формате, т.е., вероятно, в формате TIFF).

### Статус управления цветом

The color management status of the loaded image is indicated by the Color Management status icon in the bottom left hand corner of the window. The icon is fully saturated when the image is color managed, and desaturated when the image is not color managed. The tooltip provides more detailed status information if the image is color managed: it shows the working space and monitor profiles.

Left clicking the status button accesses the Color Management Dialog. Right clicking the tool toggles the ISO 12646 color assessment display mode. Both are described in more detail below.

Just above the color management status button is a new menu for image checks. This includes the existing cut check for highlighting pixels that exceed the gui hi slider, and adds a new gamut check, which highlights pixels that are out of gamut for the soft proofing profile in bright magenta.

### Диалог управления цветом

The Color Management tool is accessed by clicking on the Color Management status icon. (It can also be accessed via the Tools menu.)

The tool itself is shown below.

The top part of the tool shows information about the current ICC profile assigned to the image. The description, manufacturer details and copyright notice are shown.

Underneath this are choosers that allow you to choose a different profile, either one of the built-in profiles using the drop-down menu on the left or any ICC profile you wish to load from a file using the filechooser on the right.

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

When loading a profile from a file, the profile type must be either RGB or Gray to match the loaded image. Assigning or converting images to other color spaces such as XYZ, CIE La*b* or CMYK is not supported, however color spaces such as CIE La*b* may be used internally by some image operations where required.

Совет

You can convert a RGB image to a Gray profile. This will result in a mono image with the appropriate tone response curve (TRC) transform and contributions from the 3 R, G and B channels determined by the white points of the two profiles. Converting a Gray image to a RGB profile will result in a 3-channel image with the appropriate TRC transform and all pixel components equal.

At the bottom of the window, the tool shows the same kind of information for the target profile that it does for the original profile at the top of the window. This helps in checking you've loaded the right one.

#### Toolbar

- The Export button simply exports the current image profile to a file in the working directory.

- The Remove button removes the ICC profile from an image.

- The Assign button assigns the selected ICC profile to the image, without performing a color space conversion. This is useful if the image has an incorrect color profile embedded.

- The Convert button converts the image to the selected ICC profile and assigns the profile to the image. This is useful if you wish to transform the image from its current color space to a different one.

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

Use of the Remove, Assign or Convert buttons (or the Siril commands icc_remove, icc_assign or icc_convert_to) will clear any ROI that is set.

### ISO 12646 Image Assessment Mode

ISO 12646 defines optimum viewing conditions for assessing color. In summary, to get the best assessment of the colors in your image the best viewing conditions are provided by a uniform neutral gray background called D50. Technically this should even extend to the walls in your room, but Siril can't control that! Siril does provide an image assessment mode that approximates ISO 12646 recommendations, however. It is available by right clicking on the color management button in the bottom-left of the screen, and does not require the image to be color managed to use it.

This mode is intended as a final check of the colors of your image, so it sets the preview mode to linear with the sliders at 0 and 65535 (full range). It also hides the panel and sets the zoom so that the full image is visible and centered with an ample border around it, and sets a moderate white border around the image to provide a visual white reference, surrounded by a background of D50 gray.

Ideally you should also choose a neutral gray GTK theme, such as the excellent Equilux theme.

This mode automatically disables itself if the zoom is changed or the panel made visible again, and it can be toggled off by right clicking a second time on the color management button. The view will revert to its previous zoom settings and panel state.

### Команды

Most Siril commands do not engage with color management except that they do not prevent existing color profiles from being preserved in an image.

The exceptions are three specific color management commands that can be used to assign, convert or delete the ICC profile in an image.

Командная строка Siril

    icc_assign profile

Назначает текущему изображению указанный в аргументе ICC-профиль.
Для использования соответствующих встроенных профилей может быть передан один из следующих специальных аргументов: sRGB, вRGBlinear, Rec2020, Rec2020linear, working для установки рабочего монохромного или RGB цветового профиля, (для монохромных изображений) linear или может быть указан путь к файлу с профилем ICC. Если указан встроенный профиль при загруженном монохромном изображении, будет использован Ч/Б профиль с соответствующей TRC

Командная строка Siril

    icc_convert_to profile [intent]

Преобразует текущее изображение в указанный ICC-профиль.
Для использования соответствующих встроенных профилей может быть передан один из следующих специальных аргументов: sRGB, sRGBlinear, Rec2020, Rec2020linear, graysrgb, grayrec2020, graylinear или working для установки рабочего монохромного или RGB цветового профиля, (для монохромных изображений) linear или может быть указан путь к файлу с профилем ICC. Если указан встроенный профиль при загруженном монохромном изображении, будет использован Ч/Б профиль с соответствующей TRC.
Может быть передан второй аргумент для указания цветопередачи при преобразовании: доступны perceptual, relative (относительная колориметрическая), saturation или absolute (абсолютная колориметрическая)

Командная строка Siril

    icc_remove

Удаляет ICC-профиль из текущего изображения если оно уже имеет таковой

### Матрицы преобразования цвета

#### Введение

ICC profiles do not cover everything a user may wish to do in terms of color manipulation, so additional tools are provided as well. Of course, pixel math is a powerful general purpose tool for manipulating pixels but a common use case is to apply a color correction matrix to data, for example for manual conversion of camera chromaticities.

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

Application of CCMs is an advanced technique. Description of techniques involving the use of CCMs is outside the scope of Siril documentation. You should understand how CCMs operate and how to apply them within your workflow in order to use this tool successfully.

Color Conversion Matrices dialog.

#### Color Conversion Matrix Tool

The Tools ‣ Color Conversion Matrix tool allows direct application of a color conversion matrix (CCM) to pixels. The CCM is specified by 9 elements:

\[\begin{split}\begin{pmatrix} m_{00} & m_{01} & m_{02} \\ m_{10} & m_{11} & m_{12} \\ m_{20} & m_{21} & m_{22} \end{pmatrix}\end{split}\]

Several common preset are provided in a drop-down selector. The tool additionally offers the ability to scale by a \(\gamma\) factor.

This is applied to pixels as follows:

\[\begin{split}\begin{align} r' &= (m_{00}\cdot r + m_{01}\cdot g + m_{02}\cdot b)^{(-1/\gamma)} \\ g' &= (m_{10}\cdot r + m_{11}\cdot g + m_{12}\cdot b)^{(-1/\gamma)} \\ b' &= (m_{20}\cdot r + m_{21}\cdot g + m_{22}\cdot b)^{(-1/\gamma)} \end{align}\end{split}\]

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

If a CCM is applied to an image that has an embedded ICC profile, the ICC profile will no longer be a valid description of the image data. The profile is therefore temporarily disabled and the color management icon will show as inactive. It is assumed that your workflow will involve low-level colorspace transforms and image operations and at some point you will end up transforming the data back to the color space described by the ICC profile. At this point the ICC profile can be reactivated using the bottom of the dialog. If however your workflow involves manual conversion of the image to a different final color space you will need to apply the target ICC profile using the Color Management dialog.

Note that this does not apply to the command line ccm command. By policy, Siril commands do not interact with ICC profiles therefore the ccm command will not disable an ICC profile attached to an image: it is your responsibility to do this using the icc_remove command if required.

This operation can be applied to sequences. Open a sequence and prepare the settings you want to use, then check the Apply to sequence button and define the output prefix of the new sequence (ccm_ by default).

Командная строка Siril

    ccm m00 m01 m02 m10 m11 m12 m20 m21 m22 [gamma]

Применяет матрицу преобразования цвета к текущему изображению.
Имеются 9 обязательных аргументов, соответствующих девяти элементам матрицы:
m00, m01, m02
m10, m11, m12
m20, m21, m22
Может быть передан дополнительный, десятый, аргумент [gamma]. Если он опущен, используется значение по умолчанию 1.0.
Аргументы применяются к каждому пикселю в соответствии со следующими формулами:
r' = (m00 * r + m01 * g + m02 * b)^(-1/gamma)
g' = (m10 * r + m11 * g + m12 * b)^(-1/gamma)
b' = (m20 * r + m21 * g + m22 * b)^(-1/gamma)

Командная строка Siril

    seqccm sequencename [-prefix=]

Аналогична команде CCM, но применяется к последовательности sequencename. Обрабатываются только выбранные изображения из последовательности.
Название итоговой последовательности будет начинаться с префикса "ccm", если не указан иной с помощью аргумента -prefix=
Ссылка: ccm

### Теория управления цветом

#### Введение

Color management is the method used to ensure that the colors of an image always look consistent, however the image is viewed. This is done using color profiles (ICC profiles, named for the International Color Consortium). Each display type and printer / paper combination has its specific color profile. The image also has a defined color space, and by transforming the image between different color spaces when viewed on two different types of display, or when printed, we ensure it always looks the same (or at least as close to "the same" as possible).

#### CIE 1931 Color Space

The CIE 1931 color space (CIE 1931) maps all colors that are discernable by the human eye. As the human eye has three types of cone cell (color receptors), so CIE 1931 has three parameters (X, Y and Z). Note the parameters X, Y and Z don't directly correspond to the response of each type of cone cell, but they do allow 3 degrees of freedom. For more details on this color space, see here: https://en.wikipedia.org/wiki/CIE_1931_color_space

This isn't a color space that is used to store image data most of the time but it matters because it is used as an intermediate color space, and because it defines what are "real" colors (those visible by human eyesight) and what are "imaginary" (those we can't see). CIE 1931 can be visualised as a horseshoe shape.

By BenRG - CIExy1931.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=7889658

Note that the outside of the horseshoe defines the color of pure monochromatic spectral lines. This will be important later.

#### RGB Color Spaces

Our working color spaces are generally based around the color axes Red, Green and Blue. This corresponds roughly to how our eyes work and also to the phosphors in the emitters in a screen. However there are a great many RGB color spaces, each suitable for different purposes, and each with advantages and disadvantages. You can see the variety of color spaces in this diagram, which shows them defined in relation to CIE 1931.

By Myndex - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=116654642

The R, G and B channels of an image are defined in terms of a color space formed by three primary colours located within this CIE 1931 space, plus a white point, plus a tone response curve (TRC) for each channel that sets the gamma of each channel. (Actually, TRCs can be more complex than a simple gamma curve but most are at least approximately a gamma curve.) The diagram above shows that some color spaces are considerably bigger than others: that is, they can represent a greater portion of the visible colors.

#### Gray Color Spaces

In astrophotography we quite often deal with monochrome images. These clearly can't have a RGB color profile. Instead they get a Gray color profile. This defines the image's tone response curve (TRC) in exactly the same way as the RGB color profiles define the TRC of each channel. So whatever type of display or printer you're using, monochrome images can still be faithfully reproduced and look the same (or as close to it as possible) in different output media.

#### Display Color Space

The "standard" color space used for computer graphics has traditionally been sRGB. This was created by HP and Microsoft in 1996 and subsequently standardized as IEC 6166-2-1:1999. This color space codifies the color gamut achievable by displays of the time. As can be seen in the figure it can only represent a small portion of the total visible color space defined by CIE 1931. However, many monitors today can still do little better than sRGB and it is the current standard color space for the World Wide Web (WWW), so even if you don't want to use it for any other purpose it is necessary to use it as the export profile for any image you want to display consistently in web browsers. It is also the assumed color space for any image format that lacks color profile support, and for any application that lacks color management.

However it is obvious that there are other RGB color spaces with much larger gamuts, for example Adobe RGB, Adobe ProPhoto, Rec2020. These can represent a much larger portion of the real colors defined in CIE1931. They can also represent a much larger color gamut than most monitors. So why would these be of interest?

Well, for one, monitors are getting better. Wide gamut monitors are still not mainstream but they are becoming less rare, and more affordable. If you edit and view your images on a wide gamut monitor, you will benefit from richer color by using a color space with a bigger gamut. Some modern phones can display the whole of the P3 gamut, which is considerably bigger than sRGB and allows a richer range of colors to be displayed.

#### Print Profiles

Print profiles can extend beyond sRGB in some areas (and may not cover all of sRGB in other areas). By editing in a wide gamut color space, that richness of color - even if it can't be shown in the color-transformed output on your display - is still there and will be evident in good quality prints.

#### Transforms

The point of color spaces is that an image will often appear in outputs with different color spaces at different points in its life. It may be created on a professional-quality high gamut monitor, it may be viewed by the public on basic sRGB monitors, and it may be printed on a range of different printers. Each of these devices is capable of reproducing different color gamuts but we want the image, so far as possible, to look consistent across all of them. This is done by color space transforms. Unfortunately, because color spaces are different, we have to deal with the problem of how to represent in one color space colors that are "out of gamut" having been transformed from a different color space.

#### Color Transform Intents

The answer to the problem above is "intents". Whenever you are viewing an image on a device / paper that has a different color space to your working profile it has a color space transform applied to it. This isn't as straightforward as an arbitrary 2-way mapping between two sets of coordinates. Say you're working in Rec2020. Consider the transform to your monitor color profile. Remember, your monitor (let's assume it is approximately a sRGB display) cannot display as many colors as are representable in Rec2020. So the color space has to map all the colors in Rec2020 onto colors in sRGB. How it does this is determined by the Rendering Intent.

You may want to choose one intent for rendering your image for display but a different intent for other purposes. The different intents defined by the ICC and available in Siril are described below.

Совет

- Perceptual The perceptual intent scales the input color gamut into the output color gamut. All colors are changed, but the relationships between colors are maintained. Generally, color is less saturated in the output color space, but the saturation compared with other colors is maintained.

- Saturation The saturation intent similarly scales the input color gamut into the output gamut, but it does so in a way that prioritises saturation. This is usually more suitable for vibrant graphics than for photography.

- Relative Colorimetric The relative colorimetric intent reproduces in-gamut colors accuately, however it clips colors that are out of gamut to the closest point on the triangle representing the boundaries of the target color profile.

- Absolute Colorimetric The absolute colorimetric intent is really only of use in pre-press proofing.

#### ICC Color Profiles and Intent Availability

The ICC defines the four intents listed above (as well as some others used primarily for ink control in press applications) but not all ICC profiles support all of the intents. Most of the color profiles built into Siril are matrix shaper profiles. These are very good as working color space profiles but mostly they only support the Relative Colorimetric intent. That's fine, because mostly that's the intent we want to use when converting between color spaces. (See below for an explanation of why.) If you set an intent in preferences that your ICC profile doesn't support, Siril will fall back to one that is supported - generally Relative Colorimetric.

#### Отображение

For display you generally want to use Relative Colorimetric. This makes the image display as consistent as possible with what anyone else with a color managed display will see, or what it will look like when printed to a color managed print workflow.

You may occasionally want to switch to Perceptual. This will not give you an accurate representation of color, but it will show the relative differences in color that get clipped when shown on your display. You can check what parts of the image are outside your display gamut using the gamut check tool in the image checking menu - the pixels that are outside the display gamut are shown in bright magenta. Siril provides a built-in sRGB profile with support for the Perceptual intent and will automatically use it if Perceptual intent is selected in the Preferences tab (and if no custom monitor profile is active). If you do wish to use a custom monitor profile and the Perceptual intent, it is up to you to ensure your profile supports this.

#### Conversion and Saving

For converting files and saving them you almost always should use Relative Colorimetric. This preserves color correctly. Relative Colorimetric does typically clip colors to the gamut of the color space it is converting to, but you get a consistent result. In fact, when dealing with 32 bit floating point images Siril uses an unbounded transform - that is, instead of clipping colors it permits negative values. They will need clipping at some point - when displayed, for example - but they can be saved, and applying a color transform in the reverse direction brings back the original data. Nothing is lost.

#### Soft Proofing

For soft proofing you probably want Relative Colorimetric. Absolute Colorimetric may be of use in simulating exactly what your image will look like on a given printed medium as it simulates one medium's white point in another (so if you're proofing what an image will look like on the dingy yellowish-white of newsprint then Absolute Colorimetric will try to simulate that via your monitor), but for soft proofing a wider gamut color space against your display profile then you likely want Relative Colorimetric.

### Workflow

#### Линейная стадия

Almost all astrophotographic workflows start off with a linear stage. This is because our imaging sensors are photon counters, and provide essentially a linear response to incoming photons. Double the number of incoming photons during an exposure and the pixel value doubles (neglecting sensor bias, which will be calibrated out).

Many standard photographic workflows jump straight into color spaces with a nonlinear "tone response curve", for example the TRC of sRGB is approximately a gamma function \(f(x) = x ^{1/g}\), where \(g = 2.2\).

However, astrophotography is different. Representing this linear data as linear values in a linear colorspace is vital for a number of reasons. Most importantly some functions rely on the data being linear: star detection matches Gaussian star profiles, and if the data has had a nonlinear TRC applied then the profiles will no longer be Gaussian, and the star finder algorithm will give worse results. StarNet has been trained on linear data with a specific transformation (histogram stretch with automatic parameters) and again, feeding it data that has already had a gamma function applied will make the results worse. Deconvolution, noise reduction... Many functions we apply to our data rely on it still being linear.

If you wish, you may apply a linear profile at this stage. Siril can do this automatically for you when an image is opened, if you set the auto-assign preferences and check the Pedantically assign linear profiles button. For monochrome images the linear Gray profile will be applied. For RGB images (or when compositing linear monochrome images into a color image), the profile selected will be the linear profile from the preferred set of color space profiles you set in Preferences.

For example if you chose the Rec2020 color space, Siril will assign the Rec2020-V4-g10 ICC profile to your image. "Rec2020" is the name of the gamut; "V4" indicates that this is a Version 4 ICC profile; and "g10" states that the profile has a TRC that is a gamma function with \(g = 1.0\) (i.e. a linear response).

Совет

Assigning a basic working space profile is enough for most users. Color balance can be addressed later using the color calibration tools. However, if you have a calibrated camera you may wish to apply an input profile. Camera calibration and creation of camera profiles is an advanced topic and is outside the scope of Siril, but you may find the guidance in the articles at Section D of this page of use. The simplest way to apply an input profile is using the Color Management dialog. Select your camera profile from the file chooser and click Assign. This is actually enough: Siril will happily edit your image in the camera profile, but you can also select your working profile and click Convert to convert the data to your preferred color space.

Another approach to calibrating your input is by using Color Conversion Matrices (CCMs). This is more labor-intensive: as with camera profiles, the CCMs need to be produced outside Siril, and they can then be applied to your linear data using PixelMath.

What you have just done is assigned the color space primaries in CIE 1931 XYZ space, according to the points on the triangle representing the Rec2020 gamut. Although the data is linear, when you see the image on your screen it has the display color space transform applied to it, using your chosen rendering intent.

Having said that, it isn't really all that necessary to assign a color profile at this stage. You will quite likely be using the Autostretch viewer mode when working with linear data, which doesn't require color management anyway.

Now that's explained, you can happily get on with the rest of your linear workflow. Calibration, registration, stacking, star removal, noise reduction... Go at it!

#### Nonlinear Stage

When you're ready to stretch your image, it's time to think about your color space again. Stretching changes the image from linear data to non-linear data so that it looks pleasing to the human eye. You're going to make your data non-linear now, so before stretching is a good time to convert the image to your chosen nonlinear color space, be it sRGB or Rec2020 or another color space of your preference. You can either do it yourself manually, or you can set a preference for Siril either to prompt you to convert the image color space to your preferred color space, or to do it automatically.

You can now carry on and finish any post-stretch editing of your image.

#### Image Saving and Export

When the time comes to save your image, you have a choice of formats:

- FITS is the native image format for Siril, and ICC profiles can be embedded in FITS files. This is done in the same way as other astrophotography software, so images saved with embedded ICC profiles will be interoperable between Siril and PixInsight (and probably other software supporting FITS ICC profile embedding).

- TIFF and PNG are good formats to choose for high quality image export and offer wider compatibility with other software than FITS. Both support ICC profile embedding. Options in the Preferences dialog allow setting whether 8-bit and higher bit depth TIFF and PNG images are saved as sRGB, saved in the image's current ICC profile, or saved in the preferred color space set in preferences.

- The de facto standard for highly compressed images for the WWW is JPEG. Support for ICC profiles in JPEG images varies according to your JPEG library, but if you are using libjpegturbo version 2.0.0 or higher then ICC profiles will be embedded. Still, many third party programs do not support color management at all and they will assume JPEGs represent a image in the sRGB colorspace with the sRGB standard TRC. This is the default export color space for JPEGs and you should consider carefully before saving them with a different color profile.

- Siril does also support some other image formats: PNM / PGM, BMP etc. These formats are grouped together under the category of "do not support ICC profiles". When exporting to these formats, images will always be converted to sRGB.

Siril provides a preference setting for the export / conversion intent. In pretty much every single case you should leave this as "Relative Colorimetric".

### Color Space Profiles

#### Встроенные цветовые профили

Siril contains a basic set of color space profiles. These are taken from Elle L. Stone's excellent repository of free and well-behaved color profiles. Her website contains a wealth of technical information on color space theory and practice, and a great source of inspiration for applying color processing to images. All the profiles there are released under the Creative Commons Attribution-Share-Alike Unported license, version 3.0.

The built-in profiles are intended to provide a sufficient set of color spaces for most purposes: sRGB for web export and as a default display profile, Rec2020 as a wide gamut profile that looks like it may become the next standard for high quality wide gamut monitors, and of course a range of Gray profiles to match the RGB ones.

- sRGB

  - Linear profile sRGB_elle_V4_g10

  - sRGB TRC profile sRGB_elle_V4_srgbtrc

  - ICC sRGB Preference profile with perceptual lookup tables (for display only)

  - sRGB TRC profile sRGB_elle_V2_srgbtrc (for export)

- Rec2020

  - Linear profile Rec2020_elle_V4_g10

  - Rec709 TRC profile Rec2020_elle_V4_rec709

  - Rec709 TRC profile Rec2020_elle_V2_rec709 (for export)

- Gray

  - Linear profile Gray_elle_V4_g10

  - sRGB TRC profile Gray_elle_V4_srgbtrc

  - sRGB TRC profile Gray_elle_V2_srgbtrc (for export)

  - Rec709 TRC profile Gray_elle_V4_rec709

  - Rec709 TRC profile Gray_elle_V2_rec709 (for export)

Note that the native TRC versions of the profiles are provided in two versions (version 4 and version 2). Version 4 provides better functionality (especially for high bit depth images) including parametric TRCs which avoid quantization. However version 4 profiles are not universally supported yet. So when exporting a file for use in other software it is safest to embed a V2 profile.

The Gray profile is available with TRCs to match the two built-in RGB color spaces, and also with a linear TRC.

#### Linear TRC Profiles

Sensor data starts off as a linear representation of light, so why don't we assign a linear color profile to unstretched images such as a newly stacked stack? Well, technically perhaps we should. Certainly if you wish to do so you can, and nothing bad will happen. You can do this using the color management dialog, and there is also a preference (Pedantically Assign Linear ICC Profiles) that will assign a linearized version of the working ICC profile when a profile is auto-assigned to a newly loaded image (if it shows no sign of having been previously stretched), a stacked image or a newly composited image. However there is generally no benefit in doing so. To understand why, we need to understand a fundamental difference between astrophotography and normal photography processing.

In normal photography the whole image is well exposed, with darker shadow regions and lighter highlights. At the raw stage the image is converted from linear light to a working profile, but this is reversible and in fact is frequently reversed as many editing operations (color blending, noise reduction, etc.) are best done in linear light.

However in astrophotography, all the detail is very deep in the shadows and we have to apply a very strong stretch indeed in order to produce an image that looks pleasing. This stretch is much more extreme than the mild change of gamma from 1.0 to 2.2 going from linear light to sRGB, and it is not easily reversible - especially if multiple stretches are applied. So we do still need to do the same kind of operations (color correction, noise reduction, deconvolution etc.) on linear light (and a lot of other things that don't even exist in normal photography should be done to linear images too: star modelling, star removal etc.)

It isn't necessary to set a linear color profile to do these operations - algorithms like noise reduction etc. aren't even aware of color profiles. They just apply themselves to the provided data.

So it is safe to assign the color profile to an image at any stage of editing, though it usually makes most sense to do it just before stretching. The key thing to remember is that with astrophotography, all the operations that need to be done on linear images should be done before any stretching. Generally, stretching and any final tweaks to color balance, saturation etc. should be just about the last editing operation that is done to an image. And at that point you should be editing it in your chosen color space, which will give as consistent as possible a look to the image when viewed in any color managed application or output device.

#### Color Space Recommendations

This section explains in a bit more detail why Siril offers the built-in color spaces it does.

sRGB is the de facto standard for the web. As mentioned above, if you want to guarantee your images look good in all web browsers, as well as all third party applications that may or may not support color management, you really need to export in sRGB. It's a good fit for most SDR monitors, and in the absence of proper color management images that looked right in previous versions of Siril should be considered to be in sRGB.

However, consider the CIE 1931 color space again. The horseshoe shape forming the boundary of the color space represents pure spectral tones. If you have a perfectly monochromatic light source like a laser or one of those sodium yellow street lights, you're looking at the boundary of CIE 1931. As astrophotographers these pure monochromatic sources are actually really important to us, especially if you do narrowband imaging. Those colors can't be represented accurately in sRGB. The proportion of visible colors that can be represented in sRGB is actually rather small. We can do better.

So, if a wide gamut is better why is the wide gamut color space built into Siril Rec2020 rather than an even wider one? AllColorsRGB, ACES 2065 and ProPhoto RGB are all much bigger - ACES 2065 can represent all parts of the visible spectrum.

The problem is, the way they do that is by setting their primary colors - the "100% red", "100% green" and "100% blue" values - outside the visible range. This is problematic especially for narrowband imagers who want to assign filters to primary colors: you end up with imaginary colors in your image and always have to rely on the intent of a color space transform to do the right thing in turning them into something visible. Also some of these color spaces are linear, such as ACES 2065. This is good for CGI artists but not so good for us, because of the slow display transforms when working with linear spaces. Siril can optimise some transforms from linear color spaces over and above what lcms2 does, but only if the RGB primaries are the same, e.g. if transforming linear sRGB to g22 sRGB). So Rec2020 was chosen as it provides a nonlinear color space with the widest gamut without having imaginary primaries.

My recommendation, if you aren't already sold on a particular color space, is to try Rec2020 as a color space for editing, as well as for sending images to high-quality printing services that can cope with color managed images, and sRGB for web export. But there are also other good choices available using ICC profile files that you can use instead, such as Adobe RGB and ProPhoto RGB (ROMM), if you prefer.

#### Third Party Color Profiles

Monitor Profiles Siril includes the ICC's v4 sRGB monitor profile with support for Perceptual rendering LUTs and uses this by default. A different monitor profile may be used in its place, but note that only the intents supported by a given profile will be available - many widely available sRGB profiles only support the Relative Colorimetric intent.

Soft Proofing Profiles There are a wide variety of press standards and papers in the world and each combination requires its own ICC profile. Siril cannot provide all of these. Therefore in order to use the soft proofing display mode you will need to provide the appropriate soft proofing ICC profile in the Preferences window.

You may wish to work in a color space other than the inbuilt ones, for example ProPhoto RGB. This is supported, but you will need to provide ICC profiles yourself. The Preferences window provides controls to set a RGB profile and a Gray profile with a matching TRC (essentially, with the same gamma). If you intend to export files in your chosen color space it is recommended that the profile you provide is a V2 ICC profile, for maximum compatibility with other software.

The image shows how to set up a ProPhoto working space using Elle Stone's profiles. The standard gamma of ProPhoto RGB (ROMM) is 1.8, so as well as the ProPhotoRGB profile, we add the Elle Stone Gray profile with gamma = 1.8. You can download all of Elle Stone's profiles here. If you don't have the ProPhotoRGB profile, you can also use Elle Stone's "LargeRGB-elle-v2-g18" profile, which is exactly the same except she has avoided use of the term "ProPhoto RGB" for possible copyright reasons.

#### HDR Display Limitations

Wide gamut display color spaces such as Rec2100 with HLG or PQ TRCs may need greater than 8 bit pixel buffers to display smoothly. Unfortunately, Siril uses the Cairo graphics library for display and Cairo cannot yet process pixel buffers wider than 8 bits. The impact of this is likely negligible for most users. However, if you are lucky enough to be using a >1000nit HDR display capable of displaying wide gamut color spaces and are using certain combinations of third party image and custom monitor profiles then for certain images, you may experience minor color staircasing artefacts. These are only a display issue and won't affect the printed appearance of your image, or even its appearance when transformed to a narrower gamut or viewed on operating systems that do support high bit depth pixelbuffers.

For the moment there isn't anything we can do, however if Cairo adds high bit depth support in the future then there may be room for improvement.

### Soft Proofing

#### Display Soft Proofing

Siril supports soft proofing. This provides a visualisation in your monitor's color space of what your image will look like when printed on a specified press standard. To use output device soft proofing you must specify a soft proofing profile in the Settings dialog.

If no output device profile is specified, or if it is made inactive using the preference check box, soft proofing will use the display profile as the proofing target. This enables the gamut image check in the Image Checks menu, which shows the pixels that are outside your display's color gamut. When gamut checking is active, out-of-gamut pixels will be shown in garish magenta.

#### Press Export

Siril does not support exporting in CMYK formats for print / press purposes. Most photo printing services expect images to be provided in RGB formats and printer drivers do a much better job of converting RGB to a blend of the specific inks used by each printer than a simplistic application-level RGB-to-CMYK conversion. Unless you know exactly why you need to convert an imge to CMYK, you almost certainly don't need to. However, in order to minimize gamut clipping when your printing service converts the image to a CMYK profile for printing, it is worth using a wide gamut RGB profile such as the built-in Rec2020.

### Changes caused by introduction of color management

Siril is now doing color management properly.

That means it wasn't really doing it properly in the past. Siril wasn't unusual in this regard: many programs do not provide color management, but rely on assumptions that everything is done in an sRGB color space. This is fine most of the time, but it led to reports of issues when interchanging images between Siril and properly color-managed graphics applications.

Some users reported that in certain circumstances, images saved by Siril looked different in other software than it did in Siril. For images exported from the new color-managed Siril, that should stop. Images will have a consistent look in all software with a correct color management implementation.

However, if you have stretched images saved as FITS in a previous version of Siril and you open them in color-managed Siril, they may in some circumstances look pale and washed out. Don't panic! Here is an explanation of why it happens, and how it can very easily be avoided / fixed.

#### Why does it happen?

When Siril reads a FITS image without an embedded ICC profile, if the "Auto assign ICC profile" preferences are set it tries to work out whether the image has been stretched or not. It can only do that by checking the HISTORY entries in the FITS header. If it can detect stretch functions have been applied, then it assumes the image has been stretched on a sRGB monitor and applies the relevant profile. However older versions of Siril didn't always add the history for every command, and other software may or may not add history but Siril can't recognise all the stretch keywords that might be used by all other software, so it may be unable to detect that an image has been stretched. The fallback assumption we choose to make is that a FITS image without an embedded ICC profile is linear data.

However, your stretched FITS isn't really linear data. It has been stretched, and you have in effect been stretching it so that it looks right in your monitor's color space, which is probably approximately sRGB.

When this has a linear ICC profile assigned to it, the display routines then apply a color space transform from linear space to the display profile, in effect stretching it a second time.

#### How to prevent it?

This problem will only occur if you have the option "Auto assign preferred color space on load" enabled. If this option is disabled, Siril will not assign any color profile when the file is loaded. You can then assign one manually using the Color Management dialog.

#### How to fix it?

If you loaded an image with the Auto assign option enabled and the wrong profile is assigned (or if the wrong profile is assigned for any other reason, for example if you loaded a fle saved by other software that has assigned a wrong profile) fixing the problem is also very easy. All you need to do is open the image, go to the Color Management dialog and select "sRGB (standard sRGB TRC)" from the drop down selection (or "Gray (sRGB TRC)" if the image is mono). Click the Assign button (not Convert to) and Siril will assign the selected color profile to your image.

That's it. The display will now look correct and when you save the image, and the appropriate color profile will be embedded.

## Последовательности

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

### Набор двух и более файлов FITS

Для изображений FITS Siril нативно использует 32-битные значения с плавающей запятой или 16-битные целочисленные значения без знака; остальные форматы преобразуются автоматически. Для определения набора изображений FITS в качестве последовательности, названия файлов должны следовать определённому шаблону:

    basename$i.[ext]

- basename может быть чем угодно, использующим символы ascii. Удобно, но необязательно, если название оканчивается символом `_`. Оно будет использовано как название последовательности.

- $i это порядковый номер изображения. Он должен быть положительным целым числом и может иметь несколько ведущих нулей.

- [ext] это одно из поддерживаемых расширений, описанных в настройках. По умолчанию — `fit`.

Примечание

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

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

Некоторые операционные системы ограничивают количество одновременно открытых файлов, которые требуются для укладки по медиане или по средней. Для Windows ограничение составляет 2048 файлов. Если у вас много изображений, то необходимо использовать другой тип последовательности, описанный ниже.

### Одиночный файл SER

Формат SER предназначен для хранения в одном файле последовательности из нескольких смежных изображений. Это довольно простой формат, который не содержит такого же количества метаданных, как FITS, но больше, чем обычные ролики. При этом, сжатия данных не происходит. Файлы SER могут содержать изображения с только 8-ю или 16-ю битами на канал. Существует три типа файлов SER, в зависимости от содержимого пикселей: монохромные, CFA или цветные (3 канала).

Примечание

Файл SER можно открыть через Файл и Открыть или используя кнопку Найти последовательности.

По ссылке доступна дополнительная информация о формате SER и почему форматы роликов, подобные несжатому AVI, не должны использоваться в астрономии.

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

Обычные ролики, например AVI или любые другие контейнеры, также в некоторой степени поддерживаются. Поддержка роликов прекращается в пользу SER, но она всё ещё может быть полезна для открытия роликов в Siril для просмотра его содержимого, извлечения отдельных кадров или их конвертации. Ряд операций всё ещё можно выполнить, например укладка по сумме, но медленнее, чем с другими последовательностями. При полной обработке вы столкнётесь с ограничениями и несовместимостью.

### Одиночный файл FITS

Примечание

Также называется кубы FITS, последовательности FITS, или, сокращённо, FITSEQ в Siril.

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

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

Данный формат является альтернативой для однофайловой последовательности SER, с 32 битами на канал и полной поддержкой заголовков.

### Загрузка последовательности

Поиск и очистка последовательности.

Когда рабочая директория корректно установлена, FITS следует правильной номенклатуре, и расширение файлов FITS также правильно установлено, нажмите кнопку Найти последовательности на вкладке Последовательность. Откроется выпадающий список со всеми последовательностями, доступными в директории. Если найдена только одна, то она будет автоматически выбрана и загружена.

### Выбор кадров

Существенным преимуществом Siril являет то, что программа легко манипулирует последовательностями изображений. Когда открыта последовательность, отображается опорное изображение (см. ниже). По умолчанию это первое изображение в последовательности. Однако иногда бывает полезно просмотреть отдельные изображения в последовательности. Это можно сделать с помощью диалога выбора кадров (frame selector), доступного в панели инструментов через кнопку или на вкладке Последовательность через кнопку Открыть список кадров.

Список кадров, в котором можно выбрать кадр, отобразить его, установить его как опорное изображение или исключить.

Совет

Hovering over an image in the frame selector displays the original file name, if saved.

Нажатие на изображении в списке приведёт к его загрузке и отображении в области изображения, при этом сохраняя последовательность как активный объект для обработки. Селектор кадров это более, чем просто инструмент для отображения изображений, он также может использоваться для исключения изображений из последовательности вручную или визуализации тех изображений, которые всё ещё включены. Кроме того, с помощью этого инструмента можно отобразить значения качества изображения и сдвиг между изображениями, если они были вычислены, а также для изменения опорного изображения. Обратите внимание, что более подробную информацию о качестве изображения можно просмотреть на вкладке График.

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

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

В панели заголовка окна расположены следующие элементы для управления свойствами последовательности:

- Через выпадающее меню можно изменить канал, для которого отображаются данные регистрации (качество, сдвиг), если таковые имеются.

- Первая кнопка на панели инструментов устанавливает все изображения в последовательности как исключённые из плана обработки.

- Вторая — устанавливает их как включённые в план обработки.

- Третья кнопка включает или исключает выбранные изображения из списка (множественное выделение возможно с использованием `Ctrl` или `Shift`) последовательности.

- The last button can be deactivated to hide the framing indicator over registered images.

Framing indicator

The red frame shows the trace of the reference frame over each image of the sequence. The filled circle in one corner indicates the position of the top-left corner of the reference image. For instance, for the right image above, the framing indicator circle is at the bottom right, showing that there has been a meridian flip between this image and the reference shown on the left.

The red circle/green cross close to the center show the position of the center of the reference image and of the current image respectively. This enables to visualize the shift between the two images.

Примечание

Since Siril 1.3.1, the color of the framing indicator is different whether the registration information is just pure shift (in blue) or more complex transformations (in red for linear transformations, in green when distortions are included). For previous versions, it was always red, irrespective of the transformation.

- Флажок Опорное изображение используется для установки опорного изображения последовательности. Все последовательности должны иметь такое изображение. По умолчанию или если не установлено, в качестве такового используется первое изображение в последовательности.

- В заключение, поле поиска позволяет найти изображения по их названиям.

Имеется возможность сортировки изображений нажатием на заголовок колонки. Таким образом вы можете отсортировать изображения по их номеру или FWHM. Последние весьма полезно, чтобы взглянуть на лучшие и худшие изображения.

#### Команды работы с последовательностями

Командная строка Siril

    setref sequencename image_number

Устанавливает опорное изображения для последовательности, указанной в первом аргументе. image_number это порядковый номер изображения в последовательности (начинающийся с 1), а не номер в названии файла

Командная строка Siril

    select sequencename from to

Эта команда позволяет выполнить массовый выбор изображений в последовательности sequencename (начиная с from и заканчивая to включительно). Это выделение для дальнейшей обработки.
См. также UNSELECT
Ссылка: unselect

Командная строка Siril

    unselect sequencename from to

Позволяет массовую отмену выбора изображений в последовательности sequencename (начиная с from и заканчивая to включительно). См. SELECT
Ссылка: select

### Экспорт последовательности

Укажите название и исходящий формат для экспорта последовательности.

Инструмент Экспортировать позволяет вам экспортировать последовательность в несколько форматов. Это особенно полезно, если вы хотите экспортировать изображения с учетом информации о регистрации, содержащейся в файле `seq`, с дополнительной обрезкой и нормализацией.

С помощью функции экспорта последовательности вы можете выбрать последовательность для экспорта, формат файла и уровень сжатия для видеоформатов. Функция экспорта последовательности Siril поддерживает широкий выбор форматов изображений, включая FITS (отдельный файл FITS или последовательность файлов FITS), TIFF, SER, AVI, MP4 и WEBM. Эта функция может пригодиться при создании роликов с помощью интервальной съёмки (timelapse).

Флажок Нормализовать изображения позволяет нормализовать изображения по отношению к опорному. Используется нормализация, аналогичная выполняемой во время укладки, со следующими установками: Аддитивная с масштабированием, и отключённой Быстрой нормализацией.

Более того, есть возможность использовать критерии фильтрации изображений, чтобы исключить или оставить изображения на основе их качества. Кнопка Перейти на вкладку «Укладка» добавлена здесь, чтобы легко перейти на вкладку, предоставляющую эти критерии.

### Информация о последовательности

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

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

Меню очистки файла последовательности.

Командная строка Siril

    seqclean sequencename [-reg] [-stat] [-sel]

Эта команда очищает выделение, данные регистрации и/или статистику, сохранённые для последовательности sequencename.
Вы можете очистить только данные выделения, регистрации и/или статистику, используя опции -sel, -reg или -stat, соответственно. Если никакой опции не передано, очищаются все данные

## Определения и рабочий процесс

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

Предобработка это первый шаг в работе с «сырыми» астрофотографическими данными, включающий в себя подготовку этих данных для последующей обработки. Обычно в этот шаг входят вычитание темного тока, коррекция плоского поля и других основных проблем, таких, как удаление горячих и холодных пикселей.

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

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

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

## Предобработка

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

На правой панели расположены вкладки, полезные в ходе предобработки. Они расположены таким образом, чтобы использовать их слева направо на протяжении всего процесса, за исключением создания мастер-файлов. Эти вкладки доступны с помощью клавиш `F1` – `F7`.

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

На Рис. 1 представлен результат конвертации "сырого" изображения с цифровой камеры. Отметьте наличие пыли, похожую на тёмные пятна. На Рис. 2 представлено изображение после калибровки темновым мастер-кадром (master dark), мастер-кадрами шума считывания (master bias) и плоского поля (master flat), демонстрирующее полное удаление этих пятен и более чистый сигнал. Рис. 3 — это же изображение после дебайеризации, демонстрирующее цвет и имеющее сильный зелёный оттенок из-за более высокой чувствительности зелёных фотоэлементов в сенсорах. В заключение, Рис.4 это результат укладки с балансировкой каналов.

### Конвертация

Siril в своей работе использует 32-битные файлы FITS, а так же в формате SER. Следовательно, файлы в любых других форматах сначала необходимо конвертировать в эти форматы, чтобы с ними мог работать Siril и мог создать последовательность. Типы поддерживаемых файлов указаны на вкладке и это зависит от того, каким образом Siril был скомпилирован.

Siril предоставляет вкладку «Конвертация», разделённую на две панели. Верхняя панель позволяет загрузить исходные файлы, которые вы хотите конвертировать.

Панель исходных файлов на вкладке «Конвертация».

Управление этими файлами осуществляется через небольшую панель инструментов .

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

  Совет

  Доступна возможность перетаскивать файлы (drag and drop) непосредственно в область исходных файлов. Она подсвечивается, когда файлы располагаются над ней.

- Вторая кнопка, -, позволяет удалять выделенные файлы. Одновременно могут быть удалены несколько файлов. Они удаляются не с жёсткого диска, а лишь из области конвертации.

- Последняя кнопка позволяет удалить все загруженные файлы.

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

В разделе назначение можно указать название последовательности, которая будет создана после конвертации файлов.

Панель «Назначение» на вкладке «Конвертация».

Таким образом, для последовательности `basename`, названия файлов после конвертации будут иметь вид

    basenameXXXXX.[ext]

Расширение итоговых файлов определяется в настройках. Индекс `XXXXX` по умолчанию начинается с `00001` для первого изображения. Тем не менее можно указать другое число, с которого начинать нумерацию файлов. Это может быть полезно в случае нескольких съёмочных сессий, которые имеют одинаковые мастер-файлы. Через выпадающее меню можно выбрать следующие варианты конвертации файлов:

- Изображения FITS

- Последовательность SER

- Последовательность FITS

Подробности об этих форматах файлов доступны в разделе последовательности данной документации.

Технически, если входящие файлы сохранены в формате FITS, то нет необходимости их конвертировать. Однако может потребоваться сделать это, чтобы переименовать файлы для создания последовательности и её дальнейшей обработки в Siril. Чтобы не заполнять жёсткий диск без необходимости, имеется возможность установить флажок Символ. ссылка. В этом случае вместо копирования файлов FITS, будут созданы символические ссылки на эти файлы. Эта опция, таким образом, доступна только когда исходящие файлы являются изображениями FITS.

Примечание

Включение символических ссылок отключает сжатие.

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

Для Microsoft Windows, использование символических ссылок требует включения режима разработчика.

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

Если при работе в GNU/Linux вы видите ошибку Symbolic link Error: Function not implemented, это может означать, что вы пытаетесь создать символическую ссылку в директории на файловой системе, где символические ссылки не допускаются.

Когда исходящим форматом выбран SER или последовательность FITS, доступна опция Множественные последовательности. Установите этот флажок, чтобы создать несколько файлов последовательности вместо одиночного файла SER или FITS для всех входящих элементов. Используйте это, если входящие элементы (файлы последовательности, такие как ролики, SER или кубы FITS) имеют разный размер изображения или не должны обрабатываться вместе.

Последняя опция, Дебайеризация, позволяет пользователю выполнить дебайеризацию изображений в ходе конвертации. Она не должна использоваться если обрабатываются изображения шума считывания (bias), темновые изображения (dark) или изображения плоского поля (flat), а также отдельные субэкспозиции (light images), предназначенные для предобработки. Действительно, принимая во внимание шаблон Байера, полученное из «сырого» (RAW) изображения RGB-изображение является интерполированным изображением. Как следствие, предобработка интерполированных данных даст неверные результаты. В результате конвертации «сырых» файлов, полученных с помощью цветного (OSC) сенсора, будут монохромные CFA (массив цветных светофильтров) изображения FITS. В отличие от RGB-изображений, CFA-изображения представляют все данные сенсора с шаблоном Байера. Ниже приведён фрагмент CFA-изображения, на котором виден шаблон Байера (в данном случае — RGGB).

Шаблон Байера, показанный на изображении CFA (Color Filter Array).

В заключение, кнопка Конвертировать, как понятно из её названия, позволяет начать конвертацию файлов.

Примечание

«Сырые» изображения с цифровых зеркальных камер зависят от производителя и, как привило, это закрытые форматы. Поэтому декодирование таких файлов — сложная задача, которая должна выполняться с использованием специального кода. Для Siril задачу конвертации «сырых» изображений выполняет LibRaw. Фактически, если формат файлов, обычно новый, не читается, необходимо посмотреть на сайте LibRaw, поддерживается ли этот формат. Если это не так, предоставление необработанного файла команде разработчиков может помочь добавить его поддержку. Однако также возможно, что версия LibRaw, встроенная в пакет Siril, не является самой последней. В этом случае вам необходимо либо дождаться нового выпуска, либо скомпилировать исходный код напрямую.

#### Файл соответствий

После конвертации файлов каждый раз создаётся дополнительный файл, чьё название заканчивается на `_conversion.txt`. В этом файле содержится информация о соответствии между входящими изображениями и изображениями последовательности, полученной в ходе конвертации.

Командная строка Siril

    convert basename [-debayer] [-fitseq] [-ser] [-start=index] [-out=]

Конвертирует все изображения, находящиеся в текущей рабочей директории, из форматов, поддерживаемых Siril, в последовательность изображений FITS (несколько файлов), либо в последовательности FITS или SER (одиночный файл), если переданы аргументы -fitseq или -ser, соответственно. Аргумент basename указывает базовое название новой последовательность, за которым будут добавлены порядковый номер и расширение.
Для изображений FITS Siril будет пытаться создать символическую ссылку; если это невозможно, то файлы будут скопированы. Опция -debayer применяет дебайеризацию к входящим изображениям CFA. В этом случае символические ссылки не создаются.
Опция -start=index устанавливает порядковый номер, с которого начинается нумерация. Это удобно для продолжения существующей последовательности (не используется с -fitseq or -ser. В этом случае убедитесь, что вы очистили или удалили целевой файл .seq, если он существует).
Опция -out= изменяет целевую директорию на указанную в аргументе.
См. также CONVERTRAW и LINK
Ссылки: convertraw, link

Командная строка Siril

    convertraw basename [-debayer] [-fitseq] [-ser] [-start=index] [-out=]

Аналогична команде CONVERT, но конвертирует только RAW-изображения с цифровых зеркальных камер (DSLR), найденные в текущей рабочей директории
Ссылка: convert

### Калибровка

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

#### Мастер-кадры

Настройки мастер-кадров на вкладке «Калибровка»

##### Мастер-кадры шума считывания

Согласно Словарю ПЗС-терминологии, изображение шума считывания это:

Уровень шума считывания ПЗС-матрицы это искусственное привнесённое электронное смещение, гарантирующее, что аналого-цифровой преобразователь (АЦП) всегда получает положительный сигнал. Все данные с ПЗС-матриц имеют подобное смещение, которое необходимо удалить, если данные должны представлять истинные значения, записанные каждым пикселем.

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

Совет

Кадры шума считывания должны сниматься с закрытым затвором и наиболее короткой из возможных выдержкой. В основном это соответствует выдержке в 1/4000 с для современных цифровых зеркальных фотокамер.

Пример кадра шума считывания, полученный с помощью Canon EOS 1100D. Не полагайтесь на слабо заметный сигнал смещения — изображение было автоматически растянуто, а различия в амплитуде сигналов сильно преувеличены.

Синтетический кадр шума считывания

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

В ходе предобработки кадров плоского поля вместо указания мастер-кадра шума считывания, вы можете написать выражение в селекторе директорий, подобное этому:

    =2048

либо, если заголовок FITS содержит ключевое слово `OFFSET`,

    =64*$OFFSET

Символы `=` и `$` — обязательны. Уровень должен быть указан в единицах ADU (не значения с плавающей запятой, даже если работа ведётся в 32-х битах).

В переводе на язык сценариев это выглядит так:

    preprocess flat -bias="=64*$OFFSET"

Значение 2048 взято в качестве примера для камер, чей мастер-кадр шума считывания имел бы медианное значение 2048. Обычно для цифровых зеркальных камер это значение пропорционально корню из 2. В нашем примере: \(2048 = 2^{11}\).

Подробности описаны в руководстве по синтетическим кадрам шума считывания.

##### Темновой мастер-кадр

Темновые кадры содержат тепловой шум, связанный с сенсором, который пропорционален температуре и длительности выдержки. Следовательно, эти кадры должны иметь близкую к отдельным субэкспозициям (light frames) температуру. По этой причине темновые кадры делаются в конце или середине съёмочной сессии.

Чтобы использовать темновой мастер-кадр в Siril, нажмите на кнопку справа от текстового поля ввода и в открывшемся диалоге нужный мастер-кадр. Более того, вы можете использовать мастер-кадр из библиотеки, указанный в настройках.

Совет

Темновые кадры должны сниматься с теми же выдержкой и значениями ISO/усиления (gain), что и полученные раннее отдельные субэкспозиции, но затвор при этом должен быть закрыт.

Пример темнового кадра, полученный с помощью Canon EOS 1100D. Выдержка 300 с, ISO 800.

Анимация, демонстрирующая удаление теплового сигнала благодаря вычитанию темнового кадра.

Оптимизация темновых кадров

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

1. С помощью опции Авт. оценка вычитание темного кадра можно оптимизировать таким образом, чтобы минимизировать шум на итоговом изображении (отдельная субэкспозиция минус темновой кадр) применив коэффициент к темновому кадру.

2. Второй способ, Экспозиция, основан на длительности экспозиции изображений, если она была указана в ключевых словах FITS.

Вот пример ситуации, когда необходимо использование этой опции. Изображения были получены с помощью камеры FLI ProLine 4240. Использованный темновой мастер-кадр с выдержкой 600 с взят из библиотеки. Каждая субэскпозиция, с другой стороны, получена с выдержкой 60 с. Темновой мастер-кадр имеет характерную и довольно неприглядную сигнатуру сигнала: наличие в камере четырёх предусилитей послужило причиной такого сигнала. Этот дефект так же присутствует и на изображении галактики и калибровка темновым кадром должна быть тщательно выполнена, чтобы получить изображение без каких-либо дефектов.

Отдельная субэкспозиция и темновой мастер-кадр, полученные на камере FLI ProLine 4240. Вы можете видеть четыре хорошо выраженные полосы, вызванные предусилителями, как на отдельной субэскпозиции, так и на мастер-кадре. Чтобы подчеркнуть имеющиеся дефекты, изображения представлены в режиме выравнивания гистограммы.

Однако в этом случае если мы используем традиционный подход, результат калибровки будет неудовлетворительным. Это связано с тем, что темновой мастер-кадр снят с другой экспозицией.

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

В этом случае решение состоит в том, чтобы вычесть шум считывания из темновых кадров, затем интегрировать эти изображения и установить флажок Оптимизация темновых кадров. Siril автоматически вычислит коэффициент, который необходимо применить к темновому кадру. В данном случае коэффициент 0.110 достаточно согласованный, поскольку он соответствует 10-кратной разнице между темновыми кадрами и изображениями (\(60 / 600 = 0.1\)).

В данном случае вкладка "Калиборовка" должна быть заполнена таким образом. Мастер-кадр плоского поля и темновой мастер-кадр были откалиброваны кадром шума считывания.

    10:34:58: Preprocessing...
    10:34:58: Normalisation value auto evaluated: 0.313
    10:34:58: 13230 corrected pixels (0 + 13230)
    10:34:59: Dark optimization of image 0: k0=0.110
    10:34:59: Saving FITS: file pp_M51SDSSr_00002.fit, 1 layer(s), 2048x2048 pixels, 32 bits

Благодаря оптимизации темновых кадров, калибровка прошла корректно. Единственным видимым остатком является градиент (CCD fringing) в ближнем ИК-диапазоне, который не удаляется калибровкой. Чтобы подчеркнуть имеющиеся дефекты, изображение представлено в режиме выравнивания гистограммы.

##### Мастер-кадр плоского поля

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

Чтобы использовать мастер-кадр плоского поля в Siril, нажмите на кнопку справа от текстового поля ввода и в открывшемся диалоге нужный мастер-кадр. Более того, вы можете использовать мастер-кадр из библиотеки, указанный в настройках.

Пример изображения плоского поля, полученный с помощью Canon EOS 1100D. Хорошо видна пыль, присутствующая в оптическом тракте и, особенно, на сенсоре. Хорошо видно и виньетирование (затенение краёв изображения). Эти эффекты усилены применением режима просмотра. Также на этом изображении, чтобы избавиться от шаблона Байера, использована команда grey_flat.

Выравнивание CFA

Опция Выровнять CFA выравнивает среднюю интенсивность слоёв RGB на изображении CFA. Это эквивалентно применению команды grey_flat.

Командная строка Siril

    grey_flat

Выравнивает среднюю интенсивность слоёв RGB в загруженном изображении CFA. Этот же процесс применяется к кадрам плоского поля во время калибровки, когда используется опция «Выровнять CFA»

Автоматическая оценка значения нормализации

Если установлен флажок Автоматически оценить значение нормализации, Siril автоматически оценит значение нормализации. Это среднее значение мастер-кадра плоского поля, откалиброванного мастер-кадром шума считывания. В противном случае будет использовано значение, указанное в текстовом поле ввода.

#### Калибровка отдельных субэкспозиций

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

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

Калибровка ни в коем случае не уменьшает шум изображений. Напротив, она усиливает его. Вот почему важно получить как можно больше калибровочных изображений, например, темновых, чтобы свести к минимуму количество шума на изображениях.

Исправление артефактов автофокуса X-Trans

Опция Исправление артефактов автофокуса X-Trans позволяет исправить пиксели системы автофокусироваки Fujifilm X-Trans. Из-за особенностей фазовой системы автофокусировки, области, используемые для автофокусировки получают немного меньше света, чем соседние участки. Камера компенсирует это и увеличивает значения в областях для автофокусировки, что приводит к отчётливому квадрату в центре темновых кадров и кадров шума считывания. Эта опция не влияет на шаблон Байера. Она должна использоваться только в том случает, если загружен и используется мастер-кадр шума считывания или темновой мастер-кадр.

Артефакт X-Trans, исправленный алгоритмом Siril

##### Косметическая коррекция

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

Использовать темновой мастер-кадр

Это метод требует наличия темнового мастер-кадра. Siril будет искать пиксели, отклонение которых от медианы превышает стандартное отклонение \(\sigma\) в x раз. Это значение можно настроить как для горячих, так и для холодных пикселей.

Возможно оценить число пикселей, которые будут исправлены на откалиброванном изображении нажав кнопку Оценка. Если количество пикселей, которые будут исправлены, отображается красным цветом, это значит что их число превысило 1% от общего количества пикселей на изображении. В этом случае необходимо увеличить значение коэффициента или снять соответствующий флажок. Если изображения получены на цветной сенсор, то необходимо установить флажок Данные CFA.

Использовать карту дефектных пикселей

Другой метод использует файл, содержащий координаты дефектных пикселей. Это простой текстовый файл, который изначально может быть создан командой find_hot.Последняя строка была добавлена вручную и исправляет дефектный столбец в положении \(x = 1527\).

    P 325 2855 H
    P 825 2855 C
    P 838 2855 H
    P 2110 2855 H
    P 2702 2855 H
    P 424 2854 H
    C 1527 0 H

Командная строка Siril

    find_hot filename cold_sigma hot_sigma

Сохраняет в рабочей директории файл filename (текстовый формат), содержащий координаты пикселей, с интенсивностью в hot_sigma раз выше и cold_sigma ниже стандартного отклонения, извлечённые из загруженного изображения. Обычно мы используем эту команду для темнового мастер-кадра. Команда COSME может применить этот список дефектных пикселей к загруженному изображению. См. также SEQCOSME для применения его к последовательности
Ссылки: cosme, seqcosme
Строки вида `P x y тип` исправляют пиксель с координатами x, y. Тип это произвольный символ (C или H), указывающий Siril холодный данный пиксель или горячий. Эта строка создаётся командой FIND_HOT, но вы так же можете добавить строки вручную:
Строки `C x 0 тип` исправляют дефектный столбец с координатами x.
Строки `L y 0 тип` исправляют дефектную строку с координатами y.

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

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

##### Итоговая последовательность

В данном разделе сгруппированы настройки, которые применимы к результату калибровки.

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

- Выпадающий список определяет тип итоговой последовательности.

  - Изображения FITS: каждой изображение в отдельном файле FITS.

  - Последовательность SER: один файл SER для всей последовательности (ограничение — 16 бит на канал).

  - Последовательность FITS: вся последовательность сохраняется в один файл FITS.

- Последняя опция, Дебайеризация перед сохранением. Установите этот флажок, если хотите применить дебайеризовать ваши изображения сразу после того, как они были откалиброваны. Благодаря этому вы можете избежать дополнительного шага, который может занять некоторое время.

##### Командная строка

Командная строка Siril

    calibrate sequencename [-bias=filename] [-dark=filename] [-flat=filename] [-cc=dark [siglo sighi] || -cc=bpm bpmfile] [-cfa] [-debayer] [-fix_xtrans] [-equalize_cfa] [-opt[=exp]] [-all] [-prefix=] [-fitseq]

Калибрует последовательность sequencename, используя кадры шума считывания, темновые кадры и кадры плоского поля, указанные в аргументе.
Вместо изображения, можно указать однородный уровень шума считывания, введя в кавычках выражение, начинающееся со знака =. Например, -bias="=256" или -bias="=64*$OFFSET".
Косметическая коррекция по умолчанию отключена. Если вы хотите применить коррекцию, это необходимо указать с помощью опции -cc=.
Вы можете использовать -cc=dark для определения горячих и холодных пикселей по темновому мастер-кадру, который должен быть указан с помощью опции -dark=. Опционально можно указать значения холодных и горячих пикселей с помощью siglo и sighi, соответственно. Значение 0 отключает коррекцию. Если значения σ не указаны, то будет применено только определение горячих пикселей со значением σ равным 3.
В качестве альтернативы, для указания пикселей, которые необходимо скорректировать, можно использовать опцию -cc=bpm за которой следует путь к вашей карте дефектных пикселей. Пример файла может быть получен с помощью команды find_hot, применённой к темновому мастер-кадру.
К цветным изображениям в формате CFA применимы три опции: -cfa для целей косметической коррекции, -debayer для дебайеризации изображений перед их сохранением и -equalize_cfa для выравнивания средней интенсивности слоёв RGB в мастер-кадре плоского поля, чтобы избежать тонирования откалиброванного изображения.
Опция -fix_xtrans используется при работе с файлами X-Trans, применяя коррекцию к темновым кадрам и кадрам шума считывания для удаления квадратного рисунка в зоне автофокуса.
Так же можно оптимизировать вычитание темнового кадра с помощью -opt, которая требует указания мастер-кадра шума считывания и темнового мастер-кадра, и автоматически вычисляет коэффициент, применяемый к темновому кадру, либо вычисляет этот коэффициент благодаря ключевому слову exposure, переданному с помощью -opt=exp.
По умолчанию, кадры, отмеченные как исключённые, не обрабатываются. С помощью аргумента -all можно принудительно обработать все кадры, даже отмеченные как исключённые.
Название итоговой последовательности будет начинаться с префикса "pp_", если не указан иной с помощью опции -prefix=.
Если передана опция -fitseq, итоговая последовательность будет последовательностью FITS (одиночный файл)

Командная строка Siril

    calibrate_single imagename [-bias=filename] [-dark=filename] [-flat=filename] [-cc=dark [siglo sighi] || -cc=bpm bpmfile] [-cfa] [-debayer] [-fix_xtrans] [-equalize_cfa] [-opt[=exp]] [-prefix=]

Калибрует изображение imagename, используя кадры шума считывания, темновые кадры и кадры плоского поля, указанные в аргументе.
Вместо изображения, можно указать однородный уровень шума считывания, введя в кавычках выражение, начинающееся со знака =. Например, -bias="=256" или -bias="=64*$OFFSET".
Косметическая коррекция по умолчанию отключена. Если вы хотите применить коррекцию, это необходимо указать с помощью опции -cc=.
Вы можете использовать -cc=dark для определения горячих и холодных пикселей по темновому мастер-кадру, который должен быть указан с помощью опции -dark=. Опционально можно указать значения холодных и горячих пикселей с помощью siglo и sighi, соответственно. Значение 0 отключает коррекцию. Если значения σ не указаны, то будет применено только определение горячих пикселей со значением σ равным 3.
В качестве альтернативы, для указания пикселей, которые необходимо скорректировать, можно использовать опцию -cc=bpm за которой следует путь к вашей карте дефектных пикселей. Пример файла может быть получен с помощью команды find_hot, применённой к темновому мастер-кадру.
К цветным изображениям в формате CFA применимы три опции: -cfa для целей косметической коррекции, -debayer для дебайеризации изображений перед их сохранением и -equalize_cfa для выравнивания средней интенсивности слоёв RGB в мастер-кадре плоского поля, чтобы избежать тонирования откалиброванного изображения.
Опция -fix_xtrans используется при работе с файлами X-Trans, применяя коррекцию к темновым кадрам и кадрам шума считывания для удаления квадратного рисунка в зоне автофокуса.
Так же можно оптимизировать вычитание темнового кадра с помощью -opt, которая требует указания мастер-кадра шума считывания и темнового мастер-кадра, и автоматически вычисляет коэффициент, применяемый к темновому кадру, либо вычисляет этот коэффициент благодаря ключевому слову exposure, переданному с помощью -opt=exp
Название итоговой последовательности будет начинаться с префикса "pp_", если не указан иной с помощью опции -prefix=

#### Как работает коррекция кадрами плоского поля

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

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

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

\begin{align} L &= a - b \times \left(x-\frac{W}{2}\right)^2 + d_\text{rate} \times t_{\text{lights}} +o \\ D &= d_\text{rate} \times t_{\text{lights}} + o \\ F &= K\left(a - b \times \left(x-\frac{W}{2}\right)^2\right) + o \\ O &= o \end{align}

где, \(L\) это отдельные субэкспозиции, \(D\) темновые кадры, \(F\) кадры плоского поля и \(O\) кадры шума считывания.

Для субэкспозиций \(L\) первая часть это пространственный компонент освещённости, т.е. \(a - b(x-\frac{W}{2})^2\). Здесь нами выбрана квадратичная вариация с максимальным значением \(a\) в центре кадра шириной \(W\), даже примерно в центре сенсора. Это не точная пространственная форма виньетирования, но достаточно хорошее приближение, чтобы понять, как это работает. В дополнение к этому пространственному члену освещённости, присутствует член, изменяющийся в зависимости от длительности экспозиции, обычно называемый темновым током (\(d_\text{rate} \times t_\text{lights}\)), который, однако, не зависит от положения пикселя на сенсоре. И, в заключение, "ступенька", т.е. шум считывания. Он присутствует на всех снятых кадрах, поэтому мы обнаружим его во всех уравнениях.

Темновые кадры \(D\) не были освещены, они содержат только член темнового тока, с такой же интенсивностью, как и субэкспозиции (lights), поскольку были сняты с такой же выдержкой и таким же шумом считывания (offset).

Кадры плоского поля \(F\) также имеют пространственный член, пропорциональный таковому, обнаруживаемому на субэкспозициях. Коэффициент \(K\), больший 1, просто демонстрирует что их интенсивность выше. Чтобы записать это, нам необходимо только принять, что пиксели линейно реагируют на число собираемых фотонов, что разумно. Мы могли бы также записать значение темнового тока, пропорциональное времени экспозиции изображений плоского поля. Но если это время экспозиции незначительно, мы можем предположить, что и значение темнового тока невелико. Если это не так, то это означает, что вам нужно снимать темновые изображения плоского поля или, по крайней мере, оценить их уровень.

В заключение кадры шума считывания \(O\) это просто значение уровня шума считывания.

Чтобы показать эти уровни, мы построили эти выражения в виде кривых по отношению к положению на кадре. Мы рекомендуем вам сделать то же самое и поэкспериментировать с входящими данными.

- \(a = 200 \text{[ADU]}\)

- \(b = 0.0003 \text{[ADU/px}^2\text{]}\)

- \(d_\text{rate} = 1 \text{[ADU/s]}\)

- \(t_{\text{lights}} = 10 \text{[s]}\)

- \(o = 2048 \text{[ADU]}\)

- \(W = 1000 \text{[px]}\)

Значения (в единицах ADU) \(L\), \(D\) и \(O\) приведены на левой оси, а значения \(F\) — на правой.

Теперь — что означает калибровка субэкспозиций? Когда вы калибруете свои изображения, вы выполняете следующую операцию:

\[L_c = \dfrac{L -D}{F-O}.\]

Член \(F-O\) это кадр плоского поля из которого вычтен уровень шума считывания (был ли это мастер-кадр или просто заданный уровень). Эта операция выполняется перед укладкой мастер-кадра плоского поля. Член \(L-D\) это изображение из которого вычтены уровни темнового тока и шума считывания, т.е. темновой мастер-кадр. Если вы замените их выражениями, приведёнными выше, то вы придёте к следующему:

\[L_c = \dfrac{1}{K}.\]

Член пространственной вариации исчез, теперь вы выровняли поле своих изображений! Получение разумного значения в ADU (а не \(1/K\)) это то, что делает Siril, когда вы ставите флажок Автоматическая оценка значения нормализации на вкладке Калибровка.

Вы можете попробовать любые иные комбинации — никакая другая не избавит от пространственной вариации.

Чтобы проиллюстрировать это, мы отобразили на графике результат различных комбинаций. Чтобы привести всё к одному масштабу, все результаты нормализованы таким образом, чтобы они имели одинаковую интенсивность, равную 1, в середине кадра. Приведены результаты следующих тестов:

- \(L-D\) : вы сняли лишь темновые кадры.

- \(L/F\) : вы сняли лишь кадры плоского поля.

- \(L/(F-O)\) : вы сняли только кадры плоского поля и скорректировали их кадрами шума считывания (либо мастер-кадр, либо синтетический).

- \((L-O)/(F-O)\) : у вас есть лишь кадры плоского поля, скорректированные кадрами шума считывания. Но вы также вычли значение шума считывания из ваших субэкспозиций.

- \((L-D)/F\) : вы сняли кадры плоского поля и темновые кадры, но не сняли кадров шума считывания.

- \((L-D)/(F-O)\) : вы сделали всё по учебнику.

Вы можете отметить что:

- \(L-D\) очевидно демонстрирует, что коррекция виньетирования отсутствует.

- И \(L/F\), и \(L/(F-O)\) демонстрируют чрезмерную коррекцию или обратное виньетирование.

- Результат, близкий к оптимальному демонстрируют \((L-D)/F\) и \((L-O)/(F-O)\), давая почти плоское поле. Это, конечно же, зависит от величины темнового тока вашего сенсора и виньетирования в оптическом тракте.

- Эталонная калибровка дает плоское поле.

Из данных выше можно сделать следующие выводы:

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

- Если у вас нет времени снимать серию темновых кадров, вероятно, стоит снять хотя бы один, измерить его медиану и вычесть это (синтетическое) значение из ваших субэкспозиций. Это, конечно, не исправит засветку от усилителя или не позволит скорректировать горячие пиксели, но ваши изображения, по крайней мере, будут ровными!

Что с пылью...?

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

Как вы видите, комбинация только \((L-D)/(F-O)\) позволяет избавиться от этого.

Для дальнейшей иллюстрации выражений и кривых, приведённых выше, нет ничего лучше, чем реальный пример. Все приведенные ниже фотографии любезно предоставлены Г. Аттардом (G. Attard).

\(L-D\)

\(L/F\)

\(L/(F-O)\)

\((L-O)/(F-O)\)

\((L-D)/(F-O)\)

#### Устранение проблем при калибровке

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

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

Прежде всего, инструмент статистики это бесценное подспорье для понимания проблем и используется в большинстве случаев для устранения неполадок.

- При анализе статистики темнового мастер-кадра нужно убедиться что он чёрный. Это связано с тем, что темновые изображения получаются с закрытой крышкой, и нет причин, по которым какой-то из фотопримёмников должен быть в привилегированном положении. Изображение должно выглядеть так, как если бы оно было снято на монохромный сенсор, при этом шаблон Байера не должен быть виден. Ниже приведен пример когда темновой мастер-кадр получил нежелательный для этого типа изображений цветовой баланс. В результате он больше не чёрный и виден шаблон Байера. Такой темновой кадр непригоден для использования и должен быть переделан.

  Внимательное изучение статистики изображения показывает, что медианные значения каждого канала отличаются, хотя они должны быть идентичны и почти идентичны. Кроме того, чётко виден шаблон Байера.

- В ходе ночной сессии очень важно, чтобы значение шума считывания (OFFSET) было одинаковым для всех изображений. В частности, обязательно иметь одинаковые установки для пар темновые кадры/субэкспозиции и кадры шума считывания/кадры плоского поля. Невыполнение первого условия может привести к потере важных данных (обрезка пикселей в левой части гистограммы). Несоблюдение обоих условий, скорее всего, приведет к тому, что ваши изображения не будут иметь правильного плоского поля (см. выше).

- Проверьте уровни темновых кадров и субэкспозиций: медианное значение субэкспозиций должно быть существенно выше, чем у темновых кадров, чтобы избежать изображений с большим количеством пикселей с отрицательными значениями.

- Если вы использовали одинаковые значения для кадров темнового тока и кадров шума считывания, их медианные значения должны быть очень близки (по крайней мере для охлаждаемой камеры). В противном случае это может означать наличие засветки (light leakage), которая повлияла на кадры темнового тока (кадры шума считывания значительно меньше подвержены этому, поскольку снимаются с гораздо более короткой выдержкой). Поэтому всегда проверяйте свои темновые мастер-кадры на наличие градиента или более яркого пятна в центре. Не следует это путать с засветкой от усилителя, которая является нормальной для некоторых камер.

- Мы настоятельно рекомендуем получать астрофотографии одним тем же способом: одно и тоже программное обеспечение / один и тот же компьютер или мини-ПК (astrobox) / один и тот же формат изображений. Фактически, каждая программа может использовать свои собственные правила записи (writing conventions) и изображения могут быть более несовместимы друг с другом. Мы часто слышим, что пользователи делают все свои снимки с помощью мини-ПК, а на следующий день делают кадры плоского поля непосредственно с помощью своей зеркальной камеры. В этом случае изображения часто имеют разный размер, что делает калибровку невозможной.

- Часто возникают ошибки при выполнении сценариев в случае наличия изображений в формате JPG в папках со входящими изображениями (darks/biases/flats/lights). В большинстве случает программное обеспечение сохраняет такие снимки для более быстрого просмотра. Следствием такого рода ошибок является сбой и остановка калибровки с сообщением, что изображения имеют разный размер. Поскольку изображения в формате JPG уже дебайеризованы, они имеют три канала, в то время как изображения RAW имеют только один. Удаление изображений JPG из папок со входящими изображениями исправляет эту ошибку.

- Убедитесь, что изображения плоского поля непереэкспонированы. Изображения плоского поля используются для коррекции различий чувствительности датчика от пикселя к пикселю. Если некоторые пиксели переэкспонированы, их реальная чувствительность может быть представлена неточно, что приведет к неправильным корректировкам в процессе калибровки. Переэкспонированный кадр плоского поля гарантирует неудачную калибровку.

  Чтобы проверить наличие переэкспонированных пикселей, вы можете загрузить одиночный кадр плоского и с помощью меню Обработка ‣ Преобразование гистограммы... отобразить гистограмму этого кадра. На изображение ниже показано, что один из пиков гистограммы обрезан справа. Разумным подходом будет каждый раз проверка того, что правая граница пика, наиболее удаленная вправо, не превышала 80%, чтобы избежать попадания в зону, где ваш сенсор может стать нелинейным.

  Обрезка кадра плоского поля. Когда это происходит, вам следует уменьшить усиление (gain) или длительность экспозиции.

### Регистрация

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

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

Можно выбрать канал в котором будет осуществлена регистрация. По умолчанию используются зелёный для цветных изображений и светимость — для монохромных. Знак (*), появляющийся после названия канала, означает, что данные регистрации для этого слоя уже доступны. При обработке изображений данные регистрации берутся из слоя по умолчанию, если он доступен (для RGB-изображений: зелёный, в противном случае резервный вариант — синий, затем красный).

#### Теория

##### Процесс регистрации

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

1. Определение деталей, которые должны совпадать на всех изображениях

2. Вычисление преобразований между каждым изображением и опорным

3. Применение вычисленного преобразования каждому изображению, чтобы получить новое изображение

В зависимости от выбранного метода регистрации, эти 3 шага происходят (или нет) в рамках одного процесса. Siril использует наиболее разумные значения по умолчанию (выбирая, применять вычисленное преобразование или нет) в зависимости от выбранного метода регистрации, но понимание внутреннего механизма может помочь вам изменить это поведение в соответствии с вашими потребностями.

##### Алгоритмы

В таблице ниже собраны детали различных алгоритмов, используемых ходе первых двух шагов (определение и вычисление преобразования).

Способ регистрации | Определение деталей | Вычисление преобразования | Новая последовательность
--- | --- | --- | ---
Все цвета | Динамическая PSF | Подобие треугольников + RANSAC | Y
Всё звёздное небо за 2 шага | Нет
1-2-3 звезды | минимизация PSF в выбранной области | Разложение по сингулярным значениям (2-3 звезды) Разница (1 звезда) | Нет
По паттерну | взаимнокорреляционная функция в выбранной области | Нет
KOMBAT | Максимальное значение свёртки в пространственной области в выбранной области | Нет
Комета | минимизация PSF в выбранной области | Сдвиг от вектора скорости с использованием отметок времени | Да(*)
Вручную | Ваши глаза | Ваша рука | Нет
Астрометрия | Динамическая PSF | Из астрономического решения | Нет

Примечание

(*) При регистрации комет создаются новый файл последовательности (с префиксом по умолчанию comet_) и «новые» изображения. Если во входящей последовательности были данные регистрации, сдвиг кометы компонуется с уже имеющимися данными регистрации. Создаваемые «новые» изображения являются символическими ссылками и не занимают дополнительное дисковое пространство. Это нововведение версии 1.4 было сделано, чтобы уточнить, должна ли последовательность, имеющая данные регистрации, быть выравнена только по звёздам или по звёздам и сдвигу кометы. Экспорт новой последовательности теперь делает очевидным, что были включены дополнительные сдвиги. Это также позволяет использовать одну и ту же входящую последовательность и создавать несколько последовательностей, выровненных по разным движущимся объектам.

Таблица ниже содержит список преобразований, совместимых с каждым методом, и возможность исправления дисторсии.

Способ регистрации | Сдвиг | Евклидово | Подобие | Аффинное | Гомография | Коррекция дисторсии
--- | --- | --- | --- | --- | --- | ---
Все цвета | субпиксели |  | x | x | x | x
2 шага | субпиксели |  | x | x | x | x
1-2-3 звезды | субпиксели (1-2-3) | (2-3) |  |  |  |
По паттерну | пиксели |  |  |  |  |
KOMBAT | пиксели |  |  |  |  |
Комета | субпиксели |  |  |  |  |
Вручную | пиксели |  |  |  |  |
Астрометрия |  |  |  |  | x | x

Важно иметь в виду, каким образом зарегистрированная последовательность проходит процесс укладки, который обычно происходит сразу после регистрации:

- Если преобразование состоит только из попиксельных сдвигов, алгоритм укладки может использовать эти сдвиги на лету, при чтении изображений. Это значит, что у вас нет необходимости создавать «зарегистрированные изображения», что сохраняет дисковое пространство и позволяет избежать интерполяции. Конечно же это делается за счёт менее точной регистрации (т.е. субпиксельной точности), но обычно это используется при работе с изображениями планет или изображениями, полученными методом удачных экспозиций (lucky imaging), когда размер выборки невелик. Это также может быть использовано вместе с методом регистрации, вычисляющим субпиксельные сдвиги. В ходе укладки сдвиги будут округлены с точностью до пикселя. Во всех остальных случаях, означающих, что на укладку подаётся последовательность, где при регистрации были вычислены преобразования более сложные, чем просто сдвиги, и зарегистрированные изображения не были сохранены, Siril выдаст предупреждение с предложением экспортировать зарегистрированные изображения, прежде чем переходить к укладке.

- Во всех остальных случаях, как только преобразования были вычислены, преобразованные изображения необходимо сохранить, прежде чем переходить к укладке. Названия сохранённых файлов начинаются с префикса `r_`.

##### Преобразования изображений

###### Линейные преобразования

Siril использует линейные преобразования с разным числом степеней свободы для сопоставления изображений с опорным изображением:

- Сдвиг это преобразование с 2-мя степенями свободы (сдвиг по x/y), хорошо приспособленное для изображений без дисторсии, масштабирования и вращения поля. Необходима минимум одна совпадающая пара звёзд (или объектов) для определения преобразования.

- Евклидово это преобразование с 3-мя степенями свободы (сдвиг по x/y + одно вращение) для изображений без дисторсии и масштабирования. Оно требует по крайней мере две совпадающие пары звёзд для определения преобразования.

- Подобие это преобразование с 4-мя степенями свободы (одно масштабирование, одно вращение и сдвиги по x/y), более жёсткое, чем гомография, хорошо подходящее для изображений без дисторсии. Для определения преобразования необходимо минимум две совпадающие пары звёзд.

- Аффинное это преобразование с 6-ю степенями свободы (два масштабирования, один скос, одно вращение и сдвиги по x/y), более жёсткое, чем гомография, хорошо подходящее для изображений без дисторсии. Для определения преобразования необходимо минимум три совпадающие пары звёзд.

- Гомография это преобразование по умолчанию, которое использует 8 степеней свободы, чтобы наложить изображения на опорный кадр. Оно хорошо подходит для обычных случаев и настоятельно рекомендуется для изображений с широким полем зрения. Для определения преобразования необходимо минимум четыре совпадающие пары звёзд.

###### Дисторсия

Начиная с версии 1.3 Siril также может учитывать дисторсию для методов регистрации, указанных в таблице. Коэффициенты дисторсии, которыми оперирует Siril, следуют соглашению SIP. Это соглашение предполагает, что координаты пикселей необходимо скорректировать ПРЕЖДЕ, чем пытаться сопоставить их с помощью линейного преобразования. На жаргоне WCS это называется дисторсией до (prior distortion), в отличие от дисторсии после (sequent distortion).

Эти коэффициенты используются дважды в процессе регистрации:

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

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

##### Опорное изображение

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

Если не установлено вручную, опорное изображение выбирается по следующим критериям:

- если последовательность уже была зарегистрирована, то это самое лучшее изображение в терминах наименьшей FWHM или с самым высоким качеством, в зависимости от способа регистрации

- В противном случае — первое неисключённое изображение в последовательности.

Чтобы установить изображение в качестве опорного, вы можете:

- Открыть список кадров, выбрать изображение, которое надо установить в качестве опорного, и установить флажок Опорное изображение.

- Использовать команду setref. Например, если вы хотите установить изображение №10 в качестве опорного:

      setref 10

Командная строка Siril

    setref sequencename image_number

Устанавливает опорное изображения для последовательности, указанной в первом аргументе. image_number это порядковый номер изображения в последовательности (начинающийся с 1), а не номер в названии файла

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

В ходе укладки опорное изображение так же используются как база для нормализации, если последняя включена.

#### Способы регистрации

##### Всё звёздное небо

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

Глобальное сопоставление основано на методе подобия треугольников для автоматического определения общих звёзд на каждом изображении [Valdes1995]. Наша реализация основывается на программе Майкла Ричмонда (Michael Richmond) match. После этого полученный список звёзд обрабатывается алгоритмом RANSAC [Fischler1981] для удаления выбросов и определения проекционной матрицы. Устойчивость алгоритма зависит от способности находить звёзды, избегая при этом ложных срабатываний. Siril имеет очень сложный алгоритм поиска звёзд, который позволяет максимально избегать выбора объектов, не являющихся звёздами, за максимально короткое время. Обнаружение ярчайших звёзд обычно является самым важным. Однако в случае необходимости поиска более слабых звёзд, параметры поиска можно настроить с помощью диалога Динамическая PSF.

Автоматическое определение звёзд на отдельном кадре

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

Настройки регистрации методом Всё звёздное небо

Через выпадающее меню Преобразование можно выбрать различные способы преобразования.

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

При первоначальном сопоставление звёзд используется алгоритм подобия треугольников. Следовательно, минимальное число пар звёзд должно быть 3 для сдвига, подобия и аффинного преобразований и 4 для гомографии.

Остальные опции регистрации:

- Минимальное кол-во пар звёзд устанавливает минимальное число пар звёзд, которое должно быть на отдельном кадре по отношению к опорному. Если на отдельном кадре меньше пар звёзд, он не будет зарегистрирован. Кнопка справа открывает диалог инструмента динамической PSF.

- Опция Максимальное кол-во звёзд определяет максимальное количество звёзд для поиска на каждом изображении (по умолчанию — 2 000). Чем больше это значение, тем больше звёзд потенциально может быть найдено. Следствием этого будет более долгий поиск звёзд, но более точная регистрация.

- Используйте опцию Только в выделении если хотите применить алгоритм выравнивания по всему звёздному небу внутри выбранной области на опорном изображении. Если выделение отсутствует, это опция игнорируется.

- Через выпадающее меню Исправить дисторсию можно выбрать различные способы исправления:

  - Нет

  - Из изображения

  - Из файла FITS/WCS

  - Из мастер-файлов дисторсии

Из изображения использует астрономическое решение из изображения, загруженного в данный момент.
Из файла FITS/WCS будет открыт диалог выбора файлов для выбора изображения FITS или файла `*.wcs`, содержащий коэффициенты дисторсии.
Из мастер-файлов дисторсии будет получен мастер-файл дисторсии, соответствующий каждому изображению. Эта опция может быть полезной, если вы выравниваете изображения двух или более сессий и сенсор между сессиями был сдвинут по отношению к оптике. В этом случае коэффициенты дисторсии могут отличаться.

Совет

Для того, чтобы опиция Из мастер-файлов дисторсии работала, необходимо установить путь к мастер-файлу в настройках. Для создания мастер-файла, перейдите по ссылке.

Опции ниже позволяют вам:

- Отфильтровать изображения, которые были исключены из выделения в последовательности.

- Выбрать между интерполяцией и сверхразрешением (drizzle) при экспорте изображений. Это те же опции, что в разделе Результат регистрации, поэтому здесь эти опции более не будут объяснены.

Командная строка Siril

    register sequencename [-2pass] [-selected] [-prefix=] [-scale=]
    register sequencename ... [-layer=] [-transf=] [-minpairs=] [-maxstars=] [-nostarlist] [-disto=]
    register sequencename ... [-interp=] [-noclamp]
    register sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]

Находит и, опционально, выполняет геометрическую трансформацию изображений последовательности, переданной в аргументе, таким образом, чтобы изображения могли быть наложены на опорное изображение. Поскольку для регистрации используются звёзды, этот алгоритм работает только с изображениями глубокого космоса. Настройки определения звёзд могут быть изменены с помощью команды SETFINDSTAR или диалога Динамическая PSF.
Будут зарегистрированы все изображения в последовательности, если только не передана опция -selected. В этом случае исключённые изображения не будут обработаны.
Опция -2pass только вычисляет преобразования, но не создаёт преобразованных изображений. -2pass добавляет предварительный шаг к алгоритму для поиска хорошего опорного изображения перед вычислением преобразований на основе качества и кадрирования. Для создания преобразованных изображений после этого шага используйте SEQAPPLYREG.
В случае создания, название итоговой последовательности будет начинаться с префикса "r_", если с помощью опции -prefix= не указан иной. Итоговые изображения могут быть масштабированы путём передачи значения с плавающей точкой в диапазоне от 0.1 до 3 аргументу -scale=.
Опции преобразования изображений:
Для цветных изображений определение выполняется на зелёном слое, если не указан иной слой с помощью опции -layer=, принимающей значения от 0 до 2 (от красного до синего).
-transf= указывает вид преобразования; может быть shift, similarity, affine или homography (значение по умолчанию).
-minpairs= указывает минимальное количество пар звёзд, которое должно между кадром и опорным кадром. В противном случае этот кадр будет отброшен и исключён из последовательности.
-maxstars= указывает максимальное количество пар звёзд для поиска на каждом кадре (должно быть от 100 до 2000). С бо́льшим количеством звёзд регистрация будет более точной, но это потребует больше времени для вычислений.
-nostarlist отключает сохранение списка звёзд на диск.
-disto= использует полученные раннее в ходе астрономического решения данные дисторсии (со степенью SIP > 1). В качестве параметра используется либо image, чтобы использовать решение, содержащееся в загруженном в данный момент изображении, file, за которым следует путь к изображению, содержащему решение, либо master, чтобы автоматически загрузить соответствующий мастер-фaйл дисторсии, соответствующий каждому изображению. При использовании этой опции полиномы используются как для коррекции положения звёзд перед вычислением преобразования, так и для устранения дисторсии в изображениях при экспорте итоговых изображений.
Интерполяция изображений:
По умолчанию преобразования применяются к изображениям с использованием интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции по умолчанию используется фиксация (clamping), предотвращающая артефакты, но она может быть отключена с помощью аргумента -noclamp.
Сверхразрешение:
В противном случае изображения можно экспортировать с помощью алгоритма сверхразрешения HST, передав аргумент -drizzle, который может принимать дополнительные параметры:
-pixfrac= устанавливает долю пикселей (по умолчанию = 1.0).
-kernel= устанавливает ядро и обязательно принимает одно из следующих значений point (точка), turbo (турбо), square (квадрат), gaussian (Гаусс), lanczos2 (Ланцош-2) или lanczos3 (Ланцош-3). Значение по умолчанию — square.
-flat= указывает использовать ли мастер-кадр плоского поля для присвоения веса входящим пикселям при использовании сверхразрешения (по умолчанию — кадры плоского поля не используются).
Замечание: при использовании -drizzle для изображений, полученных на цветную камеру, входящие изображения не должны быть дебайеризованы. В этом случае определение звёзд всегда выполняется по зелёным пикселям
Ссылки:setfindstar, psf, seqapplyreg

##### Регистрация за 2 шага

Для включения этой опции просто поставьте соответствующий флажок после выбора метода Всё звёздное небо в выпадающем меню.

Выполняется только первый из двух шагов, позволяющий выбрать опорный кадр на основе информации о найденных звёздах, вместо автоматического выбора первого кадра в последовательности. Доступные опции сходны с таковыми для алгоритма Всё звёздное небо, но этот способ не создаёт новой последовательности, а вся информация о выравнивании сохраняется в файле `seq`.

В ходе поиска звёзд Siril устанавливает максимально возможное число звёзд в 2 000 (это можно изменить с помощью соответствующей опции). В случае, если максимальные лимиты определяемого числа звёзд достигнуты более чем на одном изображении, списки звёзд для всех изображений просматриваются повторно. Определяется новый минимальный порог для определения звёзд, позволяющий отсортировать изображения как по количеству найденных звёзд, так и по FWHM.

Сохраняются списки звёзд для всех изображений. Расширение `.fit(s)` при этом заменяется на `.lst`. Это позволяет очень быстро повторно запустить алгоритм регистрации за 2 шага с другими параметрами, скажем, с другим преобразованием. В случае, если параметры поиска звёзд были изменены, процесс обнаруживает эти изменения и повторяет анализ по мере необходимости.

За этим способом регистрации обычно должен следовать Применить существующую регистрацию для того, чтобы применить преобразование и создать новую последовательность, если только не был выбран `Сдвиг`.

Эти строки выполняют регистрацию последовательности pp_light за 2 шага и применяют её. Результатом является последовательность pp_light.

    # Align lights in 2 passes
    register pp_light -2pass
    seqapplyreg pp_light

Эти строки выполняют регистрацию последовательности colors за 2 шага и применяют её, обрезая исходящие изображения до минимальной общей области. Итогом является последовательность pp_colors. Это может быть полезным перед совмещением (compositing) монохромных изображений (при этом обрезаются области, которые не являются общими для всех изображений).

    # Align layers in 2 passes and crop away borders
    register colors -2pass
    seqapplyreg colors -framing=min

##### 1-2-3 звезды

Если изображения содержат несколько звёзд, например, в случае изображений объектов глубокого космоса, полученных методом удачных экспозиций, когда выдержка отдельного кадра менее секунды, возможно, что алгоритм регистрации всего звёздного неба не сработает, даже если вы измените параметры определения звёзд в диалоге Динамической PSF. Может оказаться интересным вручную указать звёзды, которые вы хотите выровнять. В этом заключается интерес алгоритма регистрации по 1-2-3 звёздам.

Настройки регистрации по 1-2-3 звёздам

Принцип этого метода — создать выделение вокруг звезды и нажать на кнопку Выбрать первую звезду и так далее.

- Если выбрана только одна звезда, будет рассчитан только сдвиг между изображениями. Поэтому автоматически устанавливается флажок Только сдвиг. Значения сдвига затем сохраняются в файле `seq`.

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

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

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

Включение этой опции приводит к отключению распараллеливания, и регистрация выполняется на только одном ядре ЦПУ.

##### По паттерну (полный диск планет)

Это простой метод регистрации с помощью сдвига используя кросс-корреляцию в пространственном домене.

Этот быстрый метод используется для регистрации роликов планет, на которых контрастная информация присутствует на значительных участках изображения. Его также можно использовать для регистрации некоторых изображений глубокого космоса. Тем не менее имейте в виду, что это метод выравнивания по одной точке, что делает его плохо подходящим для планетарного выравнивания высокой чёткости. Но он эффективно закрепляет изображения для стабилизации последовательности. Просто сделайте выделение вокруг объекта (например, планеты) и убедитесь, что его перемещение во всей последовательности находится в границах выделения. С помощью этого метода можно рассчитать только сдвиг.

Pattern alignment options

##### KOMBAT

Этот метод пришёл из библиотеки OpenCV, которая активно используется Siril. Они объясняют:

Он просто перемещает изображение шаблона над входящим изображением (как при 2D свёртке) и сравнивает шаблон с фрагментом входящего изображения под изображением шаблона. В OPenCV реализованы несколько методов сравнения (вы можете обратиться к документации за подробностями). Он возвращает изображение в градациях серого, где каждый пиксель обозначает насколько окружение этого пикселя соответствует шаблону.

На практике просто сделайте выделение вокруг объекта (например планеты) и убедитесь, что все его движения в последовательности находятся внутри выделения. С помощью этого метода может быть вычислен только сдвиг.

##### По комете/астероиду

Инструмент регистрации по комете работает очень просто.

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

2. Далее выберите последнее изображение в последовательности, выделите ядро кометы и нажмите кнопку Выбрать объект в №2.

Если всё хорошо, скорость кометы ( \(\Delta x\) и \(\Delta y\)) будет вычислена в пикселях в час.

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

Выравнивание кометы следует выполнять на изображениях с предварительно выравненными звёздами. Либо посредством создания новой последовательности с выравниванием по всему звёздному небу, либо сохранив данные регистрации в файле `seq` с использованием регистрации за 2 шага или астрометрической регистрации.

Примечание

To fully function, the images must have a timestamp.

Настройки регистрации комет

Совет

If the PSF detection fails to detect an object, it will return the center of the box that was drawn. This can be handy if you want to align on an object that is not visible on your subs. Use the solar system object annotations to plot the position of an asteroid and draw a box around the marker to pick its position.

This method will ouput a new sequence file, with the sequence name prepended with the prefix defined (`comet_` by default). This does not however create the new images but symlinks to the original images. For Windows users, please make sure you have enabled developer mode, otherwise, it will make hard copies. See also the note below this table.

##### Регистрация вручную

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

Первое, что нужно сделать, это определить две точки предварительного просмотра на изображении. Нажав на кнопку Установить первый предпросмотр, вы укажете первую точку предварительного просмотра. Затем вам нужно щелкнуть по области изображения, в идеале по звезде вблизи края изображения, чтобы задать область предварительного просмотра. Нажмите на вторую кнопку Установить второй предпросмотр позволяет сделать то же самое со второй точкой.

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

Сдвиг по оси Y слишком велик, одни и те же звезды на разных кадрах не перекрываются.

Сдвиги по оси X и Y выглядят хорошо. Текущее изображение выровнено по опорному.

##### Астрометрическая регистрация

Introduced in version 1.3, this is the prefered mode for assembling mosaics or images with little overlap. It can also be useful to register stacks issued from different set-ups (different optics, different cameras, different field of views etc...).

It does not have an entry in the registration method drop-down as the information to export the registered images has already been computed when platesolving the sequence. All you need to do is to Apply Existing Registation.

Undistortion will be applied as defined when platesolving the sequence, meaning if the images were plate-solved using a SIP order larger than 1, then undistortion will automatically be included. Unless you have a perfectly optically flat field, it is usualy a good idea to platesolve using SIP, as shsown below, with and without distortion correction.

Effect of undistortion on two overlapping panels after registration

##### Применить существующую регистрацию

This is not an algorithm but rather a commodity to apply previously computed registration data stored in the sequence file. The interpolation method can be selected in the Output Registration section. You can also use image filtering to avoid saving unnecessary images, as in stacking Выбраковка изображений. There is also a Drizzle option to apply registration using Drizzle instead of interpolation. See the Drizzle section for details.

Доступны четыре метода кадрирования:

- : текущее использует текущее опорное изображение. Это поведение по умолчанию.

- : максимум (ограничивающая рамка) добавляет чёрную границу вокруг кадров таким образом, чтобы ни одна часть изображения не была обрезана при регистрации.

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

- : центр тяжести определяет наилучшее положение области кадрирования как центр тяжести всех изображений.

Совет

Introduced in Siril 1.3, `max` mode does not export images with black borders, that encompass the full resulting image. The images are exported with the necessary projection and the relative shifts required to compose the final image is kept in the the resulting seq file.

Estimate button will launch the framing computation, without actually exporting the images. This information can be interesting to know in advance the size of the exported images. This accounts for the framing method selected and the scaling factor chosen in the Output Registration.

When pressing Estimate, the console will show an output like this:

    Output image: 7893 x 5254 pixels (assuming a scaling factor of 1.30)

Опции применения существующей регистрации

Командная строка Siril

    seqapplyreg sequencename [-prefix=] [-scale=] [-layer=] [-framing=]
    seqapplyreg sequencename ... [-interp=] [-noclamp]
    seqapplyreg sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]
    seqapplyreg sequencename ... [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]] [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Используя ранее вычисленные данные регистрации (см. REGISTER), выполняет геометрическое преобразование изображений последовательности, указанной в аргументе таким образом, чтобы они могли быть наложены на опорное изображение.
Название итоговой последовательности начинается с префикса "r_", если с помощью опции -prefix= не указан иной.
Для RGB-изображений регистрация выполняется на первом слое, для которого существуют данные, если не указан иной слой с помощью опции -layer= (0, 1 или 2 для R, G и B, соответственно).
Итоговые изображения могут быть масштабированы с помощью аргумента -scale=, являющимся дробным значением в диапазоне от 0,1 до 3.
Автоматическое кадрирование итоговой последовательности может быть сделано с помощью опции -framing= и указанием метода кадрирования из списка { current | min | max | cog } :
-framing=max (ограничивающая рамка) проецирует каждое изображение и вычисляет его сдвиг относительно опорного. Итоговая последовательность может быть уложена с помощью опции -maximize команды STACK, которая создаёт полное изображение, включающее все изображения последовательности.
-framing=min (общая область) обрезает каждое изображение до области, общей с всеми остальными изображениями в последовательности.
-framing=cog определяет лучшее кадрирование как центр тяжести (center of gravity — cog) всех изображений.
Интерполяция изображений:
По умолчанию преобразования применяются к изображениям с использованием интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции по умолчанию используется фиксация (clamping), предотвращающая артефакты, но она может быть отключена с помощью аргумента -noclamp.
Сверхразрешение:
В противном случае изображения можно экспортировать с помощью алгоритма сверхразрешения HST, передав аргумент -drizzle, который может принимать дополнительные параметры:
-pixfrac= устанавливает долю пикселей (по умолчанию = 1.0).
-kernel= устанавливает ядро и обязательно принимает одно из следующих значений point (точка), turbo (турбо), square (квадрат), gaussian (Гаусс), lanczos2 (Ланцош-2) или lanczos3 (Ланцош-3). Значение по умолчанию — square.
-flat= указывает использовать ли мастер-кадр плоского поля для присвоения веса входящим пикселям при использовании сверхразрешения (по умолчанию — кадры плоского поля не используются).
Фильтрация изображений:
Изображения для регистрации могут быть отфильтрованы с помощью некоторых фильтров, например, выбранные или с лучшей FWHM, используя опции -filter-*.
Ссылки: register, stack
Опции фильтрации не зависят от порядка их использования и могут быть следующими:

    [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]]
    [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Лучшие изображения из последовательности могут быть уложены с использованием аргументов фильтрации. Каждый из этих аргументов может удалить некачественные изображения, основываясь на отличительных чертах в их названиях, взятых из данных регистрации с любым из трёх значений аргумента:
- a numeric value for the worse image to keep depending on the type of data used (between 0 and 1 for roundness and quality, absolute values otherwise),
- a percentage of best images to keep if the number is followed by a % sign,
- or a k value for the k.sigma of the worse image to keep if the number is followed by a k sign.
Так же можно выбрать изображения вручную либо раннее с помощью графического интерфейса или с помощью команд select или unselect, используя аргумент -filter-included.

#### Результат регистрации

This frame contains all the output elements for the sequence. You can choose between Interpolation and Drizzle to export the images.

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

They may not be both available depending on the nature of the input sequence:

- for mono sequences, both Interpolation and Drizzle may be selected

- for CFA sequences (undebayered color images), only Drizzle is available

- for RGB sequences (debayered color images), only Interpolation is available

Both methods share the options:

- Scaling, a value between 0.1 and 2, that is used to rescale the output images.

- Prefix, the prefix that will be preprended to form the exported sequence name (defaults to `r_`).

##### Интерполяция

Tthe pixels of the resulting images are interpolated by an algorithm that is left to the user's choice. There are 5 possible interpolation algorithms, plus a None option:

- Ближайший сосед

- Билинейная

- Бикубическая

- Отношение площади пикселя

- Ланцош-4

- Нет

The best efficient interpolation methods are generally bicubic and Lanczos-4 (used by default). However, they usually require the Clamping interpolation option to be enabled to avoid ring artifacts around the stars, which makes the interpolation operation twice as slow. We still enable it by default because it gives a significant improvement in resolution, with often a 8% smaller in FWHM compared to Siril 1.0 default method of pixel area. It is possible the clamping is not useful for your images, we recommend you to compare the results with your images.

Специальный вариант Нет зарезервирован для случая глобальной регистрации и Применения существующей регистрации. Если вы хотите экспортировать или сохранить последовательность, содержащую только сдвиг, без использования интерполяции (чтобы не изменять значения в пикселях), вам следует выбрать Нет.

Output options for interpolation

##### Сверхразрешение

The button Drizzle activates the drizzle algorithm for the processing of this sequence. See the Drizzle section for details.

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

The counterpart of this technic is that the amount of memory and disk space needed to create and process drizzled images is multiplied by the square of the Drizzle scale factor.

Output options for drizzle

##### Astrometric solution of the registered images

When registered images are exported, they inherit the astromertic soluion of the reference image if any. Otherwise, their previous solution is wiped. Obviously, the new solution for each image accounts for the transformations it has undergone through the registration process.

In case a distortion solution is found in the reference image but no undistortion was applied when computing the transformations - for instance if you have not selected any `Distortion` from the drop-down in global or 2-pass methods, a warning will be displayed in the Console. The distortion information will be kept in the registered images. In case they are significant, you may see their effect when stacking. In which case, you will need to register again using a distortion specification.

#### Литература

[Fischler1981]

Fischler, M. A., & Bolles, R. C. (1981). Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Communications of the ACM, 24(6), 381-395.

[Valdes1995]

Valdes, F. G., Campusano, L. E., Velasquez, J. D., & Stetson, P. B. (1995). FOCAS automatic catalog matching algorithms. Publications of the Astronomical Society of the Pacific, 107(717), 1119.

### Сверхразрешение

Метод линейной реконструкции с переменным пикселем (variable-pixel linear reconstruction), более известный как drizzle (прим. переводчика — данный термин переведён как сверхразрешение), разработан Энди Фручером (Andy Fruchter) и Ричардом Хуком (Richard Hook) для работы с космическим телескопом Хаббл (HST) [FruchterHook1997] и первоначально использовался для объединения размытых изображений Hubble Deep Field North (HDF-N). Этот алгоритм можно рассматривать как непрерывный набор линейных функций, плавно изменяющихся между оптимальным методом линейной комбинации (чересстрочной разверткой, interlacing) и методом сдвига и сложения (shift-and-add). Это часто позволяет улучшить разрешение и снизить уровень коррелированного шума по сравнению с изображениями, полученными только с использованием метода сдвига и сложения.

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

Степень, в которой алгоритм отходит от чересстрочной развертки и переходит к методу сдвига и сложения, зависит от того, насколько хорошо PSF подвергается подвыборке с учетом сдвигов на входящих изображениях. На практике работа алгоритма сверхразрешения управляется параметром, называемым долей пикселя, представляющим собой величину, на которую входящие пиксели уменьшаются перед отображением на плоскость итогового изображения. При доле пикселя равной 0, сверхразрешение эквивалентно чистой чересстрочной развертке, а при доле пикселя, равной 1 — сдвигу и сложению.

Для понимания разницы между методами сверхразрешения и интерполяции при применении регистрации, сначала рассмотрим, как работает стандартный метод интерполяции. Данные регистрации имеют форму матрицы гомографии 3×3, которая кодирует линейное преобразование с 8-ю степенями свободы от одного набора координат к другому (т.е. от каждого кадра к опорному). Это используется для сопоставления значений каждого пикселя на каждом входящем изображении с правильным местом на итоговом изображении, выравнивая итоговые данные с опорным изображением. Для фактического выравнивания используется метод интерполяции, который можно выбрать в параметрах регистрации. Интерполяция приводит к размыванию функции рассеяния точки, особенно если увеличивается масштаб изображений. Это также может привести к появлению артефактов, хотя в Siril реализован механизм фиксации, позволяющий свести это к минимуму.

При использовании алгоритма сверхразрешения, напротив, каждый пиксель входящего изображения «превращается» в каплю и «разбрызгивается» через сетку на итоговый опорный кадр. Каждая капля имеет определённый размер, и, выбрав увеличенную итоговую пиксельную сетку, но меньший размер капли, вы можете добиться улучшения разрешения, если полученные с помощью вашего оптического тракта изображения имеют недостаточную дискретизацию (undersampled). В случае если масштаб изображений соответствует разрешающей способности вашего телескопа, то алгоритм сверхразрешения не сможет передать детали, превышающие дифракционный предел. Это достигается за счёт увеличения шума изображения: поскольку каждая капля «закрашивает» меньшую область итогового изображения, среднее количество капель на пиксель итогового изображения в итоговом стеке уменьшается.

Обратите внимание, что алгоритм сверхразрешения не заменяет всего процесса регистрации. Вы по-прежнему должны использовать подходящий метод регистрации (всё звёздное небо, 1-2-3 звезды, по комете и пр.) до применения алгоритма сверхразрешения. Последний является лишь альтернативой методу интерполяции, используемому при регистрации.

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

Процесс применения алгоритма сверхразрешения включает в себя съёмку нескольких кадров и их объединение в итоговый кадр. На входе используется набор кадров с их WCS-решениями, а на выходе будет одно изображение, к которому был применён алгоритм сверхразрешения. В Siril этот процесс разделён на применение сверхразрешения при регистрации и последующую укладку. Промежуточный артефакт — набор изображений, представляющих отдельные изображения, «разбрызганные» по общей итоговой сетке, но еще не уложенные — сам по себе не имеет значения. Отдельные кадры в последовательности с применённым алгоритмом сверхразрешения могут и будут выглядеть странно: опорный кадр часто выглядит не так, как остальные, особенно при применении сверхразрешения к данным CFA, из-за особого свойства — нулевого сдвига относительно итогового кадра, а на других кадрах может появиться муар. Не паникуйте! Это всего лишь промежуточный этап в общем процессе применения сверхразрешения, и все эти очевидные странности будут устранены на этапе укладки.

#### Использование сверхразрешения

Есть 3 основные причины, по которым вы можете предпочесть использование сверхразрешения методу интерполяции для применения регистрации.

- Улучшение разрешения Если ваше изображение имеет недостаточную дискретизацию, возможно, вам удастся улучшить разрешение используя алгоритм сверхразрешения, чего не удалось добиться с помощью опции регистрации Увел. вдвое (интерполяция).

- Обработка изображений CFA Если ваши имеют шаблон CFA (например, если вы пользуетесь цветной камерой или зеркальной фотокамерой), алгоритм сверхразрешения значительно улучшает качество изображения по сравнению с дебайеризацией. Иногда этот процесс называют Байеровским сверхразрешением (Bayer Drizzle), но на самом деле это один и тот же процесс. При применении сверхразрешения к CFA-изображению цвет текущей капли определяет, в какой канал итогового изображения она попадёт, в то время как при применении сверхразрешения к монохромному изображению все капли попадают в единственный монохромный канал. Применение сверхразрешения к CFA-изображениям позволяет избежать артефактов, которые возникают при использовании всех алгоритмов дебайеризации, что улучшает шумовые характеристики при сильном растягивании изображений. Это обеспечивает улучшенные шумоподавление и реконструкцию CFA-последовательностей, к которым применено сверхразрешение, по сравнению с дебайеризованными и зарегистрированными CFA-изображениями, а также улучшает видимость теней.

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

#### Ограничения алгоритма сверхразрешения

- Алгоритм сверхразрешения работает несколько медленнее интерполяции, особенно при применении предпочтительного ядра «Квадрат». Если вы используете более старое или медленное оборудование, вы можете предпочесть устаревший метод.

- При использовании для повышения дискретизации (upsampling), алгоритм сверхразрешения позволяет улучшить разрешение ценой увеличения шума изображения. Поэтому, возможно, вам потребуется накопить больше сигнала при использовании сверхразрешения, чем при использовании метода повышения дискретизации на основе интерполяции.

- Вышеупомянутая проблема особенно актуальна для CFA-изображений. Учтите, что только 1 из 2 пикселей зелёного цвета, и только 1 из 4 — красного или синего. Таким образом, для красного или синего каналов, применение сверхразрешения к CFA уже обеспечивает такой же уровень уменьшения капельного покрытия, как и 2-кратное увеличение масштаба с помощью сверхразрешения. Если, сверх того, вы хотите увеличить масштаб изображения, вам потребуется такое же количество капель, как и для 4-кратного увеличения масштаба изображения с помощью сверхразрешения! Поэтому, как правило, рекомендуется применять сверхразрешение к CFA-изображениям с масштабом = 1.

#### Сравнение

На следующем рисунке показано сравнение между методом сверхразрешения и устаревшим методом масштабирования. Это изображение Ha, извлечённое из цветного изображения, полученного с использованием двухдиапазонного (dual band) фильтра. Слева вы можете увидеть результат работы устаревшего сценария OSC_Extract_HaOIII, который извлекает данные Ha, полученные с помощью красных пикселей из шаблона Байера цветного сенсора в виде изображения уменьшенного размера. К нему применено масштабирование OpenCV с интерполяцией методом Ланцош-4 для получения изображения, которое соответствует размеру изображения OIII.

On the right you can see the result of the updated script (available through the siril-scripts repository), which extracts the Ha data captured by the red pixels in the OSC Bayer matrix as a half-size image and drizzles it using scale = 2.0, pixel fraction = 0.5, to produce an image that matches the size of the OIII image.

При просмотре в масштабе 100% становится ясно, что стек, к которому применено сверхразрешения, в значительной степени восстанавливает разрешение оптической системы, которое имеет недостаточную дискретизацию (undersampled) из-за разнесённых красных пикселей в шаблоне Байера. Изображение выглядит намного резче, и цифры подтверждают это: среднее значение FWHM на изображении слева составляет 3.59, тогда как на изображении справа это значение равно 3.25.

Сравнение между увеличением масштаба с помощью интерполяции и сверхразрешением

#### Рабочий процесс и пользовательский интерфейс

#### Монохромные изображения

##### Калибровка

Для монохромных изображений на вкладке «Калибровка» ничего не меняется. Выполните калибровку как обычно.

##### Регистрация

Настройка сверхразрешения на вкладке «Регистрация»

##### Применение сверхразрешения

###### Масштаб

Масштаб определяет масштаб итогового изображения, получаемого при использовании сверхразрешения, по отношению к входящему изображению. Типичный масштаб для монохромного изображения с недостаточной дискретизацией равен 2.0. Это означает, что входящие данные будут распределены на итоговой пиксельной сетке с вдвое бо́льшим разрешением, чем разрешение входящего изображения. Если бы ваше входящее опорное изображение было размером 1024 × 512 пикселей, то итоговое изображение имело бы размер 2048 × 1024 пикселя. Примечание: поскольку изображение представляет ту же область неба, хотя на выходном изображении вдоль каждой оси в два раза больше пикселей, фактически каждый итоговый пиксель вдвое меньше по ширине и вдвое меньше по высоте.

Совет

Чем больше масштаб, тем более редким будет изображение, к которому применяется сверхразрешение, и тем меньше пикселей в конечном итоге попадает на каждый итоговый пиксель. В результате изображение получается более шумным: увеличение разрешения, обеспечиваемое сверхразрешением, происходит за счёт шума. Это можно преодолеть благодаря использованию бо́льшего общего времени накопления сигнала, чем вам потребовалось бы, без применения данного алгоритма для увеличения разрешения.

###### Доля пикселя

Доля пикселя задает размер капли, взятой из входящей сетки. Рассмотрим масштаб сверхразрешения, равный 2.0: поскольку входящие пиксели вдвое меньше по ширине и высоте, это означает, что для того, чтобы каждая входная пиксельная «капля» имела тот же размер, что и итоговый пиксель, её следует уменьшить до половины линейных размеров. Это доля пикселя, равная 0.5. Хорошее эмпирическое правило заключается в том, что доля пикселя должна быть примерно равна величине, обратной масштабу сверхразрешения (в некоторых ядрах полезно установить её немного больше, чтобы уменьшить количество пикселей, которые получают нулевую информацию от любых «капель» алгоритма).

С долей пикселя можно поэкспериментировать: установка бо́льшей доли пикселя означает, что каждая входящая «капля» будет влиять на бо́льшее число итоговых пикселей. С другой стороны, установка меньшей доли пикселя означает, что каждая входящая «капля» будет влиять на меньшее число итоговых пикселей. Ядро «Точка» — это особый случай, когда доля пикселя равна нулю (и при выборе этого ядра настройка доли пикселя не имеет никакого эффекта).

###### Модель

Реализация алгоритма сверхразрешения в Siril предоставляет несколько моделей «капель»:

- Square. This models the droplet as a square droplet aligned exactly with the input pixel. It is accurately mapped to the output reference frame, and it works well at any scale and pixel fraction. This is the default kernel.

  Совет

  The Square kernel is mathematically flux preserving by construction: each input pixel’s flux is distributed into output pixels in exact proportion to area overlap. Total counts are preserved identically. This makes it both robust and ideal for applications where you need strict surface brightness conservation (e.g. diffuse structures or extended sources).

- Point. This models the droplet as a point at the center of the input pixel. It is the limit of the square kernel with a very small pixel fraction. This will prodce the lowest correlated noise but is prone to leaving holes unless you have very large numbers of well-dithered frames. If you find holes or artefacts in your final stack, use the Square kernel instead. This kernel is very fast.

- Turbo. This is a simplification of the Square kernel. It assumes that rotation between the input and output reference is negligible. This results in a much faster computation, but is approximate. It is a "quick and dirty" kernel originally intended for generating intermediate products within the HST workflow, but it may be of some use in lucky imaging due to its speed relative to Square.

- Gaussian. This models the droplet as a Gaussian centered on the center of the input pixel with a FWHM equal to pixfrac. The droplets in the Gaussian model are round and are recommended where improved preservation of PSFs (star shapes) is important.

  Совет

  [Avila2015] recommends the Gaussian kernel for applications involving point source photometry. Despite not being mathematically flux preserving, the Gaussian kernel reduces the blockiness typical of square kernels (and avoids the high frequency ringing characteristic of Lanczos kernels, producing smooth, centrally peaked PSFs that are closer to analytical forms used in photometry. While Gaussians don't preserve flux perfectly the trade-off is much better behaved PSFs, which is more important for extracting accurate stellar photometry. It may also be more aesthetically pleasing in a final image.

- Lanczos2 and Lanczos3. These kernels model the droplet as a Lanczos function centered on the center of the input pixel.

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

  The Lanczos kernels are specially designed for resampling an image from one World Coordinate System (WCS) onto another at the same scale. They should only be used with scale == pixfrac == 1.0.

  Lanczos kernels provide a good option for single-image registration at native scale: Lanczos3 produces tigher average FWHM than any other kernel or OpenCV interpolation, but it is significantly slower than other kernels.

###### Присвоение веса пикселям

When a droplet lands on the output pixel grid, it may cover more than one output pixel. In fact, one output pixel may be covered by multiple droplets, by only a fraction of a droplet or even by no droplets at all. The contribution of each input pixel can be weighted by the master flat, so that pixels from areas with higher SNR (less vignetting) are weighted more highly. Unless you have peculiar flats this generally makes no practical difference.

Для присвоения веса пикселям, установите флажок Включить мастер-кадр плоского поля.

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

Мастер-кадр должен быть задан на вкладке Калибровка!

##### Давайте применим сверхразрешение!

Как только все необходимы параметры заданы, нажмите кнопку Начать регистрацию.

##### Укладка

Теперь вы можете укладывать последовательность, обработанную алгоритмом сверхразрешения, как обычно. Обратите внимание, что для некоторых комбинаций масштаба сверхразрешения и размера «капель» некоторые модели выбраковки будут работать лучше, чем другие. В частности, если у вас значительное количество «нулевых входящих данных» или нулевых пикселей (null pixels), то при выбраковке будет использовано меньше значений. Возможно, стоит попробовать MAD, если ваш обычный метод выбраковки не работает.

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

Сравнение регистрации, применённой с использованием сверхразрешения и интерполяции. Нажмите, чтобы увеличить.

#### CFA-изображения

##### Калибровка (CFA)

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

##### Регистрация CFA со сверхразрешением

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

###### Масштаб (CFA)

Масштабирование устанавливает масштаб итогового изображения, полученного с использованием алгоритма сверхразрешения, по отношению к входящему изображению. На изображениях, снятых с помощью цветной камеры, каждый пиксель отображает только один цвет: красный, зелёный или синий. К пикселям применяется массив цветных светофильтров (CFA), определяющий какие пиксели реагируют на красную, зелёную и синюю длины волн. Таким образом, все пиксели распределены неравномерно по сравнению с монохромным сенсором, где все пиксели чувствительны к любому свету, проходящему через фильтр. Как в шаблоне Байера, так и на сенсорах X-Trans красные и синие пиксели особенно редки на входящих кадрах, поэтому для увеличения масштаба сверхразрешения выше 1.0 потребуется ещё больше кадров, чтобы обеспечить достаточное покрытие алгоритмом сверхразрешения и достичь приемлемого уровня шума.

Для типичного применения цветного сенсора, кода астрономическая видимость (seeing) хорошо согласуется с номинальным разрешением сенсора, рекомендуется использовать алгоритм сверхразрешения с масштабом и долей пикселя равным 1.0. Это восстановит разрешение в каждом цветовом канале (которое фактически имеет недостаточную дискретизацию [undersampling] из-за расстояния между цветными пикселями в CFA) и позволит избежать обычных артефактов дебайеризации. Если же вы ещё хотите увеличить дискретизацию изображения, используя масштаб > 1.0, имейте в виду, что пиксели, доступные в каждом канале, будут ещё более редки, и вам потребуется ещё больше данных, чтобы обеспечить адекватное покрытие и снизить уровень шума до приемлемого уровня.

Совет

Для применения алгоритма сверхразрешения к цветным изображениям, начните с масштаба и доли пикселя равным 1.0.

###### Доля пикселя (CFA)

Доля пикселя устанавливает размер «капли», поступающей от входящей сетки. В данном случае применимы все комментарии, данные выше при описании процесса обработки монохромных изображений.

###### Модель (CFA)

Для применения алгоритма сверхразрешения к CFA-изображениям используется тот же набор ядер, что и для монохромных изображений. Обратите внимание, что использование ядер, особенно подверженных созданию нулевых пикселей, может вызвать сложности при использовании алгоритма сверхразрешения для CFA-изображений. Если у вас десятки тысяч кадров, как в планетарном видео, ядро Турбо может работать нормально (и будет быстрым!), однако для последовательностей глубокого космоса с меньшим количеством кадров рекомендуется придерживаться ядер Квадрат или Гаусс. И помните, как упоминалось выше, что ядро Гаусс не сохраняет световой поток, поэтому, если вы собираетесь делать что-либо с использованием фотометрических методов, предпочтительнее использовать Квадрат.

###### Присвоение веса пикселям (CFA)

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

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

Мастер-кадр должен быть задан на вкладке Калибровка!

##### Применим сверхразрешение к цветным изображениям!

Как только все необходимы параметры заданы, нажмите кнопку Начать регистрацию.

##### Укладка данных CFA

Теперь вы можете уложить последовательность с применённым свехразрешением как обычно, учитывая комментарии по выбраковке, данные для монохромных изображений. Они могут быть более заметны при использовании сверхразрешения для CFA-изображений, в случае если у вас недостаточное покрытие для поддержки некоторых алгоритмов выбраковки выбросов из-за бо́льшей разреженности входящих пикселей в каждом канале.

Совет

Если вы применяете сверхразрешение к данным CFA для получения бо́льшего разрешения, возможно, вы будете разочарованы, сравнивая результаты с уложенными дебайеризованными изображениями. Как правило, выигрыш есть, но он может быть незначительным (например, улучшение FWHM на несколько процентов) и, как правило, не будет столь впечатляющим, как улучшение разрешения, которое можно получить при применении алгоритма сверхразрешения к монохромным данным, имеющим недостаточную дискретизацию.

Причина этого в том, что при дебайеризации утраченное разрешение частично восстанавливается. Различные алгоритмы дебайеризации работают по-разному, но в целом все они основаны на принципах пространственной и спектральной корреляции, позволяющих определить часть разрешения, отсутствующего в одном канале, на основе информации, полученной из других [Losson2010].

Реальная причина, почему следует применять сверхразрешение к данным CFA — гораздо более чистый шум после применения сверхразрешения. Шум выглядит менее «зернистым», т.е. в нём отсутствует структура, которую можно увидеть на фоне типичного дебайеризованного стека CFA. Поэтому его легче уменьшить с помощью методов шумоподавления и он даёт более согласованные данные для фотометрических приложений, таких как калибровка цвета. При сильном растягивании, чтобы отделить слабые детали от фона, полученный фон выглядит более естественно.

##### Сравнение дебайеризации и сверхразрешения

На анимации ниже показано сравнение алгоритма сверхразрешения CFA с двумя различными значениями доли пикселя и двух классических алгоритмов дебайеризации.

Сравнение сверхразрешения CFA (обозначено как Bayer Drizzle) с классическими алгоритмами дебайеризации

- VNG приведён как базовый ориентир: обратите внимание на цветовой артефакт вокруг более ярких звёзд.

- RCD достаточно хорош с круглыми объектами, такими как звёзды.

- Результат Bayer Drizzle 1.0 близок к RCD, но с лучшим уровнем шума и фоном

- Bayer Drizzle 0.5 обеспечивает лучшее разрешение ценой большего уровня шума. Соотношение между разрешением и уровнем шума, обеспечиваемое долей пикселя, очевидно. При меньшей доле пикселя сверхразрешение CFA требует больше данных для достижения тех же показателей шума.

#### Некоторые общие проблемы

Совет

**НЕ ПАНИКУЙТЕ ** — следующие результаты могут показаться немного странными при просмотре отдельного кадра, к которому применено сверхразрешение, но это не ошибки — алгоритм работает так, как задумано. В большинстве случаев они устраняются естественным образом во время укладки. В остальных случаях их можно устранить, изменив параметры алгоритма сверхразрешения или добавив больше кадров с данными.

##### Муар

Из-за особенностей алгоритма сверхразрешения при увеличении масштаба некоторые итоговые пиксели могут не получить никаких данных. Они называются «пустыми пикселями» (null pixels) и имеют нулевое значение. Некоторые ядра компенсируют это, эффективно ограничивая долю пикселя, так что все итоговые пиксели получают некоторую часть входящих данных, а другие — нет.

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

Пример узоров, возникающих из-за «пустых» пикселей на изображении, обработанном с помощью алгоритма сверхразрешения

Не беспокойтесь об этом! При укладке Siril игнорирует пиксели, равные 0, поэтому, если у вас достаточно входящих кадров и подвижки между кадрами соответствующим образом распределены, все пиксели получат покрытие от достаточного количества пикселей, и итоговый стек будет в порядке. Однако, если при укладке вы используете меньшее количество входящих кадров, и это вызывает проблемы, попробуйте другое ядро алгоритма сверхразрешения. Здесь точно такое же изображение, обработанное с помощью алгоритма сверхразрешения в том же масштабе и с той же долей пикселя, но с ядром Квадрат вместо Турбо. Результат будет другим, и узор более не будет виден.

Использование другого ядра алгоритма сверхразрешения может устранить узоры из «пустых» пикселей

##### «Пятнистые» стеки

Одна из проблем, с которой вы можете столкнуться при укладке данных, обработанных с помощью алгоритма сверхразрешения, это если в данных слишком много «пустых» пикселей, то конечный результат может иметь странный «пятнистый» вид:

Типичный «пятнистый» стек, полученный при укладке данных, обработанных с помощью алгоритма сверхразрешения, в котором слишком много «пустых» пикселей или недостаточное количеством кадров

Обычно это происходит с ядрами точка, турбо или Ланцош. Вы можете исправить это, используя ядра квадрат или Гаусс, либо увеличив количество входящих кадров.

##### Команды

Командная строка Siril

    seqapplyreg sequencename [-prefix=] [-scale=] [-layer=] [-framing=]
    seqapplyreg sequencename ... [-interp=] [-noclamp]
    seqapplyreg sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]
    seqapplyreg sequencename ... [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]] [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Используя ранее вычисленные данные регистрации (см. REGISTER), выполняет геометрическое преобразование изображений последовательности, указанной в аргументе таким образом, чтобы они могли быть наложены на опорное изображение.
Название итоговой последовательности начинается с префикса "r_", если с помощью опции -prefix= не указан иной.
Для RGB-изображений регистрация выполняется на первом слое, для которого существуют данные, если не указан иной слой с помощью опции -layer= (0, 1 или 2 для R, G и B, соответственно).
Итоговые изображения могут быть масштабированы с помощью аргумента -scale=, являющимся дробным значением в диапазоне от 0,1 до 3.
Автоматическое кадрирование итоговой последовательности может быть сделано с помощью опции -framing= и указанием метода кадрирования из списка { current | min | max | cog } :
-framing=max (ограничивающая рамка) проецирует каждое изображение и вычисляет его сдвиг относительно опорного. Итоговая последовательность может быть уложена с помощью опции -maximize команды STACK, которая создаёт полное изображение, включающее все изображения последовательности.
-framing=min (общая область) обрезает каждое изображение до области, общей с всеми остальными изображениями в последовательности.
-framing=cog определяет лучшее кадрирование как центр тяжести (center of gravity — cog) всех изображений.
Интерполяция изображений:
По умолчанию преобразования применяются к изображениям с использованием интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции по умолчанию используется фиксация (clamping), предотвращающая артефакты, но она может быть отключена с помощью аргумента -noclamp.
Сверхразрешение:
В противном случае изображения можно экспортировать с помощью алгоритма сверхразрешения HST, передав аргумент -drizzle, который может принимать дополнительные параметры:
-pixfrac= устанавливает долю пикселей (по умолчанию = 1.0).
-kernel= устанавливает ядро и обязательно принимает одно из следующих значений point (точка), turbo (турбо), square (квадрат), gaussian (Гаусс), lanczos2 (Ланцош-2) или lanczos3 (Ланцош-3). Значение по умолчанию — square.
-flat= указывает использовать ли мастер-кадр плоского поля для присвоения веса входящим пикселям при использовании сверхразрешения (по умолчанию — кадры плоского поля не используются).
Фильтрация изображений:
Изображения для регистрации могут быть отфильтрованы с помощью некоторых фильтров, например, выбранные или с лучшей FWHM, используя опции -filter-*.
Ссылки: register, stack

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

register и seqapplyreg имеют новый аргумент -drizzle, который, вместе с некоторыми связанными аргументами, активирует истинное сверхразрешение.

##### Литература

[Losson2010]

Olivier Losson, Ludovic Macaire, Yanqin Yang. Comparison of color demosaicing methods. Advances in Imaging and Electron Physics, 2010, 162, pp.173-265, section 2.2.2. https://hal.science/hal-00683233/document

[FruchterHook1997]

A. S. Fruchter and R. N. Hook. (1997) A novel image reconstruction method applied to deep Hubble Space Telescope images. Proc. S.P.I.E. vol. 3164. https://arxiv.org/abs/astro-ph/9708242

[Avila2015]

R. J. Avila, A. Koekemoer, J. Mack, A. Fruchter. (2015) Optimizing pixfrac in Astrodrizzle: An Example from the Hubble Frontier Fields. https://www.stsci.edu/files/live/sites/www/files/home/hst/instrumentation/wfc3/documentation/instrument-science-reports-isrs/_documents/2015/WFC3-2015-04.pdf

### Укладка

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

#### Способы укладки

##### Сумма

Это самый простой алгоритм: каждый пиксель укладываемых кадров суммируется. Увеличение отношения сигнал/шум (SNR) пропорционально \(\sqrt{N}\), где \(N\) — количество изображений. Из-за отсутствия нормализации и отбраковки этот метод следует использовать только для планетарной обработки.

Для входных изображений с глубиной 8 или 16 бит на канал сумма вычисляется в виде 64-битного целого числа, затем нормализуется до максимального значения пикселя и сохраняется в виде 16-битного целого без знака или 32-битного изображения с плавающей запятой.

Этот метод укладки следует использовать для 8-битных входных изображений, поскольку он повышает динамику изображений при их укладке и делает различимыми детали. Суммирование такой последовательности с использованием методов среднего значения или медианы только уменьшило бы шум, но не улучшило динамику изображения, в результате чего глубина изображения все равно составила бы 8 бит.

##### Среднее с выбраковкой пикселей

Этот метод укладки вычисляет среднее значение пикселей в стеке после исключения отклоняющихся от нормы пикселей и дополнительной нормализации изображений относительно эталонного изображения. Что касается результирующего изображения, улучшение SNR пропорционально \(\sqrt{N}\). Существует несколько способов нормализации изображений и несколько способов обнаружения и замены или исключения отклоняющихся пикселей, описанных ниже.

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

Некоторые операционные системы ограничивают количество одновременно открытых изображений, которые необходимы для укладки методами медианы или среднего значения. Для Windows это ограничение составляет 2048 изображений. Если у вас много изображений, вам следует использовать другой тип последовательностей, описанных здесь.

Stacking pixel rejection panel

###### Методы выбраковки пикселей

- Обрезка по процентилям: это одношаговый алгоритм выбраковки, идеально подходящий для небольших наборов данных (до 6 изображений).

- Обрезка по σ: итеративный алгоритм, который отбрасывает пиксели, отстоящие от медианы более чем на два заданных значения, указанных в единицах σ (Верхний порог, Нижний порог).

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

- Медианная обрезка по :math:`sigma`: тот же алгоритм, что и Обрезка по \(\sigma\) за исключением того, что отброшенные пиксели заменяются медианным значением сложенного изображения.

- Винсоризованная обрезка по :math:`sigma`: очень похож на метод обрезки по \(\sigma\), за исключением того, что он должен быть более надежным для обнаружения выбросов, см. работу Хубера [Peter2009].

- GESDT [Rosner1983]: это обобщение теста Граббса (Grubbs Test), которое используется для обнаружения одного или нескольких выбросов в одномерном наборе данных, который приблизительно соответствует нормальному распределению. Данный алгоритм демонстрирует прекрасную производительность на больших наборах данных, имеющих более 50 изображений.

- Линейная обрезка [ConejeroPI]: подбирает наилучшую прямую линию (\(y=ax+b\)) пикселей уложенного изображения и отсекает выбросы. Этот алгоритм очень хорошо работает с большими стеками и изображениями, содержащими градиенты неба с различающимися пространственным распределением и ориентацией.

Note that for drizzled CFA images, you may find difficulty in achieving satisfactory rejection in the Red and Blue channels with some methods. In these cases the MAD Clipping method appears to be the most effective.

Карты выбраковки

Опция Создать карты выбраковки вычисляет и создает карты отклонения в ходе укладки. Это изображения, показывающие, сколько изображений было отклонено для каждого пикселя итогового изображения, деленное на количество сложенных изображений. Если отмечена опция Объединить L+H, Siril создает только одну карту выбраковки, которая будет суммой карт низов и верхов.

Пример карты выбраковки (L+H). Мы можем очень четко видеть удалённый след спутника.

###### Присвоение веса

Присвоение веса позволяет придать статистический вес каждому изображению. Таким образом, изображения, которые считаются лучшими, будут иметь больший вес, чем те, которые считаются худшими. Доступны четыре метода присвоения веса:

- Кол-во звёзд присваивает вес отдельным кадрам на основе количества звезд, вычисленного на этапе регистрации.

- Со взвешенной FWHM присваивает вес отдельным кадрам на основе wFWHM, вычисленной в ходе регистрации. Это FWHM, взвешенный по количеству звёзд на изображении. При одном и том же измерении FWHM изображение с большим количеством звёзд будет иметь лучшую wFWHM, чем изображение с меньшим количеством звёзд.

- Шум присваивает вес отдельным кадрам на основе значения шума фона.

- Кол-во изображений присваивает вес отдельным кадрам на основе их времени интеграции.

###### Сшивка изображений

Available since Siril 1.3, this submenu allows to perform a smoother stitching between images with little overlaps. It is the first step of mosaic stitching which we plan to expand further in next releases.

Stack stitching panel

- Borders feathering applies a feathering mask on each image during stacking. The smoothing is applied over X pixels distance, X between the value you set with this interface. The masks are cached in the `./cache` subfolder.

Borders feathering applied to a 3x2 mosaic (negative). Images courtesy of G. Attard

- Normalization on overlaps will compute the normalization factors on the images overlaps instead of whole images. This is useful when images have little overlap and when the nature of the data in each tile is very different accross all images (some images with mostly nebulosity and others with mainly black sky). As it is longer to compute than regular normalization, you should try without ticking this option first. This feature is intended for stitching stacked mosaic tiles so it will throw a warning if you try to compute it for a long sequence (i.e. for subs acquired with a smart telescope in mosaic mode). It is only available if maximize framing is enabled.

Global vs overlap normalization on a 2x1 mosaic. Images courtesy of D. Huber

Теория

The normalization on overlaps has been derived from the algorithm for gain compensation from [Brown2007]. The full write-up of the modifications is described in the contributors documentation.

##### Медиана

Этот метод наиболее часто используется для укладки кадров темнового тока/плоского поля/смещения. Медианное значение пикселей в итоговом изображении вычисляется для каждого пикселя.

Увеличение SNR пропорционально \(0.8\sqrt{N}\) и, следовательно, хуже, чем при суммировании по среднему значению, которое обычно предпочтительнее.

##### Максимум

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

##### Минимум

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

#### Методы нормализации входных данных

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

Это приводит к улучшению отношения сигнал/шум, и поэтому этот параметр используется по умолчанию при аддитивной нормализации.

Stacking input normalization panel

Если выбран один из этих 5 пунктов, то перед объединением всех входных изображений будет выполнен процесс нормализации.

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

- Масштаб выравнивает дисперсию путем присвоения веса всем входным изображениям. Это позволяет улучшить соотношение сигнал/шум, и поэтому этот параметр используется по умолчанию при аддитивной нормализации.

Нормализация | Действие | Когда использовать
--- | --- | ---
Нет | Нормализация не была применена. | кадры темнового тока/кадры шума считывания
Аддитивный | Средние фоновые значения будут выровнены с помощью применения аддитивных операций. |
Мультипликативный | Для выравнивания средних фоновых значений будет использоваться деление. | кадры плоского поля
Аддитивный с масштабированием | В сочетании с аддитивным фоном, полученным аддитивным выравниванием, изображения будут масштабироваться для достижения выравнивания дисперсии. | отдельные субэкспозиции (light frames)
Мулитипликативный с масштабированием | В сочетании с фоном, выравненным путём деления, изображения будут масштабироваться для достижения выравнивания дисперсии. |

Примечание

Мастер-кадры шума считывания и темновые мастер-кадры не должны подвергаться нормализации. Однако для кадров плоского поля обязательно надо использовать мультипликативную нормализацию.

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

Поскольку этап расчета нормализации обычно является длительным, так как требует определения всех статистических данных изображения, результаты сохраняются в файле `seq`. Таким образом, если пользователь захочет выполнить ещё одну укладку, изменив параметры выбраковки, то она будет выполнена быстрее. Опция Пересчитать позволяет принудительно выполнить перерасчет нормализации.

По умолчанию Siri использует IKSS функцию оценки местоположения и масштаба для вычисления нормализации. Для длинных последовательностей вычисление этих функций оценки может быть довольно трудоемким. В таких случаях вы можете выбрать более быстрые функции оценки (основанные на медиане и среднем абсолютном отклонении) с помощью опции :guilabel: "Быстрая нормализация". Хотя они менее устойчивы к выбросам на каждом изображении, они все же могут дать удовлетворительный результат по сравнению с полным отсутствием нормализации.

#### Выбраковка изображений

Также можно отбраковать некоторое количество изображений, чтобы выбрать только лучшие. Это может быть очень полезно для метода удачных экспозиций DSO (Lucky imaging), когда количество изображений в последовательности очень велико. Можно выбрать между % и k-\(\sigma\), чтобы либо сохранить заданный процент изображений, либо рассчитать допустимый порог, используя отсечение k-\(\sigma\).

Stacking image rejection panel

Доступно несколько критериев:

- все: при укладке используются все изображения последовательности.

- выбранные: используются только те изображения, которые отмечены выбранными в последовательности.

- FWHM: изображения с наилучшим вычисленным значением FWHM (только регистрация на основе звезд).

- со взвешенной FWHM: это усовершенствование простой FWHM. Оно позволяет исключить гораздо больше некачественных изображений, используя количество обнаруженных звезд по сравнению с эталонным изображением (только регистрация на основе звезд).

- с лучшей округлостью: изображения с наилучшей округлостью звезд (только регистрация на основе звезд).

- фон: изображения с самым низким значением фона (только регистрация на основе звёзд).

- кол-во звёзд: изображения с максимальным количеством обнаруженных звёзд (только регистрация на основе звёзд).

- с лучшим качеством: изображения с лучшим качеством (регистрация планет DFT или Kombat).

#### Результат укладки

- Если отмечена опция Нормализация вывода, то итоговое изображение будет нормировано к диапазону [0, 1], если вы работаете с данными в 32-битном формате, либо к диапазону [0, 65535] в остальных случаях.

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

  Не следует включать эту опцию при укладке мастер-кадров.

- Если включена опция Выравнивание RGB, то каналы в итоговом изображении будут выровнены (только для цветных изображений).

- If Maximize framing is checked, the output image will encompass all the images. Note this option is forced if the images have different sizes.

- If Interpolation upscaling x2 is ticked, the images will be upscaled during stacking. Note this option is not always available.

- Selecting Force 32b forces the stacked image to be saved as a float image irrespective of the bitdepth set in the Preferences.

- Результат суммирования сохраняется под именем, указанным в текстовом поле. Для создания имени файла можно использовать:ref:разбор пути <Pathparsing:Path parsing>. Если отмечена опция Перезаписать, это позволяет вновь созданному файлу перезаписать старый, если он существует. Если эта опция не установлена, но изображение с таким же именем уже существует, то новый файл не создается.

#### Литература

[Peter2009]

Peter J. Huber and E. Ronchetti (2009), Robust Statistics, 2nd Ed., Wiley

[ConejeroPI]

Juan Conejero, ImageIntegration, Pixinsight Tutorial

[Rosner1983]

Rosner, B. (1983). Percentage points for a generalized ESD many-outlier procedure. Technometrics, 25(2), 165-172.

[Brown2007]

Brown, M., & Lowe, D. G. (2007). Automatic panoramic image stitching using invariant features. International journal of computer vision, 74, 59-73.

## Обработка

Этот раздел проведет вас через различные этапы обработки изображений. Выпадающее меню доступно в верхней панели заголовка с помощью кнопки Обработка. Инструменты группируются в меню и подменю, и в этой документации тоже, по темам.

Меню «Обработка»

### Растягивание изображений

Изображения хранятся в виде значений пикселей, которые поступают с камеры по квазилинейному закону, что означает, что для областей неба, на которых нет видимых особенностей, значение пикселя будет близко к нулю, но для ярких объектов, таких как звёзды, оно будет близко к максимальному значению в зависимости от экспозиции и усиления. Между тем, если туманность имеет поверхностную величину в половину звезды, она будет иметь значения пикселей в половину от звёздных и так далее. Это то, что мы называем линейным пиксельным режимом.

Человеческий глаз не воспринимает фотоны таким образом. Он усиливает тёмные области, поэтому объект, который в десять раз менее яркий, чем другой, будет казаться в два раза тусклее. Для астрономических изображений мы обычно отображаем их с подобным масштабированием значений пикселей (см. режимы отображения в графическом интерфейсе).

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

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

#### Преобразование по asinh

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

Диалоговое окно Преобразование по asinh

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

\[\text{pixel} = \frac{(\text{original} - \text{blackpoint})\times\text{asinh}(\text{original}\times\text{stretch})}{\text{original}\times\text{asinh}(\text{stretch})}\]

Для цветных изображений функция становится следующей:

\[\text{pixel} = \frac{(\text{original} - \text{blackpoint})\times\text{asinh}(\text{rgb}\_\text{original}\times\text{stretch})}{\text{rgb}\_\text{original}\times\text{asinh}(\text{stretch})}\]

где rgb_original вычисляется с использованием значений пикселей трех каналов.

A clipping mode can also be set.

Теория

As rgb_original is an average of the 3 channels, one or two channel values will be greater than rgb_original and can therefore clip. This can cause color artefacts when bright, strongly-colored regions are stretched. In order to avoid this problem the RGB blend clipping algorithm was developed by the authors of the original GHSastro tool: the same algorithms are available in the Siril implementation and this is the default clipping mode for stretches that require handling of clipping. The \((r, g, b)\) values are stretched first based on the luminance value rgb_original to give \((r', g', b')\). Then the original \((r, g, b)\) values are independently stretched to give \((r'', g'', b'')\). Finally the largest value of \(k\) is identified such that

\(k \times r' + ( 1 - k ) \times r'' ≤ 1\);

\(k \times g' + ( 1 - k ) \times g'' ≤ 1\);

и

\(k \times b' + ( 1 - k ) \times b'' ≤ 1\)

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

\(( k \times r' + ( 1 - k ) \times r'', k \times g' + ( 1 - k ) \times g'', k \times b' + ( 1 - k ) \times b'')\)

This RGB blend clipping algorithm is also available for the Generalised Hyperbolic Stretch transforms described below.

Other choices of clipping algorithm are available:

- Clip - this clipping mode just allows any colour components that clip to clip, but restricts them to values in the range 0.0 to 1.0. This may suffer from coloured artefacts such as fringes around nearly-saturated stars, but it is extremely quick to calculate.

- Rescale - this clipping mode checks the R, G and B components of each pixel and if any are > 1.0 it rescales the pixel so that no components are clipped. This method is prone to artefacts and is mainly included for feature equivalence with the GHSastro plugin. It is quick to compute.

- Global Rescale - this clipping mode behaves similarly to Rescale except that the scaling is computed globally instead of per-pixel. This avoids the kind of artefacts that Rescale can produce, but has a bigger impact on overall image brightness. This is faster than RGB blending to compute but slower than Clip or Rescale.

When the Use Human-weighted Luminance option is not ticked, rgb_original is the mean of the three pixel values; when it is set, weighting changes to 0.2126 for the red value, 0.7152 for the green value and 0.0722 for the blue value, which gets results closer to human perceptual color balance.

Командная строка Siril

    asinh [-human] stretch { [offset] [-clipmode=] }

Преобразует изображение, используя функцию arcsin, благодаря чему становятся видны тусклые объекты. Обязательный аргумент команды — stretch, обычно в диапазоне от 1 до 1000, определяет интенсивность растягивания. Точка чёрного может быть смещена с помощью аргумента offset в нормализованном значении пикселя в диапазоне [0, 1]. Наконец, аргумент -human позволяет использовать веса на основе относительной чувствительности человеческого глаза для вычисления светимости, применяемой при расчёте растягивания для каждого пикселя, а не просто средние значения пикселей каналов. Этот метод растягивания сохраняет светимость в цветовом пространстве L*a*b*. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

#### Преобразование гистограммы (преобразование функцией передачи полутонов, MTF)

Преобразование гистограммы (MTF) является одним из самых мощных инструментов для растягивания изображения. Он может легко автоматизироваться, и именно поэтому в автоматическом растягивании используется именно этот метод.

Диалоговое окно Преобразование гистограммы

Инструмент представлен в виде гистограммы с тремя ползунками (в форме треугольника, расположенных под ней), которые необходимо двигать для преобразования изображения. Треугольник слева представляет сигнал теней, справа — света (ярких деталей), а тот, что посередине, — параметр баланса полутонов. Значения этих ползунков отображаются под гистограммой слева и могут быть изменены непосредственно вручную. Напротив показан процент пикселей, обрезаемых при преобразовании: важно не обрезать слишком много пикселей. Если изменяется только параметр полутонов, то никакие пиксели обрезаны не будут.

Теория

Новые значения пикселей затем вычисляются с помощью следующей функции:

(1)\[\begin{split}\text{MTF}(x_p) = \frac{(m - 1)x_p}{(2m - 1)x_p - m}. \\\end{split}\]

- Для \(x_p=0\), \(\text{MTF} = 0\),

- для \(x_p=m\), \(\text{MTF} = 0.5\),

- для \(x_p=1\), \(\text{MTF} = 1\),

где \(x_p\) — это значение пикселя, определяемое следующим образом

(2)\[x_p=\frac{\text{original}-\text{shadows}}{\text{highlights}-\text{shadows}}.\]

Примечание

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

The toolbar contains many buttons that affect the visualization of the histogram. You can choose to display the input histogram, the output histogram, the transfer curve and the grid. The button allows you to apply the same transformation as the autostretch algorithm. It is rarely advisable to use this button as is. Adjustments are usually necessary to avoid losing information.

Совет

When the button is pressed, the sliders and lo, mid and hi entries will become temporarily inactive. You have to apply the autostretch with the Apply button and the controls will reactivate. You can then apply adjustments as a second follow-up stretch. This behaviour avoids problems where the monitor ICC profile is different to the image ICC profile.

At the top of the histogram it is also possible to choose to display the histogram in logarithmic view, as in the illustration. This behavior can be made default as explained here. Finally a zoom in X is available. This is very useful when all the signal is concentrated on the left of the histogram.

Совет

If a ROI is set, the MTF histogram preview will not update to show the impact of the stretch on the ROI. This is because that behaviour could be misleading: if the ROI is not typical of the image overall, adjusting the ROI histogram to a suitable level would result in a badly adjusted histogram for the overall image and potentially a burned-out or excessively dark look to the result. When in ROI mode the stretch parameters should be adjusted by eye. If it is desired to check the histogram for the stretch as applied to the image as a whole, the ROI should be cleared.

Командная строка Siril

    mtf low mid high [channels]

Применяет передаточную функцию полутонов к изображению, загруженному в настоящий момент.
Необходимы три параметра low, midtones и high, где параметр баланса полутонов (midtones) определяет нелинейное растяжение гистограммы в диапазоне [0,1]. Для автоматического определения параметром см. AUTOSTRECH.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам
Ссылка: autostretch

Примечание

mtf — это функция, которую также можно использовать в инструменте Математические операции над пикселями.

Командная строка Siril

    autostretch [-linked] [shadowsclip [targetbg]]

Автоматически растягивает текущее загруженное изображение с различными параметрами для каждого канала (если каналы несвязаны), если только не передан аргумент -linked. Необязательные аргументы: shadowclip — точка обрезки теней, выраженная в значениях σ от основного пика гистограммы (по умолчанию -2.8); targetbg — целевое значение фона, в диапазоне [0, 1] (по умолчанию 0.25), определяющее окончательную яркость изображения. Значениями по умолчанию являются используемые при визуализации авторастягивания в графическом интерфейсе пользователя.
Не используйте несвязанную версию после калибровки цвета, поскольку это повлияет на баланс белого

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

Это преобразование можно легко применить к последовательности изображений. Вам просто нужно определить преобразование на загруженном изображении (с уже загруженной последовательностью), затем установить флажок Применить к последовательности и определить префикс вывода для новой последовательности (по умолчанию `stretch_`), или использовать следующую команду:

Командная строка Siril

    seqmtf sequencename low mid high [channels] [-prefix=]

Аналогична команде MTF, но применяется к последовательности sequencename.
Название итоговой последовательности начинается с префикса "mtf_", если с помощью опции -prefix= не указан иной
Ссылка: mtf

#### Обобщённое гиперболическое преобразование (GHS)

Это самый функциональный и современный инструмент в Siril, однако также и самый сложный для изучения. Очень подробный учебник по использованию этого инструмента в Siril был написан авторами данного алгоритма: https://siril.org/tutorials/ghs. Здесь мы лишь кратко подведем итоги основной работы с этим инструментом.

Диалоговое окно Обобщённого гиперболического преобразования

Простыми словами, GHS способен улучшать контраст в определённом диапазоне яркости на изображении. Например, если нужно лучше рассмотреть детали в части туманности со средней или высокой яркостью (что обычно очень слабо выражено на астрономических изображениях), можно выбрать именно этот диапазон для растягивания. Этот инструмент отлично справляется с улучшением контраста основных объектов без чрезмерного увеличения размеров звёзд. Инструмент в значительной степени основан на итеративном использовании, то есть растягивании на изображении различных диапазонов яркости один за другим, небольшими корректировками.

Для достижения этой цели инструмент в значительной степени полагается на отображение гистограммы и взаимодействие с ней для каждого цветового канала. Функция преобразования, имеющая форму гиперболы или буквы 'S', может быть изменена путем перемещения ее центра (параметр — точка симметрии (SP)), выравнивания любого из ее концов (с помощью параметров защиты теней и ярких участков — Точка сохранения теней (LP) и Точка cохранения светов (HP)) и, конечно, настройки силы её изгиба (коэффициенты растягивания (ln(D+1)) и локального растягивания (b)). Использование этих параметров на маленьком изображении (для повышения скорости) со значением SP , равным 0.5, поможет вам лучше понять их влияние.

На каждой итерации нужно выполнить две основные операции: выбрать диапазон источников света для изменения и фактически изменить его. Выбор диапазона довольно прост, это вопрос нахождения репрезентативного значения (SP) и определения ширины диапазона (b). Установка SP может быть выполнена тремя способами:

- выберите область на изображении с подходящей яркостью и нажмите на кнопку выбора

- щелкнуть по самой гистограмме один раз левой кнопкой мыши (можно увеличить гистограмму с помощью кнопки + в левом верхнем углу)

- с помощью ползунка или связанных с ним кнопок плюс и минус или прямого ввода значения.

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

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

- Начальное растяжение из линейного состояния: установите SP немного левее главного пика, умеренное значение b от 6 и выше, слегка увеличьте D, чтобы только начать видеть основной объект. Не растягивайте слишком сильно на этом этапе, как это делает автоматическое растяжение, иначе звезды станут слишком большими (основной раздел руководства по этой теме).

- Улучшение контраста диапазона или заполнение впадины: установите SP в центр впадины на гистограмме, задайте b настолько высоким, чтобы он соответствовал узости диапазона впадины, уменьшите HP, чтобы сохранить звезды, медленно увеличивайте D, пока улучшение не станет заметным.

- Уменьшение контраста диапазона или сглаживание пика: уменьшение пика не так просто выполнить, но оно может произойти как побочный эффект от заполнения впадин. Например, создание пика или заполнение впадины приведет к уменьшению того, что находится левее SP. Другая возможность — использовать инвертированное обобщённое гиперболическое преобразование, выбрав его из выпадающего списка Тип растягивания, установив высокое значение LP и HP равным 1.

- Сдвиг кривой влево, делая изображение темнее: часто после растяжения всей гистограммы пик смещается вправо, что делает фон слишком ярким. Существует простой способ просто сдвинуть всё влево — в выпадающем списке Тип растягивания выберите последний пункт, Линейное растягивание (сдвиг BP). Теперь есть только один ползунок для перемещения, который управляет величиной сдвига.

Совет

If a ROI is set, the GHT histogram preview will not update to show the impact of the stretch on the ROI. This is because that behaviour could be misleading: if the ROI is not typical of the image overall, adjusting the ROI histogram to a suitable level would result in a badly adjusted histogram for the overall image and potentially a burned-out or excessively dark look to the result. When in ROI mode the stretch parameters should be adjusted by eye. If it is desired to check the histogram for the stretch as applied to the image as a whole, the ROI should be cleared.

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

Обобщённое гиперболическое преобразование с цветным изображением

- сдвиг пика вправо: простое растяжение со значением SP, установленным левее пика, как правило делает это, поэтому данная операция должна быть частью процесса растяжения.

- spreading a peak: to stretch a channel a bit more and it give it more importance in the final result, without changing the location of the peak too much, set SP near the peak or slightly to its right, set b depending on how the contribution is expected throughout the channel, between a negative value if the impact shall be felt up to the stars levels (to change their color) and a high value if this is only for a nebula, increase D to obtain the target width of the peak, and then offset the peak to the left by decreasing HP.

- сдвиг всех каналов вместе: существует альтернативное растяжение на основе отображения яркости, см. выпадающий список Цветовая модель растягивания в верхнем правом углу окна обобщённого гиперболического преобразования. Использование любого из значений растяжения яркости будет растягивать яркость и наносить цвета обратно на неё вместо прямого растяжения трёх каналов. Режимы яркости могут лучше сохранять цвета на изображении. Эти режимы используют описанный выше алгоритм обрезки смешивания RGB для предотвращения артефактов обрезки цветовых каналов.

- изменение насыщенности изображения: обобщённое гиперболическое преобразование можно применить к каналу насыщенности изображения, выбрав опцию Растянуть насыщенность в выпадающем списке Модель растягивания. При выборе этого режима гистограмма насыщенности до и после растяжения будут отображаться жёлтым цветом. Все параметры GHS доступны, и этот режим позволяет осуществлять высокоточную корректировку канала насыщенности изображения. Простой способ увеличения насыщенности в относительно малонасыщенных областях, предотвращая перенасыщение, заключается в использовании инвертированного обобщённого гиперболического преобразования с SP, установленным около 0.5, и снижением HP до уровня, достаточного для выравнивания верхней части гистограммы насыщенности.

In order to control partially-clipped highlights, the GHS tool makes available the same range of clipping modes as the asinh stretch. Details can be found here.

> Изображение выше демонстрирует, как применение инструмента Обобщённого гиперболического преобразования к каналу насыщенности предоставляет простой способ значительного усиления насыщенности в изображении с низкой насыщенностью, сохраняя при этом контроль над верхней частью гистограммы насыщенности. На примере показано создание изображения 'Минеральной Луны', подчёркивающего различный минеральный состав различных областей лунной поверхности.

Командная строка Siril

    ght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Обобщённое гиперболическое растягивание, основанное на работе группы ghsastro.co.uk.
Аргумент -D= определяет силу растягивания. Принимает значения между 0 и 10. Это единственный обязательный аргумент. Последующие необязательные аргументы дополнительно настраивают растягивание:
B определяет интенсивность растягивания вблизи точки фокуса (focal point); принимает значения между -5 и 15;
LP определяет диапазон сохранения теней между 0 и SP, где растягивание будет линейным, сохраняя детали в тенях;
SP определяет точку симметрии растягивания, между 0 и 1, т.е. точку, где растягивание будет наиболее интенсивным;
HP определяет область между HP и 1, где растягивание линейно, сохраняя детали в светах и предотвращая распухание звёзд.
Если аргументы не даны, используются значения по умолчанию для B, LP и SP — 0.0, и 1.0 для HP.
Для цветового растягивания может быть передан необязательный аргумент -human, -even или -independent, позволяющий выбрать модель относительной чувствительности глаза, равновзвешенной светимости или независимые значения канала. Для монохромных изображений этот аргумент игнорируется. В качестве альтернативы, аргумент -sat указывает, что растягивание применяется к насыщенности изображения — для этого изображение должно быть цветным и должны быть выбраны все каналы.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

Командная строка Siril

    invght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Инвертирует обобщённое гиперболическое растягивание. Предоставляет обратное преобразование GHT с теми же параметрами (если указаны), отменяет команду GHT, возможно возвращаясь к линейному изображению. Может работать таким же образом, как и GHT, но для негативных изображений
Ссылка: ght

Командная строка Siril

    modasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Модифицированное растягивание по arcsinh, основанное на работе группы ghsastro.co.uk.
Аргумент -D= определяет силу растягивания. Принимает значения между 0 и 10. Это единственный обязательный аргумент. Последующие необязательные аргументы дополнительно настраивают растягивание:
LP определяет диапазон сохранения теней между 0 и SP, где растягивание будет линейным, сохраняя детали в тенях;
SP определяет точку симметрии растягивания, между 0 и 1, т.е. точку, где растягивание будет наиболее интенсивным;
HP определяет область между HP и 1, где растягивание линейно, сохраняя детали в светах и предотвращая распухание звёзд.
Если аргументы не указаны, используются значения по умолчанию 0.0 для LP и SP, и 1.0 для HP.
Для цветового растягивания может быть передан необязательный аргумент -human, -even или -independent, позволяющий выбрать модель относительной чувствительности глаза, равновзвешенной светимости или независимые значения канала. Для монохромных изображений этот аргумент игнорируется. В качестве альтернативы, аргумент -sat указывает, что растягивание применяется к насыщенности изображения — для этого изображение должно быть цветным и должны быть выбраны все каналы.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

Командная строка Siril

    invmodasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Инвертирует модифицированное преобразование по arcsinh. Предоставляет обратное преобразование MODASINH с теми же параметрами (если указаны), отменяет команду MODASINH, возможно возвращаясь к линейному изображению. Может работать таким же образом, как и MODASINH, но для негативных изображений
Ссылка: modasinh

Командная строка Siril

    linstretch -BP= [-sat] [-clipmode=] [channels] [-clipmode=]

Выполняет линейное растягивание изображения к новой точке чёрного BP.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам.
Необязательный параметр -sat может быть использован для применения линейного растягивания к каналу насыщенности (saturation channel) изображения. Этот аргумент работает только если выбраны все каналы. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

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

Это преобразование можно легко применить к последовательности изображений. Вам просто нужно определить преобразование на загруженном изображении (с уже загруженной последовательностью), затем установить флажок Применить к последовательности и задать префикс вывода для новой последовательности (по умолчанию stretch_). Все команды также имеют форму обработки последовательностей. Каждая команда растяжения последовательности начинается с seq, а первым аргументом должно быть имя последовательности, но в остальном они такие же.

Командная строка Siril

    seqght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде GHT, но имя последовательности должно быть указано в первом аргументе. Пользовательский префикс может быть передан с помощью необязательного аргумента -prefix=
Ссылка: ght

Командная строка Siril

    seqinvght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде INVGHT, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: invght

Командная строка Siril

    seqmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде MODASINH, но имя последовательности должно быть указано в первом аргументе. Пользовательский префикс может быть передан с помощью необязательного аргумента -prefix=
Ссылка: modasinh

Командная строка Siril

    seqinvmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде INVMODASINH, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: invmodasinh

Командная строка Siril

    seqlinstretch sequence -BP= [channels] [-sat] [-prefix=]

Аналогична команде LINSTRETCH, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: linstretch

#### Преобразование кривых

Curves Transformation is a highly versatile tool used to adjust the contrast and brightness of an image by modifying the pixel values according to a custom-defined curve. This allows for precise control over the image's stretch.

The curve is defined by a series of points, each of which can be moved to adjust the curve. The curve is interpolated between these points, and the pixel values are transformed based on it. This allows for a wide range of transformations to be applied to the image, from simple linear stretches to complex non-linear adjustments.

Диалоговое окно инструмента преобразования кривых

There are two interpolation algorithms available in the Curves Transformation dialog: linear and cubic spline.

Теория

> - Linear interpolation is a simple interpolation that connects the points with straight lines. For each pair of points, the slope of the line connecting the points is calculated:

>   (3)\[\begin{split}\text{slope} = \frac{y_2 - y_1}{x_2 - x_1}. \\\end{split}\]

>   The pixel values are then transformed by evaluating the line at the original pixel value:

> (4)\[\text{pixel} = \text{slope} \times (\text{original} - x_1) + y_1.\]

> - Cubic spline curves are more complex curves that are defined by a series of control points. For pixel value \(x\) between two control points \(x_i\) and \(x_{i+1}\), the curve is defined by the following equation:

> (5)\[S_i(x) = a_i + b_i (x - x_i) + c_i (x - x_i)^2 + d_i (x - x_i)^3\]

> For \(x_i < x < x_{i+1}\), the coefficients \(a_i, b_i, c_i\), and \(d_i\) are calculated by solving a system of equations derived from the conditions of continuity and smoothness at each internal point. These conditions are:

> - The spline must be continuous at each internal point,

> - The first derivative of the spline must be continuous at each internal point,

> - The second derivative of the spline must be continuous at each internal point

> - Since Curves Transformation uses natural cubic splines, the second derivative at both endpoints is 0.

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

Curves Transformation is only available as a GUI tool and cannot be used from the command line.

Curves Transformationcan display the histogram of the image in two modes: linear and logarithmic. You can swap between these modes by clicking the Logarithmic scale checkbox at the top of the histogram. Logarithmic scale is useful for images with a wide dynamic range, as it allows you to see the histogram in the shadows and highlights more clearly.

Совет

If a ROI is set, the histogram preview will not update to show the impact of the stretch on the ROI. This is because that behaviour could be misleading: if the ROI is not typical of the image overall, adjusting the ROI histogram to a suitable level would result in a badly adjusted histogram for the overall image and potentially a burned-out or excessively dark look to the result. When in ROI mode the stretch parameters should be adjusted by eye. If it is desired to check the histogram for the stretch as applied to the image as a whole, the ROI should be cleared.

Some common uses of the Curves Transformation tool include:

- "S" curve: This curve is used to increase the contrast of an image. By increasing the slope of the curve in the middle of the histogram, the contrast is increased.

  > An example of an "S" curve

- BP & WP adjustments: The black point (BP) and white point (WP) of an image can be adjusted by moving the first and last control points of the curve. This allows for the shadows and highlights of the image to be adjusted independently.

  > An example of adjusting the black point and white point of an image

- Targeted adjustments: By adding control points at specific locations in the histogram, targeted adjustments can be made to the image. For example, the shadows can be darkened without affecting other parts of the image.

  > An example of a targeted adjustment to an image

Совет

The Curves Transformation tool is best used on an image that has already been stretched to some extent. This allows for more precise control over the image's contrast and brightness.

This transformation can easily be applied to a sequence. All you have to do is define the transformation on the loaded image while a sequence is loaded and check the Apply to sequence button. Similarly to other stretching tools, you can define the output prefix of the new sequence (`curve_` by default).

### Калибровка цвета

Siril offers three ways to retrieve the colors of your image:

- Калибровка вручную

- Фотометрическая калибровка цвета, или ФКЦ.

- Spectrophotometric Color Calibration, also called SPCC. This is the most accurate and recommended method

Here, "retrieve" means re-balancing the RGB channels to get as close as possible to the true colors of the shot object.

Совет

PCC and SPCC are two methods that require a plate-solved image. It is not possible to access these tools without this prerequisite.

#### Ручная калибровка цвета

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

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

Ручной способ использует следующее окно:

Диалоговое окно ручной Калибровки цвета.

Первый шаг касается фона вашего изображения. Цель состоит в том, чтобы выровнять слои RGB так, чтобы фон выглядел как нейтральный серый цвет.

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

Второй шаг касается ** ярких объектов** на изображении. Вы можете снова изменить гистограмму двумя способами:

- Вручную, с Ориентиром белого и 3 коэффициентами R, G и B, в соответствии с вашим собственным вкусом.

- Автоматически, выделив прямоугольную область с контрастным объектом (так же, как и ранее)

Два ползунка позволяют вам изменить предел выбраковки для слишком тёмных и слишком ярких пикселей в выделенной области.

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

#### Фотометрическая калибровка цвета

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

The calibration of the colors by photometry must imperatively be carried out on a linear image whose histogram was not yet stretched. Otherwise, the photometric measurements will be wrong and the colors obtained without guarantee of being correct.

Another way for retrieving the colors is to compare the color of the stars in the image with their color in catalogues, to obtain the most natural color in an automatic and non-subjective way. This is the PCC (Photometric Color Calibration) tool (`Ctrl` + `Shift` + `P`). It can only work for images taken with a set of red, green and blue filters for colors, or on-sensor color. To identify stars within the image with those of the catalogue, an astrometric solution is required. Please see the documentation of the plate solver module.

This method is less accurate than Spectrophotometric Color Calibration explained below, however it can be performed using local catalogues and is therefore the best option when an internet connection is not available.

Примечание

Эта техника сильно зависит от типа используемого фильтра. Использование различных типов фильтров R, G, B не будет иметь большого значения, но использование фильтра светового загрязнения или отсутствие ИК-фильтров приведет к существенным отклонениям в решении и не даст ожидаемых цветов.

Since version 1.4, the two tools run independently: it is possible to run the photometric analysis and color correction of the image only if the image has been already plate solved. It also means different catalogues can be used for PCC and astrometry. The tool is also available as the `pcc` command, so it can be embedded in image post-processing scripts.

Окно фотометрической калибровки цвета.

If the image was previously plate solved, turn on the annotations feature to check that catalogues align with the image. If the astrometric solution is not good enough, please redo a plate solving.

- The Catalog Settings section allows you to choose which photometric catalog should be used, NOMAD, APASS or Gaia DR3, as well as the limiting magnitude.

  Совет

  The NOMAD and GAIA catalogs can be locally installed, while the APASS catalog requires internet access to obtain its contents.

  The local Gaia catalog used for PCC is the astrometric extract, which is a much smaller download than the whole SPCC catalog. If this is available it will be shown as the default.

  Примечание

  Whereas the NOMAD and APASS catalogs use the catalogued B-V index and estimate the effective temperature from this value, Gaia provides an accurately modelled effective temperature therefore when this catalog is used the Teff field is used directly, giving more accurate results.

- Раздел "Обнаружение звезд" позволяет вам вручную выбрать, какие звезды будут использоваться для фотометрического анализа. Лучше, чтобы их было как минимум несколько сотен, так как выбор отдельных звёзд не будет идеальным.

- If desired, the Background Reference can be manually selected as described in Manual Color Calibration. This can be useful in the case of nebula images where the background sky parts are small.

Когда будет найдено достаточное количество звезд и астрометрическое решение будет правильным, фотометрическая калибровка цвета выведет этот текст на вкладке консоли:

    Applying aperture photometry to 433 stars.
    70 stars excluded from the calculation
    Distribution of errors: 1146 no error, 18 not in area, 48 inner radius too small, 4 pixel out of range
    Found a solution for color calibration using 363 stars. Factors:
    K0: 0.843       (deviation: 0.140)
    K1: 1.000       (deviation: 0.050)
    K2: 0.743       (deviation: 0.130)
    The photometric color correction seems to have found an imprecise solution, consider correcting the image gradient first

Мы можем понять, что из каталога и изображения для фотометрического анализа было выбрано 433 звезды, но каким-то образом мы фактически использовали только 363, исключив 70. Строка Распределение ошибок объясняет, по какой причине они были исключены: 18 не были найдены в ожидаемом положении, 48 были слишком большими, а 4, вероятно, насыщенными. Очень часто бывает так, что многие звезды отклоняются, потому что они не соответствуют строгим требованиям для корректного фотометрического анализа.

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

Командная строка Siril

    pcc [-limitmag=[+-]] [-catalog=] [-bgtol=lower,upper]

Запускает фотометрическую коррекцию цвета на загруженном изображении, имеющем астрономическое решение.
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений смещения (+offset или -offset) ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
По умолчанию используется каталог звёзд NOMAD. Используемый каталог можно изменить, указав -catalog=apass, -catalog=localgaia или -catalog=gaia. Если доступна локальная версия полного каталога NOMAD, можно использовать её с помощью -catalog=nomad
Допустимое отклонение от значения фона может быть указано в единицах σ с помощью -bgtol=lower,upper: значения по умолчанию равны -2.8 и +2.0, соответственно

#### Спектрофотометрическая калибровка цвета

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

The calibration of the colors by photometry must imperatively be carried out on a linear image whose histogram was not yet stretched. Otherwise, the photometric measurements will be wrong and the colors obtained without guarantee of being correct.

Spectrophotometric Color Calibration (`Ctrl` + `Shift` + `C`) is the newest method of color calibration available in Siril. This method uses the extensive spectral data available in the Gaia DR3 catalogue [GaiaDR3]. This can be accessed either through direct querying of the online catalogue or by downloading a local extract and querying the local catalogue.

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

Note that when the Gaia archive is offline for maintenance or due to a fault, Siril's SPCC functionality will not be available via the remote catalog. Fortunately the archive is normally very reliable, however a status indicator is built into the SPCC dialog. The archive status is checked when the dialog starts up and can be re-checked by clicking the status button.

The offline Gaia SPCC extract will still work fine if the Gaia archive is offline.

Диалоговое окно инструмента спектрофотометрической калибровки цвета.

Совет

What's the difference between SPCC and PCC? When should I use one rather than the other? SPCC is a more accurate version of PCC and renders the latter obsolete. SPCC takes your setups sensor and filters into account. As a result, the color produced is closer to "reality". The example in the picture below illustrates the difference in results.

Comparison between PCC (left) and SPCC (right): click to enlarge. (Courtesy of Ian Cass)

##### Local SPCC Catalog

From 1.4.0 an offline SPCC catalog is available using Gaia DR3 data. Note that the catalog is chunked into 48 files covering each level 1 HEALpixel.

Теория

HEALpix (Hierarchical Equal Area isoLatitude Pixelisation) is an algorithm for pixelising a sphere based on subdivision of a distorted rhombic dodecahedron. Mathematical details can be found on Wikipedia [Wiki_HEALPIX]. Gaia sources use a Level 12 NESTED HEALpix scheme and the HEALpixel number is encoded into the source_id. The specification of the Gaia DR3 catalogue extracts and their file format is documented here (PDF).

The nested nature of the scheme means that HEALpixels that are close together in the sky have numbers that are close together. The hierarchical property also means that it is possible to index sources in HEALpixels at a deep HEALpixel level and divide the catalog into chunks at a shallower level while still supporting a highly efficient catalog search algorithm.

It is possible to download the entire catalog or only the chunks you need. The folder location to store the catalog files is set in Preferences->Astrometry.

Sirilpy script

The easiest way to install the catalog is to use the built-in Python script `Siril_Catalog_Installer.py` in the Scripts->Python Scripts menu.

This provides an interface that allows you to install either the whole catalog, or only the chunks that are visible from your observing latitude above a certain elevation, or only sets of chunks corresponding to certain themes (Milky Way, Summer Triangle, Galaxy Season etc.) Select the latitiude / elevation or area of interest if desired, and then select the selection method (All, Visible from Latitude or Area of Interest).

You can preview the coverage using the Preview coverage button.

Finally, clicking Install will download, verify, uncompress and install the selected chunks and also set the catalog path in Siril's preferences. A default catalog path is suggested in the text entry widget, but can be changed to a different location if you prefer.

If you wish to install the offline SPCC catalog files manually, they can be downloaded from Zenodo. Either individual level 1 HEALpixels can be downloaded or the entire catalog can be downloaded as an archive.

Совет

When you download "All Files" from the Zenodo record, the download is a zip archive that you will need to extract, however the zip archive is just a convenient way of bundling all of the individual files; the data files inside the zip archive are themselves compressed with bzip2 compression, and you will need to decompress the individual .bz2 files before Siril can use them. Support for this compression format is available by default in Linux and MacOS, and is provided in Windows by various archive programs including 7-Zip and Pea-Zip, which are both Free and Open Source software.

All compressed files have accompanying sha256sums and there is a file containing all the sha256sums of the uncompressed files as well, for additional validation. The Zenodo record also provides a DOI reference that can be used to cite the dataset if you use it in academic work.

Siril uses an optimized extract of the Gaia DR3 xp_sampled datalink product. As with the astrometric extract, the offline catalogue is capped at the 127 brightest sources per level 8 HEALpixel. The catalogue contains fewer sources than the astrometric extract as xp_sampled spectra are typically only provided for sources brighter than magnitude 17.6 and therefore more HEALpixels in emptier parts of the sky have fewer than 127 sources compared with the astrometric extract (i.e. these HEALpixels contain all the available Gaia DR3 sources with xp_sampled data), but this approach still avoids overpopulation of the catalogue in extremely crowded parts of the sky while providing the best SNR. In those HEALpixels with fewer than 127 xp_sampled sources, the local catalog is as comprehensive as using the online Gaia archive directly.

The xp_sampled is converted from float32 to float16 data with an additional byte setting the exponent to be applied to the xp_sampled data for the source to overcome limitations on exponents expressible with float16. This is entirely justifiable given the error bars on the xp_sampled data and makes no practical difference to the accuracy of the results. It means that we can provide a highly effective, purpose-optimized local SPCC catalogue in under 21GB of data.

##### How it Works

SPCC requires knowledge of your sensor and the RGB filters you use. These are provided through an online repository which Siril will sync, either automatically at startup or manually when required. Sensor and filter information is updated via the same synchronization method as used for the online scripts repository. (This means that as data on new filters or sensors becomes available it can be added to the repository without requiring an update to the application.)

In the GUI you select your sensors and filters from the widgets in the SPCC dialog. Don't worry if there isn't an exact match for your equipment, just pick the closest option, or the appropriate default option. You also need to select a white reference. The default reference is the Average Spiral Galaxy reference which is suitable for a wide range of astrophotographic scenes, however there is an extensive range of galaxy and star types to choose from. The Sun's spectral type is G2(v) so if you want to balance your image using sunlight as a white reference, you would pick Star, type G2(v) from the list.

SPCC then uses the stellar spectra in Gaia DR3 and knowledge of your imaging sensor and filters to compute for each star in the catalogue that matches a star detected in the image by Siril the expected flux in each color channel. It then compares this with the actual flux measured in each channel using Siril's photometric capabilities.

Given the sensor and filter knowledge, SPCC computes the expected flux in each channel for the specified white reference. A robust linear fit is obtained to give the best fit of catalogue to image R/G and B/G flux ratios for each star and for the white reference. This fit is used to derive correction coefficients which are applied multiplicatively to each channel, resulting in spectrophotometrically accurate color channels.

Your image must be plate solved for SPCC to work: if it is not already, this should be done with the dedicated tool. It is important to make sure that the plate solving information is correct, as some software is known to add inaccurate WCS data to images.

##### Графический интерфейс

- Selection of Sensor In order to select your sensor, ensure that the mono / OSC toggle button is set correctly. You will then see the appropriate dropdown to choose from the available sensors.

- Selection of Filters SPCC can operate in two modes.

  - The default mode is broadband operation. In this mode, the Narrowband mode check box should be unchecked. You can choose either red, green and blue filters (for composited images made with a mono sensor) or OSC filters, for example light pollution filters, for images made with an OSC sensor.

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

    If you select a DSLR OSC sensor (e.g. a Canon EOS 600D) an additional widget will become visible to select a DSLR Low Pass Filter. This allows you to tailor whether your camera has been astro-modded or not. You must select an option here or the process will complain that you haven't set all the necessary filters!

    Options exist for Canon and Nikon OEM low-pass filters as well as the popular Baader BCF astro-mod filter that lets Ha and Sii through but stil blocks longer IR wavelengths and "Full spectrum" which is modelled as a perfect clear filter.

    If you have an unmodified camera of a different model or brand, select any of the Canon or Nikon low-pass filters: the effect is very minor as these wavelengths are right at the edge of human visual perception anyway.

  - By checking the Narrowband mode check box, you enable narrowband mode. This is intended either for images composited from narrowband filters used with a mono sensor or for images made using an OSC sensor with a dual, tri-band or quad band narrowband filter. In this mode the available controls change, and for each color channel you enter the nominal wavelength and bandwidth of the filter passband. For ultra-narrowband mono filters the passband may be as little as 3nm; for a quadband OSC filter like the Altair QuadBand V2 the passbands may be as much as 35nm. Note that for a HOO composition where two channels are set to the same data, the nominal wavelength and bandwidth should be set equal in the SPCC interface too.

    Calibrated HOO image. Image by Cyril Richard.

    Совет

    Some manufacturers specify a center wavelength and FWHM. It is fine to use the FWHM as the bandwidth: these filters have very sharp cutoffs.

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

    Don't expect to retrieve the Hubble palette for SHO imaging using the wavelengths of the SII, \(\mathrm{H}\alpha\) and OIII filters respectively. The result will be an image with a huge green cast. This is easily explained by the fact that the SII emission line is much fainter than that of hydrogen, and the SPCC gives a representation of real intensities. But this is not the case in the Hubble palette. In fact, manual color calibration will give better results.

    SHO image calibrated by SPCC compared to the same, manually calibrated one. The entire nebula was taken as a white reference during manual calibration. Image by Cyril Richard.

- Selection of DSLR Low Pass Filter (LPF) DSLRs contain a low-pass filter (sometimes also called a 'hot mirror'. These reduce transmittance at wavelengths of interest to astronomers (Ha at 656nm and S-II at 674nm). If the selected OSC is a DSLR, a dropdown will be provided from which you can the appropriate LPF profile. Options exist for stock LPFs as well as astro-modified LPFs and an ideal Full spectrum filter model for if the LPF has been removed altogether.

- Selection of White Reference SPCC requires an absolute white reference spectrum. The default is Average Spiral Galaxy and the source spectra used to create this white reference are taken from the SWIRE templates [SWIRE] in a manner consistent with other astrophotography software providing the same white reference. A wide range of other white references is available, covering the full range of galaxy and star classifications [Stellar]. If you wish to use sunlight as your white reference, you would choose the white reference Star, type G2(v) as the Sun is a type G2(v) star.

  Graphs showing white reference data from spiral galaxies. At around 350 nm, the Average Spiral Galaxy data become identical to the Sc galaxies, which are also a good representation of the white reference.

  NGC 4414 is a great example of a Sc-type galaxy, the type closest of the average spiral galaxy used as white reference by default. Image Credit: NASA, ESA, W. Freedman (U. Chicago) et al, & the Hubble Heritage Team (AURA/STScI), SDSS; Processing: Judy Schmidt.

  Совет

  Summary of Stellar Spectral Classifications Stellar classifications have two parts, a Morgan-Keenan type and a Luminosity index.

  The first part of the spectral classification (G2 in the case of the Sun) takes one of the following letters: O, B, A, F, G, K, M. O represents extremely hot blue stars, while M represents cool red stars. The sun is roughly in the middle of the spectrum. The number represents intermediate cases, for example a B5 star is halfway between type B and type A.

  The second part of the spectral classification is the luminosity index ranging from i to v. Stars with luminosity index i are supergiants, whereas stars with luminosity index v are dwarfs. Main sequence stars such as the sun have a luminosity index of iv.

  Graphs showing white reference data for a set of two different star classes, G and K.

  Difference in color calibration depending on the choice of white reference. On the left, an M-type star, on the right the average spiral galaxy. Please note that the data are linear, and only an autostretch has been applied to the visualization.

- Atmospheric Correction Siril's SPCC supports atmospheric correction. When imaging from Earth we image through the atmosphere. This does not have perfect transmittance and therefore acts as another, non-optional, filter in the imaging chain between the sensor and the astronomical object. Whether or not to correct for this is an artistic choice each astrophotographer must make, but the option is provided.

  Теория

  Atmospheric extinction arises from several sources. The most important are:

  - Rayleigh scattering. This is the elastic scattering of light by particles that are small compared with the wavelength of light. The strong wavelength dependence of the Rayleigh scattering (\(\approx λ^{−4}\)) means that shorter (blue) wavelengths are scattered more strongly than longer (red) wavelengths.

  - Aerosol scattering. This is scattering of light by particles that are larger than the wavelength of light. This is quite variable but (in the absence of significant short term dust or smoke effects) relatively spectrally flat and less significant than Rayleigh scattering.

  - Molecular absorption lines.

  Siril models only Rayleigh scattering. This is the most important contribution in most atmospheric conditions, and is highly predictable making it easy to model without requiring the user to provide complex data.

  The formula for the Rayleigh transmittance of the atmosphere as a function of wavelength \(\lambda\) nm, observer height \(H\) m and pressure \(p\) hPa is:

  \(\tau_R(\lambda, H, p) = \left( \frac{p}{1013.25} \right) \left( 0.00864 + 6.5 \times 10^{-6} \cdot H \right) \lambda^{-(3.916 + 0.074 \lambda + \frac{0.050}{\lambda})}\).

  Under normal circumstances aerosol scattering has a roughly flat response in the visible region. This changes in specific conditions, for example when there is high atmospheric smoke particle concentration after wildfires or, in parts of Europe, when Saharan dust is carried into the atmosphere. However these effects are very difficult to model accurately as they depend on the concentration of sand or smoke particles in the atmosphere at the time. Siril therefore does not model this effect.

  The main molecular absorption lines in the visible spectrum are the Chappuis stratospheric ozone bands and the Fraunhofer B molecular oxygen absorption line. However the Fraunhofer B line is very narrow and does not have a significant effect on overall calibration. The Chappuis bands are broad but with a low peak absorption, with a much smaller overall impact than Rayleigh scattering. Molecular absorption bands are not currently modelled in Siril.

  When selecting the Atmospheric correction check box, the following options become available:

  - Observer Height. This allows setting of the observer height, which is used in the Rayleigh extinction calculation. Set this to the altitude of your observatory above sea level. Some capture software sets the FITS header `SITEELEV` card: if this is present, the height from this card will be used, otherwise the value is editable and defaults to 10 m.

  - Atmospheric pressure. This allows setting atmospheric pressure at the time of observation. For convenience it can be specified as sea level pressure (as provided by weather forecasts) or as local pressure (as measured by a barometer at the observatory). In case you are unsure, the default is standard atmospheric pressure at sea level (1013.25 hPa).

    Теория

    If the pressure is provided as a sea-level pressure measurement, the local pressure at the observer's height is calculated according to the barometric formula:

    \(P(h) = P_0 \left( 1 - \frac{L h}{T_0} \right)^{\frac{g M}{R L}}\),

    где:

    - \(L = 0.0065~\text{K}/\text{m}\) (Temperature lapse rate),

    - \(T_0​ = 288.15~\text{K}\) (Sea level standard temperature),

    - \(g = 9.80665~\text{m}/\text{s²}\) (Acceleration due to gravity),

    - \(M = 0.0289644~\text{kg}/\text{mol}\) (Molar mass of Earth's air),

    - \(R = 8.3144598~\text{J}/(\text{mol}·\text{K})\) (Universal gas constant).

  - Airmass. This is not an editable parameter but shows the airmass that will be used in the calculations. It is obtained, in order of preference, from the `AIRMASS` FITS header card; by calculation using the `CENTALT` FITS header card; or as a last resort by using the average zenith angle of all parts of the more than 30° above the horizon. The tooltip shows which source the used figure is based on.

    Теория

    If the `AIRMASS` header is unavailable the calculation used to derive airmass from zenith angle is calculated in accordance with [Young1994]:

    \(X(z) = \frac{1.002432 \cos^2 z + 0.148386 \cos z + 0.0096467}{\cos^3 z + 0.149864 \cos^2 z + 0.0102963 \cos z + 0.000303978}\).

The interface allows you to view details of the selected sensor, filter and white reference using the Details button next to each combo box. From the details information box that this brings up you also have the option to plot the Quantum Efficiency (for sensors) or transmittance (for filters) or relative photon count (for white references) against wavelength. A Plot All button is also available in the main SPCC dialog which allows you to see the responses of all your filters and your sensor and the white reference spectrum all plotted together.

Plotting all the responses of all your filters and your sensor and the white reference spectrum all plotted together

When you are happy, click Apply and SPCC will run. It will cache catalogue data but the first time you apply it to an image it will take a few seconds to perform the online catalogue searches and retrieve the source and spectral data. SPCC will then be applied to the image. Additional plots showing the linear fit of the catalogue Red / Green and Blue / Green to image Red / Green and Blue / Green ratios.

By default, Siril outputs graphs showing the fits used in the process. In this example the magnitude was limited to 17.

Совет

How do I process L-RGB images? We recommend processing only RGB with SPCC. The L layer must be added at a later stage, when the histograms have been stretched.

Совет

For images taken with an OSC sensor, we recommend using Bayer Drizzle to recover image colors. This ensures more accurate colors as shown in the following image.

SPCC applied identically to the same image. On the left, conventional demosaicing using the VNG algorithm; on the right, the Bayer Drizzle technique. A dominant green hue is clearly visible on the conventionally demosaiced image. Note that the VNG algorithm was chosen for this example because the effects explained here are more pronounced. However, in Siril, the default demosaicing algorithm is RCD. Click to enlarge image.

##### SPCC filter and sensor database

###### Converting the Data

The format used for the database is JSON (a lightweight data-interchange format derived from JavaScript object notation). We recommend starting with an existing file from the database that suits your needs and saving it under the name of your sensor or filter. You can then simply replace the values in the file with the data you have obtained.

- In the `wavelength` array, enter your wavelength measurements. Make sure to properly set the `units` field to one of the following values: `angstroms`, `nm`, `micrometres`, or `m`.

- In the `values` array, enter either:

  - Transmittance values for filters

  - Quantum efficiency values for sensors

  Set the `range` field according to your data scale (e.g., `"range": 100` if your values are percentages, `"range": 1` if they are normalized to 1).

###### How to Contribute

The SPCC database is designed to store JSON files of OSC/monochrome sensors and filters available in the market. Its primary objective is to gather extensive data, fostering collaboration within the community.

We greatly value community contributions and encourage active participation. We are in need of data spanning ideally from 300nm to 1100nm. Software tools can be employed to extract curves/charts found online, and contacting manufacturers directly for data is also an option.

Read this page and help us by contributing.

Важно

We do not include narrowband filters. These highly specific filters are synthesized in Siril, ensuring precision. This also applies to duonarrowband filters.

###### JSON File Format Reference

Here is the template for the JSON files used in the SPCC database:

    [
      {
        "model": "sensor model / filter set",
        "name": "sensor / filter name",
        "type": "MONO_SENSOR | OSC_SENSOR | MONO_FILTER | OSC_FILTER | OSC_LPF | WB_REF",
        "dataQualityMarker": 1 - 5,
        "dataSource": "Describe where the data came from",
        "manufacturer": "Manufacturer name",
        "version": 1,
        "channel": "RED | GREEN | BLUE | LUM",
        "wavelength": [Comma separated array of wavelengths],
        "values": [Comma separated array of values]
      }
    ]

###### Important Notes

- Definition of the `dataQualityMarker` field:

  1. Data of unknown provenance. Not accepted for the siril-spcc-database repository.

  2. Data scanned from OEM or other reputable plots in image format.

  3. Lower resolution tabulated data provided by the OEM, or academic data relating to ideal standard filter transmittance (e.g. generic standard photometric filters).

  4. High resolution (no more than 2nm spacing) tabulated data provided by the OEM.

  5. Data specific to your own filter which you have personally calibrated using appropriate equipment. This is the highest possible quality marker and will never be given to .json files in the repository which can only ever be generic to an equipment model, not specific to your individual equipment item. Note that the actual quality of this data is entirely dependent on the quality of your calibration equipment - the old adage "garbage in, garbage out" applies.

- The `model` name requirements:

  - Must be identical for all related JSON objects in a set

  - Примеры:

    - RGB filter set: `"model": "Chroma RGB"`

    - OSC sensor: `"model": "ZWO ASI2600MM"`

- The `channel` field:

  - Required only for `"type": "OSC_SENSOR"` or `"type": "MONO_FILTER"`

  - For OSC sensors, include one JSON object per channel (`RED`, `GREEN`, `BLUE`)

  - Preferred channel order: `RED`, `GREEN`, `BLUE`

- The `wavelength` array requirements:

  - Minimum coverage: 380nm to 700nm

  - Maximum useful range: 336nm to 1020nm (Gaia DR3 spectra limits)

  - Values must be monotonically increasing

  - No duplicate values allowed

  - Must use specified units (`angstroms`, `nm`, `micrometres`, `m`)

  Примечание

  If your sensor data only extends down to 400nm (which is common with some manufacturers), it is acceptable to extrapolate a single point at 380nm. The sensor response below 400nm typically follows a predictable pattern across different sensors. Adding this extrapolated point at 380nm is preferable to letting the curve end at 400nm, which would effectively treat all response below 400nm as zero. The impact of this extrapolation is minimal since the CIE 1931 response is very low in this wavelength range.

- The `values` array requirements:

  - For filters: contains transmittance values

  - For sensors: contains quantum efficiency values

  - Set appropriate `range` value (e.g., 100 for percentages)

  - Siril scales all values to 0.0-1.0 range internally

##### Сохраненные настройки

As most users are likely to do most of their imaging with one setup, or maybe two, it would be tedious to reselect the sensor and filters each time. The user choices are therefore automatically remembered when set and restored next time the tool is used, even if Siril is closed and restarted in between. This works using the preferences system but there is no need to use the preferences dialog to remember the set sensor and filters, it is done automatically.

The chosen white reference is not remembered: the default Average Spiral Galaxy is a suitable choice for most astronomical scenes, and alternative white references would normally be set for a specific image to draw out a particular aspect of the color.

Командная строка Siril

    spcc [-limitmag=[+-]] [ { -monosensor= [ -rfilter= ] [-gfilter=] [-bfilter=] | -oscsensor= [-oscfilter=] [-osclpf=] } ] [-whiteref=] [ -narrowband [-rwl=] [-gwl=] [-bwl=] [-rbw=] [-gbw=] [-bbw=] ] [-bgtol=lower,upper] [ -atmos [-obsheight=] { [-pressure=] | [-slp=] } ]

Запускает спектрофотометрическую коррекцию цвета на загруженном изображении, имеющем астрономическое решение.
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений смещения (+offset или -offset) ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
Для SPCC всегда используется каталог звёзд Gaia DR3. Если доступен, то по умолчанию используется локальный каталог Gaia DR3 xp_sampled. Это поведение может быть изменено с помощью аргумента -catalog={gaia | localgaia}.
Названия сенсоров и фильтров можно задать с помощью: -monosensor=, -rfilter=, -gfilter=, -bfilter= или -oscsensor=, -oscfilter=, -osclpf=; название точки белого можно указать с помощью -whiteref=. Во всех случаях название должно быть указано точно так, как оно указано в диалоге инструмента SPCC. Обратите внимание, что названия сенсоров, фильтров и точек белого могут содержать пробелы: в этом случае при использовании их в качестве аргументов команды spcc весь аргумент должен быть заключен в кавычки, например "-whiteref=Average Spiral Galaxy".
Узкополосный режим может быть выбран с помощью аргумента -narrowband, в этом случае предыдущие аргументы фильтра игнорируются, и длины волн и полосы пропускания узкополосного фильтра могут быть заданы с помощью -rwl=, -rbw=, -gwl=, -gbw=, -bwl= и -bbw=.
Если один из аргументов со спектральными данными опущен, то будет использоваться ранее использованное значение.
Допустимое отклонение от значения фона может быть указано в единицах σ с помощью -bgtol=lower,upper: значения по умолчанию равны -2.8 и +2.0, соответственно.
Атмосферная коррекция может быть применена с помощью -atmos. В этом случае применяются следующие необязательные аргументы: -obsheight= определяет высоту наблюдателя над уровнем моря в метрах (по умолчанию 10), -pressure= определяет местное атмосферное давление в месте наблюдения в гПа, или -slp= определяет атмосферное давление на уровне моря в гПа (давление по умолчанию равно 1013.25 гПа на уровне моря)

    spcc_list { oscsensor | monosensor | redfilter | greenfilter | bluefilter | oscfilter | osclpf | whiteref }

Выводит в журнал список названий SPCC для сенсоров, фильтров или точек белого, доступных при использовании команды spcc. Для этой команды необходим аргумент, для указания, какой список будет выведен: oscsensor, monosensor, redfilter, greenfilter, bluefilter, oscfilter, osclpf или whiteref.
Обратите внимание, что названия сенсоров, фильтров и точек белого могут содержать пробелы: в этом случае при использовании их в качестве аргументов команды spcc весь аргумент должен быть заключен в кавычки, например "-whiteref=Average Spiral Galaxy"
Ссылка: spcc

##### Литература

[GaiaDR3]

Vallenari, A., et al. "Gaia Data Release 3-Summary of the content and survey properties." Astronomy & Astrophysics 674 (2023): A1. 99(613), 191.

[SWIRE]

https://www.iasf-milano.inaf.it/~polletta/templates/swire_templates.html

[Stellar]

https://www.eso.org/sci/facilities/paranal/decommissioned/isaac/tools/lib.html

[Wiki_HEALPIX]

https://en.wikipedia.org/wiki/HEALPix

[Young1994]

https://opg.optica.org/ao/viewmedia.cfm?uri=ao-33-6-1108&seq=0

### Other Color Tools

#### Насыщенность

Этот инструмент используется для увеличения насыщенности цвета изображения. Для улучшения можно выбрать определенный оттенок или все цвета одновременно. Степень насыщенности регулируется с помощью ползунка Количество.

Ползунок Коэффициент фона устанавливает коэффициент, умноженный на значение фона. Чем меньше значение, тем сильнее эффект насыщенности. При высоком значении фон будет сохранен.

Диалоговое окно Насыщенность.

Командная строка Siril

    satu amount [background_factor [hue_range_index]]

Улучшает насыщенность цвета загруженного изображения. Для получения наилучших результатов используйте итеративно.
amount положительное значение увеличивает насыщенность цвета, отрицательное — уменьшает, 0 — ничего не делает, 1 — увеличивает насыщенность на 100%
background_factor это коэффициент (медиана + σ), используемый для установки порога, выше которого будет происходить изменение пикселей. При правильном подборе, это позволяет не увеличивать насыщенность цвета фонового шума. Значение по умолчанию — 1. При установке 0 порог отключается.
hue_range_index может быть [0, 6], что означает: 0 от розового до оранжевого, 1 от оранжевого до жёлтого, 2 от жёлтого до голубого, 3 для голубого, 4 от голубого до пурпурного, 5 от пурпурного до розового, 6 все цвета (значение по умолчанию)

#### Удалить зелёный шум

Поскольку зеленый цвет естественным образом не присутствует на снимках глубокого космоса (за исключением комет и некоторых планетарных туманностей), если изображение уже откалибровано, его цвета хорошо сбалансированы и изображение свободно от градиента, мы можем предположить, что если изображение содержит зеленый цвет, то он относится к шуму. Тогда интересно найти метод удаления этого доминирующего зеленого цвета. Это именно то, что предлагает инструмент Удаление зелёного шума, который является производным от инструмента SCNR, но только для зеленого цвета.

Диалоговое окно Уменьшение зелёного шума.

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

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

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

Этот инструмент разработан для использования с нелинейными изображениями, так как он работает в нелинейном цветовом пространстве. Чтобы избежать некорректных результатов обработки, перед использованием этого инструмента убедитесь, что гистограмма была растянута.

Этот инструмент имеет 3 настройки. Метод защиты, количество (называемое \(a\) в следующем разделе) и кнопка Сохранить светлоту. Следующие методы предоставляют различные существующие способы удаления зеленых пикселей путем их замены смесью красного и синего. Указание значения количества доступно только для методов, использующих защитную маску. Выбор этого значения должен делаться с осторожностью, чтобы минимизировать рост пурпурного оттенка на фоне неба. Не стесняйтесь использовать кнопки Отменить и Повторить для точной настройки значения.

##### Способ защиты

Защита максимальной маской

\[\begin{split}m &= \text{max}(R,B) \\ G'&= G\times (1 — a)\times (1 — m) + m\times G\end{split}\]

Защита аддитивной маской

\[\begin{split}m &= \text{min}(1,R+B) \\ G'&= G\times (1 — a)\times (1 — m) + m\times G\end{split}\]

Защита средним нейтральным (способ по умолчанию)

\[\begin{split}m &= 0.5\times (R + B) \\ G'&= \text{min}(G, m)\end{split}\]

Защита максимальным нейтральным

\[\begin{split}m &= \text{max}(R,B) \\ G'&= \text{min}(G, m)\end{split}\]

Наконец, кнопка Сохранить светлоту сохраняет исходный компонент CIE L* в обработанном изображении, чтобы обработать только хроматический компонент, настоятельно рекомендуется включить эту опцию.

Командная строка Siril

    rmgreen [-nopreserve] [type] [amount]

Применяет фильтр подавления хроматического шума, удаляющий зелёный оттенок на текущем изображении. Этот фильтр основан на SCNR из PixInsight и этот же фильтр используется плагином HLVG в Photoshop.
По умолчанию светлота сохраняется, но это может быть отключено с помощью -nopreserve.
Аргумент type может принимать значения 0 для средний нейтральный, 1 для максимальный нейтральный, 2 для максимальная маска и 3 для аддитивная маска. По умолчанию — 0. Последние два могут принимать аргумент amount со значением между 0 и 1. Значение по умолчанию — 1

#### Инвертировать

Negative transformation refers to subtracting pixel values from \((L - 1)\), where \(L\) is the maximum possible value of the pixel, and replacing it with the result.

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

Исходное изображение со слабым сигналом (изображение Сирила Ричарда (Cyril Richard).

Негативное изображение, на котором сигнал более заметен (изображение Cyril Richard).

Совет

Обычное использование инструмента Инвертирование — удаление пурпурного оттенка из изображений SHO. В этом случае нужно применить Инвертирование, затем Уменьшение зеленого шума, затем снова Инвертирование.

Командная строка Siril

    neg

Изменяет значения пикселей загруженного в настоящий момент изображения на отрицательное представление, например, 1-значение для 32-х бит, 65535-значение для 16-ти бит. Режим просмотра при этом не изменяется

### Фильтры

В этом разделе описаны фильтры, доступные в Siril. Фильтры — это инструменты, которые изменяют пиксели изображения в соответствии с потребностями.

#### Стационарное вейвлет-преобразование

Вейвлет — это функция, лежащая в основе вейвлет-декомпозиции, аналогичной кратковременному преобразованию Фурье, используемому при обработке сигналов. Она соответствует интуитивному представлению о функции, соответствующей небольшому колебанию, отсюда и ее название.

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

Пример четырёх различных типов вейвлетов.

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

Представление стационарного вейвлет-преобразования интерполяцией b-сплайнами.

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

Диалоговое окно управления вейвлетами.

Первое, что нужно сделать, это нажать на кнопку Выполнить, чтобы рассчитать вейвлет-слои с использованием определенных выше параметров, таких как:

- Тип: возможны два типа алгоритмов: линейный и B-сплайновый. Обычно выбирается последний, несмотря на то, что он немного медленнее.

- Кол-во слоёв: количество вейвлет-слоев, которые будут использоваться. 6 — это максимальное количество слоев, которое можно определить. Для работы с большим количеством слоев можно использовать командную строку, описанную ниже.

Затем у каждого слоя есть ползунок, который позволяет изменять контрастность этого слоя. Если было создано менее 6 слоев, активными будут только соответствующие ползунки. Значение, превышающее 1, повышает детализацию, в то время как меньшее значение приводит к ее уменьшению.

Это инструмент имеет режим предпросмотра. Изменения отображаются в режиме реального времени, и вам нужно нажать на Применитьy, чтобы подтвердить их. При нажатии на Сброс все ползунки сбрасываются в 1 и, таким образом, отменяются все текущие изменения.

Вейвлеты, примененные к изображению Юпитера (любезно предоставлено J.-L. Dauvergne). Изображение слева — это необработанное изображение, полученное в результате укладки, в то время как изображение справа — это то же изображение, к которому были применены вейвлеты.

Командная строка Siril

    wavelet nbr_layers type

Вычисляет вейвлетное преобразование для nbr_layers=1...n слоёв загруженного изображения, используя линейную (type=1) или В-сплайн (type=2) версию алгоритма. Результат сохраняется в файле как структура, содержащая слои, готовые к реконструкции с использованием весов с помощью WRECONS.
См. также EXTRACT
Ссылки: wrecons, extract

Командная строка Siril

    wrecons c1 c2 c3 ...

Восстанавливает текущее изображение из слоёв, раннее вычисленных с помощью вейвлетов и с присвоенными весами с помощью коэффициентов c1, c2, ..., cn в соответствии с количеством слоёв, использованных для вейвлет-преобразования после использования WAVELET
Ссылка: wavelet

Пример, приведенный на рисунке выше, был бы записан в командной строке следующим образом:

    wavelet 6 2
    wrecons 31 5 1 1 1 1

#### Уменьшение полошения

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

Исходное изображение с видимыми полосами.

Диалоговое окно Уменьшение полошения.

В диалоговом окне уменьшения полошения есть несколько параметров для оптимизации обработки:

- Количество определяет силу коррекции. Чем выше значение, тем сильнее коррекция.

- Защита от засветов при включении этой опции будут игнорироваться яркие пиксели.

- Коэффициент :math:`frac{1}{sigma}` позволит настроить защиту ярких участков. Чем больше значение, тем лучше защита.

- Вертикальное полошение позволяет пользователю исправить полосы, если они вертикальные.

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

Результат после работы фильтра. Больше никаких полос не видно.

Это преобразование можно легко применить к последовательности. Вам просто нужно определить преобразование на загруженном изображении (с уже загруженной последовательностью), затем отметить флажок Применить к последовательности и определить выходной префикс новой последовательности (`unband_` по умолчанию).

Командная строка Siril

    fixbanding amount sigma [-vertical]

Пытается удалить горизонтальное или вертикальное полошение на загруженном изображении.
Аргумент amount указывает силу коррекции, в диапазоне между 0 и 4.
Аргумент sigma определяет уровень защиты светов алгоритмом. Бо́льшие значения σ дают бо́льшую защиту, между 0 и 5. Значения 1 и 1 часто достаточны.
Аргумент -vertical включает удаление вертикального полошения. По умолчанию предполагается, что полошение горизонтальное

Командная строка Siril

    seqfixbanding sequencename amount sigma [-prefix=] [-vertical]

Аналогична команде FIXBANDING, но применяется к последовательности sequencename.
Название итоговой последовательности начинается с префикса "unband_", если с помощью опции -prefix= не указан иной
Ссылка: fixbanding

#### Адаптивное выравнивание гистограммы (CLAHE)

Метод ограниченного контрастом адаптивного выравнивания гистограммы (CLAHE) используется для увеличения контраста изображения. Он отличается от обычного выравнивания гистограмм тем, что адаптивный метод вычисляет несколько гистограмм, каждая из которых соответствует отдельному участку изображения, и использует их для перераспределения значений яркости изображения. Таким образом, он может улучшить локальную контрастность и четкость контуров в каждой области изображения.

Диалоговое окно фильтра Адаптивное выравнивание гистограммы.

Совет

Этот фильтр имеет предварительный просмотр. Другими словами, каждое изменение настроек автоматически отображается на экране, но это можно отключить, сняв отметку с флажка Предпросмотр.

- С помощью ползунка можно задать размер ячеек, в которых вычисляется гистограмма. По умолчанию установлено значение 8.

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

Совет

Этот фильтр лучше работает с нелинейными данными. Рекомендуется предварительно растянуть изображение.

Пример применения адаптивного выравнивания гистограммы к нелинейным данным, где `Размер ячейки=21` and `Предел обрезки=4.20`.

Командная строка Siril

    clahe cliplimit tileSize

Выравнивает гистограмму изображения используя ограниченное контрастом адаптивное выравнивание гистограммы.
cliplimit устанавливает порог для ограничения контраста.
tilesize устанавливает размер ячейки для выравнивания гистограммы. Входящее изображение будет разделено на прямоугольные ячейки одинакового размера

#### Косметическая коррекция

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

Диалоговое окно инструмента косметической коррекции.

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

- :math:`sigma` холодных пикселей: во сколько раз (в единицах среднего отклонения) значение пикселя должно отличаться от значения соседних пикселей, чтобы считаться холодным пикселем.

- :math:`sigma` горячих пикселей: во сколько раз (в единицах среднего отклонения) значение пикселя должно отличаться от значения окружающих его пикселей, чтобы пиксель считался горячим.

- Количество: это параметр модуляции, где 0 означает отсутствие коррекции, а 1 — 100% коррекцию.

- CFA: этот параметр необходимо установить для цветных изображений (CFA) с шаблоном Байера. Он не работает для датчика X-Trans.

Эту операцию можно применять к последовательностям. Откройте последовательность и подготовьте настройки, которые вы хотите использовать, затем отметьте флажок Применить к последовательности и задайте выходной префикс новой последовательности (`cc_` по умолчанию).

Теория

Обнаружение горячих пикселей

Давайте назовем \(m_{5\times 5}\) медианой 5 ближайших соседей. Если значение пикселя больше, чем

\[m_{5\times 5}+\text{max}(\text{avgDev}, \sigma_\text{high}\times \text{avgDev}),\]

с avgDev, Средним отклонением всего изображения.

Затем пиксель заменяется средним значением \(3\times 3\) пикселей: \(a_{3\times 3}\), но только если

\[a_{3\times 3} < m_{5\times 5}+\frac{\text{avgDev}}{2}.\]

Обнаружение холодных пикселей

Если значение пикселя меньше чем

\[m_{5\times 5} - (\sigma_\text{low}\times \text{avgDev}),\]

тогда пиксель заменяется на \(m_{5\times 5}\).

Анимация показывающая косметическую коррекцию.

Командная строка Siril

    find_cosme cold_sigma hot_sigma

Применяет автоматическое определение и замену холодных и горячих пикселей на загруженном изображении с использованием порогов (в значениях σ), указанных в аргументах

Командная строка Siril

    find_cosme_cfa cold_sigma hot_sigma

Аналогична команде FIND_COSME, но для изображений CFA
Ссылка: find_cosme

#### Реконструкция

Реконструкция это математический инструмент для компенсации эффектов размытия или искажения на изображении. Истинная сцена это не то что записано вашим сенсором — ваша запись это оценка истинной сцены, свёрнутой с помощью PSF (в математическом выражении "размывающая PSF" представляет искажения атмосферы, физические свойства вашего телескопа, смазывание при движении и т.д., которые ухудшают вашу оценку). С помощью реконструкции можно, в некоторой степени, обратить подобную деградацию изображения. Однако важно сразу отметить, что реконструкция это то, что математики называют некорректно поставленной задачей (как и большинство обратных задач). Это значит что решения может не существовать. Если решение существует, оно может не быть уникальным и может не иметь непрерывной зависимости от данных. По сути, это означает, что реконструкция, даже теоретически, действительно сложна, и нет никаких гарантий, что она сработает.

Всё становится ещё труднее когда мы точно не знаем, что представляет собой PSF, которую мы пытаемся удалить. В астрономии мы можем, в теории, получить представление о PSF по эффекту размытия точечных источников (звёзд), которые мы снимаем. Однако иногда истинная PSF непостоянна по всему изображению, иногда иные факторы, как насыщенность звёзд не позволяют PSF, полученной от звёзд, быть полностью точной оценкой PSF, а иногда, например при съёмке Луны, на изображении нет звёзд.

Siril стремится обеспечить гибкий подход к реконструкции. Имеются несколько настроек для определения или оценки PSF и несколько алгоритмов реконструкции для заключительного этапа реконструкции после того, как PSF определена.

Пример реконструкции звёздного поля.

Реконструкция доступна из меню Обработка или с помощью команд Siril.

Диалоговое окно инструмента реконструкции.

##### Обзор использования

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

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

- Чтобы применить реконструкцию к отдельному изображению, выберите необходимый метод генерации PSF и нажмите Применить. Если ранее был запущен метод оценки PSF вслепую, для этого метода автоматически будет установлено значение Предыдущая PSF, чтобы избежать ненужного пересчета PSF.

- Чтобы применить реконструкцию к последовательности, действуйте как описано выше, но убедитесь, что выбран пункт Применить к последовательности. Вы можете так же указать пользовательский префикс новой последовательности. Если не указано иное, по умолчанию будет использован префикс `dec_`.

- При реконструировании последовательности, PSF будет рассчитана только для первого изображения в последовательности. Одинаковая PSF будет повторно использована для всех изображений в последовательности.

##### Обзор методов определения ядра размытия

- \(\boldsymbol{ℓ_0}\) Спуск: это метод оценки PSF по умолчанию, основанный на работе Энгера, Дельбрасио и Фаччиоло. Параметры, как правило, не требуют корректировки, за исключением того, что для особо крупных PSF вы можете попробовать многоступенчатую модель оценки PSF. Функция многоступенчатости по умолчанию отключена, так как во время разработки была замечена тенденция к получению довольно неестественных результатов при использовании более распространенных PSF малых и средних размеров.

- Неравномерность спектра [Goldstein2012]: этот метод оценки PSF предлагается в качестве альтернативы. В целом он не так хорош, как метод \(ℓ_0\) спуска, однако он может быть полезен, если вы обнаружите изображение, на котором метод по умолчанию не дает хороших результатов. Для этого метода скрытое резкое изображение не должно содержать никаких краев, если соблюдается модель спектрального распада. С другой стороны, \(ℓ_0\) спуск предполагает аналогичную модель (поскольку края имеют одинаковый спектральный распад), но требует, чтобы градиенты были разреженными и контрастными, поэтому края должны быть синфазными, поэтому теоретически эта модель может работать лучше на низкоконтрастных беззвездных изображениях. Вероятно, потребуются некоторые эксперименты, чтобы найти алгоритм, который лучше всего подходит для ваших данных.

- PSF по звёздам: этот метод моделирует PSF из средней PSF выбранных звезд. Важно быть избирательным в выборе звезд: они не должны быть насыщенными, так как это приведет к грубому искажению оценки PSF, но они также не должны быть настолько слабыми, чтобы функции анализа звезд Siril давали неточные измерения звезд. Выбранные звезды должны быть достаточно яркими, располагаться как можно ближе к центру изображения и в области изображения с довольно постоянным фоном. После выбора звёзд вы можете выбрать либо модель профиля звезд Гаусса, либо Моффата, и при выполнении реконструкции PSF будет синтезирована из средних параметров выбранных звезд. Если звезды не выбраны, Siril попытается автоматически обнаружить звезды с пиковой амплитудой между 0,07 и 0,7 с профилем Моффата. Этот диапазон позволяет избежать насыщенных звезд, а также тех, которые слишком слабы, чтобы дать точное решение, и в целом дает хорошие результаты.

- PSF вручную: этот метод позволяет вам вручную определить PSF. Можно определить такие модели PSF, как Гаусс, Моффат или Диск. Обратите внимание, что FWHM указывается в пикселях, а не в угловых секундах. Модели Гаусс и Моффат подходят для реконструкции форм звезд, возникающих из-за атмосферных искажений; такая модель PSF, как Диск подходит для реконструкции эффекта небольшой размытости.

- Загрузить PSF из файла: этот метод позволяет вам загружать PSF из любого графического формата, поддерживаемого Siril. Предоставленная PSF должен быть квадратной (она будет отклонен, если не квадратная) и нечетной (она будет обрезана на один пиксель в каждом направлении, если не нечетная, но это даст немного смещенную от центра PSF и не является оптимальным по сравнению с предоставлением нечетной PSF изначально). Могут быть загружены как монохромные, так и 3-канальные PSF. Если 3-канальная PSF загружен вместе с монохромным изображением, будут использоваться равномерно взвешенные значения яркости PSF. Если 3-канальная PSF загружена вместе с 3-канальным изображением, то каждый канал изображения будет реконструирован с использованием соответствующего канала PSF. Если монохромная PSF загружен вместе с 3-канальным изображением, то изображение будет преобразовано в цветовое пространство LAB, а канал L (яркость) будет реконструирован с использованием монохромной PSF для повышения вычислительной эффективности, а реконструированный L будет заново скомбинирован с каналами A и B и преобразован обратно в RGB.

- Предыдущая PSF: этот метод позволяет повторно использовать ранее оцененную PSF. Он в основном используется со слепыми методами оценки PSF: если вы удовлетворены оценённой PSF, но хотите сделать несколько тестовых запусков с использованием различных параметров для конечной стадии реконструкции, вы можете повторно использовать предыдущую PSF и сэкономить время вычислений.

- После оценки PSF можно сохранить, если это необходимо. Если Siril скомпилирован с поддержкой libtiff, то PSF будет сохранена в 32-битном формате TIFF с тем же именем файла, что и у текущего изображения, но с отметкой даты и времени и с суффиксом `_PSF`. Если Siril был собран без поддержки libtiff, то PSF будет сохранен как файл FITS. Хотя это основной формат Siril для файлов астрономических изображений, TIFF предпочтительнее для PSF: недостатком использования формата FITS для PSF является потенциальная сниженная совместимость с редакторами изображений, которые вы можете использовать для редактирования или изучения сохраненного файла.

Совет

Если реконструкция вслепую может быть выполнена на линейных и нелинейных данных, то использование PSF по звёздам может быть выполнено только на линейных изображениях. В противном случае значения PSF были бы недействительными.

Совет

If a ROI is set, blind PSF estimation methods will calculate the PSF from the ROI rather than the whole image. If you do wish to calculate a PSF from the whole image you must clear the ROI before estimating the PSF, then set the ROI to apply a preview. However, you also have the option of calculating the PSF only from a selected part of the image. This may be desirable if you have optical aberrations close to the edge of the image and wish to estimate the PSF from the central area only.

##### Обзор не-слепой реконструкции

- Метод Ричардсона-Люси с регуляризацией [Lucy1974]: это алгоритм не-слепой реконструкции по умолчанию. Это итеративный метод, известный своим использованием для исправления искажений изображения в ранний период работы космического телескопа Хаббл, и в Siril регуляризован с использованием либо метода полной вариации, который направлен на штрафование алгоритма за усиление шума, либо нормы Фробениуса локальной матрицы Гессе. Эта регуляризация основана на вторых производных. Наряду с регуляризацией предоставляется параметр ранней остановки, который позволяет остановить алгоритм на ранней стадии, как только его скорость сходимости падает ниже определенного уровня. Увеличение значения параметра ранней остановки может уменьшить кольца вокруг звезд и острых краев. Предоставляются две формулировки алгоритма Ричардсона-Люси: мультипликативная формулировка и формулировка градиентного спуска. Последний может обеспечить лучший контроль, поскольку размер шага градиентного спуска может быть изменен (недостатком этого является то, что при использовании большего количества маленьких шагов требуется больше итераций для достижения того же уровня сходимости). Большим преимуществом метода градиентного спуска является то, что он позволяет использовать большую регуляризацию — это может быть проблематично в мультипликативном алгоритме Ричардсона-Люси, поскольку член регуляризации появляется в знаменателе, а малые значения здесь (сильная регуляризация) могут вызвать нестабильность. Siril будет использовать наивную свертку для малых размеров ядра и свертку на основе быстрого преобразования Фурье (БПФ) для больших размеров ядра, где БПФ обеспечивает более эффективный алгоритм. (Это происходит автоматически и не требует вмешательства пользователя.)

- Фильтр Винера: этот метод является неитеративным методом реконструкции. Он моделирует предполагаемый профиль гауссовского шума, т. е. шум, моделируемый постоянным профилем. Постоянная Альфа (α) используется для установки силы регуляризации по отношению к уровню шума. Как и в других алгоритмах, меньшее значение альфа обеспечивает большую регуляризацию. Этот алгоритм может быть хорош для лунных изображений, где режим шума является гауссовым, а не пуассоновским, но обычно плохо работает на снимках дальнего космоса, где шум все еще имеет тенденцию иметь пуассоновский характер.

- Метод Брэгмана с регуляризацией: этот метод используется в процессах оценки размытия PSF, а также предлагается как алгоритм финальной стадии реконструкции. Это широко используемый алгоритм для решения задач выпуклой оптимизации. Алгоритм также регуляризуется с помощью функции стоимости, основанной на полной вариации. Он не так эффективен, как метод Ричардсона-Люси, при обработке изображений звездного неба, но может быть рассмотрен для изображений без звезд или снимков лунной поверхности.

Совет

Выбор метода реконструкции очень важен для получения хороших результатов. Как правило, для изображений глубокого космоса (DSO) важно использовать метод Ричардсона-Люси: как метод Брэгмана, так и метод Винера дают плохие результаты вокруг звезд из-за экстремально высокого динамического диапазона. Для линейных изображений обычно лучше всего использовать метод Ричардсона-Люси с градиентным спуском, а если вокруг ярких звезд возникает эффект "кольца", то следует уменьшить размер шага спуска. Такой подход снижает влияние каждой итерации, поэтому требуется больше итераций, но это позволяет достичь более точного контроля, доводя реконструкцию до момента, когда начинают появляться артефакты, а затем слегка скорректировать значения настроек назад. Для растянутых изображений можно использовать мультипликативный алгоритм Ричардсона-Люси.

Совет

Для сложенных изображений Луны и планет могут оказаться более подходящими методы Брэгмана или Винера. Как правило, эти методы не требуют итераций, как это делает метод Ричардсона-Люси, и они могут лучше соответствовать шумовым характеристикам сложенных изображений с высоким соотношением сигнал/шум. (Алгоритм Ричардсона-Люси основан на предположении о пуассоновском шуме, которое обычно верно для изображений объектов глубокого космоса (DSO), тогда как метод Винера, реализованный здесь, предполагает гауссово распределение шума, которое может лучше соответствовать сложенным изображениям планет / Луны).

##### Параметры и настройки

Общие настройки

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

- Лямбда (\(\lambda\)). Параметр регуляризации для оценки PSF. Попробуйте уменьшить это значение для шумных изображений.

Настройки метода \(\boldsymbol{ℓ_0}\)} спуска

- Многоступенчатый. Эта настройка позволяет включить многоступенчатый метод оценки PSF. Это может помочь стабилизировать оценку PSF при указании большого размера PSF, однако некоторые PSF, сгенерированные с использованием этой опции, могут приводить к неестественным результатам. Поэтому по умолчанию эта функция отключена.

- Дополнительные параметры. Обычно они не требуют настройки, но доступны для любопытных.

  - Гамма (γ) задает силу регуляризации, используемую на этапе предсказания резкого изображения. Для заданного значения гаммы, с увеличением уровня шума оценка также становится более зашумленной. Если увеличить значение гаммы, оценка будет меньше подвержена влиянию шума, но станет более сглаженной. Значение по умолчанию, равное 20, было определено экспериментально в [Anger2019].

  - Кол-во итераций задает количество итераций, используемых в процедуре оценки PSF. Авторы алгоритма отмечают, что увеличение этого значения до 3 дает минимальный выигрыш, а увеличение больше 3 не приносит никакой пользы.

  - Отношение λ и Лямбда (мин.) задают настройки для уточнения предсказания резкого изображения путем последовательного изменения значения параметра регуляризации предсказателя резкого изображения на каждой итерации метода.

  - Коэф-т масштаба, Увел. размытие и Умен. размытие используются только при включенной опции Многоступенчатый. Они задают масштабный коэффициент по умолчанию между каждой ступенью масштаба, а также степень размытия, применяемую при изменении масштаба между ступенями.

  - Порог ядра. Значения ниже этого уровня в оценке PSF устанавливаются равными нулю.

Настройки метода неравномерности спектра

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

- Дополнительные параметры. Обычно они не требуют настройки, но доступны для любопытных.

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

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

  - Повторы внешнего цикла. [Anger2018] предполагает, что 2 итерации может быть достаточно для получения приемлемой оценки PSF, и увеличение этого значения выше 3 не приносит заметной пользы.

PSF по звёздам

- Этот метод генерации PSF не имеет настраиваемых параметров. Он генерирует PSF на основе средних параметров звезд, выбранных с помощью команды findstar или диалогового окна Динамическая PSF. Средние параметры отображаются в диалоговом окне реконструкции, когда выбран этот метод генерации PSF. Пользователю желательно самостоятельно выбирать звезды, которые он хочет использовать для этого метода, чтобы получить наиболее точную PSF. В идеале следует выбрать около 10 довольно ярких, но не насыщенных звезд из центральной области изображения (чтобы исключить звезды, которые могут страдать от комы или других аберраций). Однако, если пользователь не выбрал ни одной звезды, Siril попытается автоматически определить подходящие звезды, запустив свою процедуру обнаружения с фильтрами, настроенными только на звезды с пиковыми амплитудами между 0.07 и 0.7.Этот диапазон позволяет избежать как насыщенных звезд, так и слишком тусклых, которые не могут дать точного решения. В большинстве случаев он работает хорошо, но может быть подвержен влиянию смещенных от центра аберраций.

- Если вы установите флажок Симметричная PSF, сгенерированная PSF будет круглой. Она будет соответствовать среднему значению FWHM и бета (β) выбранных звезд, но не будет учитывать какие-либо удлинения.

PSF вручную

Этот метод генерации PSF позволяет задать пользовательскую параметрическую PSF.

- Профиль позволяет выбрать профиль PSF. Поддерживаются профили: Гаусс, Моффат, Диск и Диск Эйри.

  - Для сопоставления параметров звезд, измеренных по изображению, используются профили PSF: Гаусс и Моффат. Они должны обеспечить хорошую оценку общей функции размытия, применяемой к изображению, поскольку звезды являются точечными источниками.

    Пример PSF с профилем Моффат, fwhm/"=5", Угол/°=45°, Соотношение=1.20, \(\beta=4.5\) и Размер PSF равен 15.

  - Профиль PSF Диск используется для реконструкции несфокусированных изображений.

    Пример профиля Диск с fwhm/"=5" и Размером PSF равным 15.

  - Профиль PSF Диск Эйри используется для реконструкции дифракции, которая возникает как физическое следствие дифракции на апертуре вашего телескопа.

    Пример профиля PSF Диск Эйри с Диаметр/мм=150мм, Фокусное расстояние/мм=4500мм, Длина волны/нм=525нм, Размер пикселя/мкм=2.9мкм, Центральное экранирование=40% и Размер PSF равен 41.

- FWHM определяет полную ширину на уровне половины высоты выбранного профиля (для профиля Диск просто задаёт радиус).

- Бета (:math:beta) определяет параметр бета, используемый в профиле PSF Моффат. Для других типов профилей PSF этот параметр игнорируется.

- Для профиля PSF Диск Эйри требуется несколько параметров ваших телескопа и сенсора:

  - Диаметр / мм

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

  - Размер пикселя / мкм

  - Длина волны / нм. Siril попытается извлечь эти данные из метаданных вашего изображения, где это возможно, но если какие-то параметры отсутствуют или выглядят необоснованными, Siril выделит их и напечатает предупреждение в журнале с рекомендацией проверить их. Величина Центрального экранирования также необходима для получения точного изображения диска Эйри. Она выражается в процентах, т.е. как общая площадь центральной преграды, деленная на общую площадь апертуры х 100. Для рефракторов это значение равно нулю; для других телескопов этот показатель варьируется: для ньютоновского рефлектора он может составлять около 20%, а для некоторых телескопов Долла-Киркхэма - до 40-50%. Вам необходимо измерить свой прибор или ознакомиться со спецификациями производителя.

Реконструкция по Ричардсону-Люси

В Siril используются следующие параметры для настройки реконструкции методом Ричардсона-Люси:

- Альфа (α) задает силу регуляризации. Меньшее значение альфа дает более сильную регуляризацию и более гладкий результат; большее значение снижает силу регуляризации и сохраняет больше деталей изображения, но может привести к усилению шума.

- Кол-во итераций задаёт максимальное количество используемых итераций. При отсутствии шума большое количество итераций приведет к тому, что реконструкция приблизит оценку к истинному изображению, однако чрезмерно большое количество итераций также увеличит шум и вызовет кольцевые артефакты вокруг звезд. Значение по умолчанию — 1 итерация: можно задать большее число для автоматического вычисления нескольких итераций, или же вы можете продолжать нажимать Применить, чтобы применять одну итерацию за раз, пока не будете удовлетворены результатом. (Или сделав очередной шаг, решите, что результат вас больше не устраивает, и используете Отменить.)

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

- Алгоритм определяет, следует ли использовать мультипликативный метод или метод градиентного спуска.

- Шаг спуска указывает размер шага, который будет использоваться для реализации градиентного спуска. Не устанавливайте его слишком большим, иначе алгоритм не будет сходиться. Этот параметр не действует, если выбрана мультипликативный метод.

  Совет

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

Реконструкция методом Брэгмана с регуляризацией

В Siril используются следующие параметры для настройки реконструкции методом Брэгмана с регуляризацией:

- Альфа (α) задает силу регуляризации. Меньшее значение альфа дает более сильную регуляризацию и более гладкий результат; большее значение снижает силу регуляризации и сохраняет больше деталей изображения, но может привести к усилению шума.

- Кол-во итераций указывает максимальное количество используемых итераций. Метод Брэгмана в том виде, в котором он реализован здесь, не требует многократных итераций, но при желании может быть повторен. Как правило, это имеет лишь небольшое значение, и поэтому значение по умолчанию равно 1.

Реконструкция методом Винера

Реконструкция Винера в Siril требует только один параметр:

- Альфа (α) задает силу регуляризации. Меньшее значение альфа дает более сильную регуляризацию и более гладкий результат; большее значение снижает силу регуляризации и сохраняет больше деталей изображения, но может привести к усилению шума.

Настройки производительности FFTW

Алгоритмы оценки PSF и реконструкции активно используют быстрое преобразование Фурье с использованием библиотеки FFTW. Это предоставляет ряд настроек, которые можно изменить на вкладке Производительность в основном диалоговом окне Siril Настройки.

##### Замечание о порядке строк изображения

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

Когда делается реконструкция изображения на основе PSF, созданной на основе того же изображения (или когда оно открыто), это не вызывает проблем. Однако могут возникнуть сложности, если PSF генерируется на основе изображения с одним порядком строк, а затем используется для реконструкции изображения или последовательности с противоположным порядком строк. Это редкий случай, но его использование стабильно будет приводить к поведению, которое на первый взгляд может показаться неожиданным. Поэтому оно объясняется ниже.

Siril решает эту проблему, отслеживая порядок строк изображения, на основе которого была создана PSF. Все PSF сохраняются с порядком строк снизу вверх (автоматически переворачивает их, если они были созданы из изображения с порядком строк сверху вниз), и при загрузке порядок строк PSF приводится в соответствие с порядком строк текущего открытого изображения. Если открывается изображение с противоположным порядком строк, порядок строк PSF изменяется, чтобы соответствовать ему. Это означает, что если, например, вы возьмёте несколько FITS-изображений с порядком строк снизу вверх, создадите PSF на основе одного из них, а затем конвертируете их в последовательность SER с порядком строк сверху вниз, PSF будет автоматически преобразована в правильную ориентацию, чтобы соответствовать последовательности SER. Если в момент открытия изображения с противоположным порядком строк выполняется предварительный просмотр PSF, он не обновится сразу: изменение порядка строк будет обнаружено автоматически, и PSF будет перевёрнута в момент применения к изображению.

##### Кунсткамера

Этот раздел показывает несколько примеров, где реконструкция выполнена плохо, вместе с объяснениями причин.

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

Было применено слишком много итераций. (Я применял их по одной за раз до тех пор, пока результат не стал утрированным, поэтому в параметре Кол-во итераций (Iterations) по-прежнему указано значение 1.)

Крупным планом показан эффект от попытки применить слишком большую регуляризацию (Альфа (α) = 30) с использованием мультипликативной версии Ричардсона-Люси. Для строгой регуляризации и /или лучшего контроля над каждой итерацией рекомендуется использовать метод градиентного спуска.

Типичный пример попытки реконструкции нерастянутого звездного поля с помощью метода Брэгмана (в данном случае) или с помощью метода Винера. Эти методы лучше подходят для планетарных / лунных / солнечных изображений; для звездных пейзажей всегда рекомендуется использовать Ричардсона-Люси.

##### Реконструкция: Cоветы

Вы попали сюда с помощью кнопки "Советы" в инструменте реконструкции в Siril. Не беспокойтесь: реконструкция - сложный метод. Даже теоретически это действительно сложно: нет никаких гарантий, что математика всегда приведет к уникальному решению, которое улучшит ваше изображение. Тем не менее, вот несколько советов, которые помогут вам получить максимальную отдачу от алгоритмов реконструкции Siril.

###### Какую PSF использовать?

Использование правильной PSF является основой для достижения хороших результатов при реконструкции. Два самых простых способа создать PSF — это использовать Реконструкцию вслепую или смоделировать PSF по звёздам на вашем изображении.

PSF по звёздам

Siril может обнаруживать и моделировать звёзды по вашему изображению. Подробности см. на странице справки Динамическая PSF. Чтобы получить хорошую модель для вашей PSF, попробуйте выбрать профиль звезды Моффат в Динамической PSF. Звёзды являются точечными источниками, поэтому функция распределения, построенная по усреднённым параметрам имеющихся звёзд, служит хорошей моделью для эффектов размытия, которые мы пытаемся устранить с помощью реконструкции.

Совет

После того как вы сделали обнаружение звёзд, отсортируйте их по пиковой амплитуде (столбец "A"). Выделите и удалите те, у которых амплитуда больше 0.7 или меньше 0.1, а если на вашем изображении есть фоновые галактики, убедитесь, что не осталось ложных срабатываний. Звёзды в этом диапазоне яркости не насыщенны и не слишком тусклы, чтобы обеспечить точную модель PSF.

Совет

Если реконструкция вслепую может быть выполнена на линейных и нелинейных данных, то использование PSF по звёздам может быть выполнено только на линейных изображениях. В противном случае значения PSF были бы недействительными.

Реконструкция вслепую

Эти методы могут автоматически оценить PSF на основе самого изображения. Если у вас нет более точных исходных данных о PSF, таких как звёзды на изображении (например, снимки Луны, на которых нет звёзд), то это может быть лучшим вариантом. В большинстве случаев рекомендуется использовать метод по умолчанию \(\boldsymbol{ℓ_0}\): спуска он быстрее и обычно даёт лучшие результаты.

Совет

Независимо от того, как вы создаёте свою PSF, проверьте предварительный просмотр, чтобы убедиться, что она не выглядит обрезанной. Если это всё же так, увеличьте размер PSF, чтобы значительные части PSF не обрезались.

Другие методы создания PSF

Другие методы создания PSF, заслуживающие упоминания, — это профили создаваемые вручную Диск и Диск Эйри. Профиль Диск можно использовать для улучшения изображений, где фокус слегка смещён. Постарайтесь подобрать размер диска в соответствии с размером размытия, вызванного расфокусировкой. Диск Эйри можно использовать для устранения лёгкого размытия, вызванного дифракцией самого телескопа.

Совет

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

###### Реконструируя изображение

Как только вы создадите PSF, которая вас устроит, можно приступать к реконструкции изображения. Для получения хороших результатов важно использовать правильные настройки.

Совет

Deconvolution is quite slow for large images. To make it quicker to find the best parameters, save your work at this point and use the ROI feature.

Изображения со звёздами

Изображения, содержащие звезды, особенно линейные (нерастянутые) данные, всегда следует реконструировать с помощью методов Ричардсона-Люси. Не обращайте внимания на методы Брэгмана и Винера: эти алгоритмы подходят для изображений объектов солнечной системы.

При реконструкции изображений объектов глубокого космоса возникают две проблемы: кольца вокруг ярких звезд и усиление шума на заднем плане.

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

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

Чтобы справиться с усилением фонового шума, вы можете попробовать применить небольшое шумоподавление перед реконструкцией. В диалоговом окне Подавление шума выберите алгоритм вторичного шумоподавления Преобразование Анскомба и оставьте уровень модуляции достаточно низким, попробуйте около 50-60%. Вы просто хотите уменьшить уровень шума, чтобы немного увеличить количество итераций, а не создавать полностью гладкое изображение.

Изображения Луны

Как правило, вы можете захотеть повысить резкость лунного изображения после сложения. У сложенных лунных изображений можно очень хорошо повысить резкость с помощью методов Брэгмана или Винера. Я обычно выбираю метод Брэгмана с регуляризацией. Попробуйте оставить значение Альфа (\(\boldsymbol{\alpha}\)) по умолчанию и выполнить реконструкцию изображения с использованием Реконструкции вслепую и \(\boldsymbol{ℓ_0}\) спуска. Пример этого показан ниже с использованием только что сложенного лунного изображения (т. е. к нему не применялась обработка вейвлетов). Несмотря на ограничения формата анимации GIF, повышение резкости можно четко увидеть; также очевидно, что результаты методов Брэгмана и Винера очень похожи.

Сложенные изображения планет

Типичный рабочий процесс для планетарной съёмки включает сложение видео SER в специализированном инструменте, таком как Autostakkert! или Astrosurface, а затем повышение резкости полученного изображения с использованием вейвлетов и реконструкции. Комбинация инструмента Стационарное вейвлет-преобразование и инструмента Реконструкция в Siril даёт отличные результаты, как показано здесь. Это изображение Юпитера было первоначально улучшено с помощью вейвлетов, где первый слой был установлен на 75, второй — на 10, а остальные оставлены по умолчанию. Затем была создана цветная PSF из трёх дисков Эйри, рассчитанных для используемого телескопа и сенсора (6-дюймовый Ньютон с линзой Барлоу 3x и сенсором ASI462MC с пикселями 2,9 микрона), объединённых с помощью инструмента Совмещение в RGB. Эта PSF была использована для реконструкции изображения с 6 итерациями метода Ричардсона-Люси (в данном случае использовалась мультипликативная версия). На каждом этапе изображение становится чётче.

Необработанное уложенное изображение всё ещё размыто.

Обработано в Siril с использованием вейвлет-преобразования, коррекция 1-го вейвлет-слоя равна 75, у 2-го вейвлет-слоя — 10.

Обработано в Siril с вейвлетами, как и выше, и затем мультипликативным методом реконструкции по Ричадсону-Люси с 6-ю итерациями .

Не сложенные изображения планет

Совет

Внимание: этот метод чрезвычайно медленный, поскольку требует индивидуальной обработки, как правило, 30 000 (или больше) изображений в планетарной последовательности!

Некоторые пользователи предлагают смягчить диффракцию телескопа, выполнив до укладки реконструкцию вашей последовательности, используя для генерации PSF профиль Диск Эйри. Чтобы сделать это для типичной цветной камеры, при загрузке последовательности необходимо установить флажок Дебайеризация. Вы можете пойти ещё дальше, если захотите, сгенерировав три отдельные профиля Диска Эйри для красного, зелёного и синего цветов (обычно 600нм, 530нм и 450нм соответственно). Siril напрямую не может создавать цветную PSF (интерфейс реконструкции и так достаточно перегружен!), но если вы отдельно сохраните красный, зелёный и синий профили Диска Эйри вы можете объединить их в цветную PSF, используя инструмент Совмещение в RGB. Сохраните её, и при загрузке цветного изображения или последовательности PSF будет загружаться в цвете и выполняться реконструкцию каждого цветового канала с использованием соответствующей PSF.

Укладка и повышение чёткости без реконструкции каждого кадра.

Необработанный результат укладки: лучшие 30% из 91тыс кадров, к которым была применена реконструкция Siril.

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

На изображении выше видно небольшое улучшение формы кромки в варианте, в котором перед укладкой кадры были подвергнуты реконструкции с помощью профиля PSF Диск Эйри по методу Ричардсона-Люси в Siril, но необходимо соблюдать осторожность, чтобы избежать потери деталей. Этот процесс очень медленный: моей машине, на которой я веду разработку, потребовалось 4,5 часа, чтобы обработать каждый из 91тыс кадров этой последовательности, а улучшение может быть незначительным, если вообще произойдет.

##### Команды

Командная строка Siril

    makepsf clear
    makepsf load filename
    makepsf save [filename]
    makepsf blind [-l0] [-si] [-multiscale] [-lambda=] [-comp=] [-ks=] [-savepsf=]
    makepsf stars [-sym] [-ks=] [-savepsf=]
    makepsf manual { -gaussian | -moffat | -disc | -airy } [-fwhm=] [-angle=] [-ratio=] [-beta=] [-dia=] [-fl=] [-wl=] [-pixelsize=] [-obstruct=] [-ks=] [-savepsf=]

Генерирует PSF для реконструкции любым из трех методов предоставляемых командами RL, SB или WIENER. В качестве первого аргумента должно быть указано одно из следующих ключевых слов: clear (очищает существующую PSF), load (загружает PSF из файла), save (сохраняет текущую PSF), blind (реконструкция вслепую), stars (генерирует PSF на основе измеренных на изображении параметров звезд) или manual (генерирует PSF на основе заданных вручную параметров функции).
При использовании аргумента clear дополнительные аргументы не требуются.
Для загрузки раннее сохранённой PSF аргументу load требуется второй аргумент filename с названием файла, содержащим PSF. Это может быть любой формат, с поддержкой которого был скомпилирован Siril, но файл должен быть квадратным и, в идеале, иметь нечётный размер.
Для сохранения ранее созданной PSF используется аргумент save. По выбору может быть указано имя файла, которое должно иметь расширение ".fit", ".fits", ".fts" или ".tif". Если имя файла не указано, PSF будет названа на основе имени открытого файла или последовательности.
Вместе с аргументом blind, могут быть указаны следующие необязательные аргументы: -l0 использует метод спуска l0, -si использует метод неравномерности спектра, -multiscale указывает методу l0 выполнить многоступенчатую оценку PSF, -lambda= предоставляет постоянную регуляризации.
Для PSF, рассчитанной по звёздам (stars) может быть передан единственный необязательный аргумент -sym, указывающий, что PSF должна быть симметричной.
Для PSF, рассчитанной вручную (manual), может быть передан необязательный аргумент -gaussian, -moffat, -disc или -airy (значение по умолчанию — Гауссов). Для PSF по Гауссу или Моффату могут переданы необязательные аргументы -fwhm=, -angle= и -ratio=. Необязательный аргумент -beta= может быть передан, если используется PSF по Моффату. Если эти значения не переданы, по умолчанию используются соответствующие значения, указанные в диалоге реконструкции. PSF по диску требует единственного аргумента -fwhm=, который в этой функции используется для установки диаметра PSF. Для PSF по диску Эйри могут быть переданы следующие аргументы: -dia= (устанавливает диаметр телескопа), -fl= (устанавливает фокусное расстояние телескопа), -wl= (устанавливает длину волны, для которой вычисляется дифракционная картина Эйри), -pixelsize= (устанавливает размер пикселя сенсора), -obstruct= (устанавливает размер центрального экранирования, как процент от общей площади апертуры). Если эти параметры отсутствуют, по умолчанию используются длина волны 525 нм и центральное экранирование в 0%. Siril попытается получить оставшиеся из открытого изображения, но некоторые программы захвата изображений могут не предоставлять всю необходимую информацию и в этом случае результаты будут плохими. Имейте ввиду, что видео в формате SER могут иметь незаполненные метаданные. Какие из аргументов можно не указывать для конкретного оборудования вы можете определить опытным путём.
Для любого из приведённых выше аргументов, могут быть указаны необязательные аргументы -ks= для установки размера PSF и -savepsf= filename для сохранения созданной PSF: название файла должно быть указано; требования к расширению файла такие же, как для makepsf save filename
Ссылки: psf, rl, sb, wiener

Командная строка Siril

    rl [-loadpsf=] [-alpha=] [-iters=] [-stop=] [-gdstep=] [-tv] [-fh] [-mul]

Восстанавливает изображение с помощью метода Ричардсона-Люси.
PSF может быть загружена с помощью необязательного аргумента -loadpsf=filename (создан с помощью MAKEPSF).
Количество повторов устанавливается с помощью -iters (по умолчанию — 10).
Тип регуляризации может быть установлен с помощью -tv для полной вариации или -fh для нормы Фробнеуса для матрицы Гессе (по умолчанию — регуляризация отключена) и параметра -alpha=, устанавливающего силу регуляризации (меньшее значение = бо́льшая регуляризация, по умолчанию = 3000).
По умолчанию используется метод градиентного спуска с шагом 0.0005, однако с помощью -mul может быть использован мультипликативный метод.
Критерий остановки можно включить, указав предел остановки с помощью -stop=
Ссылки: psf, makepsf

Командная строка Siril

    sb [-loadpsf=] [-alpha=] [-iters=]

Восстанавливает изображение с помощью метода Брэгмана.
PSF может быть загружена с помощью необязательного аргумента -loadpsf=filename.
Количество повторов устанавливается с помощью -iters (по умолчанию — 1).
Коэффициент регуляризации -alpha= устанавливает силу регуляризации (меньшее значение = бо́льшая регуляризация, по умолчанию = 3000)
Ссылка: psf

Командная строка Siril

    wiener [-loadpsf=] [-alpha=]

Восстанавливает изображение, используя метод реконструкции Венера.
PSF, созданная с использованием MAKEPSF, может быть загружена с помощью необязательного аргумента -loadpsf=filename.
Аргумент -alpha= предоставляет коэффициент регуляризации, моделируемый Гауссовым шумом
Ссылки: psf, makepsf

##### Литература

[Anger2018]

Anger, J., Facciolo, G., & Delbracio, M. (2018). Estimating an image's blur kernel using natural image statistics, and deblurring it: an analysis of the Goldstein-Fattal method. Image Processing On Line, 8, 282-304. https://doi.org/10.5201/ipol.2018.211

[Anger2019]

Anger, J., Facciolo, G., & Delbracio, M. (2019). Blind image deblurring using the l0 gradient prior. Image processing on line, 9, 124-142. https://doi.org/10.5201/ipol.2019.243

[Goldstein2012]

Goldstein, A., & Fattal, R. (2012, October). Blur-kernel estimation from spectral irregularities. In European Conference on Computer Vision (pp. 622-635). Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-33715-4_45

[Lucy1974]

Lucy, L. B. (1974). An iterative technique for the rectification of observed distributions. The astronomical journal, 79, 745. https://doi.org/10.1086/111605.

#### Сохранение краёв

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

Диалоговое окно фильтра.

Довольно простое диалоговое окно предоставляет несколько настроек.

- Тип фильтра: Позволяет выбрать между билатеральным фильтром и фильтром с учителем.

- Диаметр: Определяет размер ядра фильтра, которое будет использовано. При использовании билатерального фильтра установка диаметра, равного 0, приведёт к автоматической настройке размера ядра фильтра на основе пространственного значения σ. При использовании фильтра с учителем это значение необходимо установить — при диаметре, равном 0, фильтр не будет применён.

- σ (пространственная): Этот параметр определяет пространственную протяженность ядра фильтра. Бо́льшее значение приводит к сглаживанию шума на бо́льшей площади изображения, но вычисление выполняется медленнее. Меньшее значение приводит к более локальному сглаживанию и ускоряет вычисления. Значения σ по умолчанию не установлены, поскольку соответствующее значение может существенно зависеть от характеристик изображения, но можно начать со значений σ (пространственная) и σ (интенсивность) примерно равными 11.

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

- Эталонное изображение: Позволяет выбрать изображение для использования в качестве эталонного при работе фильтра с учителем. Если установлен флажок «самообучение», фильтр будет работать в режиме самообучения, используя входящее изображение в качестве эталонного.

- Модуляция: В Siril модуляция — это параметр в диапазоне от 0 до 1, который позволяет смешивать исходное и обработанное изображения. При значении 1 сохраняется только обработанное изображение, при значении 0 фильтр сохранения краёв, вообще не применяется.

Пример изменения параметров билатерального фильтра. Обратите внимание, что необходимые значения будут зависеть от характеристик шума ваших данных.

Совет

Параметры двух разных типов фильтров работают по-разному, поэтому при переключении между билатеральным фильтром и фильтром с учителем при установленных параметрах σ следует ожидать некоторого изменения результата предварительного просмотра. Код применяет определённую компенсацию к указанным параметрам, чтобы свести к минимуму разницу в поведении этих фильтров при одних и тех же входящих параметрах, но это не является точным (и не должно быть).

Командная строка Siril

    epf [-guided] [-d=] [-si=] [-ss=] [-mod=] [-guideimage=]

Применяет фильтр сохранения краёв. По умолчанию применяется билатеральный фильтр; фильтр с учителем можно применить с помощью аргумента -guided. Диаметр фильтра по умолчанию равен 3 и может быть установлен с помощью аргумента -d=. Будьте осторожны со значениями d, превышающими 20, так как алгоритм может потребовать большого количества вычислений.
Значение σ (интенсивность) можно задать с помощью -si=, а значение σ (пространственное) — с помощью -ss=. Значения σ представляют собой разницу в значениях пикселей, на которые сильно воздействует фильтр: для 32-битных изображений значение должно быть от 0 до 1.0, тогда как для 16-битных изображений оно должно быть от 0 до 65535. Значения по умолчанию, если они не указаны, должны быть равны 11. Если указано значение -d=0, диаметр фильтра будет установлен автоматически на основе значения -ss. Обратите внимание, что при применении фильтра с учителем применяется только -sc.
При указании фильтра с учителем эталонное изображение может быть задано с помощью -guideimage=. По умолчанию, если эталонное изображение не указано, применяется самообучающийся фильтр. Примечание: эталонное изображение должно иметь те же размеры, что и обрабатываемое!
Силу фильтра можно регулировать с помощью аргумента -mod=. Если mod = 1.0, то фильтр будет применён в полную силу; при mod менее 1.0 часть исходного изображения будет смешана с результатом, а при mod = 0.0 фильтрация применяться не будет

#### Fourier Transform

Преобразование Фурье (Fourier Transform, FT) — это математическое преобразование, которое раскладывает функции на частотные компоненты, представленные выходными данными преобразования как функции частоты. Это преобразование широко используется в обработке изображений, так как позволяет выявлять сигналы с регулярными частотами.

Теория

Преобразование Фурье

Преобразование Фурье — это процесс анализа, раскладывающий комплекснозначную функцию \(f(x)\) на составляющие ее частоты и их амплитуды:

\(\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-2\pi i \xi x} \, dx\).

Обратное преобразование

Обратным процессом является синтез, который воссоздаёт \(f(x)\) из её преобразования:

\(f(x) = \int_{-\infty}^{\infty} \hat{f}(\xi) e^{2\pi i \xi x} \, d\xi\).

Siri позволяет преобразовать изображение в частотном пространстве благодаря алгоритму быстрого преобразования Фурье. Результат представляет из себя два изображения. Первое, загружаемое автоматически, содержит величину (или модуль) преобразования, второе — фазу. Расположение двух изображений необходимо ввести на вкладке "Прямое преобразование" (см. иллюстрацию ниже) диалогового окна. Затем можно изменить изображение модуля, удалив частотные пики, соответствующие нежелательным сигналам. Важно не забыть сохранить изменения.

Когда отмечена опция По центру, начало координат прямого преобразования Фурье будет центрировано. Если нет — начало координат будет в левом верхнем углу.

Вкладка Прямое преобразование.

Чтобы восстановить изображение, перейдите на вкладку Обратное преобразование и укажите путь к файлам амплитудных (modulus) и фазовых (phase) изображений.

Вкладка Обратное преобразование.

Командная строка Siril

    fftd modulus phase

Применяет быстрое преобразование Фурье к загруженному в память изображению. Амплитуда (modulus) и фаза (phase), указанные в аргументе, являются именами сохраняемых файлов FITS

Командная строка Siril

    ffti modulus phase

Извлекает исправленное изображение, применяя обратное преобразование. Аргументы modulus и phase — это имена входящих файлов, Результатом будет новое загруженное изображение

#### Медианный фильтр

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

Диалоговое окно фильтра.

Довольно простое диалоговое окно предоставляет несколько настроек.

- Размер ядра: от \(3\times 3\) до \(15\times 15\), определяет размер квадратного ядра, которое используется для применения фильтра. Чем больше размер ядра, тем более размытым будет результат.

- Кол-во итераций: определяет количество проходов ядра.

- Модуляция: в Siril модуляция — это параметр между 0 и 1, смешивающий исходное и обработанное изображения. Значение 1 сохраняет только обработанное изображение, значение 0 вообще не применяет медианный фильтр.

Командная строка Siril

    fmedian ksize modulation

Применяет медианный фильтр, размером ksize × ksize (ksize ДОЛЖЕН быть нечётным), к загруженному изображению с параметром модуляции modulation.
Значения итоговых пикселей вычисляются как : out=mod × m + (1 − mod) × in, где m это значение пикселя после применения медианного фильтра. При значении модуляции равном 1, модуляция не применяется

#### Подавление шума

##### Шум изображения

Изображения страдают от различных типов шумов:

1. Импульсный шум

   > - Этот тип шума (иногда называемый "шумом соль с перцем") обычно возникает из-за горячих или холодных пикселей. Обычно с ним справляются с помощью метода сложения с обрезкой по сигме, но иногда может потребоваться справиться с ним, если вы работаете с одиночным изображением без сложения.

2. Аддитивный белый гауссовкий шум

   > - Этот тип шума характерен для хорошо освещённых фотографий: он возникает из-за тепловых и электронных флуктуаций в устройстве захвата изображения, и уровень шума не зависит от сигнала. Аддитивный белый гауссовский шум можно уменьшить во время съёмки, используя охлаждаемые камеры. Также он уменьшается при сложении изображений, поскольку сложение \(n\) изображений увеличивает коррелированный сигнал в \(n\) раз, тогда как некоррелированный шум увеличивается только в \(\sqrt{n}\) раз. Это также тот тип шума, для удаления которого разработано большинство классических алгоритмов шумоподавления.

3. Пуассоновский шум

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

##### Подавление шума в Siril

Siril предлагает хорошо изученные современные классические алгоритмы подавления шума. Критериями выбора алгоритмов были:

- Алгоритм должен быть проанализирован в рецензируемых научных журналах с описанием алгоритма и объективным количественным сравнением его эффективности.

- Авторы должны были предоставить доступ к реализации алгоритма в рамках свободного программного обеспечения с открытым кодом (F/OSS). Это важно для предотвращения проблем с интеллектуальной собственностью и, в случае непосредственного использования отсылок к авторским реализациям, для обеспечения совместимости лицензий.

- Алгоритмы должны работать достаточно быстро.

- Наконец, реализация алгоритма должна быть способна обрабатывать 32-битные пиксельные данные с плавающей запятой.

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

Диалоговое окно Подавление шума

##### Алгоритмы: импульсный шум

Siril в первую очередь удаляет импульсный шум с помощью сложения с обрезкой по сигме. Если вы используете этот метод сложения, у вас не должно возникнуть никаких проблем с импульсным шумом. Однако, если вы работаете с одиночной экспозицией, вы вполне можете обнаружить импульсный шум на своем изображении. Его следует удалить с помощью функции Косметическая коррекция в Siril перед использованием любого другого шумоподавления, так как наличие импульсного шума может исказить работу алгоритмов удаления аддитивного белого гауссовского шума и создать артефакты. Этот метод работает аналогично обрезанию по сигме, но анализирует соседние пиксели. Любой пиксель, интенсивность которого больше, чем n стандартных отклонений от соседних, будет отклонен и заменен значением, основанным на медиане соседних пикселей. В инструменте Подавление шума Косметическая коррекция активна по умолчанию и будет выполняться перед любыми дополнительными шагами шумоподавления. (Даже если удаление импульсного шума уже выполнено, сохранение этой настройки не навредит.) Кроме того, косметическую коррекцию можно выполнить вручную с помощью инструмента Косметическая коррекция в меню Обработка.

##### Алгоритмы: аддитивный белый гауссовский шум

Основной алгоритм подавления аддитивного белого гауссовского шума, используемый в Siril, — это нелокальное байесовское шумоподавление (НЛ-Байесовское) [Lebrun2013].

- Нелокальные алгоритмы шумоподавления представляют собой значительное улучшение по сравнению с предыдущими линейными фильтрами, ориентированными на пиксели. НЛ Байесовское шумоподавление — это улучшенная версия более ранних нелокальных алгоритмов шумоподавления и один из лучших классических алгоритмов шумоподавления аддитивного белого гауссовского шума. Он незначительно лучше, чем современный “эталонный” алгоритм сопоставления блоков и снижения шума 3D-преобразования (BM3D), и намного быстрее выполняется.

- Ключевым параметром, необходимым для оптимизации производительности алгоритмов подавления аддитивного белого гауссовского шума, является сигма, стандартное отклонение шума. Siril измеряет уровень шума непосредственно на основе данных изображения и передает их в алгоритм НЛ Байесовского шумоподавления, поэтому в инструменте шумоподавления Siril нет настраиваемых входных данных для НЛ Байесовского шумоподавления.

Siril дополняет НЛ Байесовское шумоподавление рядом других алгоритмов шумоподавления:

- Адаптивное двухдоменное подавление шума (DA3D) [Pierazzo2017]

  > - Этот метод использует результат НЛ Байесовского шумоподавления в качестве опорного изображения. Опорное изображение применяется для повторной обработки исходного изображения путем выполнения сжатия в частотной области на адаптивных к форме и данным участках. Это немного улучшает производительность НЛ Байесовского шумоподавления, хотя и требует дополнительных вычислительных затрат. Адаптивные к форме и данным участки выбираются динамически, что позволяет сосредоточить вычисления на областях с наибольшей детализацией. Также это помогает уменьшить ступенчатые артефакты, присутствующие в опорном изображении.

  > - В инструменте шумоподавления Siril DA3D — это простой переключатель без дополнительных настроек.

- Усиление-подавление-вычитание (SOS) [Romano2015]

  > - SOS работает путем многократного повторения основного алгоритма устранения шума. На каждой итерации изображение "усиливается" путем добавления некоторой доли исходного зашумленного изображения. Алгоритм НЛ Байесовского шумоподавления выполняется на этом усиленном изображении, после чего вычитается предыдущая оценка.

  > - Изображение x на итерации \(k+1\) задаётся формулой \(x_{k+1}=f(y+x_k)-x_k\), где \(y\) — зашумленное входное изображение.

  > - В инструменте шумоподавления Siril SOS — это переключатель с двумя параметрами: можно задать `Кол-во повторов SOS` и долю изображения с шумами, добавляемого на каждой итерации (`ρ`). Избегайте установки слишком высокого значения `ρ`, так как это может привести к проблемам со сходимостью SOS: значения по умолчанию (`3 итерации` и `ρ = 0.2`) обычно приемлемы.

##### Алгоритмы: Пуассоновский и Пуассоно-Гауссовский шум

- Преобразование Анскомба, стабилизирующее дисперсию [Mäkitalo2011], [Mäkitalo2012]

  > - Преобразования, стабилизирующие дисперсию, используются для изображений с Пуассоновским или Пуассоно-Гауссовским шумом, чтобы минимизировать зависимость шума от сигнала и сделать его более похожим на аддитивный белый гауссовский шум (AWGN), который хорошо устраняется методом НЛ Байеса, после чего применяется обратное преобразование. Преобразование, выбранное для использования в Siril, — это преобразование Анскомба \(A: x\rightarrow 2\times \sqrt{\left(x+\frac{3}{8}\right)}\)

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

  > - В инструменте шумоподавления Siril Преобразование Анскомба представляет собой простой переключатель без дополнительных настроек.

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

Анимация ниже демонстрирует, что можно достичь с использованием стабилизации дисперсии на изображении с низкой интенсивностью фотонов, в данном случае это одиночный 5-минутный кадр туманности Пеликана через красный фильтр, показанный на экране в режиме Авторастягивание. Обратите внимание на отсутствие размытия, расплывчатости или потери деталей вокруг звезд и четкий край туманности в нижней левой части изображения по сравнению с тем, что можно было бы получить с использованием более простых методов шумоподавления. После более деликатного растяжения и объединения с другими каналами это значительно улучшит качество, достижимое с очень ограниченными данными (хотя больше данных всегда является лучшим решением!)

Шумоподавление изображения с низкой интенсивностью фотонов

##### Модуляция

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

##### Когда применять подавление шума

Алгоритмы шумоподавления разработаны для удаления аддитивного белого гауссовского шума (AWGN) и поэтому работают лучше всего на нерастянутых изображениях: если белый шум подвергается нелинейной коррекции, его характеристики изменяются, и он перестает быть белым. Шумоподавление можно выполнять и на растянутых изображениях, что всё равно приведет к улучшению, но, вероятно, будет менее эффективным, чем при применении на линейном этапе.

##### Диалоговое окно Подавления шума

Инструмент шумоподавления в Siril доступен двумя способами: через графический интерфейс (GUI) или через командную строку. На изображении ниже показан графический интерфейс. Примечание: Расширенные настройки SOS отображаются только при выборе метода Усиление-подавление-вычитание (SOS).

Графический интерфейс Подавления шума в Siril

Шумоподавление также можно применять с помощью команд Siril, как в консоли, так и в скриптах. Формат команды следующий:

Командная строка Siril

    denoise [-nocosmetic] [-mod=m] [ -vst | -da3d | -sos=n [-rho=r] ] [-indep]

Подавляет шум на изображении, используя нелокальный Байесовский (НЛ Байесовский) алгоритм описанный Лебраном, Буадесом и Морелом.
Перед шумоподавлением настоятельно рекомендуется применить косметическую коррекцию для удаления шума типа соль и перец. По умолчанию эта команда автоматически применяет косметическую коррекцию. Однако, если косметическая коррекция была выполнена в ходе рабочего процесса раннее, она может быть отключена с помощью опции -nocosmetic.
Может быть указан необязательный аргумент -mod=m, где 0 <= m <= 1. Итоговое значение пикселя вычисляется как out=m × d + (1 − m) × in, где d это значение пикселя после шумопдавления. Модуляция не применяется при значении 1. Если этот параметр не указан, по умолчанию он равен 1.
Необязательный аргумент -vst можно использовать для применения перед НЛ Байесовским шумоподавлением стабилизирующего дисперсию обобщённого преобразования Анскомба. Это полезно для изображений, например, одиночные субэкспозиции, где шум имеет Пуассоновское или смесь Пуассоновского и Гауссова распределений, а не главным образом Гауссово распределение. Нельзя использовать вместе с DA3D или SOS. Для шумоподавления уже уложенных изображений обычно не даёт выигрыша.
Необязательный аргумент -da3d можно использовать для включения адаптивного двухдоменного подавления шума (DA3D) в качестве заключительного алгоритма подавления шума. Результат алгоритма сопоставления блоков и 3D трансформации (BM3D) используется как эталонное изображение для улучшения шумоподавления. DA3D улучшает детали и уменьшает ступенчатые артефакты.
Необязательный аргумент -sos=n можно использовать для включения итеративного улучшения шумоподавления с помощью алгоритма усиление-подавление-вычитание (SOS). Количество повторов указывается с помощью n. В частности, SOS может давать лучшие результаты, если неулучшенный НЛ Байесовский алгоритм оставляет артефакты в областях фона. Если одновременно переданы -da3d и -sos=n, то будет применён последний из переданных.
Может быть передан необязательный аргумент -rho=r, где 0 < r < 1. Он используется алгоритмом SOS для указания доли зашумлённого изображения, подмешиваемой к промежуточному результату между каждым повтором. Если -sos=n не указан, этот параметр игнорируется.
По умолчанию DA3D или SOS не применяются, поскольку обычно улучшение в подавлении шума относительно невелико, а эти методы требуют дополнительного вычислительного времени.
В очень редких случаях, при подавлении шума на цветных изображениях могут появляться цветные артефакты. Для предотвращения этого можно использовать необязательный аргумент -indep, благодаря чему подавление шума в каждом канале выполняется отдельно. Это медленнее, но удаляет артефакты

##### Сравнение

На изображениях ниже представлено упрощенное сравнение различных алгоритмов. Обратите внимание, что используется только одно изображение: на практике различные алгоритмы могут быть более эффективны для разных изображений. Все изображения можно кликнуть, чтобы просмотреть в масштабе 100%.

###### Исходное шумное изображение

Шумное изображение

###### Шум удалён только с использованием НЛ Байесовского алгоритма

Шум удалён только с использованием НЛ Байесовского алгоритма

###### Шум удалён только с использованием НЛ Байесовского алгоритма с модуляцией 75% для сохранения некоторых микротекстур

Использование модуляции

###### Шум удалён с использованием НЛ Байесовского алгоритма с преобразованием Анскомба

Шум удалён с использованием НЛ Байесовского алгоритма, дисперсия стабилизирована преобразованием Анскомба. Справа показано увеличение до 200% без интерполяции.

###### Шум удалён с использованием алгоритма Адаптивного двухдоменного подавления шума (DA3D), используя в качестве опорного изображение, обработанное НЛ Байесовским методом

Шум удалён с использованием алгоритма Адаптивного двухдоменного подавления шума (DA3D), опорное изображение подготовлено НЛ Байесовским методом. Справа показан фрагмент с увеличением в 200% без интерполяции.

###### Шум удалён НЛ Байесовским методом плюс Усиление-подавление-вычитание (SOS)

Шум удалён НЛ Байесовским методом плюс повторы Усиления-подавления-вычитания (SOS). Справа показан фрагмент с увеличением в 200% без интерполяции.

##### Ограничения

Основным ограничением является то, что алгоритмы лучше всего работают, когда шум имеет гауссовский характер (или может быть преобразован в приблизительно гауссовский с помощью преобразования Анскомба (VST)). Существуют некоторые причины, по которым это может не быть верным:

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

- Изображения, полученные цветной камерой (OSC), могут поддаваться шумоподавлению хуже, чем монохромные или скомпонованные цветные изображения. Небольшое снижение уровня аддитивного белого гауссовского шума (AWGN) в канале яркости достигается, но в результате процесса дебайеризации характер шума изменяется так, что он больше не соответствует модели AWGN и поэтому удаляется менее эффективно. Кроме того, как для снимков с цветных камер (OSC), так и для скомпонованных монохромных цветных изображений шум цветности редко соответствует модели AWGN и требует другого подхода к обработке. На данный момент шум цветности лучше всего корректировать с помощью программного обеспечения общего назначения для обработки изображений, такого как`The GIMP <https://www.gimp.org>`__.

##### Литература

[Lebrun2013]

Lebrun, M., Buades, A., & Morel, J. M. (2013) Implementation of the “Non-Local Bayes” (NL-Bayes) Image Denoising Algorithm. Image Processing On Line, 3 , pp. 1–42. https://doi.org/10.5201/ipol.2013.16

[Pierazzo2017]

Pierazzo, N., & Facciolo, G. (2017). Data adaptive dual domain denoising: a method to boost state of the art denoising algorithms. Image Processing On Line, 7, 93-114. https://doi.org/10.5201/ipol.2017.203

[Mäkitalo2011]

Mäkitalo, M., & Foi, A. (2012, March). Poisson-gaussian denoising using the exact unbiased inverse of the generalized anscombe transformation. In 2012 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1081-1084). IEEE. https://doi.org/10.1109/ICASSP.2012.6288074

[Mäkitalo2012]

Makitalo, M., & Foi, A. (2011). A closed-form approximation of the exact unbiased inverse of the Anscombe variance-stabilizing transformation. IEEE transactions on image processing, 20(9), 2697-2698. https://doi.org/10.1109/TIP.2011.2121085

[Romano2015]

Romano, Y., & Elad, M. (2015). Boosting of image denoising algorithms. SIAM Journal on Imaging Sciences, 8(2), 1187-1219. https://doi.org/10.1137/140990978

#### Вращательный градиент (фильтр Ларсона-Секанины)

Градиент вращения, также называемый фильтром Ларсона-Секанины, — это фильтр, который позволяет удалить круговые структуры с изображения для лучшего выделения других деталей. Эта техника особенно эффективна для демонстрации джетов (струй), исходящих из ядра кометы.

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

- Если вокруг этой точки присутствуют круговые структуры, они не изменяются при вращении и исчезнут после применения этого фильтра.

- Если присутствуют некруговые структуры, такие как джеты в коме, они будут смещены относительно друг друга между двумя копиями, и вычитание усилит контраст этих структур в результате.

- Если комета движется на изображении, можно добавить радиальное смещение.

Диалоговое окно фильтра Вращательный градиент.

Теория

Исходя из входного изображения, фильтр создает два изображения, каждое из которых имеет радиальное смещение (\(dr\) в пикселях) и вращательное смещение (\(d\alpha\) в градусах) относительно точки (\(x_c\), \(y_c\)). Эти смещения имеют одинаковую величину, но противоположные знаки между двумя изображениями. Затем два изображения объединяются для получения конечного изображения. В полярных координатах \((r, a)\) относительно точки \((x, y)\) имеем:

\[B'(\alpha,r,d\alpha,dr) = 2 \cdot B(\alpha,r) - B(\alpha-d\alpha, r-dr) - B(\alpha+d\alpha, r-dr)\]

with \(B\): the starting image, \(B'\): the resulting image, \(dr\): the radial shift and \(d\alpha\): the rotational shift

В приведенном ниже примере, касающемся кометы C/2022 E3, было выполнено выравнивание по комете, и звезды показывают существенные следы. Кома имеет очень круглую форму, и трудно увидеть детали ее активности. Поэтому нет необходимости определять радиальный сдвиг. Для поворота был выбран угол в 15° (этот выбор был сделан после нескольких попыток и использования кнопки отмены для возврата назад). Чтобы выбрать координаты центра вращения, просто сделайте выделение вокруг ядра кометы и нажмите на :guilabel: "Использовать текущее выделение`. Это действие скопирует координаты центроида в нужное место.

Изображение кометы (C/2022 E3 (ZTF)), показывающее кому и хвост (любезно предоставлено Stéphane Garro).

Простое нажатие на кнопку Применить применит фильтр. В нашем примере становится виден джет.

После применения фильтра мы замечаем джет, выходящий из ядра.

Командная строка Siril

    rgradient xc yc dR dalpha

Создаёт два изображения с радиальным (dR пикселей) и вращательным (dalpha градусов) сдвигом по отношению к точке (xc, yc).
Сдвиги между этими изображениями имеют одинаковую амплитуду, но противоположенный знак. Далее изображения суммируются для создания итогового изображения. Этот процесс также называет фильтром Ларсона Секанина

#### Подавить фиолетовые ореолы

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

Совет

Данный фильтр предназначен для работы с нелинейными изображениями. Поэтому его необходимо использовать после растягивания гистограммы.

Фильтр работает в двух режимах: когда он воздействует на все цвета или ограничивается только звёздами.

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

##### Все цвета

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

Для использования вам следует сместить ползунок Коррекция синего в сторону уменьшения, пока воздействие фильтра не станет оптимальным. Обычно это значение составляет около 0.15.

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

##### Маска звёзд

Этот режим полезен для совмещённых изображений, на которых вы хотите ограничить действие этого фильтра только звёздами.

Для использования этого режима, следует установить флажок Маска звёзд. Если вы еще не определили маску звёзд с помощью функции «Динамическая PSF», то при создании маски произойдет задержка в несколько секунд. Теперь вы можете временно уменьшить значение Коррекция синего до нуля. Теперь звёзды должны быть жёлтыми. Если вы по-прежнему видите фиолетовые ореолы, вам следует с помощью ползунка увеличивать значение параметра «Порог» до тех пор, пока ореолы полностью не покроются жёлтым цветом. Теперь вы можете с помощью ползунка увеличивать значение параметра Коррекция синего до тех пор, пока ваши звёзды не станут желтыми, а фиолетовые ореолы не уменьшатся или не исчезнут вовсе. Обычно это происходит при значениях примерно 0.12-0.15.

Сравнение до/после применения фильтра подавления фиолетовых ореолов. Очень хорошо видно, что звёзды имеют лучший цвет без фиолетового ореола.

Командная строка Siril

    unpurple [-starmask] [-blue=value] [-thresh=value]

Применяет косметический фильтр для уменьшения фиолетовых ореолов вокруг звёзд.
Если передан аргумент -starmask, то для определения областей изображения, на которые необходимо воздействовать, будет использована маска звёзд. Если «Динамическая PSF» уже запущена, она будет использоваться для создания маски, в противном случае она будет создана автоматически. Параметру -mod= следует присвоить значение около 0.14, чтобы уменьшить количество фиолетового цвета. Параметр -thresh= задает модификатор размера для каждой звезды в маске звёзд и должен быть достаточно большим, чтобы звёзды были полностью обработаны без остатков фиолетового ореола. Значение должно быть от 0 до 1, обычно около 0.5.
Если параметр -starmask не указан, уменьшение фиолетового цвета будет применено ко всему изображению для любых фиолетовых пикселей со значением светимости, превышающим заданное значение -thresh=. В этом случае значение -thresh= должно быть достаточно низким. Этот режим полезен для масок звёзд или других изображений без туманностей или галактик
Ссылка: psf

### Обработка звёзд

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

Эта часть документации посвящена всему, что связано с обработкой звезд.

#### Удаление звёзд с помощью StarNet

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

The Starnet interface built into Siril itself is now deprecated. StarNet 2.5 has been released and is supported by means of a Python script which is available in the scripts repository. The legacy C interface will not support Starnet 2.5 but will remain available in Siril 1.4.x for users of older versions of Starnet.

In Siril 1.6 the legacy C interface will be removed so all users will need to upgrade to Starnet 2.5 and use the python script. The script does provide CLI args so where scripts use the Siril `starnet` command they will need to adapt to using `pyscript StarNet.py` instead.

StarNet — это программное обеспечение, разработанное Никитой Мисюрой. Его первая версия была выпущена под свободной лицензией с открытым исходным кодом. К сожалению, вторая версия стала проприетарной, и доступ к исходному коду закрыт. Версия 2 может быть скачана бесплатно здесь. Убедитесь, что вы скачиваете версию Command Line Tool. Siril может взаимодействовать с любой версией командной строки StarNet, включая новую экспериментальную версию на базе Torch, которая изначально была выпущена для Apple Mac с чипами M1 и M2.

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

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

Совет

В macOS, для того чтобы Siril мог правильно обнаруживать и использовать StarNet, сначала необходимо решить некоторые проблемы с правами доступа и безопасностью. Начните с открытия приложения Терминал (Terminal) из папки Утилиты (Utilities) в разделе Приложения (Applications). В терминале вам нужно изменить рабочую директорию с домашней папки на директорию установки StarNetCLI. Для этого введите `cd`, затем нажмите `пробел` и перетащите папку StarNetCLI в окно терминала, чтобы скопировать её путь. Нажмите `Enter`. После этого введите следующие четыре команды, нажимая `Enter` после каждой из них:

    xattr -r -d com.apple.quarantine libtensorflow_framework.2.dylib
    xattr -r -d com.apple.quarantine starnet++
    chmod +x starnet++
    chmod +x run_starnet.sh

Затем, при первом использовании Siri, запуск StarNet может завершиться ошибкой с предупреждением о libtensorflow. Отмените это предупреждение. Откройте системные настройки (System Preferences) и в разделе Конфиденциальность и безопасность (Privacy and Security) нажмите кнопку Разрешить в любом случае (Allow anyways)для libtensorflow. После этого StarNet должен правильно выполняться в Siril.

Совет

Для macOS также выпущен новый исполняемый файл StarNet, оптимизированный для чипа Apple Silicon, который доступен на сайте: https://www.starnetastro.com/experimental/. Эта новая версия значительно быстрее предыдущих, поскольку она использует ускоренную библиотеку MPS PyTorch (https://developer.apple.com/metal/pytorch/). Кроме того, в этой версии содержатся подписанные двоичные файлы, следуйте инструкциям по установке, указанным в файле README.txt

Тем не менее, Siril по-прежнему может запускать внешние исполняемые файлы, и именно это мы решили реализовать, начиная с версии Siril 1.2.0. Для настройки обратитесь к этому разделу руководства. Там объясняется, как указать Siril местоположение StarNet.

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

Необходимо указать расположение версии StarNet для командной строки, а не с графическим интерфейсом пользователя.

Обратите внимание, что StarNet требует ввода данных в виде изображений в формате TIFF, поэтому, если Siri скомпилирована без поддержки libtiff, интеграция со StarNet будет недоступна.

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

Диалоговое окно Удаление звезд с помощью StarNet.

Инструмент очень прост в использовании и имеет всего пять настроек:

- Предварительно растянуть: если этот параметр выбран, перед запуском StarNet к изображению применяется оптимизированное растяжение посредством функции переноса средних тонов (Midtone Transfer Function, MTF), а после завершения работы инвертированное растяжение. Это необходимо для использования StarNet на линейном этапе обработки.

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

- Создать маску звезд: эта опция позволит сгенерировать маску звёзд и сохранить ее в рабочей директории. Маска звёзд рассчитывается как разница между исходным изображением и изображением без звёзд. По умолчанию маска звёзд создается.

- Удвоить разрешение: эта опция увеличивает разрешение изображения в два раза перед запуском StarNet. Это улучшает обработку очень плотных звёзд, но увеличивает время обработки в четыре раза и может снизить эффективность при работе с очень большими звёздами. По завершении изображение масштабируется обратно до исходного размера.

- Пользовательский шаг: можно ввести собственное значение для параметра шага в StarNet. Значение по умолчанию составляет 256, и разработчик StarNet рекомендует не изменять этот параметр.

Процесс StarNet может легко применяться к последовательности изображений. Опция Применить к последовательности определяет, будет ли процесс применяться к одному изображению или к целой последовательности. Если процесс применяется к последовательности, будет создана новая последовательность, содержащая изображения без звезд, а если выбрано создание масок звезд, то будет создана вторая последовательность с соответствующими масками звезд.

Больше информации о StarNet можно найти на официальном сайте.

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

##### Команды

Командная строка Siril

    starnet [-stretch] [-upscale] [-stride=value] [-nostarmask]

Эта команда вызывает StarNet для удаления звёзд с загруженного изображения.
Предварительные условия: StarNet это внешняя программа, не связанная с Siril, которая должна быть корректно установлена перед первым использованием этой команды. Путь к директории с установленной версией StarNet для командной строки должен быть указан в разделе настроек Разное.
По завершении работы загружается изображение без звёзд, а в рабочей директории создаётся изображение с маской звёзд, если только не указан необязательный параметр -nostarmask.
Необязательные параметры, которые могут быть переданы команде:
- The option -stretch is for use with linear images and will apply a pre-stretch before running StarNet and the inverse stretch to the generated starless and starmask images.
- To improve star removal on images with very tight stars, the parameter -upscale may be provided. This will upsample the image by a factor of 2 prior to StarNet processing and rescale it to the original size afterwards, at the expense of more processing time.
- The optional parameter -stride=value may be provided, however the author of StarNet strongly recommends that the default stride of 256 be used

Командная строка Siril

    seqstarnet sequencename [-stretch] [-upscale] [-stride=value] [-nostarmask]

Эта команда вызывает Starnet++ для удаления звёзд с последовательности sequencename. См. STARNET
Ссылка: starnet

#### Восстановить звёзды

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

There is no command-line equivalent for this tool as it is purely graphical in nature, however starless and star mask images could be combined using the PixelMath pm command and GHT-related commands (ght, invght, modasinh, invmodasinh and linstretch).

Этот инструмент находится в меню Обработка, в подменю Обработка звёзд.

Диалоговое окно разделено на два столбца, по одному для каждого входного изображения.

Диалоговое окно Восстановить звёзды.

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

Режим отображения гистограммы может быть изменён в линейный или логарифмический, используя флажок внизу диалогового окна. Это диалоговое окно соответствует настройкам Siril для линейных или логарифмических гистограмм, которые можно задать в окне Настройки.

Совет

Star Recomposition does not obey the FITS 16-bit preference as there could be an adverse effect on performance in some cases (the calculations must be done using floating point maths anyway). So if you really want a 16-bit result to be created from 32-bit input images then you will need to use the precision switch.

##### Простой режим

Диалоговое окно имеет два вида, которые определяют, какие элементы управления отображаются. Оно открывается в простом режиме, в котором отображаются только наиболее полезные элементы управления для типичного объединения беззвездного изображения и маски звёзд.

- The stretch type for the starless image is set to Generalized Hyperbolic stretch and the Stretch Factor, Local stretch intensity, Symmetry Point and Black Point controls are shown. As well as using the SP control, the Symmetry Point can be set using the eyedropper tool to select the average pixel value of a selection from the image.

  Note that the eyedropper tool is disabled when there is an unapplied BP shift: because of the process of applying the hyperbolic stretch and then the BP shift, the behaviour of the tool becomes non-intuitive when a non-zero BP parameter is set. To resolve this, simply apply the BP shift and the eyedropper will become available again for your next hyperbolic stretch.

- Для изображения маски звезд установлен тип растягивания Модифицированное растягивание по arcsinh, а также показаны элементы управления Коэффициент растягивания и Точка сохранения светов.

- Для обоих наборов растягивания используется цветовая модель Относительная чувствительность глаза: это позволяет лучше сохранять цвета на нерастянутом изображении.

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

Контроль Точки черного (BP) работает немного иначе, чем в отдельном инструменте Линейное растяжение (сдвиг BP) обобщенного гиперболического преобразования . В данном инструменте корректировка черной точки применяется после гиперболического растяжения, тогда как в отдельном инструменте это отдельное растяжение, применяемое самостоятельно. При попытке оптимизировать комбинацию независимых растяжений для двух входных изображений данный подход был признан наиболее эффективным. Это означает, что величина смещения черной точки, необходимая в данном инструменте, отличается от величины, требуемой в инструменте обобщенного гиперболического преобразования, и что установка черной точки путем щелчка по гистограмме невозможна.

Каждое растяжение является независимым. Настройки растяжения для изображения без звезд можно зафиксировать с помощью левой кнопки Применить: это растягивает изображение без звезд согласно текущим настройкам растяжения, а затем сбрасывает настройки растяжения, чтобы последующие растяжения могли быть применены итеративным способом. Аналогично, настройки растяжения для маски звезд можно зафиксировать с помощью правой кнопки Применить. Любая из групп настроек растяжения может быть сброшена к значениям по умолчанию с помощью соответствующей кнопки Сброс.

Диалоговое окно можно переключать между режимами Меньше и Больше с помощью кнопки внизу.

##### Режим Больше

В режиме Больше доступен весь набор элементов управления обобщенного гиперболического преобразования, включая Тип растягивания, Цветовую модель растягивания и Точку сохранения теней (LP) для обоих входных изображений. Это позволяет более детально настроить оба растяжения при необходимости. Если пользовательский интерфейс снова перевести в режим Меньше, все изменения, внесенные с режиме Больше, сохраняются в силе, только скрываются элементы управления.

Примечание

В данном инструменте невозможно выполнить растяжение каналов насыщенности. Инструмент и так требователен к оперативной памяти и процессорным ресурсам: а удвоение потребления памяти за счёт добавления копии каждого рабочего изображения в режиме обобщенного гиперболического преобразования считается чрезмерным. Насыщенность можно легко растянуть отдельно уже после завершения объединения изображений.

С помощью инструмента Восстановить звёзды объединяются изображение без звёзд и маска звёзд области Альнитака

#### Обесцветить звёзды

При применении детектора звезд к изображению (данные которого всегда являются линейными) вокруг звезд отображаются эллипсы. Когда эллипс имеет фиолетовый цвет, это означает, что звезда пересыщена.

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

Сначала необходимо выполнить поиск звёзд , либо с помощью команды findstar, либо кнопки в окне Динамическая PSF. После этого инструмент удаления перенасыщения находится в Обработка звёзд ‣ Обесцветить звёзды.

Совет

Мы рекомендуем использовать профиль Моффата в окне :ref:`Динамическая PSF <Dynamic-PSF:Dynamic PSF>`_, чтобы получить более точные параметры.

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

Важно запускать этот инструмент на линейных изображениях, иначе звёзды не будут иметь профиля Гаусса или Моффата, и расчеты окажутся некорректными.

Обнаружение звёзд показывает все звёзды, найденные Siril. Пурпурные эллипсы соответствуют перенасыщенным звёздам. Изображение отображается в режиме авторастягивания: данные по-прежнему линейны.

После нажатия на инструмент, Siril переключается на консоль и отображает результаты текущего процесса:

    22:26:17: Star synthesis (desaturating clipped star profiles): processing...
    22:26:17: Findstar: processing for channel 0...
    22:26:21: Star synthesis: desaturating stars in channel 0...
    22:26:21: Star synthesis: 70 stars desaturated
    22:26:21: Remapping output to floating point range 0.0 to 1.0
    22:26:21: Execution time: 4.09 s

Необходимо снова выполнить обнаружение звёзд, чтобы увидеть внесенные изменения.

После процесса удаления перенасыщения фиолетовые эллипсы больше не видны. Все звёзды были восстановлены. Изображение отображается в режиме автоматического растяжения: данные остаются линейными.

Сравнение звезды до и после применения инструмента Обесцветить звёзды.

Командная строка Siril

    unclipstars

Перепрофилирует обрезанные звёзды для уменьшения их насыщенности, масштабируя исходящие данные, чтобы все значения пикселей были <= 1.0

#### Полный повторный синтез

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

Инструмент находится в меню Обработка, в подменю Обработка звёзд.

Результатом работы инструмента является синтетическая маска звёзд. Чтобы её использовать, её необходимо повторно объединить с версией исходного изображения без звезд. Это можно сделать или с помощью команды starnet, или пункта меню Удаление звёзд с помощью Starnet, или с помощью стороннего программного обеспечения для удаления звёзд.

Этот инструмент не имеет настроек, вы просто нажимаете на пункте меню, чтобы использовать его, или используете команду synthstar.

Если на изображении не было обнаружено звезд, инструмент автоматически обнаружит звезды, используя текущие параметры моделирования звезд, доступные с помощью инструмента динамической PSF или с помощью команды setfindstar.

Если звезды были смоделированы с помощью инструмента динамической PSF или команды findstar, обнаруженные звезды будут повторно синтезированы с использованием их индивидуальных смоделированных профилей светимости. Быстрый доступ к инструменту Динамическая PSF предоставляется с помощью кнопки настроек в меню рядом с пунктом Полный повторный синтез.

Рекомендуется сначала выполнить обнаружение звезд вручную, так как это позволяет проверить результаты: если какие-либо галактики были ошибочно определены как звезды, их можно удалить из списка звезд перед запуском повторного синтеза.

Как только синтетическая звездная маска будет создана, ее можно будет объединить с изображением без звезд с помощью инструмента Восстановить звёзды.

##### Команды

Командная строка Siril

    synthstar

Исправляет плохие звёзды на загруженном изображении. Неважно насколько велика кома, ошибка ведения или другие искажения звёзд, если процедура поиска звёзд Siril может найти звёзды, synthstar исправит их. Для исправления значительных недостатков, вы можете вручную выбрать те звёзды, которые хотите исправить. Это можно сделать используя консольную команду findstar или диалог «Динамическая PSF». Если поиск звёзд не был выполнен, он будет автоматически запущен с настройками по умолчанию.
Для наилучших результатов, команда synthstar должна быть выполнена перед растягиванием.
Итогом работы synthstar будет полностью скорректированная синтетическая маска звёзд, состоящая из идеально круглых PSF звёзд (с профилем Гаусса или Моффата в зависимости от насыщенности звезды), вычисленных в соответствии с интенсивностью, FWHM, оттенком и насыщенностью, измеренными для каждой звезды, обнаруженной на входящем изображении. Затем результат можно повторно объединить с изображением без звёзд, чтобы получить изображение с идеальными звёздами.
Эта команда не требует никаких параметров
Ссылка: psf

### Геометрия

#### Вращение

Повернуть на 90°

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

Вращение и обрезка

Для поворота на другой угол необходимо использовать инструмент Вращение и обрезка. Он позволяет выполнять точный поворот и обрезку, которыми можно легко управлять.

Диалоговое окно Вращение и обрезка, отображающее все настройки.

Доступны пять алгоритмов интерполяции:

- Ближайший сосед

- Билинейная

- Бикубическая

- Отношение площади пикселя

- Ланцош-4 (по умолчанию)

Наилучшие результаты дает Ланцош-4. Однако, если вы видите искажения, особенно звезды, окруженные черными пикселями, возможно, вам захочется попробовать другие методы. Тем не менее, флажок Фиксация при интерполяции применяет коэффициент сжатия к бикубической интерполяции и интерполяции Ланцош-4, чтобы предотвратить кольцевые артефакты.

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

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

Диалоговое окно Вращение и обрезка при наличии области выделения. Нажмите, чтобы увеличить рисунок и лучше рассмотреть детали.

Командная строка Siril

    rotatePi

Вращает загруженное изображение на 180° вокруг центра. Это эквивалентно команде "ROTATE 180" или "ROTATE -180"
Ссылка: rotate

Командная строка Siril

    rotate degree [-nocrop] [-interp=] [-noclamp]

Вращает загруженное изображение на угол degree. Чтобы избежать обрезки изображения, может быть использована опция -nocrop. При этом к изображению будут добавлены чёрные границы.
Замечание: если имеется активное выделение, например, если перед командой `rotate` использовалась команда `boxselect`, итоговое изображение будет кадрировано перед вращением. В данном случае аргумент -nocrop, если передан, будет проигнорирован.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции используется фиксация по умолчанию для предотвращения артефактов, но она может быть отключена с помощью аргумента -noclamp

#### Отражение

Также можно применить к изображению зеркальное преобразование. Либо по оси x, либо по оси y. Это преобразование также доступно через кнопки и на панели инструментов.

Командная строка Siril

    mirrorx [-bottomup]

Переворачивает загруженное изображение по горизонтальной оси. Опция -bottomup переворачивает изображение только в том случае, если оно ещё не находится в ориентации снизу вверх

Командная строка Siril

    mirrory

Переворачивает изображение по вертикали

#### Биннинг

Биннинг — это специальное преобразование для изменения размера изображения. Он вычисляет сумму или среднее значение областей пикселей 2x2, 3x3, ... (в зависимости от коэффициента биннинга) загруженного изображения (как аналогичный биннинг CCD-камеры).

Диалоговое окно Биннинга

Командная строка Siril

    binxy coefficient [-sum]

Вычисляет числовой биннинг изображения, находящегося в памяти (сумма пикселей 2×2, 3×3..., подобно аналоговому биннингу у CCD-камеры). Если передан необязательный аргумент -sum, то вычисляется сумма пикселей, в то время как при отсутствии необязательного аргумента вычисляется среднее значение

#### Масштабировать

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

- Ближайший сосед

- Билинейная

- Бикубическая

- Отношение площади пикселя

- Ланцош-4 (по умолчанию)

Наилучшие результаты дает Ланцош-4. Однако, если вы видите искажения, особенно звезды, окруженные черными пикселями, возможно, вам захочется попробовать другие методы. Тем не менее, флажок Фиксация при интерполяции применяет коэффициент сжатия к бикубической интерполяции и интерполяции Ланцош-4, чтобы предотвратить кольцевые артефакты.

Если вы хотите изменить соотношение сторон изображения, то вам следует снять флажок Сохранить соотношение сторон.

Диалоговое окно Масштабировать

Командная строка Siril

    resample { factor | -width= | -height= | -maxdim= } [-interp=] [-noclamp]

Масштабирует изображение либо на коэффициент factor, либо к целевой ширине или высоте, указанной с помощью -width=, -height= или -maxdim=. Обычно это используется для изменения размера изображения: коэффициент 0.5 уменьшает размер вдвое. Аргумент -maxdim= можно использовать для изменения размера наибольшего измерения изображения к определённому размеру, что удобно для оптимизации изображений для определённых сайтов, например, для социальных сетей.
Можно отметить, что в графическом интерфейсе доступны несколько алгоритмов интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=, за которым следует один из методов, указанных в списке *no[ne], ne[arest], cu[bic], la[nczos4], li[near], ar[ea]}.
При интерполяции методом Ланцош-4 или бикубической интерполяции используется фиксация по умолчанию для предотвращения артефактов, но она может быть отключена с помощью аргумента -noclamp

    seqresample sequencename { -scale= | -width= | -height= } [-interp=] [-prefix=]

Масштабирует последовательность, указанную в аргументе sequencename. Обрабатываются только выбранные изображения из последовательности.
Коэффициент масштаба указывается либо аргументом -scale=, либо указанием итоговых ширины, высоты или максимального измерения с помощью -width=, -height= или -maxdim=, соответственно.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=, за которым следует один из методов, указанных в списке ne[arest], cu[bic], la[nczos4], li[near], ar[ea]}.. Фиксация применяется для методов интерполяции cubic и lanczos.
Название итоговой последовательности начинается с префикса "scaled_", если с помощью опции -prefix= не указан иной

### Извлечение фона

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

Диалоговое окно "Извлечение фона". Слева версия с полиномиальной, а справа — с радиально-базисной (RBF) функциями.

Образцы фона могут быть выбраны автоматически с заданной плотностью (Плотность образцов), которые размещаются на изображении после нажатия кнопки Создать. Если какие-то области изображения ярче медианы на произведение коэффициента допуска (Допуск) и стандартного отклонения (σ), то в этой области образец фона не размещается.

Совет

If you have very strong gradients, for example when imaging in high Bortle urban skies, even the maximum grid tolerance may be insufficient. In this case you can check the Keep all samples checkbox and the full sample grid will be populated. You will then need to remove samples from actual astronomical objects manually.

After generation, samples can also be added manually (left click) or removed manually (right click).

Доступны два метода удаления градиента:

#### Радиально-базисная функция (RBF)

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

Совет

Начните с базовой настройки (50%) и постепенно изменяйте её для достижения оптимальных результатов.

Теория

Радиально-базисные функции — это функции вида \(\phi(\mathbf{x}) = \phi(\| \mathbf{x} \|)\), причем в нашем случае мы используем Евклидову норму \(\| \mathbf{x} \| = \sqrt{x_1^2 + x_2^2}\). Функция \(f\), описывающая фоновую модель, теперь может быть выражена в виде линейной комбинации

\[f(\mathbf{x}) = \sum_i w_i \, \phi(\|\mathbf{x} - \mathbf{x_i}\|) + o\]

где \(w_i\) соответствует весам образцов а различных точках, а \(o\) соответствует постоянному смещению.

Требование, чтобы функция \(f\) проходила через точки образцов, приводит к условию

\[\begin{split}\begin{pmatrix} \phi(\mathbf{x}_1 - \mathbf{x}_1) & \phi(\mathbf{x}_1 - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_1 - \mathbf{x}_N) & 1 \\ \phi(\mathbf{x}_2 - \mathbf{x}_1) & \phi(\mathbf{x}_2 - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_2 - \mathbf{x}_N) & 1 \\ \vdots & \vdots & \ddots & \vdots \\ \phi(\mathbf{x}_N - \mathbf{x}_1) & \phi(\mathbf{x}_N - \mathbf{x}_2) & \dots & \phi(\mathbf{x}_N - \mathbf{x}_N) & 1 \\ 1 & 1 & \dots & 1 & 0 \end{pmatrix} \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_N \\ o \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_N \\ 0 \end{pmatrix} \, ,\end{split}\]

которое может быть выполнено только в том случае, если матрица в левой части обратима. Это всегда можно гарантировать при правильном выборе функции \(\phi\) [Wright 2003]_.

Кроме того, слева к матрице добавляется слагаемое \(s \, I\), где \(s\) — параметр сглаживания, а \(I\) — единичная матрица. Слагаемое вызывает регуляризацию, которая приводит к более гладкому результату при увеличении параметра \(s\). Этот параметр можно изменить в диалоговом окне с помощью ползунка Сглаживание.

Для радиальной базисной функции мы используем тонкий пластинчатый сплайн \(\phi(|\mathbf{x}|) = |\mathbf{x}|^2 \log(|\mathbf{x}|)\).

#### Полином

Это оригинальный и простой алгоритм разработанный в Siril. В полиномиальных вычислениях используется только один параметр: Степень функции. Чем больше степень, тем более гибкая коррекция. Однако слишком высокая степень функции может привести к странным результатам, как перекоррекция.

Совет

Коррекция со значением степени функции равным 1 может быть очень полезна, когда вы хотите удалить градиент на переводниках (изображениях до укладки).

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

Background removal can be carried out on CFA images, but only if they have Bayer patterns. (It is not supported for X-TRANS patterns.) For Bayer patterned images, the image is treated as four spatially interleaved images, each corresponding to a CFA subchannel. Each subchannel is independently processed to remove its gradient and then the subchannels are recombined into the original interleaved pattern.

The intended use for this is to remove linear gradients from sequence frames prior to using Drizzle on a Bayer patterned sequence, and in that case it is strongly recommended to use linear (polynomial order 1) gradient removal as with other pre-stacking gradient removal.

Теория

Полиномиальные функции - это функции вида

\[\begin{equation} f(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_2x^2+a_1x+a_0 \end{equation}.\]

В Siril максимально допустимая степень составляет \(n=4`и может быть изменена с помощью выпадающего меню :guilabel:`Степень функции\). При больших значениях модель, как правило, нестабильна и дает плохие результаты.

#### Общие настройки

- Подмешать шум: Используйте эту опцию, когда после удаления фона появляется вертикальное полошение. Этот намеренно привнесённый шум, используется для рандомизации ошибок квантования, предотвращая появление крупномасштабных градиентов на изображениях, таких как цветовое полошение.

- Коррекция:

  - Вычитание: главным образом корректируются аддитивные эффекты, вызванные световым загрязнением или Луной.

  - Деление: главным образом используется для коррекции мультипликативных эффектов, как виньетирование или дифференциальное поглощение атмосферой, например. Однако такие операции должны корректироваться с помощью мастер-кадров плоского поля.

- Вычислить фон: Будет рассчитан синтетический фон и применён выбранный тип коррекции. Модель всегда рассчитывается для загруженного в память изображения, позволяет пользователю работать итеративно.

- Показать оригинальное изображение: Удерживайте нажатой эту кнопку, чтобы увидеть оригинальное изображение.

Изображения после предобработки могут иметь комплексный градиент фона, поскольку в ходе съёмки возможно вращение градиента. Полностью удалить градиент может быть нелегко, поскольку трудно представить его через полиномиальную функцию. В таком случае стоит рассмотреть возможность удаления градиента на субэкспозициях: на отдельном изображении градиент фона гораздо проще и обычно следует простой линейной функции (степень 1).

Совет

Иногда после удаления фона появляются неприглядные цветные полосы. Когда это происходит, необходимо проверить две вещи. Во-первых, если изображение 16-битное, мы настоятельно рекомендуем вам всегда использовать 32-битный формат. Если, несмотря ни на что, вы по-прежнему наблюдаете такие артефакты, опция Подмешать шум, описанная выше, является решением вашей проблемы.

Когда такая полосатость возникает после извлечения градиента, ее можно решить с помощью опции Подмешать шум (любезно предоставлено Nathan B.).

Совет

Для получения хороших результатов при использовании алгоритма RBF обычно требуется указать меньшее количество образцов, чем при использовании полиномиального алгоритма.

См. также

Больше информации в соответствующем документе.

Командная строка Siril

    subsky { -rbf | degree } [-dither] [-samples=20] [-tolerance=1.0] [-smooth=0.5] [-existing]

Вычисляет синтетический градиент фона, используя либо полиномиальную функцию степени degree или радиально-базисную функцию (RBF), если указан аргумент -rbf, и вычитает градиент из изображения.
Количество и плотность образцов в горизонтальной строке и допуск для исключения ярких областей могут быть указаны опционально с помощью соответствующих аргументов. Допуск указывается в единицах медианного абсолютного отклонения (MAD): медиана + допуск * mad.
Шум, необходимый для низких динамических градиентов, может быть подмешан с помощью аргумента -dither.
Для радиально-базисной функции также доступен дополнительный параметр сглаживания. Для использования уже существующих образцов (например, если образцы фона были указаны с помощью сценария на Python), необходимо применить аргумент -existing

Совет

The -existing command argument forces use of existing background samples. This option is primarily for use in conjunction with the Python module where `SirilInterface.set_bgsamples()` can be used to set custom background samples based on user-defined algorithms. If it is not provided, subsky will automatically regenerate background samples. Note that the -existing option is not available with the seqsubsky command, because sequence frames are not necessarly registered at the time background subtraction is carried out, so the samples for one frame do not necessarily apply to another.

Командная строка Siril

    seqsubsky sequencename { -rbf | degree } [-nodither] [-samples=20] [-tolerance=1.0] [-smooth=0.5] [-prefix=]

Аналогична команде SUBSKY, но применяется к последовательности sequencename.
Подмешивание шума (dithering), необходимое для изображений с низкими динамическими градиентами может быть отключено с помощью -nodither. Обратите внимание, что аргумент -existing недоступен для удаления фона в последовательности, так как кадры последовательности не обязательно всегда выровнены.
Название итоговой последовательности начинается с префикса "CFA_", если с помощью опции -prefix= не указан иной. В последовательности будут обработаны только выбранные изображения
Ссылка: subsky
[Wright2003]

Wright, Grady Barrett. Radial basis function interpolation: numerical and analytical developments. University of Colorado at Boulder, 2003.

### Интерфейс GraXpert

Совет

The first GraXpert interface was written in C and simply called the GraXpert executable. However for various reasons this approach proved unreliable for a significant minority of users and with Siril 1.4.0-beta2 an updated interface has been released as a Python script. This directly interfaces with the GraXpert model files and provides much better performance and integration, and since it builds on the way the Python interface uses the native PyPI modules library to install the correct versions of dependecies for each user's machine it is expected to be more reliable and better able to make use of different types of GPU.

Owing to the way GraXpert distributes its AI models from an Amazon S3 instance, a copy of the GraXpert program needs to be available in order to download model files. The model files you can download are dependent on the version of GraXpert installed therefore it is recommended to install 3.1.0-RC2 which provides access to the stellar and background object deconvolution models as well as the denoising and background extraction models that have been available since version 3.0.0.

The old GraXpert interface was marked as deprecated in 1.4.0-beta2 and has since been removed from the code base. This documentation covers the new Python-based interface.

Siril provides an interface to the AI models provided by the third party GraXpert tool. This is a third party piece of Free and Open Source software that provides sophisticated background removal and denoising routines. There is a lengthy history of collaboration between Siril and GraXpert, and the RBF algorithm used in Siril's core background removal function was contributed by the GraXpert developers several years ago.

In order to be used, the path to the working GraXpert installation must be set in Preferences->Miscellaneous.

#### Installation and Configuration

The GraXpert-AI.py script can be installed in the usual way, by going to the Scripts menu -> Get Scripts and selecting the check box next to the script in the list.

To configure the script you need to tell Siril where your GraXpert installation is. To do this, go to Preferences -> Miscellaneous and select the GraXpert executable using the appropriate file chooser widget.

#### General Aspects of the GUI

The GUI is shown below:

GraXpert script interface, showing denoising options.

The title bar changes to show the currently selected operation, and at the top of the window are the script title and version number. A dropdown allows you to select the operation you wish to perform. How this dropdown is populated depends on the version of GraXpert you have available. It will always feature Denoising and Background Extraction, even if no locla models are available (see the section on Model Manager for information on how to download models). If you have locally available deconvolution models, or if you have set the location of a GraXpert version that supports deconvolution, you will also see Deconvolution (Stars) and Deconvolution (Objects), however if these models are not available locally and you don't have a version of GraXpert that is capable of downloading them they will not be shown.

Next follows an area for operation-specific parameters. If you select Denoising you will find a widget to control strength, if you select Background Extraction you will find widgets for smoothing and the type of background extraction to perform, and so on. These are described in more detail below.

The Advanced setting provides a means of controlling the inferencing batch size and whether or not to use GPU acceleration. It is generally a good idea to leave the batch size at the default: it sets how many chunks of the image can be processed in parallel, and increasing it may result in out-of-memory errors.

Совет

The GraXpert models use ONNX to perform inferencing. This is a hardware- agnostic Machine Learning framework that provides various runtimes targeting different types of acceleration hardware. There is a specific NVidia runtime, a DirectML runtime that provides generic Windows GPU acceleration, a MacOS runtime and Linux runtimes for NVidia, AMD and Intel GPUs. The script will automatically try to install the most suitable runtime for your hardware, however in the event that it does not work there is always a CPU runtime to revert to - simply disable the GPU acceleration checkbox and please submit a bug report as this is new functionality and we are especially keen to hear of any issues relating to the ONNX runtime selection.

Finally, the UI provides Apply and Close buttons that perform the expected functions and a Model Manager button that opens a tool to discover and download versions of the AI models.

When opening the GUI, it will detect whether a single image or a sequence is loaded. If a single image is loaded it will process it and update the result in Siril, whereas if a sequence is loaded it will process all the selected frames of the sequence and create a new sequence with a prefix dependent on the operation being performed.

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

In Siril 1.4, Python scripting cannot subscribe to Siril event notifications so it is not possible for the script to detect if the image has been closed or if a change between a single image and a sequence occurs after opening the tool. Therefore if you do this, you should close and reopen the script GUI.

#### Извлечение фона

The GraXpert background extraction AI model offers two parameters:

- Smoothing - this determines the smoothness of the background model that is generated.

- Correction type - this determines the type of correction that is applied: you can choose from subtraction or division.

Note that the GraXpert script does not provide an interface to the classical background removal algorithms provided by GraXpert. RBF is already natively available in Siril, and Spline and Kriging do not generally provide better performance than RBF.

#### Реконструкция

From version 3.1 onwards, GraXpert supports deconvolution. With the models downloaded, Siril supports both modes provided by GraXpert:

- Object deconvolution

- Stellar deconvolution

These modes can be selected using the Operation dropdown.

Both deconvolution modes have two parameters, Strength, which takes values between 0.0 (no deconvolution) and 1.0 (maximum deconvolution) and Image FWHM (in pixels), which also takes values between 0.0 (prioritises fine structure retention) and 10.0 (prioritise deconvolution ability). If you set it to zero you can see a very (too) small effect on processed image, if so set it higher.

#### Подавление шума

To use the GraXpert AI denoising model, select Denoising in the Operations dropdown. This operation has only one parameter, Strength, which takes values between 0.0 (no denoising) and 1.0 (maximum denoising).

Denoising can take a little time, especially for large images and / or if using a CPU for inferencing. However once the denoising is done the denoised image is cached, so experimenting with different strengths is extremly quick.

#### Model Manager

The script provides a model manager to discover and download model versions. Whereas inferencing is done directly in the script, model download requires use of the actual GraXpert program because the models are stored in an Amazon S3 instance and GraXpert stores its credentials internally. The model manager will show radio buttons for each model that the installed version of GraXpert is capable of downloading. For v3.0.x this means denoising and background extraction; for v3.1.0-rcx this also adds stellar and object deconvolution.

The list of remotely available models is shown. If you want to discover models for a different AI operation, change the radio button to the operation you want a model for and click Refresh. A model can be downloaded by selecting it in the list and clicking Download selected model. Note that the download may take some time in the case of large models or slow network connections and GraXpert provides little feedback, so be patient. The models are stored in the GraXpert user data directory.

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

Do not move the GraXpert models from the GraXpert data directory structure where they are saved by the model manager. This is where the script expects to find them and it will ignore models put in any other location.

Once a model is downloaded it will automatically be populated in the model version dropdown in the main UI when the relevant AI operation is selected.

GraXpert script interface, showing the model manager.

#### Scripting

The GraXpert-AI.py script provides a command-line interface for use in scripting. This uses the pyscript command as shown below.

Командная строка Siril

    pyscript scriptname.py [script_argv]

Выполняет сценарий python Siril
Название сценария должно быть указано в качестве первого аргумента. Если он не найден в текущей рабочей директории, будет выполнен поиск по пользовательским путям к сценариям, указанным в настройках, и в локальном репозитории siril-scripts. Остальные аргументы будут рассматриваться как аргументы сценария и передаваться в сценарий как его вектор аргументов. Обратите внимание, что конкретный сценарий должен поддерживать чтение входящих данных из вектора аргументов

##### Operation Parameters

The following parameters are used to specify the operation to perform:

- -denoise specifies denoising

- -deconv_obj specifies object deconvolution

- -deconv_stellar specifies stellar deconvolution

- -bge specifies background extraction

##### General Parameters

The following parameters are recognised in all modes:

- -h / --help prints help to the Siril console and exits

- -model specifies the model version to use (e.g. -model="3.0.2") If this argument is omitted it defaults to the latest available version.

- -batch specifies the AI batch size

- -gpu specifies to use the GPU (this is the default)

- -nogpu speficies to use CPU inferencing only

- -listmodels causes the script to list the available model versions for the specified operation and exit

Совет

Note that this script does not provide a -seq parameter as it expects to work on a sequence already loaded in Siril. When scripting, this can be achieved using the load_seq command first to load the desired sequence.

##### Background Extraction Parameters

- -smoothing= This option sets the smoothing parameter, between 0.0-1.0

- -correction= This option sets the correction type and may be either "subtraction" or "division"

- -keep-bg This option specifies that the modelled background should be saved as well. For a filename such as myfile.fit, the background will be saved as myfile_bg.fit

##### Denoising Parameter

- -strength= This option sets the strength parameter, between 0.0-1.0

##### Deconvolution Parameters

The same parameters are available for both stellar and object deconvolution:

- -strength This option sets the deconvolution strength, between 0.0-1.0

- -psfsize This option sets the PSF size, as described above

##### Примеры

pyscript GraXpert_AI.py -denoise -model='3.0.1'

Or, if calling it from another Python script:

siril.cmd("pyscript", "GraXpert-AI.py", "-denoise", "-model='3.0.1'")

### Извлечение канала

#### Разделить каналы

Эта функция создает три монохромных изображения из трехканального цветного изображения, в зависимости от настроенного цветового пространства. Для RGB это просто разделение файла на три канала. Для других цветовых моделей требуется пересчет в эквивалентное цветовое пространство, такое как HSL (hue-saturation-lightness), HSV (hue-saturation-value), или CIELAB.

Диалоговое окно разделения каналов.

Совет

Если каналу не задано имя, то этот канал не извлекается.

Командная строка Siril

    split file1 file2 file3 [-hsl | -hsv | -lab]

Разделяет цветное изображение на три отдельных файла (по одному для каждого цвета) и сохраняет их как file1.fit, file2.fit и file3.fit. Последний необязательный аргумент, -hsl, -hsv или lab, указывает применять ли извлечение HSL, HSV или CieLAB. Если никакой опции не указано, извлекаются RGB изображения, что означает, что преобразование не выполняется

#### Разделить каналы CFA

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

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

- Разделить каналы CFA: создаются четыре изображения из CFA-изображения, каждое соответствует одному из фильтров матрицы Байера, обычно это R.fit, G1.fit, G2.fit и B.fit. Это полезно, если целью является обработка разных цветов изображения.

- Извлечь Ha: использование фильтра H-alpha с камерой цветного изображения означает, что будут полезны только пиксели с красным фильтром, то есть, как правило, только четверть из них. Эта функция создает новое изображение, содержащее только пиксели, связанные с красным фильтром, задокументированным в матрице Байера изображения.

- Извлечь Ha/OIII: для цветных камер появились фильтры, пропускающие фотоны с длиной волны H-альфа и O-III. Такое извлечение создает два изображения: изображение из красных пикселей, как и Извлечение Ha, и изображение, объединяющее зеленые и синие пиксели в одно для O-III. Оба изображения имеют половину разрешения входного изображения.

  Примечание

  Часто задаваемый вопрос о том, почему изображения Ha и OIII имеют разные размеры и как они разделены. В этой заметке делается попытка дать ответ на этот часто задаваемый вопрос.

  У сенсора цветного изображения пиксели покрыты очень тонкой матрицей фильтров, называемой массивом цветных фильтров (CFA) или матрицей Байера. Расположение фильтров на пикселях соответствует одному из следующих шаблонов: RGGB, GBGR и т.д.

  Оригинальное изображение by Cburnett, лицензированное как CC BY-SA 3.0.

  Из этих пикселей только R-пиксели чувствительны к Ha. Итак, сначала мы выделяем все красные пиксели в изображение Ha. Поскольку только 1 из 4 элементов CFA красного цвета, высота и ширина изображения Ha в два раза меньше, чем у исходного изображения.

  Остальные пиксели, G и B, чувствительны к OIII. Чувствительность пикселей с фильтром G к OIII отличается от чувствительности пикселей с фильтром B к OIII, однако они отображают одну и ту же сцену и равномерно распределены, поэтому средняя интенсивность должна быть одинаковой.

  \[ \begin{align}\begin{aligned}\text{G}_\text{i} = \text{G}_\text{io} \times \frac{3 \times \overline{\text{G}_\text{o}}}{2 \times \overline{\text{G}_\text{o}} + \overline{\text{B}_\text{o}}}\\\text{B}_\text{i} = \text{B}_\text{io} \times \frac{3 \times \overline{\text{B}_\text{o}}}{2 \times \overline{\text{G}_\text{o}} + \overline{\text{B}_\text{o}}}\end{aligned}\end{align} \]

  Где \(\text{B}_\text{i}\) — это \(i^{\text{й}}`синий пиксель, :math:\)text{B}_text{io}`— это \(i^{\text{й}}`исходный синий пиксель и :math:\)overline{text{B}_text{o}}`— это среднее значение всех исходных синих пикселей (и аналогично для зелёных).

  Пока что у нас есть выровненный набор пикселей G и B с промежутками в тех местах, где были удалены R пиксели. Итак, наконец, мы используем билинейную интерполяцию для оценки значений R пикселей и в итоге получаем полноразмерное изображение OIII.

  Примечание

  Параметр Масштабировать Ha/OIII — это способ обработки выходных данных Извлечь Ha/OIII. Выбор Без масштабирования позволяет получить изображение OIII с полным разрешением и изображение Ha с половинным разрешением; выбор Увеличить Ha увеличивает размер изображения Ha в 2 раза для соответствия изображению OIII; выбор Уменьшить OIII уменьшает размер изображения OIII в 2 раза для соответствия изображению Ha.

  Возможно, вы захотите использовать Сверхразрешение (2x) для увеличения Ha вместо функции Увеличения Ha. Поскольку Сверхразрешение (2x) — это метод, применяемый при укладке, то в этом случае вам следует использовать seqextract_HaOiii для извлечения Ha и OIII для каждого из кадров последовательности, и затем сделать укладку изображений OIII обычным способом, а изображения Ha с включенной опцией Сверхразрешение (2x).

- Извлечь зелёный: для фотометрии часто бывает полезно обрабатывать только зеленую часть изображения CFA, поскольку она более чувствительна и имеет два пикселя для усреднения, что еще больше снижает шум. Конечно, при этом четкость созданного изображения уменьшается вдвое.

Диалоговое окно Разделить каналы CFA.

Примечание

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

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

Это не работает с другими матрицами фильтров, отличными от матриц Байера, например, Fujifilm X-TRANS.

#### Частотные слои

Этот инструмент извлекает различные плоскости изображения путем применения вейвлет-обработки. Каждая плоскость сохраняется как отдельное изображение, и набор этих изображений может быть прочитан как последовательность. Вы можете выбрать до 9 слоев для вейвлет-вычислений, а тип алгоритма может быть либо Линейный, либо B-сплайн. Обычно последний является предпочтительным.

Диалоговое окно Извлечение вейвлетных слоёв.

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

Исходное изображение M45 (любезно предоставлено V. Cohas).

6 извлечённых плоскостей.

### Линейный поиск соответствий

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

Диалоговое окно Линейный поиск соответствий

Поле Опорный кадр позволяет выбрать эталонное изображение.

Ползунки Нижняя граница и Верхняя граница позволяют исключить значения пикселей в левом и правом хвостах распределений интенсивности. Они определяются как квантили в диапазоне [0, 1]. Например, значение по умолчанию для high равно 0.92, что означает, что 8% самых ярких пикселей будут исключены из подгонки для поиска линейных коэффициентов соответствия.

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

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

Командная строка Siril

    linear_match reference low high

Вычисляет и применяет линейную функцию между опорным (reference) изображением и загруженным изображением.
Алгоритм будет игнорировать все опорные пиксели, значения которых выходят за пределы диапазона [low, high]

### Совмещение в RGB

The RGB composition tool allows you to assemble up to 8 monochrome images to form a single color image. The tool has been updated to provide access to all the best registration methods available in Siril, plus a manual registration method unique to this tool.

The operation of this tool is quite simple, just load the images and assign them a color. The first field, optional, is reserved for the luminance layer. Once a luminance layer is loaded you can integrate it or not in the composition thanks to the Use Luminance button. Each color can be customized by clicking on it and choosing a new one. When more than 3 images (or 4 if there is luminance) are loaded, or when the assigned colors are color mixtures rather than pure R, G and B, it may be necessary to adjust the brightness of each channel. The Adjust layers brightness button performs this operation automatically.

When compositing different channels, especially from narrowband filters, the histograms may be severely mismatched. A basic initial correction can be made by applying a linear match using the Linear match button. This works in the same way as the Image Processing menu entry, but is tailored to this particular tool. The top layer loaded (usually Luminance or Red) is taken as the reference channel, and all other channels are automatically linearly matched to it. This is particularly important if assigning non-pure colours to some layers, as each layer will potentially be blended into each RGB channel in the result, and it will no longer be possible to separately adjust the histograms of the input layers by adjusting the R, G and B histograms of the composition.

It is possible enable or not the Sum exposure time. This option gives the user the option of summing or not the exposures of individual images, storing the result in the FITS header.

Примечание

For binning and image dimensions, the first loaded image determines the size of the output image. If you have images of different sizes, you should always load the largest first. If your images are different just because of binning, so with the same field of view, the composition tool will upscale the smaller images when they are loaded to match the size of the first loaded image. It is useful for the common L-RGB taken with the colour filters in bin 2. This also means that if two images have not been taken with the same sensor, it is unlikely they will have the same field of view and pixel sampling after image resampling. Whether or not this tool can align such images will depend on the scale mismatch and the alignment method used.

Для визуализации композиции доступно три цветовых пространства:

- `HLS <https://ru.wikipedia.org/wiki/HSL>`_(для тона, насыщенности и светлоты)

- `HSV <https://ru.wikipedia.org/wiki/HSV_(%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C)>`_(для тона, насыщенности и значения; так же известная как HSB для тона, насыщенности и яркости)

- CIE L*a*b*

и оставлены на усмотрение пользователя.

Once the composition is finished, it is possible to do a linear match of the channels using the Linear match button.

If the images are not aligned with each other, then it is possible to align them. The following algorithms are possible:

- Deep Sky (two step global star registration): no selection is required for this method. This generates a very accurate 8 degrees-of-freedom homography mapping between images.

- Planetary (DFT pattern alignment): you have to draw a selection around the object you want to align. A high enough contrast is required for the algorithm to work properly. This method only registers image shifts, it cannot compensate for rotation. This is fine for planetary images but for deep sky images it is recommended to use the global star registration method.

- KOMBAT: as with the DFT pattern matching, you have to draw a selection around the object you want to align. This method also only registers image shifts. It is much faster than the DFT method, but can be less successful when the image patterns in the different channels are significantly different (for example, two planetary channels filtered with IR and UV filters may not share enough pattern similarity for KOMBAT to match them).

- Manual alignment: this method is unique to the RGB composition tool. When selected, the spin buttons change function from displaying information about alignment shifts to allowing you to enter desired shifts in x and y as well as rotation. Rotation defaults to centering on the image center, but a custom rotation center may be chosen for each layer using the centermark button at the right of each set of layer controls. This method may be of use if you have imagery that is not suited to alignment using any of the other methods, or if you wish to fine tune results.

You can choose the framing method that will be applied to your aligned layers. The following methods are possible:

- First channel - this method frames all other frames to the first channel (usually Luminance or Red). This makes particular sense for LRGB compositions.

- MIN - this method applies the minimum framing: the largest rectangle including only regions that are covered by all the input images will be framed.

- COG - this method selects an optimum framing for the composition based on the centre of gravity of the aligned image pixels.

Примечание

Framing methods do not apply to DFT shift alignment. This method always frames based on the first layer. If this alignment method is selected, the chosen framing method will be ignored.

Совет

On alignment the RGB composition tool aligns the loaded images in memory. That means that if you decide you aren't happy with the alignment and want to try a different method or a different framing, you have to reload all the images to get back to their original state before alignment. The Reload all button is provided for this purpose.

If you prefer to composite your images in a different way, for example using Pixel Math, you can still use the RGB composition tool as a quick means of aligning the images. After alignment, pressing Save all will save all the aligned images with their original filenames prefixed with comp_. These can then be brought into whatever tool you like and, unlike if you create a sequence with your stacks and align it in the normal way, it is obvious from the filename which image is which.

This tool is by nature graphical and is not exactly replicated in a Siril command, however there are commands that can be used to achieve part of the process:

- Регистрация можно выравнять последовательность, содержащую уложенные изображения,

- The rgbcomp command can compose a RGB image from 3 separate R, G and B images or 4 L, R, G, B images, however the images must be pre-aligned and it cannot assign mixed colors to the input images.

- Pixelmath can also be used in scripts to combine channels.

- There is also a built-in RGB Composition script that can partly automate the process.

Командная строка Siril

    rgbcomp red green blue [-out=result_filename] [-nosum]
    rgbcomp -lum=image { rgb_image | red green blue } [-out=result_filename] [-nosum]

Создаёт композитное RGB изображение, используя три независимых изображения, или композитное изображение LRGB, используя дополнительное яркостное изображение и три монохромных или одно цветное изображение. Итоговое изображение будет иметь название composed_rgb.fit или composed_lrgb.fit, если в необязательном аргументе не указано другое название. Другой необязательный аргумент, -nosum, указывает Siril не складывать время эскпозиций. Это влияет на ключевые слова FITS, такие, как LIVETIME и STACKCNT

### Совмещение каналов CFA

Цель этого инструмента — объединить несколько монохромных изображений, которые были ранее извлечены из изображения, полученного цветным сенсором (например, с помощью меню Извлечение ‣ Разделить каналы CFA...). Инструмент объединяет отдельные изображения красного, зеленого (x2) и синего каналов в одно составное изображение, называемое изображением CFA.

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

Этот инструмент предназначен для изображений с матрицы Байера и поэтому не может работать с изображениями файлов X-Trans с камер Fuji.

Диалоговое окно разделено на три части:

- Input files: Select the images containing the CFA0, CFA1, CFA2 and CFA3 Bayer subpatterns. If these have been produced using Siril's "Split CFA" function they will have the CFA prefix.

- Шаблон Байера: устанавливает заголовок Шаблон Байера, который будет применен к результату. Он должен соответствовать шаблону Байера изображения, из которого были извлечены исходные подканалы Байера.

- Раздел Последовательность позволяет обрабатывать целые последовательности, восстанавливать последовательность изображений CFA. Включение флажка Применить к последовательности отображает текст справки для правильного применения. Этот текст показан в следующем разделе Совет. Доступны две опции:

  > - Маркер входящей последовательности: префикс, используемый для обозначения номера CFA в отдельных изображениях канала CFA. Для этого следует установить любой префикс последовательности, который использовался при запуске процесса split_cfa (по умолчанию: CFA_).

  > - Префикс вывода: префикс названий изображений, полученных по завершении процесса совмещения каналов CFA. По умолчанию `mCFA_`.

  Совет

  You may have any of the CFA0, CFA1, CFA2 or CFA3 sequences selected in the main window sequence tab: Siril will determine which one it is from the prefix and the number.

  Your separate sub-CFA sequences should have been processed in exactly the same way; they must have the same sequence name format and CFA marker string, differing only but the number 0-3 following the CFA marker string (e.g. CFA0_bg_pp_lights, CFA1_bg_pp_lights, CFA2_bg_pp_lights and CFA3_bg_pp_lights).

  Each image in the sequence will only be processed if the corresponding images for the other 3 CFA channels can be found. Both Green subchannel images are required. Note this means that if you discard an image containing one CFA channel of an image between split_cfa and merge_cfa, merge_cfa will be unable to merge the remaining CFA channels for that image. All sequence filtering should be done either before split_cfa or after merge_cfa.

Командная строка Siril

    merge_cfa file_CFA0 file_CFA1 file_CFA2 file_CFA3 bayerpattern

Создаёт цветное изображение с шаблоном Байера из 4 отдельных изображений, содержащих данные из подканалов шаблона Байера CFA0, CFA1, CFA2 и CFA3 (Соответствующая команда для разбиения шаблона CFA на подканалы — split_cfa). Эта функция может использоваться как часть рабочего процесса для применения некоторой предобработки к отдельным подканалам шаблона Байера перед дебайеризацией. Пятый параметр, bayerpattern, указывает шаблон Байера, который необходимо восстановить. bayerpattern должен быть 'RGGB', 'BGGR', 'GRBG' или 'GBRG'

Командная строка Siril

    seqmerge_cfa sequencename0 sequencename1 sequencename2 sequencename3 bayerpattern [-prefixout=]

Сливает 4 последовательности изображений для восстановления шаблона Байера. Последовательности указываются в аргументах sequencename0, sequencename1, sequencename2 и sequencename3.
Вариант восстанавливаемого шаблона Байера (RGGB, BGGR, GBRG или GRBG) должен быть указан в качестве второго аргумента. Порядок каналов в шаблоне Байера должен совпадать с порядком указанных последовательностей.
Замечание: все 4 входящих последовательности должны присутствовать и иметь одинаковые размер, разрядность и количество изображений.
Название итоговой последовательности будет начинаться с префикса "mCFA_", если не указан иной с помощью аргумента -prefixout=

### Математические операции над пикселями

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

Цель этой страницы — полностью описать инструмент. Чтобы увидеть подробные примеры, обратитесь к превосходному руководству на сайте.

Диалоговое окно Математические операции над пикселями, показанное при открытии

Окно разделено на 5 областей.

1. Первая из них включает 3 текстовые зоны, принимающие математические формулы. Если вы хотите получить монохромное изображение, используется только первая. Снимите флажок Использовать одно выражение RGB/K для создания RGB изображения.

2. Вторая — это область переменных с выбором Функций и Операторов. Каждая переменная — это изображение, которое должно быть загружено заранее с помощью кнопки +. Вы можете нажать на нужную функцию и/или оператор, чтобы они появились в записи формулы.

3. Третья — поле Параметры, позволяет пользователю определять параметры, разделенные `,`. Например, если вы зададите параметры с помощью выражения `factor=0.8, K=0.2`, все вхождения `factor` и `K` в приведенной выше формуле будут заменены на 0.8 и 0.2 соответственно. Таким образом, `Ha * factor + OIII * K` будет оцениваться как `Ha * 0.8 + OIII * 0.2`.

   Область параметров Математических операций над пикселями

4. Поле Результат предназначено для масштабирования изображения в заданном диапазоне и для включения или выключения функции Суммировать экспозиции. Последняя опция предоставляет пользователю возможность суммировать или не суммировать экспозиции отдельных изображений, сохраняя результат в заголовке FITS. Перед использованием необходимо развернуть кадр.

   Область масштабирования окна Математические операции над пикселями

5. Наконец, область Предустановки позволяет пользователю повторно использовать сохраненные ранее формулы с помощью кнопки, расположенной справа от областей с формулами. Перед использованием необходимо развернуть эту область. Дважды щёлкните по формуле, чтобы скопировать её в нужное поле.

   Область предустановок Математических операций над пикселями

#### Использование

Имена переменных

По умолчанию можно одновременно загрузить 10 изображений. Каждому изображению присваивается переменная, чьё название начинается символом I, за которым следует число от 1 до 10. Если загруженное изображение содержит в своём заголовке ключевое слово `FILTER`, то значение последнего становится названием переменной по умолчанию. Конечно, его всегда можно изменить, дважды щёлкнув по нему.

Имя переменной можно изменить.

`$T` — ссылка на текущее изображение, обозначающая изображение, к которому будут применены математические операции.

Совет

Можно использовать загруженное в данный момент изображение, используя токен `$T`. Однако обратите внимание, что, в отличие от других программ, выражение `$T[i]` где `i=0,1,2` не распознаётся.

Примеры

Давайте возьмем монохромное изображение галактик. Это линейные данные, отображаемые в режиме авторастягивания.

Исходное изображение.

Следующее выражение:

    iif(Image>med(Image)+3*noise(Image), 1, 0)

создаст маску звезд.

После приведенной выше формулы.

Командная строка Siril

    pm "expression" [-rescale [low] [high]] [-nosum]

Эта команда вычисляет выражение, заданное в аргументе, как в инструменте математических операций над пикселями. Всё выражение должно быть заключено в двойные кавычки, а переменные (которые в этом случае являются именами изображений без расширения, расположенными в рабочей директории) должны быть окружены символами $, например "$image1$ * 0.5 + $image2$ * 0.5". В выражении может быть использовано максимум 10 изображений.
Изображение можно масштабировать с помощью аргумента -rescale, за которым следуют значения low и high в диапазоне [0, 1]. Если эти значения не указаны, значения по умолчанию они устанавливаются равными 0 и 1. Другой необязательный аргумент, -nosum, указывает Siril не суммировать длительность экспозиции. Это влияет ключевые слова FITS, такие, как LIVETIME и STACKCNT

#### Функции

Есть два типа функций: применяющиеся непосредственно к пикселям, и применяющиеся ко всему изображению (например, функции статистики).

Функции, применяемые к пикселям
Функция | Пример использования | Описание
--- | --- | ---
abs | abs ( x ) | Абсолютное значение x.
acos | acos ( x ) | Арккосинус x.
acosh | acosh ( x ) | Гиперболический арксинус x.
asin | asin ( x ) | Арксинус x.
asinh | asinh ( x ) | Гиперболический арксинус x.
atan | atan ( x ) | Арктангенс x.
atan2 | atan2 ( y, x ) | Арктангенс y/x.
atanh | atanh ( x ) | Гиперболический арктангенс x.
ceil | ceil ( x ) | Округлить x вверх до ближайшего целого значения.
cos | cos ( x ) | Косинус x.
cosh | cosh ( x ) | Гиперболический косинус x.
e | e | Постоянная e=2.718282...
exp | exp ( x ) | Показательная функция.
fac | fac( x ) | Факториал.
iif | iif( cond, expr_true, expr_false ) | Условная функция (или встроенная функция if). Возвращает expr_true если значение cond отличается от нуля. Возвращает expr_false, если значение cond равно нулю.
floor | floor ( x ) | Наибольшее целое значение меньшее или равное x.
ln | ln ( x ) | Натуральный логарифм x.
log | log ( x ) | Десятичный логарифм x.
log10 | log10 ( x ) | Десятичный логарифм x.
log2 | log2 ( x ) | Двоичный логарифм x.
max | max ( x, y ) | Функция максимума.
min | min ( x, y ) | Функция максимума.
mtf | mtf ( m, x ) | Передаточная функция полутонов (MTF) x для параметра баланса полутонов m в диапазоне [0, 1].
ncr | ncr ( x, y ) | Функция сочетаний.
npr | npr ( x, y ) | Функция перестановок.
pi | pi | Постоянная π=3.141592...
pow | pow ( x, y ) | Функция возведения в степень.
sign | sign ( x ) | Знак x: \(+1\) если \(x > 0\) \(−1\) если \(x < 0\) \(\;0\) если \(x = 0\).
sin | sin ( x ) | Синус x.
sinh | sinh ( x ) | Гиперболический синус x.
sqrt | sqrt ( x ) | Квадрат. корень из x.
tan | tan ( x ) | Тангенс x.
tanh | tanh ( x ) | Гиперболический тангенс x.
trunc | trunc ( x ) | Усечённая целая часть x.

Статистические функции
Функция | Пример использования | Описание
--- | --- | ---
adev | adev ( Image ) | Среднее абсолютное отклонение изображения.
bwmv | bwmv ( Image ) | Двухвесовая средняя дисперсия изображения.
height | height ( Image ) | Высота указанного изображения в пикселях.
mad | mad ( Image ) | Медианное абсолютное отклонение изображения. Также возможно использование mdev.
max | max ( Image ) | Максимальное значение пикселей изображения.
mean | mean ( Image ) | Среднее значение изображения.
med | med ( Image ) | Медиана изображения. Также возможно использование median.
min | min ( Image ) | Минимальное значение пикселей изображения.
noise | noise ( Image ) | Оценка Гауссова шума изображения.
sdev | sdev ( Image ) | Стандартное отклонение изображения.
width | width ( Image ) | Ширина указанного изображения в пикселях.

#### Операторы

Операторы
Оператор | Пример использования | Описание
--- | --- | ---
~ | ~x | Оператор инверсии пикселя.
- | -x | Унарный оператор минус (смена знака).
+ | +x | Унарный оператор плюс.
! | !x | Логический оператор НЕ.
^ | x ^ y | Оператор возведения в степень.
* | x * y | Оператор умножения.
/ | x / y | Оператор деления.
% | x % y | Оператор модуля.
+ | x + y | Оператор сложения.
- | x - y | Оператор вычитания.
< | x < y | Оператор сравнения МЕНЬШЕ.
<= | x <= y | Оператор сравнения МЕНЬШЕ ИЛИ РАВЕН.
> | x > y | Оператор сравнения БОЛЬШЕ.
>= | x >= y | Оператор сравнения БОЛЬШЕ ИЛИ РАВЕН.
== | x == y | Оператор сравнения РАВЕН.
!= | x != y | Оператор сравнения НЕ РАВЕН.
&& | x && y | Логический оператор И.
|| | x || y | Логический оператор ИЛИ.

## Астрометрия

Астрометрия это наука, занимающаяся положением и движением небесных объектов. Для современной астрофотографии астрометрия имеет большое значение, поскольку программы захвата изображений, такие как N.I.N.A., Ekos, APT и другие выполняют решение пластин для изображений, чтобы получить астрономическое решение. Это означает, что программа точно знает положение кадра на небе. Астрометрия может также использоваться на этапе обработки изображений, например, в инструменте фотометрической калибровки цвета.

### Поиск астрономического решения

The platesolving is a major step in astronomical image processing. It allows images to be associated with celestial coordinates, giving the ability to know what object is in the observed field of view. Many of Siril's tools, such as the Spectrophotometric or Photometric Color Calibration (SPCC or PCC) tools, need to know the coordinates of the image with sufficient accuracy in order to work.

Astrometry in Siril can be performed in two different ways:

- Using the dedicated tool accessible via the menu Tools ‣ Astrometry ‣ Image Plate Solver, or using the shortcut `Ctrl` + `Shift` + `A`.

Диалог поиска астрономического решения

- Используя команду ``platesolve``__, представленную в Siril 1.2.

  Командная строка Siril

      platesolve [-force] [image_center_coords] [-focal=] [-pixelsize=]
      platesolve ... [-noflip] [-downscale] [-order=] [-radius=] [-disto=]
      platesolve ... [-limitmag=[+-]] [-catalog=] [-nocrop]
      platesolve ... [-localasnet [-blindpos] [-blindres]]

  Астрономическое решение загруженного изображения.
  Если решение для изображения уже существует, ничего не будет делаться, если только не передан аргумент -force для повторного поиска решения. Если данные WCS или другие метаданные изображения ошибочны или отсутствуют, то должны быть переданы аргументы:
  приблизительные координаты центра изображения могут быть представлены в виде десятичных градусов или градус/час минута секунда (J2000, разделённые двоеточием) и значениями прямого восхождения и склонения, разделённые запятой или пробелом (для astrometry.net — необязательно).
  фокусное расстояние и размер пикселя могут быть переданы с помощью -focal= (в миллиметрах) и -pixelsize= (в микрометрах), переопределяя значения, полученные из изображения и настроек. См. также опции для решения вслепую с помощью локальной установки Astrometry.net
  Если не указан аргумент -noflip, в том случае, если будет определено, что изображение находится в ориентации вверх ногами, оно будет перевёрнуто.
  Для более быстрого поиска звёзд на больших изображениях, возможно уменьшить масштаб изображения с помощью -downscale.
  Решение может учитывать искажения, используя соглашение SIP с полиномами до пятой степени. Значение по умолчанию берётся из настроек астрометрии. Его можно изменить с помощью параметра -order=, который задаёт значение от 1 до 5.
  При использовании локальных каталогов решателя Siril или локальной установки Astrometry.net, если первоначальное решение не удалось, решатель будет искать решение в пределах радиуса, указанного с помощью опции -radius=. Если значение не указано, радиус поиска берётся из настроек астрометрии. Поиск поблизости Siril можно отключить, указав значение 0. (для Astrometry.net отключить нельзя).
  Текущее решение можно сохранить как файл с данными о дисторсии с помощью аргумента -disto=.
  Астрономическое решение изображений может быть получено с помощью Siril, используя каталог звёзд и алгоритм регистрации всего звёздного неба или с помощью локальной команды solve-field из пакета astrometry.net (включается с помощью -localasnet).
  Настройки решателя Siril:
  Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений положительного или отрицательного смещения ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
  Каталог звёзд выбирается автоматически, если только не передан аргумент -catalog=: если установлены локальные каталоги, то используются они. В противном случае выбор основывается на размере поля зрения и пределе звёздной величины. Если этот аргумент передан, будет принудительно использован удалённый каталог. Возможные значения аргумента: tycho2, nomad, localgaia, gaia, ppmxl, brightstars, apass.
  Если рассчитанное поле зрения больше 5 градусов, обнаружение звёзд будет ограничено областью вокруг центра изображения, если не только не передан аргумент -nocrop.
  Настройки решателя Astrometry.net:
  Передача аргументов -blindpos и/или -blindres позволяет выполнять поиск вслепую для определения позиции и разрешения, соответственно. Вы можете использовать эти опции при решении изображений с неизвестными положением и разрешением

Since version 1.2, plate solving can be done by two different algorithms. The first was the only one in Siril until this version, it is based on the global registration star matching algorithm, trying to register images onto a virtual image of a catalog with the same field of view. The second is new, it is using an external program called `solve-field` from the Astrometry.net suite, installed locally. For Windows platforms, the simplest way to get it is to use ansvr.

Since version 1.3, Siril internal solver will also look within a cone around the initial target coordinates if it did not find a match. This is only available when using local star catalogues. The log will show this information when that happens:

    Initial solve failed
    Attempting a near solve with a radius of 10.0 degrees

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

#### Параметры изображения

##### Координаты цели

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

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

When opening the plate solver window, the current image's metadata is loaded and displayed in the window. If no coordinates appear at the top, or if RA and Dec remain zero, some user input is needed. If you don't know at all what the image is, use a blind solve with astrometry.net. Otherwise, provide equatorial J2000 coordinates corresponding to as close as the center of the image as possible, either by filling the fields if you already know the coordinates, or by making a query with an object name (not yet possible from the command).

The text field at the top left of the window is the search field, its goal being to convert an object name to its coordinates. Pressing `ENTER` or clicking the Find button will first search the object in the local annotation catalogues. If not found, a Web request will be made to obtain its coordinates. Several results may be found for the entered name, they will be displayed in the list below. Selecting one updates the coordinates at the top, the first is selected by default.

Также можно выбрать сервер, на котором вы хотите выполнить запрос. Это не сильно повлияет на результаты, но не всегда каждый из них может быть в сети, тогда другие будут выступать в качестве резерва. Можно выбирать между CDS, VizieR и SIMBAD (используется по умолчанию).

Примечание

If the object is not found, please try with the full name or with the name from a catalogue. The annotation catalogues contain a few common names, the online services too, but not all, and they don't find partial answers. For example, for the Bubble Nebula, please enter `NGC 7635` or `bubble nebula`, not `bubble`.

Поля координат заполняются автоматически, но можно задать их самостоятельно. Не забудьте поставить галочку в поле Ю, если искомый вами объект находится в южном полушарии неба (отрицательное склонение).

##### Разрешение изображения

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

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

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

Если использовался биннинг, это должно быть указано в заголовке FITS, но это может иметь две формы: размер пикселя может оставаться неизменным, и для вычисления выборки следует использовать множитель биннинга, или размер пикселя уже умножен программным обеспечением для получения данных/изображения. В зависимости от конкретного случая, с которым вы сталкиваетесь, можно выбрать любую из форм в настройках или в окне Информация.

Размер пикселя указан в спецификации астрономических камер, и, как правило, его можно найти в Интернете для цифровых зеркальных фотокамер (DSLR) или других камер. Количество датчиков ограничено, и характеристики большинства из них известны.

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

When either of the fields is updated, the sampling is recomputed and displayed in the window (called 'resolution' here). Make sure the value is as close to reality as possible.

Совет

Data written in orange color in the GUI indicates values which could not be retrieved from the image header. It does not mean they are wrong (they could have been loaded from the preferences values and be valid) or mandatory (you could blind-solve), this color is just here to differentiate from values read from the header.

#### Solver parameters

Since Siril 1.2, Siril can use two different solvers, its internal solver and Astrometry.net local installation. The interface differs depending on whether one or the other is selected in the dedicated drop-down list.

Настройки внутреннего решателя Siril

##### Дисторсия

The option Solution order, selected via the drop-down list, specifies the order of the platesolving solution. When selecting `Linear`, the solver will try to fit a solution assuming there are no distortions in the image (i.e. the field is optically flat). However, this assumption may not be true in presence of optical aberrations (wrong backfocus, no field-flattener etc...). Since version 1.3, the platesolver can try to fit up to fifth-order polynomial distortions, following the SIP convention. By default, the platesolver uses `Cubic (SIP)` distortions, which should fit most use cases. This default can be changed in the Preferences. This option is available with both solvers.

You can also choose to save distortions to a wcs file by ticking the Save distortion box. Use the filechooser below to specify its path. If you have defined a master distortion path in the preferences, its path will be shown by default. This file can then be used to undistort images during Global Registration and 2pass Registration

##### Search radius

When using local star catalogues are installed or when using Astrometry.net, a cone around the target position will be searched. The size of this cone in degrees can be changed using the Search radius control, which default value can be changed in the Preferences. For Siril solver, this feature can be disabled by ticking the disable near search box.

##### Astrometry.net blind solve

When Astrometry.net solver is selected, two additional options are available:

1. Ignore position (blind solve) enables to ignore the position specified in the Target coordinates control.

2. Ignore sampling (blind solve) enables to ignore the resolution computed from the pixel size and focal length.

Настройки решателя Astrometry.net

Use these two options together if the location and resolution of the image are completely unknown.

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

There is no magic happening here. In order to solve for any field of view, you will need to have the necessary indexes installed that cover the actual field of view of the image being solved.

##### Другие параметры

Наконец, в нижней части диалогового окна имеются три кнопки-переключателя:

1. Опция Уменьшить изображение уменьшает разрешение входного изображения для ускорения обнаружения звезд на нем. Недостатком этого способа является то, что он может не найти достаточно звезд или дать менее точное астрометрическое решение. Размер выходного изображения остается неизменным.

2. Если астрометрическое решение определяет изображение как перевернутое, при включенной опции Отобразить при необходимости, оно будет перевернуто в конце. Это может быть полезно в зависимости от программного обеспечения захвата изображений, если изображение имеет неправильную ориентацию при отображении в Siril (см. дополнительные объяснения).

3. При включении опции Автокадрирование (для широкого поля) выполняется астрометрическое решение только для центральной части изображения. Это делается только для широкоугольных изображений (больше 5 градусов), где искажения относительно центра достаточно велики, чтобы затруднить работу инструмента астрометрического решения. Игнорируется при использовании astrometry.net.

#### Параметры каталога

This section is relevant for Siril internal solver only. Several online catalogues can be used and also two catalogues that can be installed locally for faster and more reliable operation.

##### Использование удалённых каталогов

По умолчанию этот раздел недоступен, поскольку всевключен автоматический режим. Однако, сняв флажок "Авто (удалённый каталог) в зависимости от разрешения изображения, можно выбрать онлайн-каталог, используемый для обработки изображений. Выбор осуществляется между:

- TYCHO2, a catalogue containing positions, proper motions, and two-color photometric data for 2,539,913 of the brightest stars in the Milky Way.

- NOMAD, a merge of data from the Hipparcos, Tycho-2, UCAC2, Yellow-Blue 6, and USNO-B catalogs for astrometry and optical photometry, supplemented by 2MASS near-infrared. The almost 100 GB dataset contains astrometric and photometric data for about 1.1 billion stars.

- Gaia DR3, released on 13 June 2022. The five-parameter astrometric solution, positions on the sky (α, δ), parallaxes, and proper motions, are given for around 1.46 billion sources, with a limiting magnitude of G = 21. This represents the state of the art in accurate astrometry data and provides spectral data for a wide range of sources which is used in SPCC.

- PPMXL, a catalog of positions, proper motions, 2MASS- and optical photometry of 900 million stars and galaxies.

- Bright Stars, a star catalogue that lists all stars of stellar magnitude 6.5 or brighter, which is roughly every star visible to the naked eye from Earth. The catalog contains 9,110 objects.

- APASS, a star catalogue that lists all stars of stellar magnitude 6.5 or brighter, which is roughly every star visible to the naked eye from Earth. The catalog contains 9,110 objects.

Примечание

Для использования этих онлайн-каталогов необходимо соединение с сетью Интернет.

All these catalogs are made available through VizieR catalogue access tool, CDS, Strasbourg, France (DOI:10.26093/cds/vizier). The original description of the VizieR service was published in 2000, A&AS 143, 23.

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

##### Using the local KStars catalogues (NOMAD)

Начиная с версии 1.1, выпущенной в июне 2022 года, появилась возможность использовать локально установленный каталог звёзд для автономной или более устойчивой работы. Каталог звёзд, который, на наш взгляд, наиболее соответствует нашим потребностям, — это каталог KStars. На самом деле он состоит из четырёх каталогов (задокументированных в руководстве KStars), два из которых не распространяются напрямую в основных установочных файлах KStars:

- namedstars.dat — самые яркие звезды, у всех есть имена

- unnamedstars.dat — также яркие звезды, но до 8-й звёздной величины

- deepstars.dat — более слабые звезды, извлеченные из каталога Tycho-2, включающего 2,5 миллиона самых ярких звезд, вплоть до 12,5 звёздной величины

- USNO-NOMAD-1e8.dat — фрагмент огромного каталога NOMAD, ограниченный фотометрической информацией B-V и собственным движением звезд в компактной двоичной форме, до 18-й звездной величины.

This catalogue can be used for plate solving and for PCC.

When comparing these catalogues with the online NOMAD, we can easily see that many stars are missing. If not enough are found for your narrow field, you should still use the remote queries. A nice thing to check when the catalogues are installed is highlighting which stars of the image will be used for the PCC, those available with photometric information in the catalogues, using the conesearch command.

    conesearch -phot

##### Using the local Gaia DR3 Catalogues

In version 1.4 support for a local extract of the Gaia DR3 catalogue has been added. This astrometric Gaia extract differs from the other catalogues in that it is focused on astrometry as applied to plate solving, so instead of defining a limiting magnitude the catalogue has been designed to provide an even coverage of stars in each level 8 HEALPixel (you can read more about HEALPixels here). This avoids including excessive numbers of stars in densely populated parts of the sky and ensures that sufficient fainter stars are included in emptier HEALPixels to support accurate plate solving.

The default catalogue will be selected at startup based on two criteria:

- If a local catalogue is available it is preferred to the remote equivalent

- If a Gaia catalogue (local or remote) is available it is preferred to NOMAD

Совет

Although the offline Gaia DR3 extract can be used with the conesearch command (by specifying the catalogue name localgaia) it is not really designed for this purpose. In busy regions of the sky the limiting magnitude will be relatively bright and therefore many stars visible in your images will not be contained in the catalogue whatever limiting magnitude you set. For annotation cone searches in such regions you will be better served by specifying the catalogue name gaia instead, which will conduct a remote cone search using the Vizier mirror of the Gaia DR3 archive. This is both fast (for a remote query) and comprehensive.

This catalogue can be used only for plate solving. A photometric Gaia extract also exists, and can be used for the SPCC, it is documented on the SPCC page.

##### Download KStars NOMAD

Первые два файла доступны в исходном файле KStars, каталог Tycho-2 из пакета Debian и каталог NOMAD из файлов KStars, как описано в этой небольшой статье по установке KStars. Он имеет несколько зеркал в сети Интернет, как указано в статьях.

To make things easier to Siril users, and possibly to KStars users too, we redistribute the four files in a single place, and in a more compressed format. With the LZMA algorithm (used by xz or 7zip), the file size is 1.0GB instead of the 1.4GB with the original gzip file. So those .xz files are compressed, make sure you uncompress them with a suitable software before copying them.

Direct download links are available here (right click on each file name on the left and save the links).

In case the link is unavailable and to make it faster from anywhere, it is also distributed with bittorrent, using this torrent file or the following magnet link.

##### Download Astrometric Gaia DR3

The Gaia DR3 local astrometric extract is available from Zenodo It comes with a sha256 checksum for the compressed archive.

Full details, plus a citation reference and a checksum for the uncompressed archive for extra paranoia, can be found at the Zenodo record. The specification of the Gaia DR3 catalogue extracts and their file format is documented here (PDF).

Совет

For convenience, an offline version of the Gaia DR3 astrometric catalogue can be installed using the Catalogue Installer script in the Scripts menu. This catalogue takes up 1.5GB once installed compared with 2.1GB for the KStars NOMAD catalogue and provides higher precision astrometry and even density of stars in all regions, for more reliable and accurate plate solving. It is strongly recommended to install and use this catalogue for all astrometry purposes within Siril.

##### Установка в Siril

Файлы можно разместить где угодно, а их пути указать в настройках Siril, но для четырех файлов есть местоположение по умолчанию: `~/.local/share/kstars/` в Linux. Можно использовать ссылки на них, чтобы избежать ненужных копий. Теперь настройки можно менять из командной строки, используя команду set.

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

From Siril 1.4.0 onwards, Siril will first look in local annotation catalogs to find the coordinates of an object passed in the platesolving dialog, to locate the center of the image. This means that, provided you have the local star catalogues installed, you can solve your images without Internet connection. Of course, this should only be needed if the acquisition software did not record the target coordinates in the FITS header, or when using SER file format which cannot hold this information.

##### Использование

With the addition of the new link between Siril's plate solver and the local catalogue and the new link between Siril's PCC and the local catalogue, a new command `conesearch` was created (from Siril 1.4.0) to display catalog objects in a plate solved image. To display stars that contain photometric information (the B-V index) and can be used for calibration, you can for instance use the following:

    conesearch -phot

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

Настройка локальных каталогов

##### Техническая информация

For photometry, Siril only uses the B-V index (or, for the Gaia catalogue, the effective temperature field Teff) which gives information about star colour. The three image channels are then scaled to give the best colour representation to all stars in the image.

For more information about the KStar binary file type, see this page and this discussion on kstars-devel and some development notes in Siril here and here.

Контрольные суммы Sha1 для 4 файлов каталога:

    4642698f4b7b5ea3bd3e9edc7c4df2e6ce9c9f7d  namedstars.dat
    53a336a41f0f3949120e9662a465b60160c9d0f7  unnamedstars.dat
    d32b78fd1a3f977fa853d829fc44ee0014c2ab53  deepstars.dat
    12e663e04cae9e43fc4de62d6eb2c69905ea513f  USNO-NOMAD-1e8.dat

Лицензии для 4 файлов с каталогами.

#### Использование локальной версии astrometry.net

##### Установка

Начиная с версии 1.2, `solve-field`, решатель из пакета astrometry.net, может использоваться Siril для поиска астрометрических решений изображений или их последовательностей.

Для платформ Windows самый простой способ получить его — использовать ansvr. Если вы не меняли каталог установки по умолчанию, то есть оставили %LOCALAPPDATA%\cygwin_ansvr, Siril будет искать его без дополнительной настройки. Если у вы используете cygwin и вы собрали astrometry.net из исходников, вы должны указать расположение корня cygwin в Настройках.

Для MacOS следуйте этим инструкциям. Установите с помощью homebrew и добавьте его в `PATH`. Также убедитесь, что программа работает для тестовых образов, как указано в инструкции, и вне Siril.

Для ОС, отличных от Windows, исполняемый файл должен быть найден в `PATH`.

The use of this tool makes it possible to blindly solve images, without a priori knowledge of the area of the sky they contain or its resolution. It's also a good alternative to Siril's plate solver in case it fails, because it's a dedicated and proven tool that also can take field distortion into account.

Default settings should be fine, but can be modified if you really want to, using the set command (default values specified between parens) or in the Astrometry tab of preferences. How wide the range of allowed scales is (15%), how big the radius of the search from initial coordinates is (10 degrees), the polynomial order for field distortion (0, disabled), removing or not the temporary files (yes), using the result as new default focal length and pixel sizes (yes).

##### Индексные файлы

Для работы Astrometry.net необходимы индексные файлы. Мы настоятельно рекомендуем использовать последние индексные файлы, доступные на их сайте, т. е. серии 4100 и 5200. Поле зрения каждой серии описано на их странице github. (официальная документация пока не включает эту таблицу).

В системе на базе Unix вы можете просто следовать инструкциям в документации.

В Windows, если вы используете ansvr, эти последние индексные файлы не будут доступны в Index Downloader. Но ыы все равно можете загрузить их отдельно и сохранить там, где хранятся другие индексные файлы (рекомендуем удалить старые файлы, хотя это может испортить Index Downloader).

##### Как это работает

Just like the internal solver, Siril will proceed with extracting the stars from your images (so as to benefit from internal parallelism) and submit this list of stars to astrometry.net `solve-field`. If you then want astrometry.net to crawl the index in parallel, you will need to specify it through the `astrometry.cfg` file.

#### Решение последовательностей

When a sequence is loaded, an additional GUI element is present at the bottom of the dialog.

Настройки астрометрии последовательности

You can specify to solve the whole sequence. The images already solved will be solved again unless the Skip already solved images box is ticked. To use Astrometric registration, you will need to process the whole sequence so that useful information is stored with the sequence (FWHM, number of stars, background level...), so leave the box Use as registration information ticked.

When using Siril solver with local catalogues or when using Astrometry.net, the information contained in the header (if present) will be used to update the image target center and resolution for each image. However, when using Siril solver with online catalogues, a single star catalogue will be downloaded by default to avoid too much network traffic and server requests. If the images do not have too much drift and the same resolution, this is normally sufficient. However, if the images do not have enough overlap or different sampling, you can force downloading one star catalogue per image by ticking the Fetch stars for each image box.

Finally, the 3 boxes on the right will enable to control if the platesolver should read target coordinates, pixel size and focal from each image header or the values specified in the dialog.

At the end of the sequence solving, the log will report how many images were solved and if any were skipped.

    Sequence processing succeeded.
    Execution time: 676.35 ms
    3 images successfully platesolved out of 3 included
    (2 were already solved and skipped)

Solving sequences is also available via the command seqplatesolve.

Примечание

When solving FITS sequences or a FITSEQ file, the images are directly saved, without creating a new sequence. For FITS sequences, if the sequence was created using symbolic links, the original files are not updated. Instead, the name of the symbolic link is used to create a new FITS file, leaving the original untouched. When solving a SER sequence, a new sequence with the prefix `ps_` is created as SER cannot store WCS data.

#### Обнаружение звёзд

By default, the star detection uses the findstar algorithm with the current settings. It works very well to find many stars, but in some occasions we would like to detect the stars manually, or simply view which are used. A first step would be to open the PSF window and launch star detection, then adjust the settings (see the related documentation documentation).

Другой подход — выбрать звезды одну за другой, обведя их рамкой, а затем, щелкнув правой кнопкой мыши, выбрать Выбрать звезду. Чем больше звезд выбрано, тем больше вероятность того, что алгоритм сработает.

Then in the astrometry window, expand the star detection section and activate the Manual detection. Instead of running findstar, it will use the current list of stars.

Примечание

Detection always uses the green layer for RGB images. For undebayered CFA images, the green layer is extracted on-the-fly and used instead.

#### Понимание результатов

Когда астрометрическое решение найдено, мы можем увидеть на вкладке Консоли сообщения такого рода:

    Up is -5.26 deg CounterClockWise wrt. N
    Resolution:      3.051 arcsec/px
    Focal length:  254.21 mm
    Pixel size:      3.76 µm
    Field of view:    04d 51m 58.27s x 03d 01m 1.21s
    Image center: alpha: 21h02m02s, delta: +68°10'48"
    Was 119.64 arcmin from initial value
    Saved focal length 254.21 and pixel size 3.76 as default values
    Flipping image and updating astrometry data.

The astrometric solution gives us the J2000 equatorial coordinates of the image center, the projected horizontal and vertical dimension of the image on the sky, the focal length that could give this field for the given pixel size and consequently the actual image sampling, the angle the image makes with the north axis, the field of view and image center. It also tells what was the distance with the initial specified center.

If it fails, check that start coordinates and pixel size are correct and try changing the magnitude, this will change the amount of stars downloaded from the catalogs, and maybe more stars will be identified. If Siril's plate solve won't find a solution, it is still possible to use an external tool to do it, the solution will be written in the FITS header either way.

#### Визуализация дисторсии

To check the validity of the solution, you can use the conesearch command. This should display stars positions found from catalogues and inspect if they match with the actual stars in the image.

The two images below shows annotations in the top right corner of an image with significant distortion. The top one is the linear solution while the bottom one has been solved accounting for cubic polynomials.

Stars annotations with linear solution

Stars annotations with cubic solution

If platesolving with distortions is sucessfull, the disto command or the Tools ‣ Image Analysis ‣ Show Distortions menu can display a representation of the corrections as an overlay on the image.

Командная строка Siril

    disto [clear]

Показывает поле дисторсии на изображении, имеющем астрономическое решение с включёнными данными о дисторсии
Чтобы отключить, передайте аргумент clear

An example is shown below.

Image with distortion overlay

Sirilpy script

If you want to visualize the distortion field in 3D, you can use the Python script `Distortion3D.py` in the Scripts->Python Scripts menu. You will need to enable getting scripts from the scripts repository.

3D distortion map

### Аннотации

Annotations are glyphs displayed on top of images to depict the presence of known sky objects, like galaxies, bright stars and so on. They come from catalogues but can only be displayed on images for which we know which part of the sky they represent, images that have been plate solved and contain the world coordinate system (WCS) information in their header, so only FITS or Astro-TIFF files.

Вид полностью аннотированного изображения

Plate solving, can be done within Siril in the menu Tools ‣ Astrometry ‣ Image Plate Solver... entry, or using external tools like astrometry.net or ASTAP.

Кнопки для аннотаций

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

#### Offline annotation catalogues

Siril поставляется с заранее определенным списком каталогов для аннотаций:

- Каталог Мессье (М)

- Новый общий каталог (NGC)

- Индекс-каталог (IC)

- Каталог тёмных туманностей Линдс (LdN)

- Каталог Шарплесса (Sh2)

- Каталог звёзд (3661 ярчайших звёзд)

- Линии созвездий МАС

- Названия созвездий МАС (положения получены с этой страницы)

В дополнение могут быть использованы 2 пользовательских каталога:

- Пользовательский каталог объектов глубокого космоса (DSO)

- Пользовательский каталог объектов Солнечной системы (SSO)

They are populated with the commands described in the section about searching for a known object.

They are stored in the user settings directory. Their location depends on the operating system:

- для UNIX-подобных ОС они будут в `~/.config/siril/catalogue`

- на Windows они в `%LOCALAPPDATA%\siril\catalogue`.

All of the above catalogues can be enabled/disabled for display in the Preferences menu ‣ Astrometry tab.

The two user defined catalogues can also be purged (i.e. deleted) via the appropriate buttons.

Ползунок, расположенный справа, позволяет вам легко перемещаться по списку каталогов.

Управление каталогами в Настройки/Астрометрия

There's also a simpler way of accessing this list, as well as the button for displaying/hiding catalog annotations. Right-click on the annotations button in the toolbar and the list will be displayed in a popup window.

Catalogue management in the pop-up window triggered by right-clicking on the annotation button.

These annotation catalogues are used primarily for display purposes. Starting from Siril 1.3, they are also used to locate the center of the image for astrometry tool. If the object is found locally, the resolver will be shown as Local. If not, it will fall back using an online resolver.

Object resolved from local annotations catalogues

#### Online annotation catalogues

You may want to query other databases than the ones already shipped with Siril, described in the offline annotation catalogues section. This works, again, for plated-solved images only.

Starting from Siril 1.3, this is possible with the command conesearch. This new command replaces and expands capabilities previously provided by `nomad` and `solsys` from Siril 1.2.

Командная строка Siril

    conesearch [limit_magnitude] [-cat=] [-phot] [-obscode=] [-tag={on|off}] [-log={on|off}] [-trix=] [-out=]

Отображает звёзды из локального каталога по умолчанию для загруженного изображения, имеющего астрономическое решение, вплоть до заданного значения limit_magnitude (для большинства каталогов по умолчанию — 13, за исключением 14.5 для aavso_chart, 20 для solsys и пропущено для pgc).
Альтернативный удалённый каталог можно указать с помощью аргумента -cat=, принимающего значения
- for stars: tycho2, nomad, gaia, localgaia, ppmxl, bsc, apass, gcvs, vsx, simbad, aavso_chart
- for exoplanets: exo
- for deep-sky: pgc
- for solar system objects: solsys (closest IAU observatory code can be passed with the argument -obscode= for better position accuracy)
Для каталогов, содержащих данные фотометрии, будут сохранены звёзды без информации B-V; их можно исключить, передав аргумент -phot
Вместо каталога можно передать аргумент -trix=, за которым следует число от 0 до 511, для отображения трикселей 3-го уровня, содержащих звёзды, из локальных каталогов (в основном для использования разработчиками)
Ряд каталогов (bsc, gcvs, pgc, exo, aavso_chart, varisum and solsys) показывают названия объектов рядом с маркерами (только графический интерфейс) и выводят их в журнал. Для каталогов с большим количеством объектов, а именно vsx и simbad, эта информация также может отображаться, но, поскольку она может загромождать экран, по умолчанию её показ отключен. Это поведение можно включить / выключить с помощью аргументов -tag=on|off (для показа названий рядом с маркерами) и -log=on|off (для вывода списка объектов в журнал)
Список элементов, присутствующих на изображении, при желании можно сохранить в файле csv, передав аргумент -out=

This command is accessible from the graphical interface via the Tools ‣ Astrometry ‣ Annotate....

Графическая версия команды conesearch

The table below lists all the catalogues that are available, alongside links to the original data.

Доступные каталоги
Каталог | -cat= | Литература
--- | --- | ---
Local | Omitted | using local star catalogues
Tycho2 | tycho2 | https://cdsarc.cds.unistra.fr/viz-bin/cat/I/297
Nomad | nomad | https://cdsarc.cds.unistra.fr/viz-bin/cat/I/297
GAIA DR3 | gaia | https://cdsarc.cds.unistra.fr/viz-bin/cat/I/355
PPMXL | ppmxl | https://cdsarc.cds.unistra.fr/viz-bin/cat/I/317
Каталоги ярких звёзд | bsc | https://cdsarc.cds.unistra.fr/viz-bin/cat/V/50
APASS DR9 | apass | https://cdsarc.cds.unistra.fr/viz-bin/cat/II/336
GCVS | gcvs | https://cdsarc.cds.unistra.fr/viz-bin/cat/B/gcvs
VSX | vsx | https://cdsarc.cds.unistra.fr/viz-bin/cat/B/vsx
SIMBAD | simbad | https://simbad.cds.unistra.fr/simbad/sim-tap/
PGC/HYPERLEDA | pgc | https://cdsarc.cds.unistra.fr/viz-bin/cat/VII/237
Архив экзопланет | exo | https://exoplanetarchive.ipac.caltech.edu
AAVSO VSP | aavso_chart | https://app.aavso.org/vsp/
IMCCE Solar system skybot | solsys | https://vo.imcce.fr/webservices/skybot/?conesearch

The following queries are brought to you thanks to:

- Vizier (through CDS Vizier TAP query service)

- Simbad (through CDS Simbad TAP query service)

- IMCCE (through its skybot conesearch service)

- NASA exoplanet archive (though its TAP query service)

For solar system object queries, you may pass an additional parameter -obscode=, the 3-symbol code for an IAU observatory close by to your observing location. This will improve annotations accuracy. Please note that results may still slightly differ from those obtained by making a direct ephemerides query for a specific object, which uses the exact observing location (if present in the FITS header).

Совет

A preferred observatory code may be set in the Astrometry tab in the Preferences dialog. If set, this will be used for the Solar System Objects GUI tool and will also be used in the conesearch command unless the -obscode= argument is provided.

These additional annotations will be displayed in RED, to differentiate them from offline annotations, shown in GREEN. These annotations will be erased as soon as the `Show Objects names` button is toggled.

#### Дополнительные каталоги

You may want to display your own user catalogues. This can be done with the command show. This command can also be used to display, for instance, csv files created with the feature to find comparison stars.

Командная строка Siril

    show [-clear] [{ -list=file.csv | [name] RA Dec }] [-nolog] [-notag]

На основании экваториальных координат показывает точку на загруженном изображении, имеющем астрономическое решение, используя временный каталог с пользовательскими аннотациями. Аргумент -clear сначала очищает этот каталог и может использоваться отдельно.
С помощью аргумента -list= можно передать несколько точек, используя файл в формате CSV, содержащий по крайней мере столбцы с данными о прямом восхождении и склонении. Если указанный файл так же также содержит столбец с названием, эти названия будут использованы как метки на изображении и отображены в журнале, если только не отключены с помощью опций -notag и -nolog.
Это доступно только через графический интерфейс Siril

These catalogues may be any csv (comma-separated) file, respecting the following rules:

- строки с комментариями, если необходимы, должны начинаться со знака #

- a line should be present at the top with the column names, comma separated

- at least ra and dec columns should be provided, in decimal degrees.

- the columns can be written in no particular order

- other columns can be passed:

  > - name (str)

  > - diameter (double), the object diameter in arcmin

  > - mag (double), the object magnitude

  > - type (str), which will be appended between () after the name in the Console

Other columns than those listed above may be passed but they will not be used.

This command is accessible from the graphical interface via the Tools ‣ Astrometry ‣ Annotate.... You can either load a `*.csv` file containing several lines of comma-separated ra, dec coordinates in Import CSV, or a single point in the Single Coordinates tab.

Graphical version of the show command

In the case of a single point, you can save the result in the Deep Sky user catalogue by clicking on the save button as shown in the illustration bellow:

It is possible to show only one single point and to save it in the Deep Sky user catalogue.

Совет

The save button will only work if the field Display Name is filled.

Совет

You can select a star or object and obtain its coordinates using the Get coordinates from selection button.

Список известных пользовательских каталогов:

Sometimes, users create their own catalogues, we can try to link them here to help everybody.

- Variable stars, extracted from GCVS 5.1, discussed here in French, (`file link`).

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

Contrarily to the instructions discussed in the linked topic, it is not recommended to replace the user-DSO catalogue with such files. The usage is discouraged as some of them could be particularly big and would slow down tremendously every annotation redraw.

#### Поиск известного объекта

If you know a specific object is somewhere in the image (if not, see the search for an unknown object section), it is possible to add it to annotations.

##### Deep-sky objects

Load a plate resolved image and type `Ctrl`+`Shift`+`/` or Tools ‣ Astrometry ‣ Annotate... then go to the Search Object tab of the dialog box.

A search dialog box is available, as illustrated below, in which object names can be entered.

Search Object dialog

Pressing `Enter` or Apply will first search for this name the existing annotation catalogues in case it already exists under another name. If not it will send an online request to SIMBAD to get the coordinates of an object with such a name. If found, and not already in any catalogue, the object will be added to the Deep Sky user catalogue.

The items of this catalogue are displayed in ORANGE while the objects from the predefined catalogues are displayed in GREEN.

Объекты дальнего космоса из пользовательского и предопределенных каталогов

Examples of valid input (not case sensitive):

- `HD 86574` или `HD86574` оба запроса подходят для этой звезды

##### Объекты Солнечной системы

From Siril version 1.2, objects from the solar system can also be searched for, using the Miriade ephemcc service. This is done in the same manner as for Deep Sky Objects, but prefixing the name of the object to be searched by some keyword representing the type of object: `a:` for asteroids, `c:` for comets, `p:` for planets, `dp:` for dwarf planets and `s:` for natural satellites. If you query an image taken from a close enough date and time (same night) than another image already annotated with SSOs, their cached positions will be used and corrected by each object velocity as returned by the ephemerids. The items of this catalogue are displayed in YELLOW.

Примеры допустимых поисковых запросов (регистр не имеет значения):

- `c:67p` или `c:C/2017 T2` являются допустимыми формами запроса для комет

- a:1 и a:ceres допустимы для (1) Цереры

- `a:2000 BY4` действителен для 103516 2000 BY4

- `p:4` or `p:mars` are both valid for Mars

- `dp:Pluto` is valid for Pluto

- `s:Moon` or `s:Io` is valid for natural satellites.

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

Images that do not have a `DATE-OBS` header key cannot be annotated for SSOs. Images that do not have observer location information (SITELAT, SITELONG and SITEELEV header keys) will still be annotated, but assuming a geocentric observer position, i.e. as if observing from center of the Earth. Depending on objects distance wrt. Earth, this may result in positions being slightly offset from their real positions.

Результат процесса поиска в Солнечной системе

##### Command catsearch

The same feature is accessible through the command catsearch:

Командная строка Siril

    catsearch name

Ищет объект по названию (name) и добавляет его в каталог пользовательских аннотаций. В первую очередь поиск производится в каталоге аннотаций. Если объект не найден, то делается запрос к удалённому серверу SIMBAD.
Объектом может быть тело Солнечной системы. В этом случае перед названием объекта необходим префикс 'a:' для астероида, 'p:' для планеты, 'c:' для кометы, 'dp:' для карликовой планеты или 's:' для естественного спутника. Поиск выполняется для даты и местоположению Земли, указанным в заголовке файла, с помощью сервиса Miriade от Института небесной механики и вычисления эфемерид (IMCCE)

#### Поиск неизвестного объекта

Especially useful for photometry works, it is possible to identify a star or other objects in the image by drawing a selection around them, right clicking to bring up the context menu, and selecting the PSF entry.

This will open the PSF window, and if it is a star it will display the Gaussian fit parameters, but it will also display a Web link at the bottom left of the window. Opening it will bring you to the SIMBAD page for the coordinates of the object and in many cases will give you the name of the object.

SIMBAD does not have all known objects, but the coordinates from the page can still be used as a starting point to look for the object in other online catalogues, for example Gaia DR3 (VizieR).

## Динамическая PSF

Данный раздел описывает два важных шага, выполняемых для определения звёзд на отдельных кадрах. Определение на отдельном изображении можно выполнить или уточнить с помощью Основное меню ‣ Данные об изображении ‣ Динамическая PSF или с помощью клавиатурной комбинации `Ctrl` + `F6`.

Динамическая PSF, выполняемая на изображении глубокого космоса.

Обработка выполняется следующим образом:

- первоначальное определение кандидатов в звёзды

- подгонка модели PSF для каждого кандидата. Проверка на адекватность, основываясь на параметрах подогнанной модели, чтобы убедиться, что кандидат является звездой и отбросить кандидаты, не являющиеся звёздами.

Результатом этого процесса является список звёзд, с их положением на изображении относительно левого верхнего угла и измеренными величинами всех звёзд в списке.

### Первоначальные кандидаты в звёзды

Хотя при взгляде на изображение кажется очевидным, где располагаются звёзды, это несколько более трудная задача формализовать этот процесс в математических терминах и критериях. В этом разделе коротко описан алгоритм, лежащий в основе определения звёзд. Он вдохновлён руководством к программе DAOPHOT [Stetson1987], с некоторыми упрощениями, улучшающими производительность. Оригинальный алгоритм был нацелен на поиск всех возможных звёзд, служа цели создания каталогов звёзд. Siril же нуждается в определении звёзд как деталей для регистрации. Он так же должен уметь обрабатывать разнообразные изображения, которые предоставляют пользователи — большинству из нас недоступно профессиональное астрономическое оборудование на своём заднем дворе - и нам приходится делать определённый выбор, касающийся предварительных знаний об условиях получения изображений (масштаб, условия съёмки и пр.).

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

Его можно разделить на следующие шаги:

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

- Так же вычисляется динамический диапазон, определяемый как разница между максимумом изображения и его фоном. Позже это будет полезно для определения насыщенных звёзд.

- изображение сглаживается при помощи гауссовского ядра. Для идеального сглаживания было бы необходимо использовать ядро того же размера, как FWHM изображения. Вместо этого, мы выбрали произвольный размер, который даёт удовлетворительный результат в очень большом диапазоне условий. Это позволяет быть "слепым" к условиям получения изображения.

- на сглаженной версии изображения определяются локальные максимумы на уровне, определённом как уровень фона плюс уровень шума умноженный на X (X можно изменять с помощью значения `threshold` в графическом интерфейсе). Убеждаемся, что это максимум на заданном размере поля (определяемом параметром `radius`).

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

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

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

- Если параметры достаточно симметричны во всех направлениях (с точностью до значения параметра `roundness`), то подтверждаем, что звезда является потенциальным кандидатом.

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

### Модели

В окне Динамическая PSF используются две модели. В целом, модель Моффата (Moffat) более подходящая для подгонки таких объектов, как звёзды.

Показаны две круговые PSF в соответствии с профилем Гаусса и профилем Моффата. Обе модели используют одни и те же параметры, а профиль Моффата использует \(\beta = 1.4\).

Повернутые функции Гаусса и Моффата с параметрами \(\sigma_x=2\sigma_y\), \(\theta=45°\). Для Моффата \(\beta = 1.4\).

Профили звезд с моделями Гаусса и Моффата. Были проверены несколько значений \(\beta\). \(\beta = 10\) дает профиль, очень близкий к гауссовскому.

Теория

1. Эллиптическая функция подгонки по Гауссу определена следующим образом

   (1)\[ G(x,y) = B+Ae^{-\left(\frac{(x-x_0)^2}{2\sigma^2_x}+\frac{(y-y_0)^2}{2\sigma^2_y}\right)}.\]

2. Эллиптическая функция подгонки по Моффату определена следующим образом

   (2)\[ M(x,y) = B+A\left(1+\frac{(x-x_0)^2}{\sigma^2_x}+\frac{(y-y_0)^2}{\sigma^2_y}\right)^{-\beta},\]

где:

- \(B\) — это среднее локальное значение фона.

- \(A\) — это амплитуда, которая является максимальным значением подогнанной PSF.

- \(x_0\), \(y_0\) — это координаты центроида в пикселях.

- \(\sigma_x\), \(\sigma_y\) — это стандартные отклонения Гауссова распределения по горизонтальной и вертикальной осям, измеренные в пикселях.

- \(\beta\) — это показатель степени из формулы Моффата, который определяет общую форму функции подгонки. Верхняя граница этого параметра была установлена равной 10. Более высокое значение не имеет смысла и означает, что гауссиан достаточно хорош для подгонки звезды.

Другие параметры выводятся из этих подогнанных переменных:

- \(\text{FWHM}_x\) и \(\text{FWHM}_y\): Ширина на полувысоте (FWHM) по осям X и Y в пикселях. Эти параметры рассчитываются следующим образом:

  - \(\text{FWHM}_x = 2\sigma_x\sqrt{2\log 2}\).

  - \(\text{FWHM}_y = 2\sigma_y\sqrt{2\log 2}\).

  - Можно получить параметры FWHM в угловых секундах. Для этого необходимо заполнить все поля, соответствующие вашей камере и фокусному расстоянию объектива/телескопа, в окне настройки параметров в главном меню, затем Данные об изображении и Информация. Если в заголовках FITS указаны такие ключевые слова, как `FOCALLEN`, `XPIXSZ`, `YPIXSZ`, `XBINNING` и `YBINNING`, PSF также вычислит масштаб изображения в угловых секундах на пиксель.

- \(r\): — параметр округлости. Он выражается в виде \(\text{FWHM}_x/\text{FWHM}_y\), с условием симметричности \(\text{FWHM}_x > \text{FWHM}_y\).

- Другой параметр также подгоняется как в модели Гаусса, так и в модели Моффата. Это угол поворота \(\theta\), определённый в диапазоне \([-90°,+90°]\). Добавление этого параметра подразумевает изменение координат, где переменные \(x\) и \(y\), выраженные в (1) и (2), заменяются на \(x'\) и \(y'\):

  (3)\[\begin{split} x' &= +x \cos\theta+y \sin\theta \\ y' &= -x \sin\theta+y \cos\theta.\end{split}\]

### Минимизация

Минимизация выполняется с помощью нелинейного алгоритма Левенберга-Марквардта благодаря очень надежной GNU Scientific Library. Этот алгоритм используется для поиска минимума функции, которая отображает набор параметров в набор наблюдаемых значений. Он представляет собой комбинацию двух методов оптимизации: метода градиентного спуска и метода обратного гессиана.

Алгоритм Левенберга-Марквардта устанавливает компромисс между этими двумя методами, основываясь на минимизации кривизны функции. Когда кривизна мала, алгоритм использует метод градиентного спуска, а когда кривизна велика, алгоритм использует метод обратного гессиана.

Начиная с версии 1.2.0, насыщенная часть звезды удаляется из процесса подгонки, что позволяет гораздо точнее захватывать ненасыщенную часть. Это то, что позволяет «реконструировать» профиль звезды при использовании пункта меню Обесцветить звёзды или команды unclipstars.

### Использование

Динамическая PSF, в зависимости от вашего желания, может быть вызвана двумя различными способами:

Возможно, вам захочется разместить только одну или несколько звёзд. В этом случае после выделения ненасыщенной звезды (это важно для точности результата) вы можете щелкнуть правой кнопкой мыши и выбрать пункт Выбрать звезды, нажать кнопку + в диалоговом окне Динамическая PSF или нажать `Ctrl` + `Пробел`. В результате вокруг звезды будет нарисован эллипс. Чтобы открыть диалоговое окно, также можно использовать сочетание клавиш `Ctrl` + `F6`.

Вы можете захотеть проанализировать как можно больше звёзд, нажав на кнопку или используя командную строку findstar. Все обнаруженные звёзды будут окружены эллипсом: оранжевым, если звезда в порядке или пурпурным, если звезда насыщена. Также можно отобразить среднее значение вычисленных параметров, как показано ниже, нажав на кнопку .

Средние значения подобранных звёзд в Гауссовой модели.

Обнаружение звезд имеет ряд применений:

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

- Поскольку звёзды очень яркие по сравнению с тусклыми объектами, представляющими интерес, такими как туманности или галактики, очень часто некоторые звёзды на изображении получаются насыщенными, что означает, что их профиль яркости обрезан. Это может вызвать проблемы с некоторыми функциями обработки изображений, в частности с реконструкцией, и приводит к потере информации о цвете и незначительному раздуванию звёзд при растяжении. Анализ всех звёзд покажет вам, какие из них насыщенные, и затем вы можете воспользоваться пунктом меню Обесцветить звёзды или командой unclipstars, чтобы устранить проблему путем синтеза отсеченной части профиля.

  Командная строка Siril

      unclipstars

  Перепрофилирует обрезанные звёзды для уменьшения их насыщенности, масштабируя исходящие данные, чтобы все значения пикселей были <= 1.0

- В идеале все звёзды на изображении должны быть максимально круглыми, однако такие проблемы, как кома, астигматизм и плохое ведение (гидирование), а также такие проблемы, как неправильно подобранный задний отрезок (back focus) при использовании выравнивателей поля (кома-корректоров или спрямителей поля), могут привести к появлению на изображении эллиптических звёзд. Эллипсы, созданные инструментом Динамическая PSF, могут служить хорошей наглядной иллюстрацией таких проблем.

- Изучение средних параметров звезды, особенно FWHM и β-параметра функции подгонки Моффата, может дать информацию о качестве условий наблюдения (seeing) при получении изображения.

- Обнаружение всех звёзд является первым шагом в использовании Обработка звёзд ‣ Полный повторный синтез. Этот инструмент синтезирует исправленные профили светимости для всех обнаруженных звёзд. Кроме того, он может использоваться для создания синтетической маски звёзд, которую затем можно смешать с изображением без звёзд, созданным Starnet++, чтобы исправить на изображении звёзды, не поддающиеся реконструкции. В этом случае обнаружение звёзд с использованием профиля Моффата может дать более реалистичный результат, что также может упростить отфильтровывание галактик, неправильно определённых как звёзды, с помощью опции «Минимальная β».

- Флажок Отцентрировать выделенную звезду может использоваться для быстрого и легкого поиска определённой звезды из списка на изображении, центрируя её в окне просмотра. Это полезно, если вы определили все звёзды и хотите проверить конкретные определения, чтобы убедиться, что они действительно являются звездой, а не галактикой или космическим лучом.

- Аналогично этому, нажатие на оранжевый или пурпурный эллипс вокруг звезды в главном окне просмотра выделит выбранное определение звезды в диалоговом окне Динамическая PSF. Это может быть полезно, если вы хотите увидеть параметры отдельной звезды.

- Инструменты реконструкции Siril могут использовать измерения Динамической PSF для синтеза математической функции реконструкции, которая соответствует параметрам звезды, измеренным непосредственно на изображении.

### Конфигурация

Динамическая PSF может быть настроена с использованием параметров в диалоге Динамическая PSF:

- Радиус устанавливает половинный размер области поиска. Если у вас возникли проблемы с поиском определенных звёзд, вы можете попробовать изменить это значение, но обычно оно используется по умолчанию.

- **Порог ** изменяет порог, превышающий уровень шума для обнаружения звёзд. Если вы увеличите это значение, будет обнаружено меньше слабых звёзд. Возможно, вы все же захотите сделать это для изображений с очень высоким уровнем шума. Уменьшение этого значения может привести к обнаружению большего количества слабых звёзд, но также повысит вероятность ошибочной идентификации алгоритмом случайных всплесков шума в качестве звёзд.

- Округлость определяет порог допустимой эллиптичности объектов, которые будут приниматься за звёзды. Звезды с высокой степенью эллиптичности могут возникать из-за недостаточного качества ведения(гидирования) или аберраций, но иногда звёзды, расположенные слишком близко друг к другу, также обнаруживаются как одиночные очень вытянутые звёзды. Чтобы выявить все эти проблемы, можно установить более высокую границу округлости. Максимальное значение, равное 1, эквивалентно отключению диапазона, оставляя только минимальное значение. Этот диапазон округлости должен быть отключен для регистрации или астрометрии.

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

- Тип профиля позволяет выбрать между решением профиля типа Гаусс или Моффат для звёзд.

- Минимальная β устанавливает минимально допустимое значение β для того, чтобы объект был признан звездой. При использовании профиля Моффата, галактики иногда могут быть определены как звёзды, но они имеют рассеянный профиль и, обычно, очень низкое значение β, менее 1.5.

- Ослабить проверки PSF позволяет ослабить некоторые проверки качества звёзд-кандидатов. Это, вероятно, приведет к значительному увеличению числа ложноположительных результатов при обнаружении звёзд, часто с нестандартными параметрами.

- Диапазон минимальной и максимальной амплитуд может быть установлен для ограничения амплитуды (параметр, называемый `A` в отчётах) обнаруженных звёзд. Это полезно, если необходимо выбрать только ненасыщенные звёзды, например, для подгонки PSF при реконструкции. Обратите внимание, что удаление насыщенных звёзд из поля зрения может нарушить регистрацию и астрометрию.

Совет

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

Команда findstar будет соответствовать тем же настройкам, которые были введены в диалоговом окне Динамическая PSF, но ее также можно настроить с помощью команды setfindstar.

Командная строка Siril

    findstar [-out=] [-layer=] [-maxstars=]

Определяет звёзды на текущем загруженном изображении, чей уровень превышает пороговое значение, вычисленное Siril.
После этого применяется PSF и Siril выбраковывает все найденные структуры, которые не удовлетворяют набору ранее определённых критериев, указанных с помощью команды SETFINDSTAR.
Наконец, вокруг обнаруженных звёзд рисуется эллипс.
Необязательный параметр -out= позволяет сохранить результат по указанному пути.
Опция -layer= указывает слой, на котором будет происходить определение звёзд (только для цветных изображений).
Вы также можете ограничить максимальное количество обнаруженных звёзд, указав значение параметра -maxstars=.
См. также команду CLEARSTAR
Ссылки: psf, setfindstar, clearstar

Командная строка Siril

    setfindstar [reset] [-radius=] [-sigma=] [-roundness=] [-focal=] [-pixelsize=] [-convergence=] [ [-gaussian] | [-moffat] ] [-minbeta=] [-relax=on|off] [-minA=] [-maxA=] [-maxR=]

Определяет параметры определения звёзд для команд FINDSTAR и REGISTER.
При отсутствии параметра выводит список текущих значений.
Передача reset сбрасывает все значения к значениям по умолчанию. Вы всё ещё можете передавать значения после этого ключевого слова.
Настраиваемые значения:
-radius= определяет радиус первоначального поискового окна и должно быть между 3 и 50.
-sigma= определяет пороговое значение превышения уровня шума и должно быть больше или равно 0.05.
-roundness= определяет минимальное значение округлости звёзд и должно быть между 0 и 0.95. -maxR позволяет установить верхнюю границу округлости для визуализации только тех областей, где звёзды значительно вытянуты. Не меняйте для регистрации.
-minA и -maxA определяют пределы минимальной и максимальной сохраняемых амплитуд звёзд, нормализованные между 0 и 1.
-focal= определяет фокусное расстояние телескопа.
-pixelsize= определяет размер пикселя сенсора.
-gaussian и -moffat настраивает используемую модель решателя (по умолчанию - Гауссова).
Если выбрана модель Моффата, аргумент -minbeta= определяет минимальное значение параметра β для которого будут приняты кандидаты в звёзды и должно быть больше или равно 0.0 и меньше чем 10.0.
-convergence= определяет количество выполняемых повторов для подгонки PSF и должно быть установлено между 1 и 3 (более толерантное).
-relax= ослабляет проверки, выполняемые для кандидатов в звёзды, чтобы определить, являются ли они звёздами или нет, и позволяет по-прежнему принимать объекты, не имеющие форму звёзд (по умолчанию отключено)
Ссылки: findstar, register, psf

### Литература

[Stetson1987]

Stetson, P. B. (1987). DAOPHOT: A computer program for crowded-field stellar photometry. Publications of the Astronomical Society of the Pacific, 99(613), 191.

## Заголовок FITS

Ключевые слова, содержащиеся в заголовке FITS-файла, могут быть отображены в программе Siril. Для этого просто щелкните на Инструменты ‣ Заголовок FITS.

Начиная с версии 1.3.0, стало возможным изменять значения ключевых слов, поддерживаемых Siril, либо с помощью команды update_key, либо через графический интерфейс в соответствующем окне. Это окно разделено на две вкладки. Первая, Редактор заголовков, активна для отдельных изображений вне последовательности. Она может отличаться от того, как на самом деле выглядит заголовок файла, и больше отражает состояние, в котором он будет после сохранения. Значения ключевых слов обновляются в реальном времени. Вторая вкладка отображает заголовок в текстовом формате таким, как он записан в файле, и так, как он представлялся в версиях Siril ниже 1.3.0.

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

Ключевые слова HISTORY не отображаются в редакторе. Они видны во вкладке Сохранённый заголовок.

Другой способ просмотра заголовка — использование dumpheader в командной строке. Эта команда показывает тот же заголовок, что отображается во вкладке Сохранённый заголовок.

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

Так как файлы SER содержат очень мало ключевых слов и отличаются от файлов FITS, эта команда неприменима к этому типу последовательностей.

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

Редактирование очень простое — просто дважды щелкните на ячейке, которую нужно изменить. Первый щелчок выделяет поле, второй открывает режим редактирования. Нажатие клавиши `Enter` подтверждает введённые данные. Чтобы внесённые изменения вступили в силу, не забудьте сохранить файл.

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

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

Диалоговое окно Заголовок FITS при редактировании значения ключевого слова.

Вторая вкладка диалога Заголовок FITS.

Окно содержит опцию в виде кнопки Копировать выделение. Она копирует выбранные строки в буфер обмена в оригинальном формате заголовка FITS и работает для обеих вкладок.

Наконец, вы можете добавить новое ключевое слово, используя кнопку + в левом нижнем углу, и удалить его, используя кнопку -:

1. Для добавления ключевого слова нажмите кнопку +. Откроется новое диалоговое окно, показанное ниже. Это окно позволяет добавить новое ключевое слово, название которого будет ограничено 8 символами (конвенция `HIERARCH` не используется). Вы можете оставить поле Comment пустым, если другие два поля заполнены. Однако пользователь может заполнить только поле Comment, чтобы добавить одно примечание в заголовок FITS. Наконец, если ключевое слово уже существует, его значение будет обновлено предоставленной информацией.

   Окно добавления новых ключевых слов.

2. Для удаления ключевого слова выберите одну или несколько строк и нажмите кнопку - (или используйте клавиши `Del` или `Backspace`). Выбранные ключевые слова будут удалены, за исключением защищённых.

   Совет

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

Командная строка Siril

    dumpheader

Выводит заголовок FITS загруженного изображения в журнал

Командная строка Siril

    update_key key value [keycomment]
    update_key -delete key
    update_key -modify key newkey
    update_key -comment comment

Обновляет ключевое слово FITS. Пожалуйста, обратите внимание, что валидность значения value не проверяется. За это ответственен пользователь. Также можно удалить ключ, указав аргумент -delete перед названием удаляемого ключа, или изменить ключ с помощью аргумента -modify. За последним должны следовать ключ, который нужно изменить, и название нового ключа. Наконец, аргумент -comment, за которым следует текст, добавляет комментарий к заголовку FITS. Пожалуйста, обратите внимание, что любой текст, содержащий пробелы, должен быть заключен в двойные кавычки

Командная строка Siril

    sequpdate_key sequencename key value [keycomment]
    sequpdate_key sequencename -delete key
    sequpdate_key sequencename -modify key newkey
    sequpdate_key sequencename -comment comment

Аналогична команде UPDATE_KEY, но применяется последовательности sequencename. Однако эта команда не работает с последовательностями SER
Ссылка: update_key

## Создание профиля интенсивности

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

### Базовый профиль интенсивности

Для создания базового профиля интенсивности звезды или другого объекта выберите кнопку Профиль в нижней панели инструментов. Это переведёт Siril в режим построения профиля и откроет небольшое диалоговое окно.

Теперь вы можете нажать и потянуть на основном окне изображения, чтобы установить начальную и конечную точки линии, по которой вы хотите построить профиль. Если нажать клавишу `Shift` при перетаскивании линии, она примет либо горизонтальное, либо вертикальное направление.

Совет

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

В нижней части диалогового окна есть поле для ввода пользовательского заголовка вашего графика.

Совет

При обработке последовательности можно настроить пользовательский заголовок так, чтобы он отображал номер текущего изображения и общее количество, добавив () в конец заголовка. Например, если для последовательности из 5 изображений ввести заголовок Солнечный спектр (), то будут сгенерированы заголовки Солнечный спектр (1 / 5), Солнечный спектр (2 / 5) и т.д. Скобки игнорируются и удаляются, если обрабатывается одиночное изображение.

### Виды профилей

Используйте радиокнопки для выбора типа профиля, который вы хотите получить. (Нажмите на приведенные ниже примеры изображений, чтобы увидеть их в полном размере.)

- Моно профиль. Для монохромных или цветных изображений создается профиль яркости между двумя точками. Этот режим может использоваться со спектрометрическими данными.

Совет

Если загружено цветное изображение, но выбран режим моно профилирования, профиль будет создан в соответствии с областью просмотра. Области просмотра R, G и B предоставляют моно профили соответствующих каналов, а область просмотра RGB предоставляет профиль яркости, равномерно учитывающий все три канала.

- Цветной профиль. Для цветных изображений создаются три профиля для значений пикселей R, G и B между двумя точками. Этот режим может использоваться с спектрометрическими данными.

- Трёхпрофильный (моно). Для монохромных или цветных изображений создаются три параллельных, равноудалённых друг от друга профиля яркости между двумя точками. Расстояние между тремя профилями можно установить с помощью кнопки прокрутки.

- CFA. Только для изображений с шаблоном Байера. Для каждого из четырех CFA-каналов создаются четыре профиля между двумя точками. Это может быть особенно полезно для проверки профиля изображений плоского поля с шаблоном Байера или других изображений с шаблоном Байера перед их дебайеризацией.

Это изображение демонстрирует использование поля для установки пользовательского заголовка графика.

Нажмите Применить для создания профиля.

### Точный ввод координат

Для облегчения точного и повторяемого ввода координат предоставляется метод ручного ввода. Нажмите кнопку Координаты вручную, и вы сможете ввести координаты X и Y начальной и конечной точек линии профиля. Если линия профиля уже нарисована, но одна из точек не находится точно там, где вам нужно, вы можете использовать это всплывающее диалоговое окно для точной настройки положения конечных точек.

If you wish to set an endpoint exactly to the position of a star, make a rectangular selection around the star and click the relevant star button to the right of the dialog.

Примечание

При использовании режима CFA координаты задаются на входном изображении. Однако каждый CFA-канал имеет половину ширины и высоты. Ось x в графике режима CFA измеряется в пикселях канала CFA, то есть она будет охватывать в два раза меньше пикселей, чем в исходном изображении.

### Измерение

Линия профиля интенсивности может быть использована в качестве измерительного инструмента двумя способами:

- Checking the Measure profile checkbox will measure all profile lines dragged with the mouse, similarly to the `Ctrl` ``+`` `Shift` ``+`` `Drag` quick measurement function.

- В диалоговом окне Координаты есть кнопка Измерить. Она предоставляет ту же функцию измерения, но позволяет вам точно установить конечные точки и затем выполнять измерение линии профиля по запросу. Выбирая звезды, малые планеты или ядра комет в качестве конечных точек, как описано выше, можно производить очень точные измерения (с субпиксельной точностью) между двумя небесными телами.

Здесь выбраны две близкие звезды и установлены в качестве конечных точек, а расстояние между ними измерено как 5.2 угловых секунды. Это может быть использовано для исследования бинарных систем или для триангуляции положения малой планеты.

Примечание

Функция измерения в Siril использует приближение малых углов для углового разделения \(\theta\). Наиболее значимая ошибка пропорциональна \(\theta^3\) и составляет менее 1% для измерений до 10°, поэтому она применима для большинства астрометрических задач. Однако она станет неточной для больших измерений на ультра-широкоугольных изображениях. Для измерений более 10° будет выдано предупреждение в журнале.

### Siril Plot Tool

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

По `right`-`click` (щелчок правой кнопкой мыши) в любом месте области графика появится контекстное меню, в котором можно:

- Показывать/скрывать сетки и условные обозначения

- Экспортировать текущее представление в буфер обмена, `*.png` или `*.svg`

- Сохранить исходные данные в файле `*.dat`

Контекстное меню на графике Siril

Обратите внимание, что все экспортируемые значения для текущего масштаба/прокрутки при сохранении в формат dat будут экспортированы без фильтрации.

Доступны следующие взаимодействия с графическим интерфейсом пользователя:

- `Click` ``+`` `Drag` нарисовать выделение. При отпускании клавиши мыши, масштаб устанавливается на выделенную область.

- `Ctrl` ``+`` `Drag` прокрутить текущее представление.

- :kbd:`Ctrl + Scroll`увеличить/уменьшить масштаб.

- :kbd:`Double-click`сбросить в положение/масштаб по умолчанию.

### Команды

Командная строка Siril

    profile -from=x,y -to=x,y [-tri] [-cfa] [-arcsec] { [-savedat] | [-filename=] } [-layer=] [-width=] [-spacing=] ["-title=My Plot"]

Создаёт профиль интенсивности между двумя точками на изображении — cut (разрез). Аргументы могут быть переданы в любом порядке. Обязательные аргументы — -to=x,y и -from=x,y.
Аргумент -layer={red | green | blue | lum | col} определяет какой канал (либо светимость или цвет) отобразить на графике, если изображение цветное. Его можно использовать в сочетании с аргументом -tri, создающим 3 параллельных равноудалённых профиля, разделённых -spacing= пикселей. Следует отметить, что для трёхпрофильного типа, аргумент col обрабатывается так же, как lum.
Аргумент -cfa выбирает режим CFA, создающий 4 профиля, по одному для каждого канала CFA, для изображения с шаблоном Байера. Он не может быть использован со цветными или монохромными изображениями без шаблона Байера, но и не может использоваться вместе с аргументом -tri.
Аргумент -arcsec позволяет отобразить расстояние по оси x в угловых секундах, если доступны необходимые метаданные. Если необходимые метаданные не указаны или отсутствуют, расстояние отображается в пикселях.
Аргумент -savedat может быть передан в случае, если необходимо сохранить файлы данных; название файла будет выведено в журнал. В качестве альтернативы, для указания названия файла, в котором будут сохранены данные, можно использовать опцию -filename= (Аргумент -filename= подразумевает **-savedat)
Аргумент "-title=Мой заголовок" устанавливает пользовательский заголовок "Мой заголовок"

Командная строка Siril

    seqprofile sequence -from=x,y -to=x,y [-tri] [-cfa] [-arcsec] [-savedat] [-layer=] [-width=] [-spacing=] [ {-xaxis=wavelength | -xaxis=wavenumber } ] [{-wavenumber1= | -wavelength1=} -wn1at=x,y {-wavenumber2= | -wavelength2=} -wn2at=x,y] ["-title=My Plot"]

Создаёт профиль интенсивность между двумя точками на каждом изображении последовательности. После обязательного первого аргумента, указывающего название последовательности, которую необходимо обработать, остальные аргументы аналогичны аргументам команды profile. Если обрабатывается последовательность и желательно, что номер текущего изображения и общее количество изображений отображались в формате "Моя последовательность (1/5)", заголовок должен заканчиваться (), например, "Моя последовательность ()" и данные будут заполнены автоматически

## Контроль изображений

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

### Наклон

Первый инструмент, предлагаемый Siril, — это расчет наклона. Наклон сенсора возникает, когда сенсор не ортогонален плоскости изображения: для его устранения требуется вмешательство в оптическую систему. Вы можете выполнить эту функциональность двумя различными способами. Либо через графический интерфейс (в меню Инструменты ‣ Анализ изображений ‣ Показать наклон), либо через командную строку. Последний даже предлагает альтернативу, которая позволяет вычислить наклон по всей последовательности изображений для большей точности. Следующая команда:

Командная строка Siril

    tilt [clear]

Вычисляет наклон сенсора как разницу в FWHM между наилучшим и наихудшим усечёнными средними значениями угла. Аргумент clear позволяет очистить диаграмму наклона

будет выведено:

    22:28:13: Running command: tilt
    22:28:13: Findstar: processing for channel 0...
    22:28:15: Stars: 7598, Truncated mean[FWHM]: 3.40, Sensor tilt[FWHM]: 0.31 (9%), Off-axis aberration[FWHM]: 0.39

В консоли отобразятся:

- количество звезд, используемых для измерения

- среднее значение FWHM на датчике, без выбросов

- наклон, выраженный как разница между лучшим и худшим значением FWHM по 4 углам изображения, в скобках указан процент отклонения наклона (значение больше 10% указывает на проблему наклона)

- аберрация, выраженная разницей в FWHM между звездами в центре и звездами по краям сенсора

Если количество обнаруженных звезд невелико (<200), параметры обнаружения динамической PSF позволяют улучшить результаты путем настройки порога / радиуса. Фактически, чем больше количество звезд используется при расчете, тем надежнее результат анализа.

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

Чтобы результат был более качественным, предпочтительнее запустить эту команду на одиночном кадре, а не на результате стекирования. Поэтому идеальным вариантом будет использовать предварительно обработанное изображение (для цветных датчиков — просто дебайеризрванное). Более того, нарисованный четырехугольник имеет преувеличенные пропорции, чтобы быть более заметным на экране. Он не может точно соответствовать реальности.

Отображение диаграммы наклона

Совет

Помимо команды tilt -clear, диаграмму наклона можно очистить с помощью кнопки Удалить в диалоговом окне Динамическая PSF.

Командная строка Siril

    seqtilt sequencename

Аналогична команде TILT, но применяется последовательности sequencename. Как правило, она даёт лучшие результаты
Ссылка: tilt

### Аберрации

Этот инструмент создает мозаику 3x3 из центра изображения, углов и краев. Это позволяет легко сравнивать форму звезд в разных частях изображения. Доступ к этой функции можно получить в меню Инструменты ‣ Анализ изображений ‣ Аберрации. Настройки этого инструмента можно изменить, чтобы скорректировать размер панелей и окна, в настройках.

Окно инспектора аберраций, показывающее аберрации, созданные оптической системой, в звездах, расположенных по краям.

Это также очень хороший индикатор того, содержит ли изображение градиент: различия в яркости становятся очень заметными.

Окно инспектора аберраций, показывающее разницу в яркости.

Командная строка Siril

    inspector

Создаёт из текущего изображения мозаику из 9 изображений, отображающую углы и центр изображения для более тщательного изучения (только графический интерфейс)

## Фотометрия

Этот раздел знакомит вас со всеми утилитами, связанными с фотометрией, сначала объясняя принципы фотометрии, а затем то, как она используется в Siril.

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

Пример фотометрии экзопланенты в Siril.

### Принципы

Фотометрия — это наука об измерении света. Она занимается измерением потока или интенсивности света, излучаемого астрономическими объектами. В Siril фотометрия может использоваться для анализа кривой блеска переменных звёзд, транзитов экзопланет или затмений звёзд, а также для калибровки цвета в изображениях RGB.

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

Кольца апертурной фотометрии

Значения этих настроек можно изменить в разделе Фотометрия настроек или с помощью команды `setphot`. Апертура должна содержать все пиксели измеряемого объекта, кольцо, напротив, не должно содержать ни одного из его пикселей. По умолчанию апертура настраивается на цель с использованием удвоенного значения FWHM динамической PSF, но размер кольца фиксирован. Эти значения следует настраивать для заданного разрешения и тщательно проверять.

Примечание

Нижеследующий текст представляет собой сокращенную и измененную копию превосходной документации по программному обеспечению MuniPack, подготовленной Дэвидом Мотлом и выпущенной под лицензией GNU Free Documentation License, исходные тексты которой доступны здесь.

Измерение звёздной величины объекта

Сумма S пикселей в небольшой области A вокруг объекта представляет собой сумму чистой интенсивности объекта I и интенсивности фона \(B\cdot A\):

(1)\[ S = I + B\cdot A\]

Значения S и B получены из исходного кадра, площадь A определяется как площадь круга радиусом r, где r — размер апертуры в пикселях. Тогда легко вычислить чистую интенсивность I объекта в ADU:

(2)\[ I = S - B\cdot A\]

Предположив, что суммарная интенсивность I пропорциональна наблюдаемому потоку F, мы можем определить видимую величину m объекта, используя закон Погсона:

(3)\[ m = -2.5 \log_{10}\left(\frac{I}{I_0}\right)\]

Оценка ошибки измерения

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

(4)\[ \operatorname{Var}(f(X)) = \left(\frac{df}{dx}\right)^2 \operatorname{Var}(X)\]

Используя это общее правило, мы выводим два закона распространения ошибок. В первом случае неопределенное значение X умножается на константу a и сдвигается на постоянное смещение b. Этот закон можно использовать и в случае, когда происходит только умножение или только смещение.

(5)\[ \operatorname{Var}(aX + b) = a^2 \operatorname{Var}(X)\]

Второй закон определяет погрешность логарифма неопределенного значения X:

(6)\[ \operatorname{Var}(\log(\pm bX)) = \frac{\operatorname{Var}(X)}{\bar{X}^2}\]

Обратите внимание, что функция log здесь является натуральным логарифмом, в то время как формула Погсона (см. выше) включает логарифм по основанию 10. Следующее уравнение помогает нам справиться с этой разницей:

(7)\[ \log_b(x) = \frac{\log_k(x)}{\log_k(b)}\]

Объединив эти два уравнения, получаем:

(8)\[ \operatorname{Var}(\log_{10}(\pm bX)) = \frac{\operatorname{Var}(X)}{\bar{X}^2\,\log(10)^2}\]

Если у нас есть две некоррелированные неопределенные переменные X и Y, то дисперсия их суммы равна сумме их дисперсий, это уравнение известно как формула Бьенеме.

(9)\[ \operatorname{Var}(X + Y) = \operatorname{Var}(X) + \operatorname{Var}(Y)\]

Из этой формулы мы также можем вывести стандартную ошибку выборочного среднего. Если у нас есть N наблюдений случайной величины X с оценкой стандартной ошибки совокупности s на основе выборки, то стандартная ошибка выборочного среднего оценки среднего значения совокупности равна

(10)\[ SE_{\bar{X}} = \frac{s}{\sqrt{N}}\]

Вооружившись этими знаниями, мы можем начать думать об оценке стандартной ошибки яркости объекта. Мы рассмотрим следующие три источника неопределенности: (1) случайный шум внутри апертуры звезды, который включает в себя тепловой шум детектора, шум считывания усилителя сигнала и аналого-цифрового преобразователя, (2) пуассоновскую статистику подсчета дискретных событий (фотонов, падающих на детектор), которые происходят в течение фиксированного периода времени, и (3) погрешность оценки среднего уровня неба.

Для оценки среднего уровня неба мы использовали надёжный алгоритм среднего. Он позволяет оценить его выборочную дисперсию \(\sigma_{pxl}^2\). Это дисперсия на основе пикселей, и поскольку мы просуммировали A пикселей в апертуре звезды, применяется формула Бьенеме, сумма S является суммой A некоррелированных случайных величин, каждая из которых имеет дисперсию \(\sigma_{pxl}^2\). Для дисперсии первого источника ошибки мы получаем:

(11)\[ \sigma_1^2 = A\,\sigma_{pxl}^2\]

где A — количество точек в апертуре звезды.

Из статистики Пуассона мы можем вывести дисперсию, которая возникает из-за подсчета дискретных событий, фотонов, падающих на детектор, которые происходят в течение фиксированного периода времени, экспозиции. Нам снова понадобится использовать коэффициент усиления детектора (gain) p, чтобы преобразовать интенсивность из ADU в количество фотонов. Если измеренная чистая интенсивность объекта равна I, мы вычисляем среднее число фотонов \(\lambda\) как

(12)\[\lambda = I\,p\]

Примечание

Значение коэффициента усиления детектора (gain) p можно изменить в разделе Фотометрия настроек Siril

Тогда дисперсия интенсивности, обусловленная статистикой Пуассона, равна ее среднему значению.

(13)\[ \sigma_{ph}^2 = \operatorname{Var}(\operatorname{Pois}(\lambda)) = \lambda = I\,p\]

Дисперсия выражена в фотонах, нам нужно преобразовать ее обратно в ADU, чтобы получить дисперсию в единицах \(ADU^2\).

(14)\[ \sigma_2^2 = \frac{\sigma_{ph}^2}{p^2} = \frac{I\,p}{p^2} = \frac{I}{p}\]

Мы вывели уровень неба как выборочное среднее значение совокупности пикселей в кольце неба. Поскольку каждый пиксель в кольце имеет дисперсию \(\sigma_{pxl}^2\), дисперсия выборочного среднего равна

(15)\[ s_{sky}^2 = \frac{\sigma_{pxl}^2}{n_{sky}}\]

где \(n_{sky}\) — количество пикселей в кольце неба.

Из уравнения (9) мы вычисляем дисперсию интенсивности объекта как

(16)\[ \sigma_{ADU}^2 = \sigma_1^2 + \sigma_2^2 + A^2\,s_{sky}^2\]

Обратите внимание, что в уравнении (2) уровень неба умножается на A, поэтому нам нужно умножить его дисперсию на \(A^2\) - см. уравнение (16). Теперь мы используем закон распространения ошибки для логарифма, принятого в соответствии с формулой закона Погсона.

(17)\[ \sigma_{mag}^2 = \left(\frac{-2.5}{I\,\log(10)}\right)^2\,\sigma_{ADU}^2\]

Объединяя уравнения (17) и (16), мы можем вывести стандартную ошибку яркости объекта в звёздных величинах как

(18)\[ \sigma_{mag} = \frac{1.08574}{I}\,\sqrt{\sigma_{ADU}^2}\]

### Быстрая фотометрия

#### Photometry areas explained

As Siril only performs aperture photometry, it's important to understand and set the correct parameters.

The stars are modeled according to your choice: Gaussian or Moffat as decribed here in the Dynamic PSF chapter.

So a particular star on a particular image has its own FWHM.

PSF and photometry terms.

The aperture photometry process needs 3 radii:

1. The outer circle, defined by the outer radius (most often expressed in pixel).

2. The inner circle, defined by the inner radius (most often expressed in pixel). These 2 circles define the annulus which is used to measure the background (that is the sky level + additionnal noise).

3. The aperture circle, defined by the aperture radius. It can be expressed in pixel or as a ratio of the star FWHM (the automatic checkbox in the window). This area is used to measure the star signal added to a backgroud signal.

These 3 radii can be set and tweaked individually from the GUI Preferences ‣Photometry tab.

Radii settings.

Or via the command line interface:

Командная строка Siril

    setphot [-inner=20] [-outer=30] [-aperture=10] [-dyn_ratio=4.0] [-gain=2.3] [-min_val=0] [-max_val=60000]

Получает или устанавливает настройки фотометрии, используемые, главным образом, командой SEQPSF. Если указаны аргументы, то настройки обновляются. Ни один из аргументов не является обязательным, могут быть указаны любые. Значения по умолчанию отображаются в синтаксисе команды. После выполнения команды выводится текущая конфигурация.
Используется динамическое значение апертуры, если только её значение не установлено принудительно. В последнем случае используется значение aperture, указанное в настройках. При использовании динамической апертуры, радиус апертуры определяется указанным динамическим отношением («радиус/половина FWHM»).
Допустимые значения аргумента -dyn_ratio находятся в диапазоне [1.0, 5.0]. Значения за приделами этого диапазона будут автоматически установлены в фиксированное значение -aperture.
Усиление (gain) используется только если его значение недоступно из заголовка FITS
Ссылка: seqpsf

Совет

These radii settings apply to all aperture photometric processes: quick photometry and Light Curves. Check them carfully.

#### Фотометрия выбранных вручную объектов на одиночном снимке

Кнопка Быстрая фотометрия расположена на панели инструментов и используется для выполнения фотометрии звезд. Как правило, это самый простой способ выполнить фотометрию.

Совет

Если звезда находится в между нескольких звезд и инструмент не может указать на нужную звезду, альтернативным решением является выделить область вокруг звезды, а затем щёлкнуть правой кнопкой мыши и выбрать PSF. Также может быть интересно узнать, что `Ctrl`-щелчок средней кнопкой мыши (или `Cmd`-щелчок средней кнопкой мыши на MacOS) выделяет область рекомендуемого размера для PSF/фотометрии (на основе настроенного внешнего радиуса).

Совет

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

Командная строка Siril

    psf [channel]

Выполняет PSF (функция рассеяния точки) для выбранной звезды и отображает результат. Для автономной работы, выделение (в пикселях) может быть указано с помощью BOXSELECT. Если передан аргумент channel, это позволяет выбрать канал, в котором будет проанализирована звезда. Он может не указываться для монохромных изображений или, при запуске из графического интерфейса, с одним из активных каналов в отображении
Ссылка: boxselect

Нажмите на эту кнопку, чтобы изменить режим выбора области изображения, затем нажмите на звезду. Вычисляются фотометрические параметры и PSF (функция рассеяния точки) звезды, что дает множество деталей.

Для расчета PSF используются две модели, которые пользователь может выбрать в окне Динамическая PSF <Dynamic-PSF:Dynamic PSF> (:kbd:`Ctrl + `F6`).

Окно результата фотометрии.

Результат фотометрии и связанная с ним PSF отображаются в виде:

    PSF fit Result (Gaussian, monochrome channel):

    Centroid Coordinates:
                x0=5258.25px     09h25m34s J2000
                y0=2179.72px    +69°49'31" J2000

    Full Width Half Maximum:
                FWHMx=7.13"
                FWHMy=6.79"
                r=0.95
    Angle:
                82.87deg

    Background Value:
                B=0.000874

    Maximal Intensity:
                A=0.628204

    Magnitude (relative):
                m=-2.3948±0.0014

    Signal-to-noise ratio:
                SNR=28.9dB (Good)

    RMSE:
                RMSE=1.890e-03

1. Подгонка была выполнена с помощью функции Гаусса, поэтому никаких дополнительных параметров не требуется. Однако, если использовался метод Моффата, будет показан следующий результат:

       PSF fit Result (Moffat, beta=2.9, monochrome channel):

2. Координаты центроида дают координаты центроида в пикселях. Однако, как и в примере выше, если на изображении была установлена астрометрия, Siril дает координаты в Системе мировых координат (WCS) (RA и Dec).

3. Полуширина (FWHM) возвращается в угловых секундах, если масштаб изображения известен (получен из его заголовка или из GUI Данные об изображении ‣ Информация), если не известен, то в пикселях. Округлость r также вычисляется как отношение \(\frac{\text{FWHMy}}{\text{FWHMx}}\).

4. Угол — угол поворота оси X относительно координат центроида. Лежит в диапазоне \([-90°,+90°]\).

5. Значение фона — это локальный фон в диапазоне \([0,1]\) для 32-битных изображений и \([0,65535]\) для 16-битных изображений. Это подобранное значение, а не фон, вычисленный в кольце апертурной фотометрии.

6. Макс. интенсивность также является подогнанным значением и представляет амплитуду. Это максимальное значение функции подгонки, расположенное в координатах центроида.

7. Блеск (относительный) указан с учетом погрешности, является результатом фотометрии. Однако, если по каким-либо причинам расчет не может быть выполнен (насыщенные пиксели или черные пиксели), указывается погрешность, равная 9.999. В этом случае фотометрия помечается как недопустимая, но значение звёздной величины всё равно указывается, хотя его следует использовать с осторожностью.

8. В результатах приведена оценка отношения Сигнал/шум. Его значение рассчитывается по следующей формуле и указывается в `дБ <https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%86%D0%B8%D0%B1%D0%B5%D0%BB>"_:

   (1)\[ \text{SNR} = 10 \log_{10}\left(\frac{I}{N}\right)\]

   где I — чистая интенсивность, пропорциональная наблюдаемому потоку F, а N — сумма неопределенностей, выраженная в (18).

   Для простоты понимания он связан с 6 уровнями качества:

   > 1. Отлично (сигнал/шум > 40 дБ)

   > 2. Хорошо (сигнал/шум > 25 дБ)

   > 3. Удовлетворительно (сигнал/шум > 15 дБ)

   > 4. Мало (сигнал/шум > 10 дБ)

   > 5. Плохо (сигнал/шум > 0 дБ)

   > 6. Н/Д

   >    Последнее обозначение отображается, только если вычисление не удалось по той или иной причине.

9. Наконец, RMSE дает оценку качества подгонки. Чем ниже значение, тем лучше результат.

Когда изображение имеет астрономическое решение, кнопка Подробнее в нижней части окна ведет на страницу на сайте SIMBAD с информацией о выбранной звезде. Однако возможно, что страница не даст никакой дополнительной информации, если звезда отсутствует в базе данных SIMBAD.

Больше информации об анализируемой звезде. Нажмите на картинку, чтобы увеличить.

#### Быстрая фотометрия для последовательностей

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

Совет

В идеале последовательность должна быть выровнена без интерполяции, чтобы не изменять исходные данные. Например, используйте алгоритм Всё звёздное небо с включенной опцией Только сохранить преобразования в файл seq.

Примечание

Убедитесь, что внутренний и внешний радиусы фонового кольца подходят анализируемой звезде и последовательности. Некоторые изображения могут иметь гораздо большую FWHM, чем эталонное изображение, из-за условий неба или плохого отслеживания. Их можно изменить в настройках или с помощью команды `setphot`.

В конце процесса Siril автоматически откроет вкладку График, на которой будут показаны рассчитанные кривые. Можно щёлкнуть по нескольким звёздами, чтобы повторить вычисления, однако первая звезда сохраняет особый статус переменной, а остальные служат в качестве опорных. Это важно при расчёте кривой блеска.

В этом примере были проанализированы 3 звезды. Первая из них используется как переменная. Остальные являются опорными.

#### Вычисление истинных звёздных величин

Рассчитанная звездная величина имеет смысл только в том случае, если ее сравнить с другими значениями на линейном изображении. Действительно, приведенное значение совершенно не соответствует истинной видимой величине звезды, оно не откалибровано и также называется относительной звёздной величиной.

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

- Проведите быструю фотометрию известной звезды, указанная относительная звездная величина равна -2.428. Можно узнать фактическую видимую звездную величину, нажав на кнопку Подробнее, как описано выше. Допустим, найденное значение равно 11.68 (убедитесь, что вы используете значение, соответствующее спектральному диапазону изображения).

- После этого оставьте звезду выделенной, затем введите следующую команду в Siril

  >     setmag 11.68

  > Это выведет что-то вроде

  >     10:50:49: Relative magnitude: -2.428, True reduced magnitude: 11.680, Offset: 14.108

  > Командная строка Siril

  >     setmag magnitude

  > Калибрует звёздную величину, выбирая звезду и задавая известную видимую звёздную величину.
  > После этого все вычисления PSF будут возвращать откалиброванную видимую звёздную величину вместо видимой величины относительно значений ADU. Следует отметить, что для того, чтобы быть осмысленным, указанное значение звёздной величины должно совпадать с наблюдательным фильтром.
  > Чтобы сбросить константу звёздной величины см. UNSETMAG
  > Ссылки: psf, unsetmag

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

  Окно результатов фотометрии с установленной истинной звездной величиной.

- Чтобы сбросить вычисленное смещение, просто введите

  >     unsetmag

  > Командная строка Siril

  >     unsetmag

  > Сбрасывает калибровку блеска к 0. См. SETMAG
  > Ссылка: setmag

Совет

Для последовательностей существуют такие же команды. Это `seqsetmag` и `sequnsetmag`. Они используются таким же образом, когда загружена последовательность.

Командная строка Siril

    seqsetmag magnitude

Аналогична команде SETMAG, но для загруженной последовательности.
Эта команда применима только после выполнения команды SEQPSF или её графического аналога (выберете область вокруг звезды и запустите анализ PSF для последовательности, она появится на графиках).
Эта команда имеет ту же цель, что и SETMAG, но повторно вычисляет опорную звездную величину для каждого изображения последовательности, на котором была найдена опорная звезда.
При запуске команды, последняя проанализированная звезда будет рассматриваться как опорная. Отображение графика блеска перед вводом команды упрощает её понимание.
Чтобы сбросить смещение опорной звезды и звёздной величины, см. SEQUNSETMAG
Ссылки: setmag, seqpsf, psf, sequnsetmag

Командная строка Siril

    sequnsetmag

Сбрасывает калибровку звёздной величины и опорную звезду для последовательности. См. SEQSETMAG
Ссылка: seqsetmag

### Кривые блеска

In astronomy, a light curve is a graph of light intensity of a celestial object as a function of time, typically with the magnitude of light received on the y axis and with time on the x axis. Siril is able to generate such curves when analysing stars.

Выбор переменной и опорной (звезды сравнения) звёзд возможен двумя способами: вручную или используя список звёзд, полученных с помощью плагина экзопланет N.I.N.A.

#### Выбор звезды вручную

Start by switching to the Photometry Mode (click on ).

Select (right click) the variable star followed by the comparison stars you wants, as explained here.

Одна звезда — переменная (фиолетовая с буквой V), а 5 других используются в качестве опорных.

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

Убедитесь, что вы не выбрали переменные звезды в качестве опорных. Если астрометрия сделана на вашем изображении, не стесняйтесь использовать запрос к SIMBAD, чтобы узнать больше о звездах.

One handy way to check your comparison star is to display the 3 variable catalogues related to variable stars: GCVS, AAVSO-VSX and GAIA-varisum.

You have to set your own parameter (limit magnitude), but as an example, here are the commands:

    conesearch 18.0 -cat=gcvs
    conesearch 18.0 -cat=aavso_chart
    conesearch 18.0 -cat=varisum

Совет

It is preferable to choose references whose magnitude is close to that of the variable as explained later here.

После этого Siril автоматически загрузит вкладку График, как показано на рисунке ниже. Она показывает кривые FWHM, выраженные как функция от номера кадра.

Вкладка графика, показанная сразу после быстрой фотометрии последовательности.

What interests us in this part is to display the magnitude curves. Simply go to the drop-down menu and change FHWM to Magnitude. The magnitude curves of each analyzed star are then displayed. The submenus located in Photometry of the Tools menu are also sensitive.

##### Saving the selected comparison stars

When satisfied with the comparison stars set, one can to save them for future use in an Automated Light Curve process or just keep a trace for further documentation.

In the Tools menu, select Photometry ‣ Create Comparison Stars File....

The default Use the stars in the currently loaded image is selected.

Saving the hand selected stars in a .csv file.

The default output file name will be `V_SirilstarList_user.csv` but you can change it according to your convenience.

After you click OK, the file will be created and saved in your current working directory.

##### Кривая блеска (формат ETD)

The button Light Curve (ETD format), located in the menu Tools ‣ Photometry ‣ Create Output is dedicated to exoplanet transit data, producing a file in the format managed by the ETD website.

Switching to magnitude view make the Photometry output button sensitive.

Once the analysis is completed with a number of reference stars of at least 4 or 5 (the higher the number, the more accurate the result. However, a maximum number of 19 stars is allowed). Siril will ask for a file name to save the data in `csv` format, then the light curve will be displayed in a new window.

    #JD_UT (+ 2457403)
    # JD_UT V-C err
    2457403.260428 -1.01054 0.00468598
    2457403.261956 -1.00321 0.0046727
    2457403.263461 -1.00132 0.00540513
    2457403.264977 -0.994067 0.00505492
    2457403.266481 -1.00397 0.00465623
    2457403.267998 -1.00532 0.00467666
    ...

This is a 3-column file. The first 2 lines, starting with a "#", are comments. Then, the first column is the precise time of observation in Julian Date format. The second column is the magnitude of the variable (\(V\)), from which the sum of the instrumental magnitudes of the comparison stars has been subtracted. The third column represents magnitude uncertainties.

Теория

\(V\) is given by the following formula:

(1)\[ V=(V_\text{ins}-C_\text{ins}),\]

with

(2)\[ C_\text{ins}=-2.5\log_{10}\left(\frac{1}{N}\sum 10^{-0.4C_\text{ins},i} \right).\]

\(N\) is the total number of comparison stars and \(C_\text{ins},i\) is the instrumental magnitude of i-th star in the ensemble.

Кривая блеска транзита экзопланеты.

Совет

The light curve is drawn with Siril internal plotting tool. Refer to its documentation for more detailed instructions on its use.

##### AAVSO extended file format

Located in the menu Tools ‣ Photometry ‣ Create Output, the button, AAVSO file format, is dedicated to the AAVSO extended file format for variable stars. This opens a new dialog, which once completed, exports a csv file that can be uploaded to the dedicated website.

AAVSO parameters dialog. This dialog is used to fill the AAVSO extended file. More information are found at the AAVSO website

Теория

In Siril, the AAVSO file format exported uses the standardized magnitude defined as:

(3)\[ V_\text{std}=(V_\text{ins}-C_\text{ins})+C_\text{std}\]

where \(V_\text{ins}\) and \(C_\text{ins}\) are the instrumental magnitude of the variable and the comparison, respectively, and \(C_\text{std}\) is the chart magnitude for the comparison. You can specify \(C_\text{std}\) value in the AAVSO parameters dialog, before export.

An example of photometry is given below with the star Rx And. This star has great variability: its magnitude varies from 10.2 to 15.1 with a periodicity of about 13 days. After processing in Siril, taking a comparison star and a check star, we obtain the following AAVSO curve after data upload. The new data are on the far right (taken on November 24 and 25, 2023) and are shown in green.

A concrete example of variable star photometry (courtesy of H. Meunier).

#### Автоматический выбор звезды

##### Автоматическая кривая блеска

In order to automate the process of exoplanet transit analysis, lists of reference stars, also called comparison stars, could be obtained from star catalogues, with the appropriate criteria: similar magnitude, similar color (to not change their relative magnitude with atmospheric extinction at different elevations), proximity.

Программа захвата изображений N.I.N.A имеет плагин для работы с экзопланетами, который показывает такие звёзды и позволяет сохранить их список в файле CSV, например `csv file`:

    Type,Name,HFR,xPos,yPos,AvgBright,MaxBright,Background,Ra,Dec
    Target,HD 189733 b,2.6035068712769851,1992,1446,1640.3703703703704,39440,1917.0601851851852,300.18333333333328,22.709722222222222
    Var,SW Vul,2.8626145609282911,2972,276,26.14,2012,1905.445,300.02171,22.93517
    Var,DQ Vul,2.372369130017419,3006,1040,28.180555555555557,2048,1906.9027777777778,300.01254,22.78103
    Var,HQ Vul,3.8351043206620834,157,1690,49.393939393939391,2104,1905.7454545454545,300.55808,22.64067
    ...
    Comp1,ATO J300.3222+22.7056,2.4268101078425852,1367,1465,352,4496,1913.9504132231405,300.32229415181337,22.705681453738887
    Comp1,HD 189657,2.5343988482845927,2527,2808,23.814814814814813,2012,1906.5061728395062,300.08714683055996,22.4400393728
    ...
    Comp2,000-BJP-946,2.2738807043120195,1832,750,29.962962962962962,2024,1910.0648148148148,300.23741666666666,22.846999999999998
    Comp2,000-BJP-942,2.0977710589704297,2760,1572,31.083333333333332,2096,1908.6527777777778,300.025875,22.704777777777778
    ...

In the Tools menu, Siril can load this file using the Automated Light Curve... button. To use this, a few prerequisites must be met:

- the calibrated images sequence must be already loaded

- опорное изображение последовательности должно иметь астрономическое решение, чтобы убедиться, что мы что мы правильно определили звезды по их экваториальным координатам J2000

Далее все происходит автоматически, и в конце процесса отображается кривая блеска для выбранных опорных звёзд.

In this window, the used aperture and background areas are also reminded.

The Automatic Photometry window.

В следующем видео показана автоматизированная обработка кривой блеска со списком звёзд сравнения от NINA:

Cannot display video

##### Light curve through Command

It is also possible to automate or create the light curve remotely using the `light_curve` command. As blind operation needs as much automation as possible, the configuration of the background annulus radii can be automated with the `-autoring` argument: it runs a star detection in the reference image and multiplies the mean FWHM with a configurable factor to obtain the inner and outer radii that should work with the sequence.

Командная строка Siril

    light_curve sequencename channel [-autoring] { -at=x,y | -wcs=ra,dec } { -refat=x,y | -refwcs=ra,dec } ...
    light_curve sequencename channel [-autoring] -ninastars=file

Анализирует несколько звёзд с помощью апертурной фотометрии в последовательности изображений и создаёт для одной из них кривую блеска, откалиброванную по другим. Первые координаты относятся к звезде, свет которой будет нанесен на график, остальные — к звёздам сравнения. Координаты задаются в пикселях, если используется -at=, или в градусах, если используется -wcs=.
В качестве альтернативы, список целевых и опорных звёзд может быть передан в формате списка звёзд для плагина экзопланет NINA при помощи опции -ninastars=. Siril проверит, что все опорные звёзды могут быть использованы, прежде чем приступить к их фактическому использованию. Файл с данными (light_curve.dat) будет создан в текущей директории и Siril, при возможности, преобразует результат в изображение PNG
Радиусы колец для апертурной фотометрии могут быть установлены в настройках, или указаны как коэффициент от FWHM опорного изображения, если передан аргумент -autoring. Эти размеры в 4,2 и 6,3 раза превышают FWHM для внутреннего и внешнего радиусов соответственно.
Чтобы аналогичным образом установить размер радиуса апертуры, см. команду setphot.
См. также SEQPSF для операций с одиночной звездой
Ссылка: seqpsf

#### Generating a list of comparison stars

If you are not a NINA user, or you wish to build your own file and then use the Automated light curve feature , since Siril-1.3 you can generate a list of comparison stars using the new Siril tool.

##### List through GUI

This feature can be accessed via the Tools menu, Photometry ‣ Create Comparison Stars File..., once the current displayed image of the loaded sequence has been plate solved.

The Create Comparison Stars File... feature in the Tools menu.

A prerequisite is to load a representative, plate solved, image of the sequence.

Basic GUI for the Comparison Stars window.

- The Find comparison stars from catalogue request is mandatory in the use case.

- The first field must be the variable star name you plan to get the light curve of.

- The check button Narrow field of view enables to select a circle centered on the image.

- The second field is de delta_Vmag value. This is the maximum discrepancy from the target V magnitude (0.0 < delta_Vmag < 6.0). Default value is set to 3.0.

- The third field is the delta_BV value. This is the maximum discrepancy from the target BV index (0.0 < delta_BV < 0.7). Default value is set to 0.5.

- The fourth field is the max_emag value. This is the maximum allowed statistical error on Vamg (0.0 < max_emag < 0.1). Default value is set to 0.03.

- Then, you can choose the source of the comparison stars: from the APASS catalogue or NOMAD catalogue.

These two criteria help you to get comparison stars matching the target magnitude and color index.

The maximum number of comparison stars is internally set to 20.

After you click OK, a request is sent to the adequate server.

The answer is a list of stars, coming from the chosen catalogue, matching your criteria, displayed in red in your image and saved as a CSV file compatible with the NINA Exoplanet process.

> Rendering example after an APASS request.

> Rendering example after a NOMAD request.

Note: As the stars are red labelled, they belong to a temporary catalogue that shall be emptied after the Annotation button is toggled.

Совет

Additional information on choosing the comparison stars can be found in the DSLR Observing Manual - Version 1.4 page 67 from AAVSO.

##### List through command

A command also exists to perform the "find comparison stars" process. It allows you to refine your choice further more.

Командная строка Siril

    findcompstars star_name [-narrow|-wide] [-catalog={nomad|apass}] [-dvmag=3] [-dbv=0.5] [-emag=0.03] [-out=nina_file.csv]

Автоматически находит звёзды сравнения в поле загруженного изображения с астрономическим решением для фотометрического анализа кривой блеска звезды согласно
- the provided name of the star
- the field of view of the image, reduced to a diameter of its height if -narrow is passed, avoiding stars in the corners
- the chosen catalog (APASS by default), can be changed with -catalog={NOMAD|APASS}
- the difference in visual magnitude from the variable star, in the range [0, 6] with a default of 3, changed with -dvmag=
- the difference in color with the variable star, in the range [0.0, 0.7] of their B-V indices with a default of 0.5, changed with -dbv=
- the maximum allowed error on Vmag in the range [0.0, 0.1] with a default of 0.03, changed with -emag=.
При передаче необязательного опции -out=, этот список может быть сохранён как файл CSV, совместимый со списком звёзд сравнения NINA. Если указанное название является специальным значением auto, оно генерируется с использованием входящих параметров
См. также LIGHT_CURVE
Ссылка: light_curve

- `-narrow` limits the field of search to a circle inscribed and centred in your image. This avoids choosing stars in a potentially distorted part of the image.

  View of the `-narrow` limited field of search. (the yellow circle is for illustration purposes only)

- Without the `-narrow` option, comparison stars are searched across the entire picture. It can be useful in case of a poorly populated field of view.

  View of the wider field of search.

- `[-catalog={nomad|apass}]` allows you to choose between the NOMAD catalogue and the APASS catalogue (by default).

Совет

The displayed names will be reduced to simple numbers, sorted by increasing distance wrt. image center These labels are only for information.

- `[-dvmag=3]`, `[-dbv=0.5]` and `[-max_emag=0.03]` stand respectively for delta_Vmag, delta_BV and max_emag criteria as explained previously.

- `[-out=nina_file.csv]` sets the name of the CSV file.

Совет

APASS stands for AAVSO Photometric All Sky Survey. Additional information can be found here.

The AAVSO Photometric All-Sky Survey (APASS DR9) provides calibrated magnitudes in the range 7.0 < Vmag < 17.0 for the entire sky, in the BVugriZsY bandpasses.

The photometry is accurate to about 0.02 mag, and the astrometry is accurate to about 0.15 arcsec (see Using APASS and 2GSS for studying variable stars).

##### Discarding potential variable stars

Among the returned stars from either APASS or NOMAD, a few of them can be identified as variable stars. If one (or more) of these stars are selected as comparison stars, their flux variation can affect the final result for the variable star under study.

So the automatic comparison star list feature of Siril is able to find these outlier stars and discard them accordingly.

Three main catalogues can be used to detect variable stars:

- The General Catalogue of Variable Stars (GCVS). Provides more than 89000 variable stars.

- The AAVSO VSX, it lists all stars that have an entry in the AAVSO International Variable Star Index.

- The GAIA varisum GAIA varisum, a sub table of GAIA DR3 listing "potential variable objects".

These 3 catalogues can be used one by one or all at the same time during the discarding process. But you have to be aware that each selected catalogue results in an additional online request.

Basically, only the GAIA Varisum is selected. However, the user can still make his own choice.

The used catalogues are managed with a Siril variable, `photometry.discard_var_catalogues` according to the following table:

Discard table to properly set `photometry.discard_var_catalogues`.
Значение переменной | Binary | GCVS | AAVSO VSX | GAIA Varisum
--- | --- | --- | --- | ---
0 | 0000 |  |  |
1 | 0001 | ✔ |  |
2 | 0010 |  | ✔ |
3 | 0011 | ✔ | ✔ |
4 | 0100 |  |  | ✔
5 | 0101 | ✔ |  | ✔
6 | 0110 |  | ✔ | ✔
7 | 0111 | ✔ | ✔ | ✔

(It can be seen in the previous table that the variable can be written in binary format, with `bit#0` as GCVS, `bit#1` as VSX and `bit#2` as GAIA-Varisum).

One can read this variable with the command:

    get photometry.discard_var_catalogues

One can assign another value to the variable with the command:

    set photometry.discard_var_catalogues=4

Например, с помощью команды:

    set photometry.discard_var_catalogues=7

You will have the 3 catalogues checked and the consol will display:

    Contacting server
    -> 5 variable stars found within the image from AAVSO Variable stars
    Contacting server
    -> 1 variable stars found within the image from GCVS
    Contacting server
    -> 8 variable stars found within the image from Gaia DR3 Variability

##### Output file structure

While using the `findcompstars` command and setting `-out=auto` or the GUI Comparison stars button, one will get a file name with the following structure:

`[star_name]_SirilstarList_[delta_Vmag]_[delta_BV]_[max_emag]_[catalogue].csv`

Additional information is also supplied (as comments) in the file header:

    # Sorted comparison stars for KELT-16 from APASS according to the following criteria
    # Siril: 12 stars, dVmag 1.00, dBV 0.30, max e_mag 0.03
    type,name,ra,dec,mag
    Target,KELT-16,314.268494,31.661009,11.72
    Comp1,1,314.256578,31.660406,12.307
    Comp1,2,314.317434,31.754368,12.431
    Comp1,3,314.305316,31.546814,11.682
    Comp1,4,314.263680,31.541927,12.084
    Comp1,5,314.465451,31.626255,12.084
    Comp1,6,314.459388,31.596876,11.979
    Comp1,7,314.452316,31.746360,11.504
    Comp1,8,314.437181,31.827260,11.24
    Comp1,9,314.314246,31.879192,12.313
    Comp1,10,314.431752,31.839763,10.88
    Comp1,11,314.006569,31.666214,11.896
    Comp1,12,314.304606,31.925116,11.713

## Построение графиков

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

### Регистрация

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

Вкладка График после завершения регистрации всего звёздного неба.

Вы можете также построить график одного параметра по отношению к другому. В выпадающем списке доступны:

- FWHM: Полная ширина на уровне половины высоты (полуширина), один из наиболее частых критериев для оценки изображения глубокого неба.

- Округлость: Округлость r вычисляется как соотношение \(\frac{\text{FWHMy}}{\text{FWHMx}}\).

- wFWHM: Это улучшение простой FWHM. Значение FWHM взвешивается по количеству звёзд на изображении. При одинаковом измерении FWHM, изображение с бо́льшим числом звёзд будут иметь лучшую wFHWM, чем изображение с меньшим числом звёзд. Это позволяет исключить гораздо менее информативные изображения, сравнивая количество обнаруженных звёзд с таковым на опорном изображении.

- Фон: Среднее значение фона неба.

- Кол-во звёзд: Количество звёзд, использованных для регистрации.

- Позиция по X: сдвиг по оси X относительно опорного изображения.

- Позиция по Y: сдвиг по оси Y относительно опорного изображения.

- Качество: Это число в диапазоне [0, 1], которое определяет качество изображений, обработанных любым алгоритмом регистрации планет.

Значения округлости против FWHM отображаются в виде диаграммы рассеяния. Наведите курсор на различные точки данных, чтобы увидеть значения X и Y вместе с соответствующим номером кадра.

Различные виды графиков, полученные с использованием одного и того же набора изображений.

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

Щелкните правой кнопкой мыши по точке данных, чтобы исключить или загрузить в предварительный просмотр соответствующий ей кадр

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

Щелкните правой кнопкой мыши по выделенному фрагменту, чтобы выбрать/отменить выбор или увеличить масштаб

### Фотометрия

Чтобы дополнить сортировку и фильтрацию кадров в последовательности, вы также можете выполнить PSF по звезде для всей последовательности. Процедура подробно описана на странице посвященной :ref: фотометрии <photometry/quickphotometry:Quick photometry on sequences>. После этого пункт "фотометрия" в первом раскрывающемся списке становится активным и выбирается автоматически. В другом раскрывающемся списке содержатся следующие пункты:

- FWHM: Полная ширина на половине высоты, как определено выше.

- Округлость: Округлость r вычисляется как соотношение \(\frac{\text{FWHMy}}{\text{FWHMx}}\).

- Амплитуда: максимальное значение подобранной функции, расположенное в координатах центра тяжести.

- Звездная величина: Относительная звездная величина анализируемой звезды.

- Фон: Среднее значение фона неба, полученное в внутри окружности.

- Позиция по X: сдвиг по оси X относительно опорного изображения.

- Позиция по Y: сдвиг по оси Y относительно опорного изображения.

- SNR: Оценка отношения сигнал/шум.

В фотометрии, в отличие от регистрации, невозможно изменить ось X. Можно использовать только количество изображений (или юлианский день).

- Кнопка Очистить графики совмещает меню Очистить все and Очистить последнюю, позволяющие очистить все фотометрические кривые или только последнюю из построенных.

#### Меню инструментов

Начиная с версии Siril 1.4, многие опции были перенесены в меню Инструменты, расположенное справа от меню Обработка. Это меню будет подробно описано в разделе Фотометрия .

### Общие параметры

Нажав на кнопку на кнопку Результат можно создать несколько итоговых файлов:

- Опция Показать данные на графике Siril позволяет отобразить всё, что показано на вкладке «График» в новом окне с графиком Siril.

- Кнопка Экспорт в CSV экспортирует отображаемый график в файл CSV.

Кнопка Отображение используется для изменения единиц измерения по осям. В зависимости от доступных данных, в выпадающем меню расположены несколько кнопок:

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

- Только в случае фотометрии (так что это не совсем общие настройки), также можно выбрать Юлианская дата в качестве единицы измерения по оси X.

Совет

Наведите курсор на слова «Наведите для показа легенды» чтобы появилось описание легенды графика.

- Фиолетовая кривая: фактический график согласно селекторам X и Y.

- Зелёная кривая: отсортированные значения в порядке уменьшения качества.

- Окружность: значение опорного кадра.

- Крест: значение загруженного в настоящий момент кадра.

### Взаимодействие с графиком

Ниже приведён список возможных способов взаимодействия с окном графика:

- Нажатие левой кнопкой на ползунке: перемещает ближайшую красную точку на место нажатия

- Двойное нажатие на ползунок: сбрасывает эту ось

- Правый клик + перетаскивание на полосе прокрутки: изменение масштаба по соответствующей оси

- Нажатие на левую кнопку + перетаскивание в области графика: создаёт выделение

- Нажатие на левую кнопку + перетаскивание на краю выделения: изменяет размер выделения

- Двойное нажатие в области графика: сбрасывает увеличение по двум осям

- Нажатие на правую кнопку при активном выделении: отображает меню для: масштаба по выделению/ сохранения выбранных точек/ исключения выбранных точек

- Нажатие на левую кнопку при активном выделении: удаляет выделение

## Статистика

This is a documentation for Siril's statistics, given by the graphical user interface (GUI) from the menu Tools ‣ Image Analysis) then selecting Statistics..., or using the stat command. Note that when using the GUI, it is possible to draw a selection in the loaded image and that when doing so, the statistics are computed on the pixels of region.

Опция На канал CFA позволяет рассчитывать статистику для каждого канала R, G и B в CFA-изображении, даже если изображение не было дебайеризовано.

Совет

When a CFA image is loaded, the selection will be constrained to a minimum size of 2x2 for Bayer images and 3x3 for X-Trans images so that there is at least one pixel in each Bayer channel within the selection, to ensure that it is possible to generate statistics.

Многие из этих значений являются мерами дисперсии случайной величины.

Одноканальная статистика для CFA-изображения. Приведенные значения не совсем актуальны в данном случае.

Трёхканальная статистика для CFA-изображения.

Командная строка Siril

    stat [-cfa] [main]

Возвращает статистику текущего изображения. По умолчанию выводится базовая статистика; если передан аргумент main, то выводится расширенная статистика. При наличии выделения, выводится статистика для выделенной области. Если передан аргумент -cfa и изображение является изображением CFA, статистика выводится для каждого фильтра

### Статистические показатели для оценки

#### Среднее

Среднее арифметическое, также известное как среднее. Оно вычисляется путем деления суммы значений пикселей на количество пикселей в канале изображения.

#### Медиана

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

#### Сигма (σ)

Так же известная как стандартное отклонение, обозначается \(\sigma\), это мера дисперсии значений пикселей изображения, основанная на квадратичных отклонениях от среднего. Значение сигмы для области изображения, содержащей только фон, будет представлять шум изображения.

#### Шум фона

This estimator is available by the GUI from the menu Tools ‣ Image Analysis ‣ Noise estimation, and is also displayed at the end of stacking.

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

Командная строка Siril

    bgnoise

Возвращает значение уровня фонового шума изображения, загруженного в память

#### Абсол. откл.

Так же известное как `среднее абсолютное отклонение <https://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5>`_или среднее абсолютное отклонение. Чтобы понять, что такое среднее отклонение, нужно понять, что такое термин абсолютное отклонение. Абсолютное отклонение — это расстояние между каждым значением в наборе данных и средним значением этого набора данных (в данном случае) или медианой (для Медианное абсолютного отклонения ниже). На основе всех этих абсолютных отклонений определяется среднее значение, и вычисляется среднее отклонение. Для упрощения, если стандартное отклонение — это квадрат отклонения от среднего значения, то это его линейная версия.

#### MAD

Медианное абсолютное отклонение — это надежная мера того, насколько разбросан набор данных. Абсолютное отклонение и стандартное отклонение также являются мерами дисперсии, но на них больше влияют чрезвычайно высокие или чрезвычайно низкие значения. Оно похоже на абсолютное отклонение, описанное выше, но измеряется относительно медианы, а не среднего значения.

#### BWMV

Двухвесовая средняя дисперсия (BiWeighted MidVarianve) — это еще один инструмент для измерения дисперсии набора данных, который даже более устойчив к выбросам, чем другие, упомянутые выше. Он отбрасывает точки данных, расположенные слишком далеко от медианы, и вычисляет взвешенную дисперсию, вес которой уменьшается по мере удаления точек данных от медианы. Оценкой дисперсии является квадратный корень (обозначенный как :math: sqrt{B WMV}) из этого значения.

#### Сдвиг и масштаб

Эти параметры, часто в разговорной речи называемые масштабом и смещением, не отображаются в пользовательских интерфейсах, а вычисляются внутри Siril. Чтобы выровнять гистограммы разных изображений для нормализации перед наложением, необходимо вычислить, где они находятся с точки зрения уровня и насколько они широки с точки зрения разброса. В качестве достоверной оценку местоположения можно было бы использовать медиану, в то время как медианное абсолютное отклонение (MAD) или \(\sqrt{BWMV}\) могут использоваться для масштаба. Однако для обеспечения большей надежности измерениям пиксели, удаленные от медианы более чем на \(6\times \text{MAD}\), отбрасываются. В этом обрезанном наборе данных медиана и \(\sqrt{BWMV}\) пересчитываются и используются в качестве оценок местоположения и масштаба соответственно. Они вычисляются относительно эталонного изображения последовательности в Siril.

## Siril for Scientists

For years Siril has been a great tool for amateur astronomers. With its capability to produce light curves, query online catalogues, run operations on image sequences, and many other recent additions, it has also become a great tool for scientific analysis. This page is a quick reference for scientists who want to learn quickly about Siril, in form of a list of Q&A.

### How can Siril help me with my research?

Siril's default file format is FITS files, containing either a single image or several (see the FITS cubes question below). Siril has always been developed with data accuracy in mind. Displaying an image can be done in various ways without destroying input data.

Siril has many tools that can help scientific observations: star detection, elaborate plate solving, registration of an image sequence using stars or using astrometric solutions, aperture photometry with magnitude calibration using catalogues, automated light curve creation, object lookup from online catalogues (stars, galaxies, solar system objects). Many of those operations can be done from the GUI or from text inputs (commands or scripts), some operations produce comma-separated values (CSV) files for results, some can produce graphs directly in Siril.

### Which version of Siril should I install?

Siril follows an even/odd versioning system, e.g. 1.2.x was a stable series whereas 1.3.x was a development series. For scientific use it is recommended to install the latest version of the latest stable series: download links can be found at siril.org. Beta versions, those distributed on the website, can also be considered quite stable for general use.

### How can I get in touch with the developers?

The official forum is on pixls.us. If you want to contact us privately you can send us a direct message there or on gitlab. Our email addresses can also be found in the AUTHORS file. If you speak French you can find us on Astrosurf or Webastro. Feel free to reach out if you have specific needs for your research.

### How accurate are Siril results?

Many algorithms in Siril rely on peer-reviewed published algorithms which can be found in the documentation page of the features. We are testing Siril often, sometimes comparing results with other tools, but we don't have the resources to have a automated tests on all pieces of the software, so data comes with no warranty. We know some things could be improved, for example error computation on magnitudes, which depend on camera gain, not always available in the FITS header.

Astrometric data is as good as any and supports the WCS FITS convention.

### How can I cite Siril?

If you use Siril in your research, please cite:

> Richard, C., et al. (2024). Siril: An Advanced Tool for Astronomical Image Processing. Journal of Open Source Software, 9(102), 7242. https://doi.org/10.21105/joss.07242

BibTeX format:

    @article{Richard2024,
      title={Siril: An Advanced Tool for Astronomical Image Processing},
      author={Richard, Cyril and others},
      journal={Journal of Open Source Software},
      volume={9},
      number={102},
      pages={7242},
      year={2024},
      publisher={The Open Journal},
      doi={10.21105/joss.07242}
    }

### How can I open FITS cubes with Siril?

FITS cubes come in two shapes for Siril:

- those that contain several images of the same size and format, we call those FITS sequences or fitseq for short, and use them as an alternate file representation of image sequences;

- those that contain several images of changing properties, or even tables and other data formats. Siril will only read image data, but is able to work on each image of such FITS cubes if an option is enabled in settings (named Allow FITS cubes to have images of different sizes in FITS Options). Most sequence operations will not be available on this kind of file.

Siril can also extract images from FITS cubes to individual FITS files or to other formats if needed.

### How do I measure FWHM in an image?

Siril can give you the FWHM of a single star if you draw a selection around it in the GUI, then right click and select PSF, or for the stars in an area of the image or the full image. You can also use the quick PSF button in the main toolbar.

More generally: open your image and open the Dynamic PSF tool (from the Tools menu). From there clicking on the first button will start the star detection, within the selected area if you drew one. Clicking on the Sigma icon will give mean values for all detected stars. See also the next question.

### How do I use star detection (source extraction)?

Siril's source extractor can be found in the GUI in the Dynamic PSF tool, it is also available as the findstar command. It is normally only able to detect stars and will struggle if two stars are too close from each other, or if stars have asymmetrical or very non-Gaussian shapes, but there are many settings that you could adjust to your needs, including brightness, amplitude, roundness thresholds or star shape (Gaussian or Moffat).

The GUI will display the found stars by clicking on the button on the left of the lower bar, giving quick feedback on the detection settings. The GUI and the command can produce a CSV file that can then be used to check extracted sources in an image or in a sequence of images (command only).

The list of stars can be sorted by property, clicking on a row will highlight the star in the image.

### What astrometry tools are available?

Siril has now a very high quality astrometric solver (plate solver) and tools that interact with the astrometric solution. All is based on the FITS WCS convention and on WCSLIB. Here is a list of tools related to astrometry:

- Plate solving with local Gaia DR3 catalogue extract or with remote full Gaia DR3, PPMXL or APASS.

- Display stars from the catalogue on image, to have a visual feedback of the accuracy of the astrometric solution, using the conesearch command.

- Query online catalogues for an object using its name and the image time.

- Get centroid equatorial J2000 coordinates for any detected object.

- Show a mark on image for user provided J2000 coordinates (show command).

- Align images on the celestial grid, possibly creating a mosaic (an image bigger than the original).

- Correct for geometrical aberration of images, using a master correction image based on astrometry.

### Can it handle solar system objects?

Siril can query IMCCE services to find a solar system object coordinates and display the expected position on images. It can also display the known solar system objects in an image. Observer location will be required for those uses and can be configured with MPC codes in the settings. See the annotations documentation page.

Soon, Siril will be able to do synthetic tracking of known solar system objects, making them appear on stacking if they are too faint to be seen on single exposures.

But Siril is not made to process closeup view of planets with multi-point stacking like other tools such as PlanetarySystemStacker (PSS) does.

### Can Siril work with spectra?

Siril was not designed to handle spectrometry data. An Создание профиля интенсивности tool that shows the graph of pixel intensities can be used for preview of a spectrum. FITS tables are not displayed in any way.

### Can Siril replace IRAF?

Some features will be missing, many will be much more easy to do with Siril. We don't yet have a list.

Siril has been developed since 2012 and we don't plan to stop anytime soon. There are 3 active developers and thousands of amateur users.

## Scripting

This section explains the different scripting and automation methods available in Siril.

Совет

Python scripting was introduced in the 1.3.5 development version. It is currently marked as EXPERIMENTAL. This doesn't mean it will eat your data: the interface itself is robust and has been tested through development: the present experimental nature of it is more to do with the fact that we don't yet know what users will do with this new capability and whether there may be issues or limitations that we have not foreseen, perhaps due to the constraints of packaging or consistency across the different operating systems.

Please try it out, either as a user by using scripts published on the scripts repository, or as a script writer. We welcome all your feedback and will aim to refine the interface throughout the 1.4 stable series and 1.5 development series.

If you want to debug your Python scripts at runtime, tick the box next to Enable Python debug mode. A tutorial detailing the steps to attach to the Python process is shown in Siril tutorial page.

Scripts menu

### Сценарии Siril

Siril Script Files are the original format for scripting Siril and remain a simple and useful way of automating a fixed set of tasks.

#### Siril Scripts

Siril scripts are a list of commands, either from the graphical user interface or from the command line interface. In general, commands that modify a single image work on the currently loaded image, so the use of the load command is required in scripts, and commands that work on a sequence of images take the name of the sequence as argument. If files are not named in a way that Siril detects as a sequence, the command convert will help.

Совет

The `Space` character is the delimiter between arguments. If you need to have spaces inside the arguments you can use the quote or double quote, just like in a shell.

Команды можно вводить в командной строке в нижней части главного окна Siril. Другой способ — поместить команды в файл и запустить его в виде сценария. Чтобы запустить сценарий из графического интерфейса пользователя, добавьте его в одну из директорий, указанных в Настройках на вкладке Сценарии, или в командной строке Siril, используя символ @ следующим образом:

    @file_name

Some commands (calibrate, stack, and all save commands) can use file names containing variables coming from the FITS header. The format of the expression is explained in details here and can be tested using the parse command.

#### Использование сценариев

There are four ways to run a script:

- из командной строки Siril, используя ключевое слово `@`, за которым следует имя сценария в текущем рабочем каталоге,

- из графического интерфейса пользователя используя меню Сценарии,

- from the graphical user interface, using the Script Editor dialog which can be used to write, save and execute your own scripts or to open and edit an existing script file,

- из командной строки операционной системы (приложение siril-cli), используя аргумент `-s`, за которым следует путь к сценарию (для дополнительной информации см. руководство).

When a script is running, the user interface becomes non-interactive with the exception of the Stop button.

#### Заполнение списка сценариев

При установке Siril по умолчанию автоматически устанавливается ряд сценариев. Эти встроенные сценарии — официальные сценарии. Они разрабатываются командой разработчиков и будут гарантированно работать: они предназначены для определённых случаев использования.

##### Добавление директорий пользовательских сценариев

You can, of course, write your own and tell Siril where to find them:

> - Нажмите на значок Главное меню, а затем на Настройки (или нажмите `Ctrl`+`P`).

> - Нажмите на вкладку :guilabel: "Сценарии".

> - Скопируйте в новую строку путь к месту хранения ваших сценариев (при необходимости создайте директорию на своем компьютере или укажите на существующую).

> - Нажмите на значок Обновить чуть ниже.

> - Нажмите Применить.

У вас может быть столько пользовательских директорий, сколько вы пожелаете, просто добавьте их в список.

Если вы только что добавили новый скрипт в одну из директорий и хотите обновить меню, введите команду reloadscripts в командной строке или откройте раздел Настройки ‣ Сценарии и используйте значок Обновить. Это просканирует все директории из списка и найдет в них все файлы с расширением *.ssf.

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

Настоятельно рекомендуется не хранить пользовательские скрипты в той же директории, что и встроенные скрипты Siril. В Windows они могут быть удалены при установке новой версии или помешать корректному удалению. В MacOS это сломает пакет и вообще не позволит использовать Siri.

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

##### Adding Scripts from the git Repository

Siril supports a git repository at https://gitlab.com/free-astro/siril-scripts This is set to auto update at startup by default, so you will always have access to the latest scripts (auto update can be disabled in preferences). To add scripts from the repository to the Scripts menu, pick the ones you want from the list available in Preferences ‣ Scripts or via the Scripts -> Get Scripts menu entry. See below for full details of the git repository.

##### Run Script Files

Script files can also be run directly from the hard disk using the Run Script Files... script menu entry. The filechooser shown by this menu defaults to showing recently used scripts, but you can navigate to choose scripts from anywhere accessible on the filesystem.

##### Устранение проблем

For different reasons, it is possible that the Scripts menu is empty. This means that the scripts have not been found. If this is the case, please use the following procedure.

- Нажмите на значок Главное меню, а затем на Настройки.

- Нажмите на вкладку :guilabel: "Сценарии".

- Удалите все строки в поле Директории хранения сценариев, как показано на рисунке ниже.

- If you are using the scripts repository, deselect the Fetch and update scripts... check box, then reselect it and select the scripts you want to use.

- Нажмите Применить.

- Закрыть и перезапустить Siril.

Страница настроек сценариев. Сценарии загружаются по путям, указанным в разделе Директории хранения сценариев.

#### Встроенные сценарии

Все встроенные сценарии требуют соблюдения следующей файловой структуры:

- Mono_Preprocessing.ssf: сценарий для предварительной обработки монохромных изображений, полученных с помощью DSLR или астрокамер. Использует кадры тока считывания (biases), кадры плоского поля (flats) и кадры темнового тока (darks), выравнивает и складывает изображения (lights). Чтобы использовать этот сценарий: поместите ваши файлы (RAW или FITs) в директории с именами `lights`, `darks`, `flats` и `biases` (в текущей рабочей директории Siril), затем запустите сценарий.

- OSC_Preprocessing.ssf: такой же сценарий, что и выше, но для цветных (One-Shot Color (OSC) DSLR или астрокамер. Чтобы использовать этот сценарий: поместите ваши файлы (RAW или FITS) в директории с именами `lights`, `darks`, `flats` и `biases` (в текущей рабочей директории Siril), затем запустите сценарий.

- OSC_Preprocessing_BayerDrizzle.ssf: same script as above but using Bayer Drizzle to retrieve colors. To use it: put your files (RAW or FITS) in the folders named `lights`, `darks`, `flats` and `biases` (in the Siril default working folder), then run the script. A large amount of data is strongly recommended to take advantage of the benefits of Bayer Drizzle and avoid unsightly artifacts.

- OSC_Extract_Ha.ssf: сценарий для предварительной обработки изображений, полученных с использованием цветных (OSC) DSLR или астрокамер, при использовании двухполосного или Ha фильтра. Этот скрипт извлекает Ha-слой цветного изображения. Чтобы использовать этот сценарий: поместите ваши файлы (RAW или FITs) в директории с именами `lights`, `darks`, `flats` и `biases` (в текущей рабочей директории Siril), затем запустите сценарий.

- OSC_Extract_HaOIII.ssf: такой же сценарий, что и выше, но извлекает из цветного изображения Ha и OIII слои. Чтобы использовать этот сценарий: поместите ваши файлы (RAW или FITs) в директории с именами `lights`, `darks`, `flats` и `biases` (в текущей рабочей директории Siril), затем запустите сценарий. Вы также можете использовать меню Обработка, затем Совмещение в RGB и поместить результат Ha в красный канал, а результат OIII в зелёный и синий слои, чтобы получить изображение в палитре HOO.

  Совет

  Для владельцев SII или двухполосных SII-OIII фильтров применяются те же сценарии. Фактически, для цветного датчика невозможно увидеть разницу между Ha (656,3 нм) и SII (671,6 нм), оба из которых красные.

- RGB_Composition.ssf: Этот сценарий, добавленный в версии 1.2, делает глобальное выравнивание монохромных изображений, кадрирует их до области, общей для всех изображений, и берет первые три изображения для создания цветного изображения. Входные изображения должны быть помещены в отдельную директорию и названы `R.fit` (или с настроенным расширением), `G.fit` и `B.fit`. В результате будет получен файл с названием `rgb.fit`. Обязательно удаляйте директорию `process` перед каждым запуском сценария.

#### Editing Scripts

Some .ssf script files contain instructions to edit them, for example the Seestar_Preprocessing script instructs the user that if they find too many images are discarded before stacking, they should "increase the value after -filter-round= in the seqapplyreg command, line 47".

The scripts repository directory is not intended as a user-editable directory: at each update it is forcibly reset to match the state of the remote, so files saved in it are not safe. So how to make such changes?

Find the script in the list in Preferences->Scripts and double click it. This will open it in the Script Editor so that you can make the necessary changes and save it in a suitable location (one of the Scripts Storage Directories set at the top of Preferences->Scripts is ideal, but it is recommended to give it a different name so you can recognise it in your scripts menu).

Совет

You can also double click scripts in the list simply in order to examine the code.

Язык сценариев

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

#### Получение дополнительных сценариев

Существует целая куча сценариев, которые не поставляются с установкой Siril. Однако мы создали для них репозиторий на gitlab. Каждый может зарегистрироваться и предложить новые сценарии. Мы примем их в зависимости от их актуальности: используемый язык должен быть английским.

Siril features git integration which means that it can download and synchronise a local copy of the repository. You can enable this by selecting the Enable use of the siril-scripts online repository check box in the Scripts tab of the Preferences dialog.

Selecting the check box will fetch scripts from the repository and show a list of the available scripts, categorised as either "Preprocessing" or "Processing" scripts. As there may eventually be a substantial number of scripts in the repository you need to select the ones you wish to have available in the Scripts menu. Click the check box next to the name of each script you wish to use and then press the Apply button.

The contents of any script can be viewed by double-clicking on its row in the list. It is always useful to do this to check what requirements the script may have in terms of pre-prepared directories. If you wish to modify a script, you can also use this to copy the script and paste it into your favourite text editor software. (You will need to save it in one of your local script directories.)

When the scripts repository is enabled, Siril can synchronise the local repository with the remote, either manually or automatically. If automatic updates are selected, updating will take place at application startup. Manual update is also available using the Manual update button. This will fetch any changes from the online repository and will show a list of the commit messages describing the changes, which the user must confirm to apply the update.

Если вы не хотите использовать интеграцию с git, вы можете использовать ссылку ниже для просмотра и загрузки сценариев вручную. В этом случае необходимо поместить скачанный скрипт в директорию, известную Siril: https://gitlab.com/free-astro/siril-scripts.

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

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

#### Написание собственных сценариев

Файл сценария — это простой текстовый файл с расширением *.ssf.

Writing a script is not difficult. It is a succession of calls to commands that will be executed sequentially. Each command must be executed without returning an error, otherwise the script stops. It is therefore strongly recommended to use the list of commands to know the syntax and the number of parameters needed. Also, some commands are not scriptable and are indicated with the icon. It can also be useful to test each script line in the Siril command line. You may wish to read the provided scripts or view (or even modify) scripts from the repository as examples.

Each script should contain a comment header containing information about the script. An example of this is provided below.

    ############################################
    #
    # Script for Siril 1.0
    # July 2020
    # (C) Cyril Richard
    # Mono_Preprocessing_WithoutDark v1.0
    #
    ########### PREPROCESSING SCRIPT ###########
    #
    # Script for mono camera preprocessing
    #
    # Needs 3 sets of RAW images in the working
    # directory, within 4 directories:
    #   biases/
    #   flats/
    #   lights/
    #
    ############################################

Below the comment header the first command should be requires. This specifies the minimum version of Siril required to use the script. For example:

    requires 0.99.4

After this you can start the actual script. Commands go on a line of their own, and you can comment your script using lines starting with #.

Each new script created in this way should be placed in a user-defined folder for Siril to find them. If you believe your script is of benefit to the wider Siril community you may submit it to the script repository. Instructions on doing so are found in the repository README.

### Сценарии Python

New to Siril 1.4, it is possible to write more advanced scripts using python.

This page is a documentation for script developers. If you want more information about what scripts are available as a user, see the list of scripts.

Совет

Python scripting is still EXPERIMENTAL and the API is expected to become more advanced during the 1.5 development cycle.

In its current form, python scripting allows you to:

- Execute any siril command with the added benefit of using a proper programming language so that variables passed to commands can be the result of calculations.

- Access key Siril variables and data structures to aid in scriptwriting.

- Access python extensions.

  > - Using the 1.4 scripting interface it is possible to write a plugin that saves the current image, opens it using astropy and applies processing techniques provided by astropy, then saves the result and reopens it as the Siril main image.

  > - The tk python extension can be used to create graphical user interfaces for your scripts so that user input can be obtained directly.

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

Run-time Dependencies

To support installation and configuration of the siril python module and its dependencies, a Python venv ("virtual environment") is configured.

Linux

This requires that there is a functional Python installation on the system _including the `pip` and `venv` modules. These are available by default as part of the flatpak and appimage distributions, but you will need to install them yourself if building Siril from source. On Debian-based systems you need the `python3-pip` and `python3-venv` packages installed; the installation requirements on other systems may vary.

Windows

If you have a Python installation in your system, the script will use that as default. If you don't, don't panic. Siril installed through the official installer also comes with a light-weight Python installation and all the required modules. That is for the official releases. If you build the development version from sources, you will need to have Python installed in your system.

macOS

The necessary dependencies are included in the official MacOS package. We do not provide support for homebrew building, but if you do build yourself on Mac then you will need to ensure you have a functional system python installation.

#### How does this relate to pySiril?

pySiril is a separate module, published by a separate development team: it is an established product and is already used to implement important helper apps such as Sirilic.

Philosophically, pySiril and the built-in Siril python module are quite different: whereas the built-in module is intended to be called from an already-running Siril to provide scripting functionality and spawns a python3 process to run the script, pySiril is intended for buildin applications that need to call on Siril functionality, and it spawns a Siril process from within its host Python app.

These use cases are quite different, and there is no plan to merge the two modules.

#### Importing the Module

Siril will take care of setting up a venv (new style python virtual environment) and installing the module in it. In your script you import it using `import sirilpy`.

For convenience, you can abbreviate it as `import sirilpy as s`.

#### Initialising the Connection

Once you have imported the module, you need to establish the interface with Siril. This is done as follows:

    import sirilpy as s

    siril = s.SirilInterface()
    try:
       siril.connect()
       print("Connected successfully!")
    except SirilConnectionError as e:
       print(f"Connection failed: {e}")

(The status reporting is optional but is good practice.)

#### Executing Siril Commands

To execute a Siril command, once the interface is established, you use the `siril.cmd()` function. The command and its arguments are provided as a list, for example:

    siril.cmd("findstar", "-maxstars=1000")

will run the `findstar` command, setting a limit of maximum 1000 stars.

The real power of using python to script commands is that you can use python variables in the command using the formatted string notation:

    x = 1000
    siril.cmd("findstar", f"-maxstars={x}")

This is a simple example, but the ability to define parameters to pass to image processing functions is a giant leap for Siril scripting compared with legacy Siril script files.

Совет

Most Siril commands execute an action (`register`, `stack`, `asinh` etc). These will function exactly the same when called from python.

However some simply print information to the Siril log, such as `stat`. Note that these commands do not behave any differently when called from python using `siril.cmd("stat")` or similar: they will still just print information to the Siril log and do not return any useful data to the python script.

In order to access the values from python you need to use a method that gets information about the image or sequence. So in this example, you would call `img = siril.get_image()` and then the statistics would be available in `img.stats`.

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

The `cmd()` method does not have a return value but will raise an exception if the command fails. This provides safe default behaviour - the script will stop on failure of a command and print an exception error message to the Siril console. If you want to handle failure more gracefully, for example by showing an error messagebox, you will need to use an exception handler like this:

    try:
        siril.cmd("requires", "1.5.0")
    except:
        siril.error_messagebox("This script is not compatible with this version of Siril")
        quit()

For debug purposes you may wish to have commands return a bool. This can be done using a simple wrapper such as the following:

    def cmd_with_check(*args):
    try:
        siril.cmd(*args)
    except Exception as e:
        err_msg = ' '.join(list(args))
        print(f'Exception caught: {e}',)
        print(f"Command failed with arguments: {err_msg} but continuing...")
        return False
    return True

#### Access to Siril variables and data structures

The siril module provides access to key Siril variables. The available data is as follows:

- Current Siril working directory

- Siril user config directory (for storing script-specific config)

- Current Siril image filename

- Current Siril image:

  - Image pixel data

  - Image ICC profile (as bytes: you will need to use a module such as pillow to convert this raw data to something useful)

  - Image metadata: all the metadata that Siril uses internally, including relevant keywords and image statistics. The full FITS header and a string containing keywords not recognized by Siril are also available.

- Текущая последовательность Siril:

  - Sequence frame pixel data

  - Sequence metadata: all the metadata for the currently loaded sequence is available, with the exception of some that relates to details of the sequence format that are abstracted away by the python interface and some relating to photometry series that is not implemented yet. This includes statistics for every channel of every frame, registration data for channels for which it is available of every frame and image quality data for every frame.

  - Sequence frame ICC profiles are not available as these are not generally relevant until after the sequence processing stage. If a convincing use case emerges this could be revisited as an update to the API in the 1.5 development cycle.

  - Sequence frame HISTORY and FITS header strings are not available as they are not considered useful for sequence operations, however the keywords for a sequence frame are available using the `siril.get_seq_frame()` method, which returns a FFit object with the keywords member populated. This provides enough metadata to support any currently identified use case.

- Star modelling data. When stars have been detected in an image the modelling data is available as a list of star parameters for every detected star in the image.

This data is stored in the key data structures `FFit` representing the Siril fits data structure and `Sequence` representing the Siril sequence data structure.

    # Get the current image
    img = siril.get_image()
    # Get its dimensions
    siril.log(f"Current image dimensions: {img.shape[1]} x {img.shape[0]}, {img.shape[2]} channels.")

Note that the image shape is stored in a typical python order: shape[0] = height, shape[1] = width, shape[2] = channels. The width, height and channels are also directly accessible using the properties `img.width`, `img.height` and `img.channels` once `img = get_image()` has been called.

When the current image is obtained using `siril.get_image()`, the pixel data can be accessed as a numpy array, allowing directly operating on pixel data.

    import siril
    import numpy as np
    # Set up the interface as above
    # ...

    # Try to get the current image, do something to it and update it in Siril
    with siril.image_lock():
       img = siril.get_image()
       img.data[:] *= 2
       siril.set_image_pixeldata(img.data)

    except Exception as e:
       raise SirilException(f"Error changing pixel data: {e}")

We just accessed the pixel array and multiplied every pixel value by 2! Note that we have to call the `siril.set_image_pixeldata()` function to update the data back to Siril. Using `siril.set_image_pixeldata()` you can even update the image to a different size or shape, or change from 16-bit unsigned data to 32-bit floating point or vice versa.

Совет

In order for `siril.set_image_pixeldata()` to succeed you must claim a lock on the image. This ensures that nothing else can try to update the image at the same time as you are doing, and also ensures that you can't update the image while something else is already doing so. Note that the example above uses the context handler `siril.image_lock()` before getting the image from Siril, not just before updating it. This ensures the image is locked throughout the time it is being processed until it is updated back in Siril and the lock is finally released.

In a similar way you can access image statistics, FITS header information, bit depth and so on. You can also access sequence information, for example whether the n th image in a sequence is included, what its stats are and so on.

#### Installation of Python Modules

You might have noticed we are using NumPy in the previous examples. This is a dependency of the siril module and will be pulled in during initial setup of the venv. Other python modules can be imported using the standard `import` command, for example `import astropy as ap`. However, for ease of ensuring that dependencies are installed if a user doesn't already have them, the module also provides the `ensure_installed()` method. This is used as follows:

    s.ensure_installed("astropy")
    import astropy

(or, for another example,

    s.ensure_installed("tifffile")
    import tifffile

First a check is done to try importing the module (in this case, astropy or tifffile). If the module is not available for import, an attempt is made to install it. If the install fails, an exception is raised and the script will halt.

Совет

If a module requires installation this may take a short time, however the delay only occurs on the first run of a script. On subsequent runs the model is already installed, so the `ensure_installed()` check is almost instantaneous. A message in the log notifies the user that module installation is occurring.

If the check succeeds, the module can be imported as normal using `import`.

Совет

All other non-core modules except for numpy should be checked with `ensure_installed()` as this automates the installation process for users who don't already have the required modules installed.

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

All Siril python scripts share the same venv. When importing modules, it is important to avoid overconstraining the version requirements in order to avoid clashes between the modules required by different scripts. Only ">=" version constraints should be used, never "==" or "<=".

    import sirilpy as s
    s.ensure_installed("astropy")
    import astropy as ap

This will automatically pull in all of astropy's dependencies as well.

#### Use of External Modules

Совет

The `siril.FFit` object type is not the same as astropy.io.fits. Whereas astropy.io.fits provides a general file-based interface to all FITS files, siril.FFit provides an interface to the data structure Siril uses to represent FITS images. The two are not directly interchangeable! Either method can be used to obtain the pixel data as a NumPy array.

Whether you obtain the pixel data directly from the `siril.FFit` object or using astropy.io.fits, siril modules such as astropy, photutils and matplotlib provide building blocks for a huge range of image analysis including source detection, image segmentation, source deblending and visualisation, and the ecosystem of python modules provides limitless capability.

    import sirilpy as s
    s.ensure_installed("astropy")
    import astropy
    from astropy.io import fits
    with fits.open("filename.fit", mode='update') as image:
       if isinstance(image[0].data, np.ndarray):
          image[0].data *= 2

This looks much like our last example - all we do is multiply the pixel data by 2 - but now we have used astropy to open it directly from a FITS file.

#### API Reference

Note that the API is very new. While we will try very hard to avoid script-breaking changes to the API released with 1.4.0 throughout the stable 1.4 series, some parts of the API may evolve during the 1.5 development cycle.

### Python Script Key Information for Users

#### Obtaining Scripts

End users should take care to obtain scripts from reputable sources.

- A few fundamentally important scripts are distributed as part of the core Siril package and can be found installed in the system data directory. These are tested to the same degree as the rest of Siril and the development team will treat bug reports on these scripts in exactly the same way as bug reports on any other part of Siril.

- 1.4.0 introduces the Scripts repository. We try to keep a list of the scripts with a short description here. Anyone may submit scripts to this repository by making an account on gitlab and submitting a merge request. The Siril team will provide a basic level of scrutiny that the scripts are not attempting to do anything malicious, but we do not accept any responsibility for the correct functionality of scripts written by other people and will not provide support for them - the author should be contacted directly.

- Script authors may choose to distribute scripts independently, as has been done in the past. This is fine: scripts can be downloaded and added to a script directory or run via the script editor from anywhere on the filesystem. In this case the Siril team have nothing at all to do with the scripts and cannot even assure you that they will do no harm, so ensure you trust the author.

- Siril does not support automatic verification of signed scripts. This is because script signing can provide a false sense o security ("the script is signed so it can't do anything bad"). This is false: all a script signature says is that the script was signed by a particular person and hasn't been changed since. In other words, it verifies the origin of a script, but says nothing about whether it functions correctly or is safe. A signed and verified script could still destroy your data if that is what it is written to do! In the current implementation of python scripting, the majority of scripts are distributed through the centralised script repository in which case the origin is known and scripts have been through a basic level of scrutiny by the development team prior to being merged. Some scripts may be distributed through other channels and downloaded manually, and there is nothing preventing an author providing a sha256sum or a .gpg signature for scripts distributed in this way - you will just need to verify them manually after downloading.

#### Troubleshooting Common Issues

Siril's python script system is quite complex: a lot goes on under the hood, and this is all coordinated by clever use of a Python venv ("virtual environment") which ensures that the python used by Siril is separated from the system Python installation and potentially from other venvs that may be in use by other software. However there are a few things to be aware of:

- venvs are tied to a specific version of python. This means that if your system updates from (e.g.) Python-3.12 to Python-3.13 the venv will no longer point to the right Python program or the right bytecode libraries for compiled modules. When you upgrade to a new version of Python you must reset the Siril venv.

- script dependencies are controlled using pip and the pypi archive. This is very good but not 100% foolproof, and in rare cases you may find a dependency issue has arisen that causes a problem of some kind. If you find an unexplained problem with a script that others aren't experiencing, resetting the venv may solve it. (And if you find a combination of scripts that can repeatably cause a dependency issue like this, please report it as an issue on the siril-scripts gitlab site as it will help us to improve advice to script authors.)

Resetting the venv is easy: click the Get Scripts menu item in the Scripts menu and scroll down to the bottom. Here you will find a "Reset venv" button: clicking it will reset the venv and create a new one. After doing this, the next time you run a script it will need to reinstall its dependencies so the first startup will be a bit slower than ususal (depending on network speed and whether any of the required modules are locally cached).

### Python Script Key Information for Authors

We welcome all script authors who wish to write scripts for Siril. However supporting Siril, while fun, takes a lot of time and we have neither the time nor the desire to support other people's work as well as the core Siril software. There are therefore some guidelines to ensure that the division of responsibility is clear.

- All scripts should feature the author's name or handle, as well as a means of contact (website, YouTube channel, forum etc.) where they can be reached with comments or bug reports. For authors publishing independently this is of course guidance, however for authors wishing to publish their scripts via the siril-scripts repository this is mandatory. Scripts will not be accepted unless these details are included.

- Only open-source scripts will be accepted in the Siril scripts repository. Closed source scripts (including ones that feature a source code wrapper that calls a closed source program) must be independently published.

- Authors should also follow the script programming guidelines on the API page. These guidelines ensure that scripts can be used by end-users with minimal friction.

#### Siril-Scripts Repository Code Standards

As a script author you can write whatever scripts you like for your own use. However for scripts to be published to the siril-scripts repository we need to require some coding standards in order to ensure that they work with the standard Siril packages on each of the three supported operating systems. The requirements are:

- Scripts should work with versions of Python >= 3.9. This version matches the oldest Python version in our binary packages, and will be adjusted over time to match the packages.

- Scripts should be single-file scripts. The repository was originally designed for legacy .SSF scripts and the assumption of one file per script remains. We understand that it can be good for code readability to develop complex python programs by splitting them into multiple files. This is fine when working locally, however the multiple files would need to be combined into a single file for submission to the scripts repository.

- If you want to implement a GUI in your script you should use the pyQt6 toolkit.

  - pyQt6 uses the well known Qt framework and it has now been verified as installing correctly from pypi on all the supported platforms. Qt6 is much faster than Tkinter for scripts that themselves have to do significant graphics manipulation, such as pan-and-zoom previews, and it has a nice GUI designer application available in Qt Creator.

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

  tkinter is now deprecated: new Siril scripts should not use it and should be written using pyQt6 instead. Although tkinter is a core Python module it is outdated, very slow and has issues with Wayland desktops on Linux. tkinter scripts will continue to work throughout the 1.4 stable series, but there is a considerable amount of added complexity in the sirilpy code to support tkinter. Since pyQt6 provides a much better alternative has now been confirmed to work on all the platforms Siril supports, the tkinter support code (the tksiril and tkfilebrowser submodules) will be removed during the 1.5 development cycle and will be removed before 1.6.0.

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

  Scripts using GTK GUIs will not be accepted into the scripts repository. This GUI framework requires substantial system dependencies. Although Siril itself is coded in GTK, unfortunately the python gi packages required to use it in python scripts are broken on Windows and we are unable to bundle them. If you wish, you can install the dependencies yourself and write scripts using GTK and they may work fine on your own machine, but this is not supported. We will not provide help in getting the prebuilt packages to work with unsupported packages; if you are determined to try this, you will likely need to build Siril from source.

- Avoid import version specifications that specify a package version using "<", "<=" or "==". These constraints will result in conflicts between scripts, which all share the same venv. Specifying a package version using ">=" is fine. Remember to use `sirilpy.ensure_installed()` before importing non-core python module dependencies, to automate the process of installing them.

- Avoid importing packages that require system packages (i.e. ones that cannot be installed using `python3 -m pip install`)

- Ideally, check that your script imports will install on all three target operating systems. If not then the development team will check them after submission, and you will need to fix any issues that occur.

#### Known Good Modules

A list of "known good" packages that we have checked will import without problem, and with all their dependencies, on all the target operating systems, is provided below:

- astropy

- astropy-healpix

- astroquery

- ccdproc

- GaiaXPy

- matplotlib

- numpy

- opencv-python

- pandas

- photutils

- pillow

- pyfftw

- pygaia

- pyQt6

- scipy

- tk

- ttkthemes

Совет

For machine learning / AI scripts, onnxruntime is very strongly recommended. It is cross-platform, it is hardware-agnostic and it falls back gracefully to CPU support if a GPU or GPU system libraries are unavailable. The `sirilpy.utility` submodule provides an `ONNXHelper` class to ensure the correct hardware- and OS-specific version of onnxruntime is installed.

#### Machine Learning Modules

A variety of machine learning modules exist which can be used to write "AI" scripts. However the state of support for heterogenous computing (i.e. GPU use) is patchy and often requires system libraries such as CUDA or ROCm to be installed. The following modules are regarded as key for GPU acceleration and either are supported with helper classes or have helper classes in development.

- onnxruntime - used in GraXpert and Riccardo's AberrationRemover.py script, this package is available for all the target OSes. There are different backends to support different GPUs, but in some cases these are fragile. A helper class `ONNXHelper()` is available to help with identification and installation of the optimum package as well as ensuring correct runtime fallback to CPU. Note that currently on Windows the ONNXHelper will select the DirectML runtime for all supported GPUs. Even though in theory the CUDA-based onnxruntime-gpu package might be a bit faster, it unfortunately depends heavily on system libraries being installed and configured correctly and the installation is considered too fragile to be reliable in the kind of automated python environment used by Siril. If users wish to use it and are confident they can get it to work on their system they can install it manually using `sirilpy.ensure_installed("onnxruntime-gpu")` but this is not supported and related issues will be closed.

- torch - This is a heavyweight among ML frameworks and where GPU support was once very much CUDA-based it is now broadening its coverage: support for NVidia and Apple Silicon GPUs is good, and support for AMD GPUs (using ROCm) and Intel GPUs is in development (ROCm is supposedly stable enough to use on Linux, not yet on Windows). Unfortunately torch has some dependency issues (it is excessively strict about the version of CuDNN it requires) which causes problems using it in the same venv as some other modules (including jax - see below) that pull in the nvidia-cudnn package. A `TorchHelper()` class is available which manages this by first installing torch, then reinstalling it with the --no-deps flag, which prevents it complaining if another package updates the dependencies to a higher version number. This is really ugly and it's unfortunate that it's necessary, but it works. If you envisage using CUDA versions of both torch and jax, it is better to install torch first and then jax.

- jax - Not a dedicated ML framework as such but a means of offloading computation to the GPU. jax provides a mostly numpy-compatible module called jax.numpy which can greatly accelerate many mathematical array processing operations by offloading them to the GPU and also provides functions for gradient computation that numpy does not. Bearing in mind that the slow part of GPU processing is the data transfer between system memory and GPU memory, jax provides a jit compiler to precompile its offloaded workloads but it still requires careful algorithm design to keep data on the GPU for as long as possible, only returning the final result. Jax has good GPU support on Linux but only CPU support on Apple and Windows, although experimental Metal support and Windows GPU support is in progress. This is therefore not recommended for actual scripts at present, but is highlighted as an interesting framework to develop against in the (hopefully) near future when its support broadens. A `JaxHelper()` class is under development that will help with selection of the correct jax package to install and testing to confirm it works properly.

- Dependencies Note that both torch and jax use GPU library pypi packages, so installation of them may pull in very large chains of dependencies - the full set of NVIDIA packages (CUDA, CuDNN etc.) is around 1GB. So when using these in scripts be sure to warn users that they may incur a large and potentially slow download on first use!

#### Excluded Modules

Completely avoid using the following modules, as they are known to cause problems on one or more OSes:

- healpy (doesn't work on Windows; astropy_healpix can be used instead)

#### Modules with System Dependencies

The following modules require installation of system packages which cannot be automated using pip, and therefore should not be directly used in Siril scripts:

- `gi` (pygtk etc - requires system package installation)

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

We cannot emphasise enough that such packages are not supported. If they work for you locally, that's a lucky bonus for you. They generally won't work with any of the prebuilt binary packages (AppImage, flatpak, Windows, MacOS). These kind of packages are specifically not supported and we will not provide help with getting them to work. All tickets relating to this kind of question will be closed as a duplicate of #1527.

Yes, we know it's a shame. In fact we would have liked to use GTK as the toolkit for writing sirilpy scripts, but unfortunately the binary wheel has been broken on Windows for a long time and doesn't show any sign of being fixed. We can't release core functionality that doesn't work on one of the target OSes.

#### Workaround for Modules with System Dependencies

It may still be possible to write projects that use these kind of packages, but you will need to package them with their dependencies and distribute them independently of Siril or the scripts repository, and the sirilpy module can still be used to achieve integration with Siril. If you want to, you can provide a wrapper script that can be distributed in the scripts repository and just initializes your main program. We will not help with any of that. As stated above, use of these packages in Siril scripts is not supported.

#### Closed Source Scripts

The python interface will happily run precompiled .pyc files. Siril is a Free and Open-Source software, and we therefore do not encourage development of closed-source scripts, however we don't forbid it either. Practically we can't, because even stringent interpretations of the GNU Public License allow for writing an open source shim that sits between Siril and a closed source application. Moreover we are in favour of freedom, and while we choose to release Siril under the GPL to provide freedom to our users, we also respect the freedom of developers to choose how they release their own work.

There is some history here, too: Siril has since 1.2.0 provided a built-in interface to Starnet, however Starnet was originally open source and only closed its doors later on.

However, if an author chooses to release a Siril script as a closed-source .pyc then they need to arrange all matters to do with distributing it: as we are unable to inspect the code ourselves to perform even the most cursory checks, we cannot host it in the Siril-scripts git repository. And of course, responsibility for supporting such products is entirely a matter for the author - the Siril team will offer no advice on such products.

Note that scripts must be compiled separately for each version of python: helloworld.py would be compiled with `python3 -m compileall helloworld.py` which would generate helloworld.cpython-<version>.pyc, where <version> would be 312 for Python 3.12, 313 for Python 3.13 and so on depending on the version of python used to compile the script. This is an inherent inconvenience to closed source scripts.

### Script Editor

Siril contains a script editor, accessible via the Scripts menu. This provides a feature rich code editor tailored for writing both Siril Script Files and Python scripts. The theme (light / dark) of the script editor follows that set in the main Preferences dialog. The main editor window is shown below:

For most of the functionality shortcuts exist, which are as standardised as possible.

#### File Menu

The file menu provides the usual functionality:

- New: begins a new file. If there is unsaved text in the buffer a confirmation dialog will be presented to give the user a chance to save their previous work.

- Open: open a file from disk. If If there is unsaved text in the buffer a confirmation dialog will be presented to give the user a chance to save their previous work.

- Recent files: provides quick access to open recent files.

- Save: saves the current file with its existing filename. If the file is not yet saved then this behaves in the same way as Save as, prompting for a filename.

- Save as: saves the current file, prompting for the filename to save it with.

- Close: closes the file and the script editor window. If there is unsaved text in the buffer a dialog will be presented to give the user a chance to save their work.

Unsaved files are indicated by an asterisk (*) next to the filename in the titlebar. When changes are saved, the asterisk will disappear.

#### Edit Menu

The edit menu provides the following functionality:

- Undo: undoes the most recent change in the script. The script editor has an unlimited undo / redo buffer.

- Redo: redoes the most recent undo in the script.

- Cut: cuts the current selection to the clipboard. If no selection is made, the entire current line is cut.

- Copy: copies the current selection to the clipboard.

- Paste: pastes the current clipboard content to the cursor position.

- Find: Presents the Find overlay which provides an active search capability. The editor will scroll to the first occurrence of the search term as you type. All occurrences are highlighted in the editor view and in the minimap, if enabled.

#### Script Menu

The script menu provides the following functionality:

- Run: runs the current script. Note that this obeys the current script type selection (Siril Script File / Python Script) and this must be correct for the script you are editing. The script type is automatically set based on the file extension when loading a file, but you must set it here if you have not yet saved your script. At startup it defaults to Python Script. Note that owing to a shortcut clash in some desktop environments, as well as the listed `F5`, `Ctrl`-`R` also works to run the current script.

- Python scripts: sets the current script mode to Python scripts. This affects the syntax highlighting as well as the manner in which the script is run.

- Siril Script Files: sets the current script mode to Siril Script Files. This affects the syntax highlighting as well as the manner in which the script is run.

- Enable test arguments: Shows an entry below the main script view. This can be used to enter arguments that will be passed to the script when run from the editor. Python scripts can take arguments to set parameters: this provides an alternative to using a GUI to set parameters. Even if a GUI is provided in a script, the ability to pass arguments means that it can be used as a Siril command via the `pyscript` command, and can therefore itself be used from within scripts.

- Enable python debug mode: This toggle changes the behaviour of the sirilpy module to support debugging. When the SirilInterface is created at the start of the script, a modal information box will appear showing the process ID of the python interpreter, which can be used to connect a debugger. Also, all interface timeouts will be set to None, to allow for prolonged inspection of the state of a running script.

  Note that the test arguments have no effect on Siril Script File scripts, as these have no ability to handle arguments.

#### Настройки

The preferences menu provides the following options:

- Highlight syntax: when enabled, Siril will use language-aware syntax highlighting to highlight aspects of your script.

- Enable right margin indicator: when enabled, Siril will show a right margin indicator at a set column number. This is useful for helping to avoid excessively long lines of code and maintain readability.

- Right margin position: this will present a small dialog allowing the user to set the column number of the right margin indicator discussed above. This defaults to 80.

- Enable bracket matching: when enabled, if the cursor is on a bracket the editor will highlight the matching bracket. This can be useful to avoid bracket mismatches.

- Show line numbers: when enabled, line numbers are shown to the left of the editor view. This can help with debugging and navigating code.

- Show line markers: when enabled, line markers are shown to the left of the editor view. No functionality currently uses line marks, but the ability to view them is provided to support future developments.

- Highlight current line: when enabled, the current line is highlighted in the editor view.

- Enable auto-indentation: when enabled, on pressing Enter the new line will begin at the same level of indentation as the previous line.

- Indent on tab: when enabled, pressing tab with a selection made that covers multiple lines will cause all the selected lines to be indented a level, and pressing shift-tab will cause them to be unindented a level.

- Enable smart backspace: when enabled, pressing backspace with whitespace to the left of the cursor will delete whitespace back to the previous indentation level.

- Smart Home / End: when enabled, Home and End will move the cursor to the first or last non-whitespace character of the line respectively, rather than the absolute first or last character of the line.

- Show spaces and tabs: when selected, spaces and tabs will be shown with visible characters (central dots for spaces, right-facing arrows for tab characters).

- Show newlines: when selected, newlines will be shown with visible characters (down-and-left bent arrows).

- Show minimap: when selected, a minimap will be shown to the side of the editor view, supporting navigation and location of `Find` occurrences.

#### Help

The help menu provides API help for both Siril Script Files and Python scripts.

- Python API Reference: this opens the Python API page of the online manual in the default browser.

- Commands Reference: this opens the Commands Reference page of the online manual in the default browser, which is essentially the API for Siril Script Files.

### Python Script Examples

This section highlights examples of python scripting. These are simple examples intended to provide an introduction to the API, and are explained with commentary.

For a more complete example of a script using a TKinter interface to provide a full-featured interface to an external program, see the CosmicClarity_denoise.py and CosmicClarity_sharpen.py scripts which are available in the Siril scripts repository.

Scripts menu

#### Hello, Siril!

It is traditional to start with a Hello, World! example, so here is "Hello, Siril!"

    import sirilpy as s
    from sirilpy import SirilConnectionError

    siril = s.SirilInterface()

    try:
       siril.connect()
       siril.log("Hello, Siril!")

    except SirilConnectionError as e:
       print(f"An error occurred: {e}")

That's it. All siril python scripts should import the siril module: this is automatically provided by Siril and does not require installation.

It allows connection to Siril through the SirilInterface class and gives access to Siril methods: in this case the `log()` function does a tiny bit of adjustment (adding a `\n` newline character) and calls the internal function `siril_log_message()` to display the result in Siril's log tab. Note that `log()` can take an optional argument specifying the color: if you wanted "Hello, Siril!" to print in green you would change the line to `siril.log("Hello, Siril!", s.LogColor.GREEN)`.

Note that there is generally no need to call `siril.disconnect()` call, as it is not really necessary: at the end of a script the method will be called automatically in an onexit handler.

Also note that although you can initialize more than one `SirilInterface()` object, a script can only connect via one at a time (though multiple scripts can be connected to Siril simultaneously). There is generally no need to create more than one `SirilInterface()`.

#### Hello, astropy!

This script shows how to save a temporary working copy, open it using astropy.io.fits and modify it before saving the file and reopening it in Siril.

    import sirilpy as s
    import tempfile
    import os
    import gc
    import numpy as np # numpy is a dependency of the siril module and
    # will always be available, so no need to use s.ensure_installed() here

    s.ensure_installed("astropy")
    import astropy
    from astropy.io import fits
    siril = s.SirilInterface()
    try:
       siril.connect():
       print("Connected successfully!")
    except SirilConnectionError as e:
       print(f"Connection failed: {e}")
       quit()

    def hello_astropy():
       siril.log("Starting the process...")

       temp_filename = None
       try:
          # Create a temporary file
          with tempfile.NamedTemporaryFile(suffix=".fits", delete=False) as temp_file:
                temp_filename = temp_file.name
                siril.log(f"Temporary file created: {temp_filename}")

          # Save current file
          siril.cmd("save", temp_filename)
          siril.log(f"FITS file saved: {temp_filename}")

          # Open and modify FITS file using Astropy
          with fits.open(temp_filename, mode='update') as image:
                siril.log("Opened FITS file with Astropy")

                # Modify the FITS file data
                if isinstance(image[0].data, np.ndarray):
                   image[0].data *= 2
                   siril.log("Modified FITS file data using Astropy (multiplied pixel values by 2)")

                image[0].header['COMMENT'] = "Modified by Astropy"
                siril.log("Added COMMENT to FITS file header")

                image.flush()  # Ensure changes are written
                siril.log(f"Changes saved to FITS file: {temp_filename}")

          # Load back into Siril
          siril.cmd("load", temp_filename)
          siril.log(f"FITS file loaded: {temp_filename}")

          siril.log("Process completed successfully")

       except Exception as e:
          siril.log(f"An error occurred: {str(e)}")
          raise  # Optionally re-raise if needed for further handling

       finally:
          # Clean up: delete the temporary file
          if temp_filename and os.path.exists(temp_filename):
                try:
                   os.remove(temp_filename)
                   siril.log(f"Temporary file deleted: {temp_filename}")
                except OSError as e:
                   siril.log(f"Failed to delete temporary file: {str(e)}")

          # Garbage collection using gc.collect() is not required at the end
          # of a script as it gets run automatically just after the script
          # hands back to the interpreter

    # Run the function
    if __name__ == "__main__":
       hello_astropy()

Note the use of error handling in this example, using the try: and except: blocks, and the cleanup in the finally: block.

#### Pixel Data and Metadata

The sirilpy python module offers direct access to a wide range of data.

    import sirilpy as s
    import numpy as np
    siril = s.SirilInterface()
    try:
       siril.connect():
       print("Connected successfully!")
    except SirilConnectionError as e:
       print(f"Connection failed: {e}")
       quit()

    def siril_module_example():
       try:
          # Lock the main image to prevent anything else altering it while we
          # are working on it
          with siril.image_lock():
             # Get the global fits object
             fit = siril.get_image()

             siril.log(f"The value of the first pixel is: {fit.data.flat[0]}")
             fit.data[:] *= 2
             siril.set_image_pixeldata(fit.data)

          siril.log(f"The value of the first pixel is now: {fit.data.flat[0]}")
          siril.log(f"Data type: {fit.data.dtype}")
          siril.log(f"Array shape: {fit.data.shape}")
          history = fit.history
          siril.log(f"History: {history}")

       except AttributeError as e:
          siril.log(f"Error: {e}")
          fit = None  # Ensure the FFit object is released

    # Run the function
    if __name__ == "__main__":
       siril_module_example()

As before, we import the siril module: we now also import numpy, which we will use to operate on the pixel data in the image loaded in Siril. Note that there is no need to use the `import_or_install()` method, as numpy is a dependency of the siril python module and will have been preinstalled in the venv.

Next, we demonstrate various ways of interacting with the image data and metadata:

    # Get the global fits object
    with siril.image_lock():
       fit = siril.get_image(True) # True indicates that we want the pixel data
       # not just the metadata. It is not required as this is the default, but
       # if you only want the metadata you can specify False here to save a bit
       # of memory.

       siril.log(f"The value of the first pixel is: {fit.data.flat[0]}")
       fit.data[:] *= 2
       siril.set_image_pixeldata(fit.data)
       siril.log(f"The value of the first pixel is now: {fit.data.flat[0]}")

We get the current image using `siril.get_image()`

Совет

Note that `siril.fits` is not at all the same as `astropy.io.fits`. While astropy.io.fits provides a general-purpose interface to all FITS files, siril.fits provides an interface matching the fits data structure used in Siril.

We then access the pixel data as a NumPy array and carry out operations on this array to modify the image data. In this case we multiply all the pixel values by 2.

After we have finished modifying the image, we call `siril.set_image_pixeldata(fit.data)` to update the pixel data in Siril and trigger the Siril GUI to redraw to show the updated image. Along the way we use `siril.log()` to highlight the change to the first pixel.

Next we show the array datatype and shape:

    siril.log(f"Data type: {fit.data.dtype}")
    siril.log(f"Array shape: {fit.data.shape}")

Next we show how we can access the image history. This is provided as a list of individual HISTORY FITS headers, so we join them together and add newline characters before logging.

    history = fit.history
    siril.log(f"History: {history}")

Full details of the API can be obtained by importing the Siril module and calling the `help(sirilpy)` command, or more specifically by calling `help()` for the particular part of the API you want to know about, e.g. `help(sirilpy.FFit)`.

As docstrings are not translatable, for translations of the API help you will need to consult the API documentation page in this online manual.

#### siril.plot submodule

This script shows how to use the siril.plot submodule to create a simple plot with three series. The first is a simple x-y plot with lines; the second is an x-y plot with error bars; and the third is another simple x-y plot but shows use of numpy arrays as well as how a SeriesData object can be created and added directly to the PlotData object using `add_series_obj`.

    import sirilpy as s
    import numpy as np
    siril = s.SirilInterface()
    try:
       siril.connect()
    except SirilConnectionError as e:
       print(f"Error: failed to connect to Siril: {e}")
       quit()

    # Series data using lists of floats
    plot_data = s.PlotData(
       "Example Plot",
       "X Axis",
       "Y Axis",
       "example_plot_lists",
       True,
       datamin = [0.0, 0.0]
       )

    plot_data.add_series([1.0, 2.0, 3.0],
                         [4.0, 5.0, 6.0],
                         "Series 1 (Lists)")

    plot_data.add_series([4.0, 5.0, 6.0],
                         [7.0, 8.0, 9.0],
                         "Series 2 (Lists with errors)",
                         s.PlotType.MARKS,
                         [0.35, 0.4, 0.45],
                         [0.35, 0.4, 0.45])

    x_arr = np.array([1.0, 2.0, 3.0, 4.0], dtype=np.float32)
    y_arr = np.array([1.0, 4.0, 9.0, 16.0], dtype=np.float32)
    series3 = s.SeriesData(x_arr, y_arr, "Series 3 (np.arrays)")
    plot_data.add_series_obj(series3)

    # Serialize using lists
    siril.xy_plot(plot_data)

#### Templates for Scripts with GUIs

The following templates show how to create scripts with a GUI. The first template is the simplest and only provides a GUI interface:

gui_template.py

      1# Template for Siril script with GUI only (no CLI)
      2# SPDX-License-Identifier: # insert license identifier here
      3# insert author's name and details here
      4
      5"""
      6This script template provides an exemplar for use in constructing sirilpy
      7scripts that provide a Tkinter GUI. Such scripts are only usable via the GUI.
      8This is a simplified version without command-line argument support.
      9"""
     10
     11# Core module imports
     12import os
     13import sys
     14import math
     15import tkinter as tk
     16from tkinter import ttk, filedialog, messagebox
     17import numpy as np
     18
     19import sirilpy as s
     20from sirilpy import tksiril, SirilError
     21s.ensure_installed("ttkthemes")
     22# Add other calls to ensure_installed() here to ensure that any non-core
     23# modules that are required by the script are installed and available
     24# to be imported.
     25
     26# Note: pylint will complain that the following imports are not at the
     27# top of the module. This deviation from python style is required in order
     28# to run ensure_installed() to ensure that any non-core modules are
     29# available before attempting to import them.
     30from ttkthemes import ThemedTk
     31# Add any additional imports here
     32
     33VERSION = "1.0.0"
     34
     35def template_algorithm(fit,
     36                       example_float_var,
     37                       example_bool_var,
     38                       example_file_path_var):
     39    """
     40    Template processing function, insert your algorithm here.
     41    This is the non-GUI part of the script and is entirely up to you to write.
     42    Although presented in the template as a single method it may comprise
     43    classes, methods and anything else.
     44    """
     45    print(f"Argument: {example_float_var}")
     46    print(f"Bool var: {example_bool_var}")
     47    print(f"File path: {example_file_path_var}")
     48    return fit
     49
     50class TemplateScriptInterface:
     51    """ This class provides the GUI and related callbacks """
     52    def __init__(self, root):
     53        self.root = root
     54        self.root.title(f"Template Script Interface - v{VERSION}")
     55        self.root.resizable(False, False)
     56        self.style = tksiril.standard_style()
     57
     58        # Initialize Siril connection
     59        self.siril = s.SirilInterface()
     60
     61        try:
     62            self.siril.connect()
     63        except s.SirilConnectionError:
     64            self.siril.error_messagebox("Failed to connect to Siril")
     65            return
     66
     67        # Initial checks: example - check if an image is loaded
     68        if not self.siril.is_image_loaded():
     69            self.siril.error_messagebox("No image is loaded")
     70            return
     71
     72        # Check if the version of Siril is high enough
     73        try:
     74            self.siril.cmd("requires", "1.3.6")
     75        except s.CommandError:
     76            return
     77
     78        # Create the UI and match its theme to Siril
     79        self.create_widgets()
     80        tksiril.match_theme_to_siril(self.root, self.siril)
     81
     82    # This function is used to round values to n decimal places, it is
     83    # always useful if you have sliders in your UI.
     84    def _floor_value(self, value, decimals=2):
     85        """Floor a value to the specified number of decimal places"""
     86        factor = 10 ** decimals
     87        return math.floor(value * factor) / factor
     88
     89    # Here is an example function to round the displayed value of a
     90    # variable to 2 decimal places. You will need one of these for each
     91    # slider control you have.
     92    def _update_example_float_variable_display(self, *args): # pylint: disable=unused-argument
     93        """Update the displayed template variable value with floor rounding"""
     94        value = self.example_float_var.get()
     95        rounded_value = self._floor_value(value)
     96        self.example_float_var_display_var.set(f"{rounded_value:.2f}")
     97
     98    def _browse_file(self):
     99        """
    100        Use a TK filedialog to browse for a file. Note that this callback is
    101        specific to the variable being updated; you might need to have several
    102        similar callbacks if you have more than one file selection widget.
    103        """
    104        filename = filedialog.askopenfilename(
    105            title="Select File",
    106            initialdir=os.path.expanduser("~")
    107        )
    108        if filename:
    109            self.example_file_path_var.set(filename)
    110
    111    def create_widgets(self):
    112        """Create the GUI's widgets, connect signals etc. """
    113        # Main frame with no padding
    114        main_frame = ttk.Frame(self.root)
    115        main_frame.pack(fill=tk.BOTH, expand=True, padx=0, pady=0)
    116
    117        # Title
    118        title_label = ttk.Label(
    119            main_frame,
    120            text="Template Script",
    121            style="Header.TLabel"
    122        )
    123        title_label.pack(pady=(0, 20))
    124
    125        # Parameters frame
    126        params_frame = ttk.LabelFrame(main_frame, text="Parameters", padding=10)
    127        params_frame.pack(fill=tk.X, padx=5, pady=5)
    128
    129        ############################################################
    130        # Example control with an embedded variable in its own frame
    131        ############################################################
    132
    133        template_variable_frame = ttk.Frame(params_frame)
    134        template_variable_frame.pack(fill=tk.X, pady=5)
    135
    136        ttk.Label(template_variable_frame,
    137                  text="Template example_float_var:").pack(side=tk.LEFT)
    138
    139        # Initialize variables with default values
    140        self.example_float_var = tk.DoubleVar(self.root, value=1.0)
    141        self.example_float_var_display_var = tk.StringVar(self.root, value="1.00")
    142
    143        # Add trace to update display when slider changes
    144        self.example_float_var.trace_add("write",
    145                                         self._update_example_float_variable_display)
    146
    147        example_float_var_scale = ttk.Scale(
    148            template_variable_frame,
    149            from_=0.0, # set your range minimum here
    150            to=1.0,    # set your range maximum here
    151            orient=tk.HORIZONTAL, # oriented horizontally
    152            variable=self.example_float_var, # the tk variable the widget controls
    153            length=200
    154        )
    155        example_float_var_scale.pack(side=tk.LEFT, padx=10, expand=True)
    156        ttk.Label(
    157            template_variable_frame,
    158            textvariable=self.example_float_var_display_var, # var truncated to 2 d.p.
    159            width=5,
    160            style="Value.TLabel"
    161        ).pack(side=tk.LEFT)
    162        tksiril.create_tooltip(example_float_var_scale,
    163                               "Adjusts the template variable.")
    164
    165        ###############################
    166        # Add frame for other variables
    167        ###############################
    168        options_frame = ttk.LabelFrame(main_frame, text="Options", padding=10)
    169        options_frame.pack(fill=tk.X, padx=5, pady=10)
    170
    171        ##################
    172        # Example checkbox
    173        ##################
    174        self.example_bool_var = tk.BooleanVar(self.root, value=False)
    175        example_checkbox = ttk.Checkbutton(
    176            options_frame,
    177            text="Example checkbox variable",
    178            variable=self.example_bool_var,
    179            style="TCheckbutton"
    180        )
    181        example_checkbox.pack(anchor=tk.W, pady=2)
    182        tksiril.create_tooltip(example_checkbox, "Example checkbox.")
    183
    184        ##########################################################
    185        # Example file selection
    186        # using an entry and a callback that triggers a filedialog
    187        # These file selector widgets have their own frame
    188        ##########################################################
    189        file_frame = ttk.Frame(options_frame)
    190        file_frame.pack(fill=tk.X, pady=5)
    191
    192        ttk.Label(file_frame, text="File:").pack(side=tk.LEFT)
    193
    194        self.example_file_path_var = tk.StringVar(self.root, value="")
    195        example_file_entry = ttk.Entry(
    196            file_frame,
    197            textvariable=self.example_file_path_var,
    198            width=40
    199        )
    200        example_file_entry.pack(side=tk.LEFT, padx=(5, 5), expand=True)
    201
    202        ttk.Button(
    203            file_frame,
    204            text="Browse",
    205            command=self._browse_file,
    206            style="TButton"
    207        ).pack(side=tk.LEFT)
    208
    209        # The template shows examples of sliders and checkboxes
    210        # however you can add other sorts of TKinter widgets here
    211
    212        # Buttons frame
    213        button_frame = ttk.Frame(main_frame)
    214        button_frame.pack(pady=20)
    215
    216        close_btn = ttk.Button(
    217            button_frame,
    218            text="Close",
    219            command=self.close_dialog,
    220            style="TButton"
    221        )
    222        close_btn.pack(side=tk.LEFT, padx=5)
    223        tksiril.create_tooltip(close_btn,
    224                               "Close the interface and disconnect from Siril. "
    225                               "No changes will be made to the current image.")
    226
    227        apply_btn = ttk.Button(
    228            button_frame,
    229            text="Apply",
    230            command=self.apply_changes,
    231            style="TButton"
    232        )
    233        apply_btn.pack(side=tk.LEFT, padx=5)
    234        tksiril.create_tooltip(apply_btn,
    235                               "Apply the script function with the set parameters "
    236                               "to the current image. Changes can be undone using "
    237                               "Siril's undo function.")
    238
    239    def apply_changes(self):
    240        """ Get the necessary variables from the GUI and call the algorithm """
    241        try:
    242            # Get the thread
    243            with self.siril.image_lock():
    244                # Get values from the GUI widgets
    245                example_float_var = self.example_float_var.get()
    246                example_bool_var = self.example_bool_var.get()
    247                example_file_path_var = self.example_file_path_var.get()
    248
    249                # Get current image
    250                fit = self.siril.get_image()
    251                fit.ensure_data_type(np.float32)
    252
    253                # Save original image for undo
    254                self.siril.undo_save_state(f"Script algorithm: "
    255                                           "arg={example_float_var:.2f}")
    256
    257                # Apply script algorithm
    258                # Your image processing functions go here
    259                result = template_algorithm(fit, example_float_var, example_bool_var,
    260                                           example_file_path_var)
    261
    262                # Clip and update image data
    263                fit.data[:] = np.clip(result, 0, 1)
    264                self.siril.set_image_pixeldata(fit.data)
    265
    266        except SirilError as e:
    267            messagebox.showerror("Error", str(e))
    268
    269    def close_dialog(self):
    270        """ Close dialog """
    271        self.root.quit()
    272        self.root.destroy()
    273
    274def main():
    275    """ Main entry point """
    276    try:
    277        # Create the GUI interface
    278        root = ThemedTk()
    279        TemplateScriptInterface(root)
    280        root.mainloop()
    281    except SirilError as e:
    282        print(f"Error initializing script: {str(e)}", file=sys.stderr)
    283        sys.exit(1)
    284
    285if __name__ == "__main__":
    286    main()
    287
    288language = "ru"
    289locale_dirs = ["../../translated/"]
    290gettext_compact = "siril-documentation"

Download gui_template.py

The second template is very similar, but provides an alternative interface using a command-line argument vector. This allows the script to be called with arguments using the `pyscript` Siril command: it is useful for scripting algorithms that you might wish to use as part of a bigger scripted workflow.

gui_and_args_template.py

      1# Template for Siril script with a GUI
      2# SPDX-License-Identifier: # insert license identifier here
      3# insert author's name and details here
      4
      5"""
      6This script template provides an exemplar for use in constructing sirilpy
      7scripts that provide a Tkinter GUI but which can also be called using an
      8argument vector (i.e. so that they can be scripted for use with the Siril
      9pyscript command). A similar template exists for pure GUI scripts, which
     10is slightly simpler owing to not having to accommodate command-line
     11arguments.
     12"""
     13
     14# Core module imports
     15import os
     16import sys
     17import math
     18import argparse
     19import tkinter as tk
     20from tkinter import ttk, filedialog, messagebox
     21import numpy as np
     22
     23import sirilpy as s
     24from sirilpy import tksiril, SirilError
     25s.ensure_installed("ttkthemes")
     26# Add other calls to ensure_installed() here to ensure that any non-core
     27# modules that are required by the script are installed and available
     28# to be imported.
     29
     30# Note: pylint will complain that the following imports are not at the
     31# top of the module. This deviation from python style is required in order
     32# to run ensure_installed() to ensure that any non-core modules are
     33# available before attempting to import them.
     34from ttkthemes import ThemedTk
     35# Add any additional imports here
     36
     37VERSION = "1.0.0"
     38
     39def template_algorithm(fit, example_float_var,
     40                       example_bool_var,
     41                       example_file_path_var):
     42    """
     43   Template processing function, insert your algorithm here.
     44   This is the non-GUI part of the script and is entirely up to you to write.
     45   Although presented in the template as a single method it may comprise
     46   classes, methods and anything else.
     47   """
     48    print(f"Argument: {example_float_var}")
     49    print(f"Bool var: {example_bool_var}")
     50    print(f"Bool var: {example_file_path_var}")
     51    return fit
     52
     53class TemplateScriptInterface:
     54    """ This class provides the GUI and related callbacks """
     55    def __init__(self, root=None, cli_args=None):
     56        # If no CLI args, create a default namespace with defaults
     57        if cli_args is None:
     58            parser = argparse.ArgumentParser()
     59            parser.add_argument("-example_float_var", type=float, default=1.0)
     60            parser.add_argument("-example_bool_var", type=bool, default=False)
     61            parser.add_argument("-example_file_path_var", type=str, default="")
     62            # add other arguments to match the ones in main()
     63            cli_args = parser.parse_args([])
     64
     65        self.cli_args = cli_args
     66        self.root = root
     67
     68        if root:
     69            self.root.title(f"Template Script Interface - v{VERSION}")
     70            self.root.resizable(False, False)
     71            self.style = tksiril.standard_style()
     72
     73        # Initialize Siril connection
     74        self.siril = s.SirilInterface()
     75
     76        try:
     77            self.siril.connect()
     78        except s.SirilConnectionError:
     79            if root:
     80                self.siril.error_messagebox("Failed to connect to Siril")
     81            else:
     82                print("Failed to connect to Siril")
     83            return
     84
     85        # Initial checks: example - check if an image is loaded
     86        if not self.siril.is_image_loaded():
     87            if root:
     88                self.siril.error_messagebox("No image is loaded")
     89            else:
     90                print("No image is loaded")
     91            return
     92
     93        # Check if the version of Siril is high enough
     94        # 1.3.6 is the baseline when python scripting became available but in time
     95        # you may need to check for a higher version number in order to use newer
     96        # features.
     97        try:
     98            self.siril.cmd("requires", "1.3.6")
     99        except s.CommandError:
    100            return
    101
    102        # Create the UI and match its theme to Siril
    103        if root:
    104            self.create_widgets()
    105            tksiril.match_theme_to_siril(self.root, self.siril)
    106
    107        # Only apply changes if CLI arguments are non-default
    108        if cli_args and (cli_args.example_float_var != 1.0):
    109            self.apply_changes(from_cli=True)
    110
    111    # This function is used to round values to n decimal places, it is
    112    # always useful if you have sliders in your UI.
    113    def _floor_value(self, value, decimals=2):
    114        """Floor a value to the specified number of decimal places"""
    115        factor = 10 ** decimals
    116        return math.floor(value * factor) / factor
    117
    118    # Here is an example function to round the displayed value of a
    119    # variable to 2 decimal places. You will need one of these for each
    120    # slider control you have.
    121
    122    def _update_example_float_variable_display(self, *args): # pylint: disable=unused-argument
    123        """Update the displayed template variable value with floor rounding"""
    124        value = self.example_float_var.get()
    125        rounded_value = self._floor_value(value)
    126        self.example_float_var_display_var.set(f"{rounded_value:.2f}")
    127
    128    def _browse_file(self):
    129        """
    130        Use a TK filedialog to browse for a file. Note that this callback is
    131        specific to the variable being updated; you might need to have several
    132        similar callbacks if you have more than one file selection widget.
    133        """
    134        filename = filedialog.askopenfilename(
    135            title="Select File",
    136            initialdir=os.path.expanduser("~")
    137        )
    138        if filename:
    139            self.example_file_path_var.set(filename)
    140
    141    def create_widgets(self):
    142        """Create the GUI's widgets, connect signals etc. """
    143        # Main frame with no padding
    144        main_frame = ttk.Frame(self.root)
    145        main_frame.pack(fill=tk.BOTH, expand=True, padx=0, pady=0)
    146
    147        # Title
    148        title_label = ttk.Label(
    149            main_frame,
    150            text="Template Script",
    151            style="Header.TLabel"
    152        )
    153        title_label.pack(pady=(0, 20))
    154
    155        # Parameters frame
    156        params_frame = ttk.LabelFrame(main_frame, text="Parameters", padding=10)
    157        params_frame.pack(fill=tk.X, padx=5, pady=5)
    158
    159        ############################################################
    160        # Example control with an embedded variable in its own frame
    161        ############################################################
    162
    163        template_variable_frame = ttk.Frame(params_frame)
    164        template_variable_frame.pack(fill=tk.X, pady=5)
    165
    166        ttk.Label(template_variable_frame,
    167            text="Example floting point parameter:").pack(side=tk.LEFT)
    168        # This is the actual float variable
    169        self.example_float_var = tk.DoubleVar(self.root,
    170            value=self.cli_args.example_float_var)
    171        # This is a string representation of the float var limited to 2 decimal places
    172        # It is used in the scale label
    173        self.example_float_var_display_var = tk.StringVar(
    174            self.root,
    175            value=f"{self._floor_value(self.cli_args.example_float_var):.2f}")
    176        # Add trace to update display when slider changes
    177        self.example_float_var.trace_add("write",
    178            self._update_example_float_variable_display)
    179
    180        example_float_var_scale = ttk.Scale(
    181            template_variable_frame,
    182            from_=0.0, # set your range minimum here
    183            to=1.0,    # set your range maximum here
    184            orient=tk.HORIZONTAL, # oriented horizontally
    185            variable=self.example_float_var, # the tk variable the widget controls
    186            length=200
    187        )
    188        example_float_var_scale.pack(side=tk.LEFT, padx=10, expand=True)
    189        ttk.Label(
    190            template_variable_frame,
    191            textvariable=self.example_float_var_display_var, # var truncated to 2 d.p.
    192            width=5,
    193            style="Value.TLabel"
    194        ).pack(side=tk.LEFT)
    195        tksiril.create_tooltip(example_float_var_scale,
    196            "Adjusts the template variable.")
    197
    198        ###############################
    199        # Add frame for other variables
    200        ###############################
    201        options_frame = ttk.LabelFrame(main_frame, text="Options", padding=10)
    202        options_frame.pack(fill=tk.X, padx=5, pady=10)
    203
    204        ##################
    205        # Example checkbox
    206        ##################
    207        self.example_bool_var = tk.BooleanVar(self.root,
    208            value=self.cli_args.example_bool_var
    209        )
    210        example_checkbox = ttk.Checkbutton(
    211            options_frame,
    212            text="Example checkbox variable",
    213            variable=self.example_bool_var,
    214            style="TCheckbutton"
    215        )
    216        example_checkbox.pack(anchor=tk.W, pady=2)
    217        tksiril.create_tooltip(example_checkbox, "Example checkbox.")
    218
    219        ##########################################################
    220        # Example file selection
    221        # using an entry and a callback that triggers a filedialog
    222        ##########################################################
    223        file_frame = ttk.Frame(options_frame)
    224        file_frame.pack(fill=tk.X, pady=5)
    225
    226        self.example_file_path_var = tk.StringVar(self.root,
    227            value=self.cli_args.example_file_path_var)
    228        example_file_entry = ttk.Entry(
    229            file_frame,
    230            textvariable=self.example_file_path_var,
    231            width=40
    232        )
    233        example_file_entry.pack(side=tk.LEFT, padx=(0, 5), expand=True)
    234
    235        ttk.Button(
    236            file_frame,
    237            text="Browse",
    238            command=self._browse_file,
    239            style="TButton"
    240        ).pack(side=tk.LEFT)
    241
    242        # The template shows examples of sliders and checkboxes
    243        # however you can add other sorts of TKinter widgets here
    244
    245        # Buttons frame
    246        button_frame = ttk.Frame(main_frame)
    247        button_frame.pack(pady=20)
    248
    249        close_btn = ttk.Button(
    250            button_frame,
    251            text="Close",
    252            command=self.close_dialog,
    253            style="TButton"
    254        )
    255        close_btn.pack(side=tk.LEFT, padx=5)
    256        tksiril.create_tooltip(close_btn,
    257                               "Close the interface and disconnect from Siril. No "
    258                               "changes will be made to the current image.")
    259
    260        apply_btn = ttk.Button(
    261            button_frame,
    262            text="Apply",
    263            command=self.apply_changes,
    264            style="TButton"
    265        )
    266        apply_btn.pack(side=tk.LEFT, padx=5)
    267        tksiril.create_tooltip(apply_btn,
    268                               "Apply the script function with the set parameters "
    269                               "to the current image. Changes can be undone using "
    270                               "Siril's undo function.")
    271
    272    def apply_changes(self, from_cli=False):
    273        """
    274        Get the necessary variables from CLI args or the GUI and call the algorithm
    275        """
    276        try:
    277            # Get the thread
    278            with self.siril.image_lock():
    279                # Determine parameters: prefer CLI args if provided,
    280                # else use GUI values
    281                if from_cli and self.cli_args:
    282                    example_float_var = self.cli_args.example_float_var
    283                    example_bool_var = self.cli_args.example_bool_var
    284                    example_file_path_var = self.cli_args.example_file_path_var
    285                else:
    286                    example_float_var = self.example_float_var.get()
    287                    example_bool_var = self.example_bool_var.get()
    288                    example_file_path_var = self.example_file_path_var.get()
    289
    290                # Get current image
    291                fit = self.siril.get_image()
    292                fit.ensure_data_type(np.float32)
    293
    294                # Save original image for undo
    295                self.siril.undo_save_state(f"Script algorithm: "
    296                                           "arg={example_float_var:.2f}")
    297
    298                # Apply script algorithm
    299                # Your image processing functions go here
    300                result = template_algorithm(fit, example_float_var,
    301                                            example_bool_var,
    302                                            example_file_path_var)
    303
    304                # Clip and update image data
    305                fit.data[:] = np.clip(result, 0, 1)
    306                self.siril.set_image_pixeldata(fit.data)
    307
    308            if from_cli:
    309                print("Script algorithm applied successfully.")
    310
    311        except SirilError as e:
    312            if from_cli:
    313                print(f"Error: {str(e)}")
    314            else:
    315                messagebox.showerror("Error", str(e))
    316
    317    def close_dialog(self):
    318        """ Close dialog """
    319        if hasattr(self, 'root'):
    320            self.root.quit()
    321            self.root.destroy()
    322
    323def main():
    324    """ Main entry point """
    325    parser = argparse.ArgumentParser(description="Template python script")
    326    parser.add_argument("-example_float_var", type=float, default=1.0,
    327                        help="Describe the variable here (0.0 to 1.0)")
    328    parser.add_argument("-example_bool_var", type=bool, default=False,
    329                        help="Describe the variable here (bool, default is False)")
    330    parser.add_argument("-example_file_path_var", type=str, default="",
    331                        help="Describe the variable here (example file path)")
    332
    333    args = parser.parse_args()
    334
    335    try:
    336        if any([args.example_float_var != 1.0, args.example_bool_var is not False]):
    337            # CLI mode
    338            TemplateScriptInterface(cli_args=args)
    339        else:
    340            # GUI mode
    341            root = ThemedTk()
    342            TemplateScriptInterface(root)
    343            root.mainloop()
    344    except SirilError as e:
    345        print(f"Error initializing script: {str(e)}", file=sys.stderr)
    346        sys.exit(1)
    347
    348if __name__ == "__main__":
    349    main()
    350
    351language = "ru"
    352locale_dirs = ["../../translated/"]
    353gettext_compact = "siril-documentation"

Download gui_and_args_template.py

### Current list of Python scripts for Siril 1.4

This page is the first shot at getting a list of Python scripts that is somewhat intelligible and searchable. It was done manually and has only a very succinct description for each script, but will be improved with more words for each with time.

#### Image processing section

Scripts that process a single image for visual enhancements, in general a stack result.

SyQon/Prism.py | SyQon Prism AI denoise. This is a paying product
SyQon/Starless.py | SyQon Starless AI star removal. This is a paying product
SyQon/Parallax.py | SyQon Parallax AI: aberration correction, star reduction and sharpening. This is a paying product
RC-Astro/NoiseXTerminator.py | RC Astro AI denoise. This is a paying product
RC-Astro/StarXTerminator.py | RC Astro Starless AI star removal. This is a paying product
RC-Astro/BlurXTerminator.py | RC Astro Deconv AI: aberration correction, star reduction and sharpening. This is a paying product
processing/Statistical_Stretch.py | Seti Astro Statistical Stretch
processing/AberrationRemover.py | Aberration Remover AI
processing/ContinuumSubtraction.py | Narrowband Continuum Subtraction script
processing/DeepSNR.py | DeepSNR AI denoise (wrapper around the third-party DeepSNR tool)
processing/StarNet.py | StarNet 2.5 star removal (wrapper around the third-party StarNet tool), with optional star mask generation
processing/GPS_Process.py | Image processing based on CosmicClarity and GraXpert (background extraction, denoise and/or sharpening)
processing/Narrowband_Palette_Picker.py | Helps preview different palettes for narrowband image composition
processing/GraXpert-AI.py | Integration of the GraXpert gradient removal tool (AI)
processing/CosmicClarity_Denoise.py | Cosmic Clarity Denoise
processing/DBXtract.py | Extract the Sulfur II, Hydrogen Alpha and Oxygen III signal from dual band filters to compose SHO images in color cameras
processing/Hubble_Palette_from_Dual-Band_OSC.py | Create different "Hubble-like" palettes from OSC (One-Shot Color) images acquired with a dual-band Ha/OIII filter
processing/HDR_multiscale.py | Wavelet-Based Dynamic Range Compression
processing/HDR_Blender.py | Inverse Variance Maximum Likelihood Estimate (MLE) HDR Blender. Blends multiple images with different exposures
processing/NB_2_RGB.py | Monochrome image combination into a color image
processing/SCUNet_Denoise.py | SCUNet image denoiser (AI)
processing/CosmicClarity_Superres.py | Cosmic Clarity Superres
processing/CosmicClarity_Native.py | Cosmic Clarity AI-powered sharpening, denoising, super resolution and star removal
processing/AutoBGE.py | Auto Background Extraction script
processing/CosmicClarity_Satellite.py | Cosmic Clarity Satellite Removal
processing/CosmicClarity_Darkstar.py | Cosmic Clarity Darkstar
processing/ER-Bill_Star_Reduction.py | Script for reducing stars using pixel math
processing/DSA-Star_Reduction.py | Script for reducing stars using pixel math
processing/CosmicClarity_Sharpen.py | Cosmic Clarity sharpening process
VeraLux/VeraLux_Alchemy.py | Linear-Phase Narrowband Normalization & Mixing
VeraLux/VeraLux_Nox.py | Physically-Faithful Photometric Gradient Reduction
VeraLux/VeraLux_StarComposer.py | High-Fidelity Star Reconstruction Engine
VeraLux/VeraLux_Revela.py | Photometric Local Contrast & Texture Engine
VeraLux/VeraLux_HyperMetric_Stretch.py | Photometric Hyperbolic Stretch Engine
VeraLux/VeraLux_Starting_Point.py | Interactive Workflow Guide & Manual
VeraLux/VeraLux_Curves.py | Spline-Based Photometric Sculpting Engine
VeraLux/VeraLux_Silentium.py | Linear-Phase Noise Suppression Engine
VeraLux/VeraLux_Vectra.py | Vector Color Grading & Chromatic Surgery Engine

#### Sequence pre-processing section

Scripts that process a set of images, an alternative to usual preprocessing scripts.

preprocessing/AMSP.py | Siril Wizard – Automatic Multi-Session Processing. Drag and drop all files and it does the stacks
preprocessing/StorageFriendlyStacking.py | Storage Friendly Stacking Script
preprocessing/Naztronomy-Smart_Telescope_PP.py | Naztronomy - Smart Telescope Preprocessing script
preprocessing/GPS_Preprocess.py | Preprocessing with multi-session, mosaics and many optional steps support
preprocessing/ER-CometStartrail.py | Stack a startrail from a sequence
preprocessing/osc-multi-night-stacking-v1.2.py | Multi-night stacking
preprocessing/Naztronomy-OSC_PP.py | Naztronomy - OSC Image Preprocessing script with mosaics support

#### Utility section

Scripts that provide some tool for data analysis or other non-processing related tasks.

core/Siril_Catalog_Installer.py | Siril Catalog Installer
core/GPU_Manager.py | A GUI tool for managing ONNX, PyTorch, and JAX installations
utility/Selected_Star_Spectrum.py | Plots the Gaia DR3 continuous spectrum for any selected Gaia DR3 source
utility/RegistrationInspector.py | Displays the frames of selected images to check framing
utility/SuperStack.py | Performs superstacking (moving average)
utility/plot3D.py | Plots the current image or selection in 3D using matplotlib
utility/Sequence_Statistics_Analyzer.py | Analyze frames and plot key statistics
utility/Workflow_Companion.py | Deep Space Astro drag-and-drop workflow companion: queue, reorder and launch scripts and Siril functions
utility/Workflow_Summarizer.py | Uses Google Gemini to summarize the Siril log into readable workflow documentation
utility/Blink_Browse_Filter_Sort.py | Image browser / filter / sorter with adaptive caching
utility/Svenesis-GradientAnalyzer.py | Gradient Analyzer
utility/Svenesis-MultipleHistogramViewer.py | Multiple Histogram Viewer
utility/Svenesis-CosmicDepth3D.py | CosmicDepth 3D
utility/Patch_Inpainting_Tool.py | Corrects defects and creates a star mask
utility/Svenesis-AnnotateImage.py | Full size image annotation
utility/AF_Multi_Crop.py | Multi-crop script
utility/Svenesis-BlinkComparator.py | Blink Comparator
utility/Satellite_Trail_Removal.py | Remove satellite trails
utility/Sequence_Deleter.py | GUI to delete sequences
utility/ImageWindow.py | Pseudo-MDI GUI for storing and swapping images
utility/Dwarfium_Archive_Selector.py | Prepare sessions from Dwarf telescopes
utility/AstroT3kFetch.py | Fetch and classify astrophotography frames
utility/Diffraction_Spike_Overlay.py | Add diffraction spikes
utility/Flat_On_Flat_Analyzer.py | Analyze flat field effectiveness
utility/Distortion3D.py | Plot 3D distortion map
utility/Autocrop.py | Autocrop stacked images
utility/Signature_Tool.py | Insert a signature/logo
utility/Galaxy_Annotations.py | Create galaxy annotations from Simbad queries
utility/Asteroid_Comet_Finder.py | Search for asteroids and comets
utility/AutoStretch_Preview.py | Interactive AutoStretch preview
utility/HertzsprungRussell.py | Create a Hertzsprung-Russell diagram

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

Not all scripts are written by, or the responsibility of, the Siril development team!

With the introduction of Python scripting the power available to Siril script writers has increased enormously. With great power comes great responsibility!

You, as the user, need to ensure you trust the authors of scripts you use. 1.4.0 introduces the script repository. Some of the scripts there have been written by the Siril development team but others have been written by third party contributors. Please read the Key Info section regarding guidance for script authors, end users and the rules for the script repository.

### Get Scripts

A small number of basic script files come packaged with Siril, however you can add more from the script repository. To do so, go to the Scripts menu -> Get Scripts. This will open the Scripts tab of the Preferences dialog. Here, below the list of local script directories, you will find a list of scripts in the repository.

The scripts can be sorted by category, script name, type or by whether or not they are selected.

As there may eventually be a large number of scripts, not all of which will be relevant to your workflow, you can configure the scripts you want to appear in the Scripts menu. Simply select the checkbox next to them and click Apply to update the menu.

Совет

You don't need to select scripts to appear in the menu for them to be usable with the `pyscript` command: this will search all the local script directories as well as the whole of the local scripts repository.

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

Script authors may submit updates. Occasionally, inevitably, there may be a bad update that breaks the script for you. Bugs need to be reported to the script author: for scripts written by the Siril team you can report them at the scripts GitLab repository and for those written by third party contributors you should report them at the contact details in the script.

The script can be opened in the script editor by double clicking on it in the list. This is important for several reasons:

- It allows you to find the details of the script author for bug reporting.

- When you double click the script there is an option to revert to previous versions.

- This means that if an update broke the script, you can open the previous version and save a local copy in one of your local script folders for use until the script author fixes the bad update. (The version saved in a local folder will take priority over a repository version with the same name, but it will appear in a different subfolder in the menu with the name of your local scripts folder.)

## Автономный режим

Siril может работать как с графическим интерфейсом пользователя (GUI), так и с интерфейсом командной строки (CLI), который даже не требует наличия дисплея. Он может обрабатывать изображения для других программ на удаленных или встроенных компьютерах, используя либо сценарии, либо генерируемые в реальном времени операции, называемые командами. Возможности автономного режима Siril на самом деле такие же, как и у доступных команд. Их более сотни, что позволяет автоматически выполнять предварительную обработку и фотометрический анализ.

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

В автономном режиме команды можно выполнять либо путем передачи скрипта для запуска, либо с помощью параметра командной строки ``-s -``использовать в качестве сценария стандартный ввод программы и записывать в него команды, или используя другие именованные каналы.

Вот пример кода bash, вызывающего Siril в автономном режиме, который создает мастер-кадр шума считывания и возвращает значение уровня его шума на консоль красным цветом:

    #!/bin/bash
    # bash commands to prepare files

    initdir=$(pwd)

    ######## Set your own variables #############
    SCRIPTS_DIRECTORY=$initdir
    SIRIL_PATH=siril-cli
    #############################################

    # Removing process folder if exists #
    rm -rf $SCRIPTS_DIRECTORY/process

    echo "Running siril bash script in $initdir"
    output=$($SIRIL_PATH -d $SCRIPTS_DIRECTORY -s - <<ENDSIRIL

    ############################################
    #
    # Example of script that create a master-bias
    # and print in red the noise of the image
    #
    ############################################

    requires 1.0.0

    # Convert Bias Frames to .fit files
    cd biases
    convert bias -out=../process
    cd ../process

    # Stack Bias Frames to bias_stacked.fit
    stack bias rej 3 3 -nonorm -out=master-bias
    cd ../..

    close
    ENDSIRIL
    )

    log_line=$(echo "$output" | grep -o "log: Background noise value.*")
    echo -e "\e[31m$log_line\e[0m"

    echo done Siril part

### Поток команд (Канал/Pipe)

Этот режим был введен в Siril 0.9.10. Команды можно отправлять через именованный канал, а журналы и статус можно получать через другой. Режим активируется с помощью аргумента командной строки `-p`.

Протокол довольно прост: Siril получает команды и выводит некоторые обновления. Только команды, помеченные как скриптовые, могут использоваться с этой системой. Всякий раз, когда закрывается канал ввода команд или дается команда отмены, выполняемая команда останавливается, как если бы была нажата кнопка остановки в графическом интерфейсе. Каналы называются `siril_command.in` и `siril_command.out` и доступны в `/tmp` в системах на базе Unix. Начиная с версии 1.2.0, пути каналов можно настраивать с помощью опций `-r` и `-w`, что позволяет внешним программам создавать их перед запуском Siril, обычно с помощью команды `mkfifo`. Также в 1.2.0 появилась новая команда `ping`, которая просто возвращает статус, указывающий, готов ли siril обработать команду или ещё занят.

Выходные данные Siril на канале представляют собой поток текста в одну строку, отформатированный следующим образом:

- `ready` выводится при запуске, указывая на то, что siril готов обрабатывать команды

- `log:`, за которым следует сообщение журнала

- status: verb [subject], где verb (действие) может быть либо starting (запуск), successful (успешное завершение), error (произошла ошибка) или exit (выход) (сообщение о выходе пока не реализовано). Subject — это текущее имя команды, за исключением exit, которое указывает на то, что Siril пережил фатальную ошибку и должен выйти.

- `progress: value%` является эквивалентом индикатора выполнения, он периодически отправляет проценты, а иногда и 0% в конце обработки в качестве информации о простое.

## Разбор путей

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

- calibrate

- stack и stackall

- все команды saveXXX

и, конечно же, их аналоги в графическим интерфейсе пользователя.

### Пример синтаксиса

Для начала возьмем простой пример. Допустим, у вас есть файл с именем `light_00001.fit`, и вы хотите найти темновой мастер-кадр из вашей библиотеки мастер-кадров, который соответствует характеристикам указанного снимка. Поскольку вы выбрали соглашение для именования своих темновых мастер-кадров, вы знаете, что правильный темновой кадр должен называться примерно так:

    DARK_"exposure"s_G"gain"_O"offset"_T"temperature"C_bin"binning".fit

с терминами в кавычках, замененными на значения, считанные из заголовка вашего снимка. Для экспозиции 120с, температуры -10°C, усиления/смещения 120/30 и биннинга 1, темновой мастер-кадр будет называться:

    DARK_120s_G120_O30_T-10C_bin1.fit

Что ж, это именно то, что позволяет делать эта функция. Если вы укажете имя темновому кадру с описанными ниже соглашениями, вы можете сказать Siril открыть снимок, прочитать его заголовок и использовать его значения для записи такой строки (а затем использовать ее для калибровки вашего снимка).

Вы можете прочитать информацию, содержащуюся в заголовке, либо с помощью команды dumpheader, либо через меню Инструменты, Инструменты ‣ Заголовок FITS... Обычно вывод будет выглядеть следующим образом (некоторые ключи удалены для краткости):

    SIMPLE  =                    T / C# FITS
    BITPIX  =                   16 /
    NAXIS   =                    2 / Dimensionality
    NAXIS1  =                 4144 /
    NAXIS2  =                 2822 /
    BZERO   =                32768 /
    EXTEND  =                    T / Extensions are permitted
    IMAGETYP= 'LIGHT'              / Type of exposure
    EXPOSURE=                120.0 / [s] Exposure duration
    DATE-OBS= '2022-01-24T01:03:34.729' / Time of observation (UTC)
    XBINNING=                    1 / X axis binning factor
    YBINNING=                    1 / Y axis binning factor
    GAIN    =                  120 / Sensor gain
    OFFSET  =                   30 / Sensor gain offset
    INSTRUME= 'ZWO ASI294MC Pro'   / Imaging instrument name
    SET-TEMP=                -10.0 / [degC] CCD temperature setpoint
    CCD-TEMP=                -10.0 / [degC] CCD temperature
    BAYERPAT= 'RGGB'               / Sensor Bayer pattern
    TELESCOP= '61EDPH'             / Name of telescope
    FILTER  = 'DualBand'           / Active filter name
    OBJECT  = 'Rosette Nebula     '/ Name of the object of interest
    OBJCTRA = '06 30 36'           / [H M S] RA of imaged object
    OBJCTDEC= '+04 58 51'          / [D M S] Declination of imaged object
    RA      =     97.6960081674312 / [deg] RA of telescope
    DEC     =     4.99212765957446 / [deg] Declination of telescope
    END

Тогда формат, используемый для указания имени темнового кадра, будет следующим:

    DARK_$EXPTIME:%d$s_G$GAIN:%d$_O$OFFSET:%d$_T$SET-TEMP:%d$C_bin$XBINNING:%d$.fit

Все термины для разбора формируются следующим образом: $KEY:fmt$

> - KEY — любое (допустимое) имя строки из заголовка FITS файла

> - fmt — это спецификатор формата.

Например, `$EXPTIME:%d$` будет преобразовано в `120`, если снимок был экспонирован в течение 120с. Но будет преобразовано в `120.0`, если вы укажете `$EXPTIME:%0.1f$`, благодаря спецификатору формата `%x.yf`.

Таким образом, полное выражение написанное выше будет иметь вид:

    DARK_**120**s_G**120**_O**30**_T**-10**C_bin**1**.fit

В этом первом примере мы использовали преобразование только в целые числа с %d. Но есть и другие общепринятые средства форматирования, которые вы можете использовать:

- `%x.yf` для десятичных дробей

- `%s` для строк

Примечание

Для строк начальные и конечные пробелы всегда удаляются, а пробелы внутри строк заменяются знаками `_`. Пример: `$OBJECT:%s$` будет преобразовано в `Rosette_Nebula`.

Вы также можете использовать некоторые менее традиционные спецификаторы формата:

- Чтобы преобразовать дату из ключа заголовка дата-время, можно использовать специальный нестандартный спецификатор формата dm12, который означает дату минус 12 часов. В заголовке выше строка DATE-OBS имеет значение `2022-01-24T01:03:34.729`. `$DATE-OBS:dm12$` преобразуется в `2022-01-23`, что является датой в начале ночи. Можно также использовать спецификатор формата dm0, который просто преобразует дату, не вычитая 12 часов.

- Чтобы преобразовать дату-время из строки заголовка даты-времени, можно использовать нестандартный спецификатор формата dt, который просто означает дату-время. В заголовке выше строка `DATE-OBS` имеет значение `2022-01-24T01:03:34.729`. `$DATE-OBS:dt$` будет преобразована в `2022-01-24_01-03-34`.

- Для преобразования информации `RA` и `DEC` из строк заголовка `OBJCTRA` и `OBJCTDEC` можно использовать нестандартные спецификаторы формата ra и dec. В заголовке выше строки `OBJCTRA` и `OBJCTDEC` имеют значения `06 30 36` и `+04 58 51` соответственно. `$OBJCTRA:ra$_$OBJCTDEC:dec$` преобразуется в `06h30m36s_+04d58m51s`.

- Чтобы проанализировать информацию `RA` и `DEC` из строк заголовка `RA` и `DEC`, когда они в десятичном формате, вы можете использовать нестандартные спецификаторы формата ran и decn. В заголовке выше строки `RA` и `DEC` имеют значения `97.6960081674312` и `4.99212765957446` соответственно. `$RA:ran$_$DEC:decn$` будет преобразовано в `06h30m47s_+04d59m32s`.

Хорошим примером имени файла для результата сложения является приведённое далее выражение:

    $OBJECT:%s$_$FILTER:%s$_$STACKCNT:%d$x$EXPTIME:%d$sec_G$GAIN:%d$_O$OFFSET:%d$_T$CCD-TEMP:%d$°C_$DATE-OBS:dm12$

даёт что-то вроде:

    NGC_7023_L_57x120sec_G100_O50_T-9°C_2023-10-07

Чтобы проверить синтаксис, вы можете загрузить изображение и использовать команду parser, как указано ниже.

Командная строка Siril

    parse str [-r]

Разбирает строку str, используя информацию из заголовка загруженного в данный момент изображения. Основная цель этой команды — отладка синтаксического анализа путей ключей заголовка, которые могут использоваться другими командами.
Опция -r указывает, что строку необходимо интерпретировать в режиме чтения. В этом режиме все подстановочные знаки (wildcards), определённые в строке str, используются для поиска файла, чьё название соответствует шаблону. В противном случае режимом по умолчанию является режим записи, и подстановочные знаки, при наличии, удаляются из анализируемой строки.
Если строка str начинается с префикса $def, он будет распознан как зарезервированное ключевое слово и будет выполнен его поиск в строках, сохранённых в gui_prepro.dark_lib, gui_prepro.flat_lib, gui_prepro.bias_lib или gui_prepro.stack_default для $defdark, $defflat, $defbias или $defstack, соответственно.
Когда загружена последовательность, можно так же использовать ключевое слово $seqname$

### Поиск файла с помощью разбора пути

В примере выше мы увидели, что можем найти имя темнового мастер-кадра на основе информации, содержащейся в заголовке калибруемого изображения. Это то, что называется в команде `parse`, `режим чтения`.

Это поведение в основном используется в сочетании с командой/вкладкой calibrate и для поиска мастер-файлов дисторсии. В параметре `-dark=` команды или в поле `Dark` графического интерфейса можно использовать описанную выше синтаксическую конструкцию. Таким образом, вы можете быть уверены, что соответствующий темновой кадр будет выбран для калибровки изображения. То же самое в равной степени применимо к `Bias` и `Flat`. Конечно, вы также можете указать полный (или относительный) путь к файлу. При этом путь также может содержать выражения подобного рода.

Например, для кадров плоского поля вы можете указать путь к библиотеке, которая может содержать информацию о фильтре или телескопе, поскольку у вас может быть несколько настроек. Такой путь:

    ~/astro/masters/flats/$INSTRUME:%s$_$TELESCOP:%s$/$FILTER:%s$/FLAT_bin$XBINNING:%d$.fit

Может быть преобразован так:

    ~/astro/masters/flats/ZWO_ASI294MC_Pro_61EDPH/DualBand/FLAT_bin1.fit

и является допустимым значением для поля `Мастер-кадр плоского поля`.

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

- `$defdark`

- `$defflat`

- `$defbias`

- `$defdisto`

Их значения указываются в разделе Preferences ‣ Pre-processing. Вы также можете задать их через скрипт с помощью команды set. Они соответствуют значениям `gui_prepro.dark_lib`, `gui_prepro.flat_lib`, `gui_prepro.bias_lib` и `gui_prepro.disto_lib`.

Когда их значения установлены и вы решили использовать их в качестве значений по умолчанию, они будут отображаться в полях вкладки Калибровка. Вы также можете начать писать свои скрипты, используя эти ключевые слова. Шаг калибровки нового универсального скрипта для цветной камеры может выглядеть так:

    calibrate light -dark=$defdark -cc=dark -flat=$defflat -cfa -equalizecfa -debayer

Это позволит вам выбирать мастер-файлы непосредственно из ваших библиотек и гарантировать, что вы не перепутаете их на этапе калибровки.

### Запись файла с разбором пути

Теперь, когда удобно иметь возможность находить файлы, было бы столь же полезно использовать этот синтаксис для сохранения ваших файлов при укладке изображений. Именно это и есть `режим записи`. Синтаксис можно использовать в поле `-out=` команд stack и stackall или в соответствующем поле в графическом интерфейсе пользователя.

Допустим, вы хотите написать общий скрипт, который подготавливает вам темновые мастер-кадры каждый раз, когда вы обновляете свою библиотеку. В строке `stack` скрипта вы можете написать:

    stack dark rej 3 3 -nonorm -out=$defdark

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

Чтобы обеспечить еще большую гибкость при использовании команд `stack`, есть еще два зарезервированных ключевых слова:

- `$defstack`

- `$sequencename$`

Что касается настроек по умолчанию, $def stack настраивается в том же разделе Настроек или с помощью команды set в gui_prepro.stack_default. Например, давайте предположим, что вы определили $def stack как:

    Result_$OBJECT:%s$_$DATE-OBS:dm12$_$LIVETIME:%d$s

Строка скрипта:

    stack r_pp_light rej 3 3 -norm=addscale -output_norm -out=$defstack

сохранит результат укладки в файл с именем:

    Result_Rosette_Nebula_2022-01-24_12000s.fit

Начиная с Siril 1.2.0, имя по умолчанию для результата укладки определяется как `$sequencename$stacked` (знак `_` добавляется, если его не указали). Это похоже на поведение в предыдущих версиях, за исключением того, что теперь явно указано, что используется разбор пути.

### Использование подстановочных знаков

Возможно, вы хотите использовать какое-то ключевое значение в имени вашего мастера, которое не соответствует ключевому значению в кадрах, которые нужно откалибровать. На примере это может быть немного понятнее. Допустим, вы хотите, чтобы в названиях ваших мастер-кадров плоского поля был указан срок их хранения. Что-то вроде:

    FLAT_1.32s_Halpha_G120_O30_bin1.fit

Если вы поместите поле $EXPTIME:%0.2f$ в `$defflat`, это приведет к ошибке на этапе калибровки. Просто потому, что ключ EXPTIME будет считываться из калибруемого изображения, а не из кадра плоского поля.

Чтобы справиться с этой ситуацией, можно использовать подстановочные знаки в выражениях для разбора:

    FLAT_$*EXPTIME:%0.2f$_$FILTER:%s$_G$GAIN:%d$_O$OFFSET:%d$_bin$XBINNING:%d$

Обратите внимание на символ *, расположенный непосредственно перед `EXPTIME`.

Этот символ означает следующее:

- В `режиме записи`, то есть, по сути, при укладке вашего мастер-кадра плоского поля, значение строки `EXPOSURE` будет использоваться для формирования имени сохраняемого файла. В приведенном выше примере вы бы тогда фактически сохранили в `FLAT_1.32s_Halpha_G120_O30_bin1.fit`.

- В `режиме чтения`, когда калибруются ваши изображения, значение строки `EXPOSURE` будет заменено на *. При поиске такого файла Siril извлечет все файлы, которые соответствуют шаблону `FLAT_*_Halpha_G120_O30_bin1.fit`. Надеюсь, ваше соглашение об именовании достаточно продумано, чтобы найти только один соответствующий файл и использовать его для калибровки.

  Это также может быть полезно для указания мастер-файлов дисторсии. Например, вы могли бы использовать:

    ~/astro/masters/distos/DISTO_$*DATE-LOC:dm12$_$INSTRUMEN:%s$_$TELESCOP:%s$_bin$XBINNING:%d$.wcs

Обратите внимание на символ * прямо перед `DATE-LOC`.

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

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

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

### Обработка дубликатов

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

Основные ключевые слова | Альтернативные
--- | ---
MIPS-HI | CWHITE
MIPS-LO | CBLACK
PROGRAM | SWCREATE
IMAGETYP | FRAMETYP
EXPTIME | EXPOSURE
FILTER | FILT-1
FOCALLEN | FOCAL
CENTALT | OBJCTALT
CENTAZ | OBJCTAZ
XBINNING | BINX
YBINNING | BINY
XPIXSZ | XPIXELSZ, PIXSIZE1, PIXSIZEX, XPIXSIZE
YPIXSZ | YPIXELSZ, PIXSIZE2, PIXSIZEY, YPIXSIZE
CCD-TEMP | CCD_TEMP, CCDTEMP, TEMPERAT, CAMTCCD
OFFSET | BLKLEVEL
CVF | EGAIN
FOCPOS | FOCUSPOS
FOCTEMP | FOCUSTEM
STACKCNT | NCOMBINE
SITELAT | SITE-LAT, OBSLAT
SITELONG | SITE-LON, OBSLONG

## Укладка на лету

Укладка на лету это техника астрофотографии, которая позволяет в реальном времени сложить серии изображений для получения изображения более высокого качества. В отличие от традиционного сложения изображений, которое включает объединение многих изображений после того, как они были получены, при укладке на лету изображения объединяются по мере их получения. Благодаря этому возможен мгновенный предпросмотр окончательного изображения, что позволяет астрофотографу внести поправки в съёмочный процесс для улучшения окончательного результата.

Siril 1.2.0 имеет эту возможность, которая, на данный момент, является экспериментальной. Укладка на лету позволяет отслеживать файл в реальном времени и складывать изображения по мере их появления. Укладка возможна как с использованием калибровочных кадров (темновых кадров, кадров шума считывания и кадров плоского поля), так и без них. Калибровочные кадры должны быть сделаны заранее, если планируется их использовать.

### Укладка на лету (интерфейс пользователя)

Примечание

Укладка на лету возможна только с использованием файлов в формате FITS или "сырых" (RAW) изображений с камеры.

Для начала укладки на лету необходимо:

- Указать рабочий каталог при помощи кнопки Домой, в котором будут сохраняться изображения по мере съёмки.

- Нажать кнопку, обведённую рамкой на изображении ниже.

Появится новое окно.

В этом окне есть несколько кнопок и настроек. Кнопка Пуск, которая после нажатия становится кнопкой Пауза, и кнопка Стоп. Первая кнопка запускает или приостанавливает наблюдение за рабочим каталогом, а вторая кнопка — останавливает наблюдение.

Все остальные настройки стандартны для предобработки астрономических изображений:

- дебайеризация: Шаблон Байера определяется в файлах и дебайеризация включается автоматически. Это более индикатор, чем настройка.

- использовать 32 бита: Для обработки изображений будет использована 32-битная глубина цвета. Это медленнее и, в общем, в терминах качества, для укладки на лету бесполезно.

- удалить градиент: Применить удаление линейного градиента фона на откалиброванных входящих кадрах.

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

Ниже приведены 3 раздела, в которых отображается информация, необходимая для оценки процесса укладки.

- Статистка: В этом разделе приводится информация об изменении уровня шума в ADU и времени обработки изображения.

- Укладка: В этом разделе приводится информация о количестве сложенных кадров и общем времени экспозиции.

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

Примечание

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

### Укладка на лету (автономный режим)

Возможно использование укладки на лету из командной строки. Для этого необходимы всего 3 команды, которые объяснены ниже.

- Первая, start_ls, запускает сессию укладки на лету. Возможно указать этой команде темновые кадры и кадры плоского поля для калибровки изображений в ходе сессии.

  Командная строка Siril

      start_ls [-dark=filename] [-flat=filename] [-rotate] [-32bits]

  Запускает сессию укладки на лету, опционально используя калибровочные файлы и ожидает входящие файлы от команды LIVESTACK пока не будет вызвана команда STOP_LS. По умолчанию используется регистрация по сдвигу и 16-битная обработка, поскольку это быстрее. Данные настройки могут быть изменены с помощью аргументов -rotate и -32bits
  Необходимо отметить, что команды укладки на лету переводят Siril в состояние, когда программа не может выполнять другие команды. После команды START_LS, могут быть переданы только команды LIVESTACK, STOP_LS и EXIT. Вызов STOP_LS переводит Siril в его нормальное состояние, когда укладка на лету не выполняется
  Ссылки:livestack, stop_ls, exit

- Команда livestack будет применена к каждому изображению, которое вы желаете сложить.

  Командная строка Siril

      livestack filename

  Обрабатывает предоставленное изображение для укладки на лету. Возможна только после START_LS. Обработка включает калибровку входящего изображения (если так была сконфигурирована START_LS), дебайеризацию (если это полноцветное изображение), регистрацию и укладку. Временный результат будет сохранён в файле live_stack_00001.fit до тех пор, пока для изменения этого не будет добавлена новая опция
  Ссылка: start_ls

- Последняя команда, stop_ls, останавливает сессию укладки на лету.

  Командная строка Siril

      stop_ls

  Останавливает сессию укладки на лету. Возможно только после START_LS
  Ссылка: start_ls

## Команды

На этой страницы содержится список всех команд, доступных в Siril 1.4.4.

Доступ к списку доступен по нажатию иконки .

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

Совет

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

Совет

Если вы хотите передать аргумент, содержащий строку с пробелами, например название файла, вам необходимо заключить в кавычки весь аргумент, а не только саму строку. Например, необходимо использовать `команда "-filename=My File.fits"`, вместо `команда -filename="My File.fits"`.

addmax

    addmax filename

Вычисляет новое изображение, объединяя изображение, загруженное в память, с изображением filename. Значение каждого пикселя в новом изображении определяется как максимальное значение в текущем изображении и в filename

asinh

    asinh [-human] stretch { [offset] [-clipmode=] }

Преобразует изображение, используя функцию arcsin, благодаря чему становятся видны тусклые объекты. Обязательный аргумент команды — stretch, обычно в диапазоне от 1 до 1000, определяет интенсивность растягивания. Точка чёрного может быть смещена с помощью аргумента offset в нормализованном значении пикселя в диапазоне [0, 1]. Наконец, аргумент -human позволяет использовать веса на основе относительной чувствительности человеческого глаза для вычисления светимости, применяемой при расчёте растягивания для каждого пикселя, а не просто средние значения пикселей каналов. Этот метод растягивания сохраняет светимость в цветовом пространстве L*a*b*. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

autoghs

    autoghs [-linked] shadowsclip stretchamount [-b=] [-hp=] [-lp=] [-clipmode=]

Применение обобщённого гиперболического растягивания с точкой симметрии SP, определяемой как k.σ из медианы каждого канала (здесь значение shadowsclip является k и может быть отрицательным). По умолчанию точка симметрии и растягивание вычисляются поканально. Точка симметрии может быть рассчитана как среднее значение каналов при помощи опции -linked. Интенсивность растягивания D передаётся во втором обязательном аргументе.
Используются следующие неявные значения: 13 для B, фокусирующее на диапазон яркости точки симметрии SP; 0.7 для HP и 0 для LP. Все значения могут быть изменены при помощи опций с соответствующими названиями. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

autostretch

    autostretch [-linked] [shadowsclip [targetbg]]

Автоматически растягивает текущее загруженное изображение с различными параметрами для каждого канала (если каналы несвязаны), если только не передан аргумент -linked. Необязательные аргументы: shadowclip — точка обрезки теней, выраженная в значениях σ от основного пика гистограммы (по умолчанию -2.8); targetbg — целевое значение фона, в диапазоне [0, 1] (по умолчанию 0.25), определяющее окончательную яркость изображения. Значениями по умолчанию являются используемые при визуализации авторастягивания в графическом интерфейсе пользователя.
Не используйте несвязанную версию после калибровки цвета, поскольку это повлияет на баланс белого

bg

    bg

Возвращает значение уровня фона изображения, загруженного в память

bgnoise

    bgnoise

Возвращает значение уровня фонового шума изображения, загруженного в память

Дополнительная информация доступна в соответствующем разделе документации

binxy

    binxy coefficient [-sum]

Вычисляет числовой биннинг изображения, находящегося в памяти (сумма пикселей 2×2, 3×3..., подобно аналоговому биннингу у CCD-камеры). Если передан необязательный аргумент -sum, то вычисляется сумма пикселей, в то время как при отсутствии необязательного аргумента вычисляется среднее значение

boxselect

    boxselect [-clear] [x y width height]

Создаёт выделенную область на загруженном память изображении с аргументами x, y, width и height, где x и y — координаты верхнего левого угла, начинающиеся с (0, 0), а width и height — размер выделения. Аргумент -clear удаляет любую выделенную область. Если аргумент не передан, выводится текущее выделение

calibrate

    calibrate sequencename [-bias=filename] [-dark=filename] [-flat=filename] [-cc=dark [siglo sighi] || -cc=bpm bpmfile] [-cfa] [-debayer] [-fix_xtrans] [-equalize_cfa] [-opt[=exp]] [-all] [-prefix=] [-fitseq]

Калибрует последовательность sequencename, используя кадры шума считывания, темновые кадры и кадры плоского поля, указанные в аргументе.
Вместо изображения, можно указать однородный уровень шума считывания, введя в кавычках выражение, начинающееся со знака =. Например, -bias="=256" или -bias="=64*$OFFSET".
Косметическая коррекция по умолчанию отключена. Если вы хотите применить коррекцию, это необходимо указать с помощью опции -cc=.
Вы можете использовать -cc=dark для определения горячих и холодных пикселей по темновому мастер-кадру, который должен быть указан с помощью опции -dark=. Опционально можно указать значения холодных и горячих пикселей с помощью siglo и sighi, соответственно. Значение 0 отключает коррекцию. Если значения σ не указаны, то будет применено только определение горячих пикселей со значением σ равным 3.
В качестве альтернативы, для указания пикселей, которые необходимо скорректировать, можно использовать опцию -cc=bpm за которой следует путь к вашей карте дефектных пикселей. Пример файла может быть получен с помощью команды find_hot, применённой к темновому мастер-кадру.
К цветным изображениям в формате CFA применимы три опции: -cfa для целей косметической коррекции, -debayer для дебайеризации изображений перед их сохранением и -equalize_cfa для выравнивания средней интенсивности слоёв RGB в мастер-кадре плоского поля, чтобы избежать тонирования откалиброванного изображения.
Опция -fix_xtrans используется при работе с файлами X-Trans, применяя коррекцию к темновым кадрам и кадрам шума считывания для удаления квадратного рисунка в зоне автофокуса.
Так же можно оптимизировать вычитание темнового кадра с помощью -opt, которая требует указания мастер-кадра шума считывания и темнового мастер-кадра, и автоматически вычисляет коэффициент, применяемый к темновому кадру, либо вычисляет этот коэффициент благодаря ключевому слову exposure, переданному с помощью -opt=exp.
По умолчанию, кадры, отмеченные как исключённые, не обрабатываются. С помощью аргумента -all можно принудительно обработать все кадры, даже отмеченные как исключённые.
Название итоговой последовательности будет начинаться с префикса "pp_", если не указан иной с помощью опции -prefix=.
Если передана опция -fitseq, итоговая последовательность будет последовательностью FITS (одиночный файл)

calibrate_single

    calibrate_single imagename [-bias=filename] [-dark=filename] [-flat=filename] [-cc=dark [siglo sighi] || -cc=bpm bpmfile] [-cfa] [-debayer] [-fix_xtrans] [-equalize_cfa] [-opt[=exp]] [-prefix=]

Калибрует изображение imagename, используя кадры шума считывания, темновые кадры и кадры плоского поля, указанные в аргументе.
Вместо изображения, можно указать однородный уровень шума считывания, введя в кавычках выражение, начинающееся со знака =. Например, -bias="=256" или -bias="=64*$OFFSET".
Косметическая коррекция по умолчанию отключена. Если вы хотите применить коррекцию, это необходимо указать с помощью опции -cc=.
Вы можете использовать -cc=dark для определения горячих и холодных пикселей по темновому мастер-кадру, который должен быть указан с помощью опции -dark=. Опционально можно указать значения холодных и горячих пикселей с помощью siglo и sighi, соответственно. Значение 0 отключает коррекцию. Если значения σ не указаны, то будет применено только определение горячих пикселей со значением σ равным 3.
В качестве альтернативы, для указания пикселей, которые необходимо скорректировать, можно использовать опцию -cc=bpm за которой следует путь к вашей карте дефектных пикселей. Пример файла может быть получен с помощью команды find_hot, применённой к темновому мастер-кадру.
К цветным изображениям в формате CFA применимы три опции: -cfa для целей косметической коррекции, -debayer для дебайеризации изображений перед их сохранением и -equalize_cfa для выравнивания средней интенсивности слоёв RGB в мастер-кадре плоского поля, чтобы избежать тонирования откалиброванного изображения.
Опция -fix_xtrans используется при работе с файлами X-Trans, применяя коррекцию к темновым кадрам и кадрам шума считывания для удаления квадратного рисунка в зоне автофокуса.
Так же можно оптимизировать вычитание темнового кадра с помощью -opt, которая требует указания мастер-кадра шума считывания и темнового мастер-кадра, и автоматически вычисляет коэффициент, применяемый к темновому кадру, либо вычисляет этот коэффициент благодаря ключевому слову exposure, переданному с помощью -opt=exp
Название итоговой последовательности будет начинаться с префикса "pp_", если не указан иной с помощью опции -prefix=

capabilities

    capabilities

Отображает список возможностей Siril на основе опций компиляции и среде, в которой исполняется программа

catsearch

    catsearch name

Ищет объект по названию (name) и добавляет его в каталог пользовательских аннотаций. В первую очередь поиск производится в каталоге аннотаций. Если объект не найден, то делается запрос к удалённому серверу SIMBAD.
Объектом может быть тело Солнечной системы. В этом случае перед названием объекта необходим префикс 'a:' для астероида, 'p:' для планеты, 'c:' для кометы, 'dp:' для карликовой планеты или 's:' для естественного спутника. Поиск выполняется для даты и местоположению Земли, указанным в заголовке файла, с помощью сервиса Miriade от Института небесной механики и вычисления эфемерид (IMCCE)

ccm

    ccm m00 m01 m02 m10 m11 m12 m20 m21 m22 [gamma]

Применяет матрицу преобразования цвета к текущему изображению.
Имеются 9 обязательных аргументов, соответствующих девяти элементам матрицы:
m00, m01, m02
m10, m11, m12
m20, m21, m22
Может быть передан дополнительный, десятый, аргумент [gamma]. Если он опущен, используется значение по умолчанию 1.0.
Аргументы применяются к каждому пикселю в соответствии со следующими формулами:
r' = (m00 * r + m01 * g + m02 * b)^(-1/gamma)
g' = (m10 * r + m11 * g + m12 * b)^(-1/gamma)
b' = (m20 * r + m21 * g + m22 * b)^(-1/gamma)

cd

    cd directory

Устанавливает новую текущую рабочую директорию.
Аргумент directory может содержать символ ~ (тильда), расширяемый как домашняя директория. Директории с пробелами в названии могут быть защищены одинарными или двойными кавычками

cdg

    cdg

Возвращает координаты центра тяжести изображения. Для его вычисления используются только пиксели со значением выше 15.7% от максимального ADU и имеющие четыре соседних пикселя, удовлетворяющих этому условию. Центр тяжести вычисляется если имеется по крайней мере 50 таких пикселей

clahe

    clahe cliplimit tileSize

Выравнивает гистограмму изображения используя ограниченное контрастом адаптивное выравнивание гистограммы.
cliplimit устанавливает порог для ограничения контраста.
tilesize устанавливает размер ячейки для выравнивания гистограммы. Входящее изображение будет разделено на прямоугольные ячейки одинакового размера

clear

    clear

Очищает содержимое журнала

clearstar

    clearstar

Очищает все звёзды, сохранённые в памяти и отображённые на экране

close

    close

Корректно закрывает открытое изображение и открытую последовательность, если имеются

conesearch

    conesearch [limit_magnitude] [-cat=] [-phot] [-obscode=] [-tag={on|off}] [-log={on|off}] [-trix=] [-out=]

Отображает звёзды из локального каталога по умолчанию для загруженного изображения, имеющего астрономическое решение, вплоть до заданного значения limit_magnitude (для большинства каталогов по умолчанию — 13, за исключением 14.5 для aavso_chart, 20 для solsys и пропущено для pgc).
Альтернативный удалённый каталог можно указать с помощью аргумента -cat=, принимающего значения
- for stars: tycho2, nomad, gaia, localgaia, ppmxl, bsc, apass, gcvs, vsx, simbad, aavso_chart
- for exoplanets: exo
- for deep-sky: pgc
- for solar system objects: solsys (closest IAU observatory code can be passed with the argument -obscode= for better position accuracy)
Для каталогов, содержащих данные фотометрии, будут сохранены звёзды без информации B-V; их можно исключить, передав аргумент -phot
Вместо каталога можно передать аргумент -trix=, за которым следует число от 0 до 511, для отображения трикселей 3-го уровня, содержащих звёзды, из локальных каталогов (в основном для использования разработчиками)
Ряд каталогов (bsc, gcvs, pgc, exo, aavso_chart, varisum and solsys) показывают названия объектов рядом с маркерами (только графический интерфейс) и выводят их в журнал. Для каталогов с большим количеством объектов, а именно vsx и simbad, эта информация также может отображаться, но, поскольку она может загромождать экран, по умолчанию её показ отключен. Это поведение можно включить / выключить с помощью аргументов -tag=on|off (для показа названий рядом с маркерами) и -log=on|off (для вывода списка объектов в журнал)
Список элементов, присутствующих на изображении, при желании можно сохранить в файле csv, передав аргумент -out=

convert

    convert basename [-debayer] [-fitseq] [-ser] [-start=index] [-out=]

Конвертирует все изображения, находящиеся в текущей рабочей директории, из форматов, поддерживаемых Siril, в последовательность изображений FITS (несколько файлов), либо в последовательности FITS или SER (одиночный файл), если переданы аргументы -fitseq или -ser, соответственно. Аргумент basename указывает базовое название новой последовательность, за которым будут добавлены порядковый номер и расширение.
Для изображений FITS Siril будет пытаться создать символическую ссылку; если это невозможно, то файлы будут скопированы. Опция -debayer применяет дебайеризацию к входящим изображениям CFA. В этом случае символические ссылки не создаются.
Опция -start=index устанавливает порядковый номер, с которого начинается нумерация. Это удобно для продолжения существующей последовательности (не используется с -fitseq or -ser. В этом случае убедитесь, что вы очистили или удалили целевой файл .seq, если он существует).
Опция -out= изменяет целевую директорию на указанную в аргументе.
См. также CONVERTRAW и LINK
Ссылки: convertraw, link

convertraw

    convertraw basename [-debayer] [-fitseq] [-ser] [-start=index] [-out=]

Аналогична команде CONVERT, но конвертирует только RAW-изображения с цифровых зеркальных камер (DSLR), найденные в текущей рабочей директории
Ссылка: convert

cosme

    cosme [filename].lst

Применяет локальное среднее к набору пикселей на изображении, находящемся в памяти (косметическая коррекция). Координаты этих пикселей находятся в текстовом файле [файл .lst]. Команда FIND_HOT может так же создать его для отдельных горячих пикселей, но необходимо вручную удалить строки или столбцы. COSME адаптирована для коррекции остаточных горячих и холодных пикселей, сохранившихся после калибровки.
Вместо предоставления списка дефектных пикселей, можно также обнаружить их на текущем изображении с помощью команды FIND_COSME
Ссылки: find_hot, find_cosme

Формат файла со списком дефектных пикселей: * Строки типа P x y исправляют пиксель с координатами (x, y), чей тип это необязательный символ (C или H), указывающий Siril холодный данный пиксель или горячий. Такая строка создаётся командой FIND_HOT, но вы можете вручную добавить два следующих типа строк *Строки C x 0 исправляют дефектную колонку с координатами x. * Строки L y 0 исправляют дефектную строку с координатами y.

cosme_cfa

    cosme_cfa [filename].lst

Аналогична функции COSME, но применяемая к RAW-изображениям CFA
Ссылка: cosme

crop

    crop [x y width height]

Кадрирует до выбранной области загруженного изображения.
Если выделение активно, то другие аргументы не требуются. В противном случае, или в сценариях, необходимо передать следующие аргументы: x и y — координаты верхнего левого угла, а width и height — размер выделения. Выделение может быть сделано с помощью команды BOXSELECT
Ссылка: boxselect

ddp

    ddp level coef sigma

Выполняет DDP (digital development processing/процесс цифровой проявки) на загруженном изображении, как впервые описано Кунихико Окано (Kunihiko Okano). Эта реализация описана в IRIS.
Она сочетает линейное распределение на низких уровнях (ниже level) и нелинейное — на высоких.
Она использует Гауссов фильтр со стандартным отклонением sigma и умножает итоговое изображение на коэффициент coef. Типичные значения sigma находятся в диапазоне 0.7–2. Аргумент level должен быть в диапазоне [0, 65535] для 16-битных изображений и может быть указан в диапазоне [0, 1] или [0, 65535] для 32-битных изображений; в этом случае он будет масштабирован автоматически

denoise

    denoise [-nocosmetic] [-mod=m] [ -vst | -da3d | -sos=n [-rho=r] ] [-indep]

Подавляет шум на изображении, используя нелокальный Байесовский (НЛ Байесовский) алгоритм описанный Лебраном, Буадесом и Морелом.
Перед шумоподавлением настоятельно рекомендуется применить косметическую коррекцию для удаления шума типа соль и перец. По умолчанию эта команда автоматически применяет косметическую коррекцию. Однако, если косметическая коррекция была выполнена в ходе рабочего процесса раннее, она может быть отключена с помощью опции -nocosmetic.
Может быть указан необязательный аргумент -mod=m, где 0 <= m <= 1. Итоговое значение пикселя вычисляется как out=m × d + (1 − m) × in, где d это значение пикселя после шумопдавления. Модуляция не применяется при значении 1. Если этот параметр не указан, по умолчанию он равен 1.
Необязательный аргумент -vst можно использовать для применения перед НЛ Байесовским шумоподавлением стабилизирующего дисперсию обобщённого преобразования Анскомба. Это полезно для изображений, например, одиночные субэкспозиции, где шум имеет Пуассоновское или смесь Пуассоновского и Гауссова распределений, а не главным образом Гауссово распределение. Нельзя использовать вместе с DA3D или SOS. Для шумоподавления уже уложенных изображений обычно не даёт выигрыша.
Необязательный аргумент -da3d можно использовать для включения адаптивного двухдоменного подавления шума (DA3D) в качестве заключительного алгоритма подавления шума. Результат алгоритма сопоставления блоков и 3D трансформации (BM3D) используется как эталонное изображение для улучшения шумоподавления. DA3D улучшает детали и уменьшает ступенчатые артефакты.
Необязательный аргумент -sos=n можно использовать для включения итеративного улучшения шумоподавления с помощью алгоритма усиление-подавление-вычитание (SOS). Количество повторов указывается с помощью n. В частности, SOS может давать лучшие результаты, если неулучшенный НЛ Байесовский алгоритм оставляет артефакты в областях фона. Если одновременно переданы -da3d и -sos=n, то будет применён последний из переданных.
Может быть передан необязательный аргумент -rho=r, где 0 < r < 1. Он используется алгоритмом SOS для указания доли зашумлённого изображения, подмешиваемой к промежуточному результату между каждым повтором. Если -sos=n не указан, этот параметр игнорируется.
По умолчанию DA3D или SOS не применяются, поскольку обычно улучшение в подавлении шума относительно невелико, а эти методы требуют дополнительного вычислительного времени.
В очень редких случаях, при подавлении шума на цветных изображениях могут появляться цветные артефакты. Для предотвращения этого можно использовать необязательный аргумент -indep, благодаря чему подавление шума в каждом канале выполняется отдельно. Это медленнее, но удаляет артефакты

dir

    dir

Отображает список файлов и директорий в рабочей директории
Эта команда доступна только для Microsoft Windows. Эквивалентная команда для Linux и MacOS, описана по ссылке ls.

disto

    disto [clear]

Показывает поле дисторсии на изображении, имеющем астрономическое решение с включёнными данными о дисторсии
Чтобы отключить, передайте аргумент clear

dumpheader

    dumpheader

Выводит заголовок FITS загруженного изображения в журнал

entropy

    entropy

Вычисляет энтропию загруженного изображения на отображаемом слое. При наличии выделения, энтропия вычисляется только для выделенной области или же для всего изображения, если выделение отсутствует. Энтропия это один из способов измерения шума или деталей на изображении

epf

    epf [-guided] [-d=] [-si=] [-ss=] [-mod=] [-guideimage=]

Применяет фильтр сохранения краёв. По умолчанию применяется билатеральный фильтр; фильтр с учителем можно применить с помощью аргумента -guided. Диаметр фильтра по умолчанию равен 3 и может быть установлен с помощью аргумента -d=. Будьте осторожны со значениями d, превышающими 20, так как алгоритм может потребовать большого количества вычислений.
Значение σ (интенсивность) можно задать с помощью -si=, а значение σ (пространственное) — с помощью -ss=. Значения σ представляют собой разницу в значениях пикселей, на которые сильно воздействует фильтр: для 32-битных изображений значение должно быть от 0 до 1.0, тогда как для 16-битных изображений оно должно быть от 0 до 65535. Значения по умолчанию, если они не указаны, должны быть равны 11. Если указано значение -d=0, диаметр фильтра будет установлен автоматически на основе значения -ss. Обратите внимание, что при применении фильтра с учителем применяется только -sc.
При указании фильтра с учителем эталонное изображение может быть задано с помощью -guideimage=. По умолчанию, если эталонное изображение не указано, применяется самообучающийся фильтр. Примечание: эталонное изображение должно иметь те же размеры, что и обрабатываемое!
Силу фильтра можно регулировать с помощью аргумента -mod=. Если mod = 1.0, то фильтр будет применён в полную силу; при mod менее 1.0 часть исходного изображения будет смешана с результатом, а при mod = 0.0 фильтрация применяться не будет

exit

    exit

Выход из приложения

extract

    extract NbPlans

Извлекает NbPlans слоёв вейвлетного домена из загруженного изображения.
См. так же WAVELET и WRECONS. Для извлечения цвета см. SPLIT
Ссылки: wavelet, wrecons, split

extract_Green

    extract_Green

Извлекает зелёный сигнал из загруженного изображения CFA. Считывает информацию о шаблоне Байера из изображения или настроек и экспортирует только усреднённые данные зелёного фильтра как новый файл FITS половинного размера. Создаётся новый файл, его имя начинается с "Green_"

extract_Ha

    extract_Ha [-upscale]

Извлекает сигнал H-альфа из загруженного изображения CFA. Информация о шаблоне Байера читается из изображения или настроек, после чего экспортируются усреднённые данные красного фильтра как новое изображение FITS, имеющее половинный размер. Если передан аргумент -upscale, итоговое изображение будет увеличено в 2 раза, чтобы соответствовать полному разрешению сенсора, например, для соответствия другим изображениям, полученным с помощью того же семейства сенсоров. В результате будет создан новый файл, чьё название начинается с префикса "Ha_"

extract_HaOIII

    extract_HaOIII [-resample=]

Извлекает сигналы H-Alpha и O-III из загруженного изображения CFA. Он считывает информацию о шаблоне Байера из изображения или настроек и экспортирует только данные красного фильтра для H-Alpha в виде нового файла FITS половинного размера (как EXTRACTHA) и сохраняет информацию из трёх других пикселей для O-III с интерполированной заменой красного пикселя. Имена исходящих файлов начинаются с префиксов "Ha_" и "OIII_"
Необязательный аргумент -resample={ha|oiii} устанавливает, следует ли повышать разрешение изображения Ha или понижать разрешение изображения OIII, для получения изображений одинакового размера. Если этот аргумент не указан, передискретизация не будет выполнена, а изображение OIII будет иметь в два раза бо́льшую высоту и ширину, чем изображение Ha

fdiv

    fdiv filename scalar

Делит загруженное изображение на изображение, указанное в аргументе. Полученное изображение умножается на значение скалярного аргумента. См. также IDIV
Ссылка: idiv

ffill

    ffill value [x y width height]

Аналогична команде FILL, но выполняет симметричную заливку области, определённой с помощью мыши или команды BOXSELECT. Используется для обработки изображения в домене Фурье (FFT)
Ссылки: fill, boxselect

fftd

    fftd modulus phase

Применяет быстрое преобразование Фурье к загруженному в память изображению. Амплитуда (modulus) и фаза (phase), указанные в аргументе, являются именами сохраняемых файлов FITS

ffti

    ffti modulus phase

Извлекает исправленное изображение, применяя обратное преобразование. Аргументы modulus и phase — это имена входящих файлов, Результатом будет новое загруженное изображение

fill

    fill value [x y width height]

Заполняет загруженное изображение полностью или только выделенную область, если она есть, пикселями со значением интенсивности value, выраженным в ADU

find_cosme

    find_cosme cold_sigma hot_sigma

Применяет автоматическое определение и замену холодных и горячих пикселей на загруженном изображении с использованием порогов (в значениях σ), указанных в аргументах

find_cosme_cfa

    find_cosme_cfa cold_sigma hot_sigma

Аналогична команде FIND_COSME, но для изображений CFA
Ссылка: find_cosme

find_hot

    find_hot filename cold_sigma hot_sigma

Сохраняет в рабочей директории файл filename (текстовый формат), содержащий координаты пикселей, с интенсивностью в hot_sigma раз выше и cold_sigma ниже стандартного отклонения, извлечённые из загруженного изображения. Обычно мы используем эту команду для темнового мастер-кадра. Команда COSME может применить этот список дефектных пикселей к загруженному изображению. См. также SEQCOSME для применения его к последовательности
Ссылки: cosme, seqcosme
Строки вида `P x y тип` исправляют пиксель с координатами x, y. Тип это произвольный символ (C или H), указывающий Siril холодный данный пиксель или горячий. Эта строка создаётся командой FIND_HOT, но вы так же можете добавить строки вручную:
Строки `C x 0 тип` исправляют дефектный столбец с координатами x.
Строки `L y 0 тип` исправляют дефектную строку с координатами y.

findcompstars

    findcompstars star_name [-narrow|-wide] [-catalog={nomad|apass}] [-dvmag=3] [-dbv=0.5] [-emag=0.03] [-out=nina_file.csv]

Автоматически находит звёзды сравнения в поле загруженного изображения с астрономическим решением для фотометрического анализа кривой блеска звезды согласно
- the provided name of the star
- the field of view of the image, reduced to a diameter of its height if -narrow is passed, avoiding stars in the corners
- the chosen catalog (APASS by default), can be changed with -catalog={NOMAD|APASS}
- the difference in visual magnitude from the variable star, in the range [0, 6] with a default of 3, changed with -dvmag=
- the difference in color with the variable star, in the range [0.0, 0.7] of their B-V indices with a default of 0.5, changed with -dbv=
- the maximum allowed error on Vmag in the range [0.0, 0.1] with a default of 0.03, changed with -emag=.
При передаче необязательного опции -out=, этот список может быть сохранён как файл CSV, совместимый со списком звёзд сравнения NINA. Если указанное название является специальным значением auto, оно генерируется с использованием входящих параметров
См. также LIGHT_CURVE
Ссылка: light_curve

findstar

    findstar [-out=] [-layer=] [-maxstars=]

Определяет звёзды на текущем загруженном изображении, чей уровень превышает пороговое значение, вычисленное Siril.
После этого применяется PSF и Siril выбраковывает все найденные структуры, которые не удовлетворяют набору ранее определённых критериев, указанных с помощью команды SETFINDSTAR.
Наконец, вокруг обнаруженных звёзд рисуется эллипс.
Необязательный параметр -out= позволяет сохранить результат по указанному пути.
Опция -layer= указывает слой, на котором будет происходить определение звёзд (только для цветных изображений).
Вы также можете ограничить максимальное количество обнаруженных звёзд, указав значение параметра -maxstars=.
См. также команду CLEARSTAR
Ссылки: psf, setfindstar, clearstar

fix_xtrans

    fix_xtrans

Исправляет пиксели системы автофокусироваки Fujifilm X-Trans на загруженном изображении.
Действительно, из-за особенностей фазовой системы автофокуса, области, используемые для автофокусировки, получают немного меньше света, что соседние участки. Камера компенсирует это и увеличивает значения в этих областях, что приводит к заметному квадрату в центре темновых кадров и кадров шума считывания

fixbanding

    fixbanding amount sigma [-vertical]

Пытается удалить горизонтальное или вертикальное полошение на загруженном изображении.
Аргумент amount указывает силу коррекции, в диапазоне между 0 и 4.
Аргумент sigma определяет уровень защиты светов алгоритмом. Бо́льшие значения σ дают бо́льшую защиту, между 0 и 5. Значения 1 и 1 часто достаточны.
Аргумент -vertical включает удаление вертикального полошения. По умолчанию предполагается, что полошение горизонтальное

fmedian

    fmedian ksize modulation

Применяет медианный фильтр, размером ksize × ksize (ksize ДОЛЖЕН быть нечётным), к загруженному изображению с параметром модуляции modulation.
Значения итоговых пикселей вычисляются как : out=mod × m + (1 − mod) × in, где m это значение пикселя после применения медианного фильтра. При значении модуляции равном 1, модуляция не применяется

fmul

    fmul scalar

Умножает загруженное изображение на значение scalar, переданное в аргументе

gauss

    gauss sigma

Применяет к загруженному изображению размытие по Гауссу с заданным значением sigma.
См. также UNSHARP, с таким же параметром смешивания
Ссылка: unsharp

get

    get { -a | -A | variable }

Получает значение переменной, используя её имя или отображает все переменные с помощью -a (имя и значение) или -A (подробный список)
См. также SET для обновления значений
Ссылка: set

getref

    getref sequencename

Выводит информацию об опорном изображении в последовательности, переданном в аргументе. Индекс первого изображения — 0

ght

    ght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Обобщённое гиперболическое растягивание, основанное на работе группы ghsastro.co.uk.
Аргумент -D= определяет силу растягивания. Принимает значения между 0 и 10. Это единственный обязательный аргумент. Последующие необязательные аргументы дополнительно настраивают растягивание:
B определяет интенсивность растягивания вблизи точки фокуса (focal point); принимает значения между -5 и 15;
LP определяет диапазон сохранения теней между 0 и SP, где растягивание будет линейным, сохраняя детали в тенях;
SP определяет точку симметрии растягивания, между 0 и 1, т.е. точку, где растягивание будет наиболее интенсивным;
HP определяет область между HP и 1, где растягивание линейно, сохраняя детали в светах и предотвращая распухание звёзд.
Если аргументы не даны, используются значения по умолчанию для B, LP и SP — 0.0, и 1.0 для HP.
Для цветового растягивания может быть передан необязательный аргумент -human, -even или -independent, позволяющий выбрать модель относительной чувствительности глаза, равновзвешенной светимости или независимые значения канала. Для монохромных изображений этот аргумент игнорируется. В качестве альтернативы, аргумент -sat указывает, что растягивание применяется к насыщенности изображения — для этого изображение должно быть цветным и должны быть выбраны все каналы.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

grey_flat

    grey_flat

Выравнивает среднюю интенсивность слоёв RGB в загруженном изображении CFA. Этот же процесс применяется к кадрам плоского поля во время калибровки, когда используется опция «Выровнять CFA»

help

    help [command]

Отображает список доступных команд или помощь для одной команды

histo

    histo channel (channel=0, 1, 2 with 0: red, 1: green, 2: blue)

Вычисляет гистограмму для указанного слоя (layer) загруженного изображения и создаёт файл histo_[channel name].dat в рабочей директории.
layer = 0, 1 или 2 где 0=красный, 1=зелёный и 2=синий

iadd

    iadd filename

Выполняет сложение изображения filename с изображением, находящимся в памяти.
Если позволяют настройки, результат будет иметь разрядность 32 бита на канал

icc_assign

    icc_assign profile

Назначает текущему изображению указанный в аргументе ICC-профиль.
Для использования соответствующих встроенных профилей может быть передан один из следующих специальных аргументов: sRGB, вRGBlinear, Rec2020, Rec2020linear, working для установки рабочего монохромного или RGB цветового профиля, (для монохромных изображений) linear или может быть указан путь к файлу с профилем ICC. Если указан встроенный профиль при загруженном монохромном изображении, будет использован Ч/Б профиль с соответствующей TRC

icc_convert_to

    icc_convert_to profile [intent]

Преобразует текущее изображение в указанный ICC-профиль.
Для использования соответствующих встроенных профилей может быть передан один из следующих специальных аргументов: sRGB, sRGBlinear, Rec2020, Rec2020linear, graysrgb, grayrec2020, graylinear или working для установки рабочего монохромного или RGB цветового профиля, (для монохромных изображений) linear или может быть указан путь к файлу с профилем ICC. Если указан встроенный профиль при загруженном монохромном изображении, будет использован Ч/Б профиль с соответствующей TRC.
Может быть передан второй аргумент для указания цветопередачи при преобразовании: доступны perceptual, relative (относительная колориметрическая), saturation или absolute (абсолютная колориметрическая)

icc_remove

    icc_remove

Удаляет ICC-профиль из текущего изображения если оно уже имеет таковой

idiv

    idiv filename

Выполняет деление загруженного изображения на изображение filename.
Если позволяют настройки, результат будет иметь разрядность 32 бита на канал.
См. также FDIV
Ссылка: fdiv

imul

    imul filename

Выполняет умножение изображения filename на загруженное изображение.
Если позволяют настройки, результат будет иметь разрядность 32 бита на канал

inspector

    inspector

Создаёт из текущего изображения мозаику из 9 изображений, отображающую углы и центр изображения для более тщательного изучения (только графический интерфейс)

invght

    invght -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Инвертирует обобщённое гиперболическое растягивание. Предоставляет обратное преобразование GHT с теми же параметрами (если указаны), отменяет команду GHT, возможно возвращаясь к линейному изображению. Может работать таким же образом, как и GHT, но для негативных изображений
Ссылка: ght

invmodasinh

    invmodasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Инвертирует модифицированное преобразование по arcsinh. Предоставляет обратное преобразование MODASINH с теми же параметрами (если указаны), отменяет команду MODASINH, возможно возвращаясь к линейному изображению. Может работать таким же образом, как и MODASINH, но для негативных изображений
Ссылка: modasinh

invmtf

    invmtf low mid high [channels]

Инвертирует функцию передачи полутонов. Предоставляет обратное преобразование MTF с теми же параметрами (если указаны), отменяет команду MTF, возможно возвращаясь к линейному изображению. Может работать таким же образом, как и MTF, но для негативных изображений
Ссылка: mtf

isub

    isub filename

Вычитает из загруженного изображения изображение filename.
Результат будет в 32-х битах на канал, если разрешено в настройках, поэтому возможно сохранение отрицательных значений. Чтобы отсечь отрицательные значения, используйте 16-битный режим или команду THRESHLO
Ссылка: threshlo

jsonmetadata

    jsonmetadata FITS_file [-stats_from_loaded] [-nostats] [-out=]

Сохраняет метаданные и статистику текущего загруженного изображения в формате JSON. Название файла необходимо, даже если изображение уже загружено. Данные изображения могут быть не прочитаны из файла, если это текущее загруженное изображение и если передана опция -stats_from_loaded. Статистику можно отключить, передав опцию -nostats. Файл, содержащий данные JSON, создается с именем файла по умолчанию '$(FITS_file_without_ext).json' и может быть изменен с помощью опции -out=

light_curve

    light_curve sequencename channel [-autoring] { -at=x,y | -wcs=ra,dec } { -refat=x,y | -refwcs=ra,dec } ...
    light_curve sequencename channel [-autoring] -ninastars=file

Анализирует несколько звёзд с помощью апертурной фотометрии в последовательности изображений и создаёт для одной из них кривую блеска, откалиброванную по другим. Первые координаты относятся к звезде, свет которой будет нанесен на график, остальные — к звёздам сравнения. Координаты задаются в пикселях, если используется -at=, или в градусах, если используется -wcs=.
В качестве альтернативы, список целевых и опорных звёзд может быть передан в формате списка звёзд для плагина экзопланет NINA при помощи опции -ninastars=. Siril проверит, что все опорные звёзды могут быть использованы, прежде чем приступить к их фактическому использованию. Файл с данными (light_curve.dat) будет создан в текущей директории и Siril, при возможности, преобразует результат в изображение PNG
Радиусы колец для апертурной фотометрии могут быть установлены в настройках, или указаны как коэффициент от FWHM опорного изображения, если передан аргумент -autoring. Эти размеры в 4,2 и 6,3 раза превышают FWHM для внутреннего и внешнего радиусов соответственно.
Чтобы аналогичным образом установить размер радиуса апертуры, см. команду setphot.
См. также SEQPSF для операций с одиночной звездой
Ссылка: seqpsf

limit

    limit { -clip | -posrescale | -rescale }

Ограничивает значения пикселей в 32-битных изображениях диапазоном от 0.0 до 1.0. Эта команда неприменима к 16-битным изображениям, поскольку не может быть значений, выходящих за пределы диапазона. Диапазон можно ограничить одним из следующих способов:
-clip: этот аргумент просто обрезает все пиксели с отрицательными значениями до 0.0 и все пиксели со значением > 1.0 до 1.0.
-posrescale: этот аргумент масштабирует все положительные значения пикселей так, чтобы максимальное значение было равно 1.0, обрезая все отрицательные значения до 0.0. Для 3-канальных изображений ко всем каналам применяется одинаковый коэффициент масштабирования. Если максимальное значение пикселей уже <= 1.0, отрицательные значения всё равно будут обрезаны, но коэффициент масштабирования к пикселям с положительными значениями применяться не будет.
-rescale: при использовании этого аргумента, если имеются какие-либо пиксели с отрицательными значениями, ко всем значениям пикселей изображения будет добавлено постоянное значение, так что минимальное значение будет равно 0.0. Затем, если максимальное значение пикселей > 1.0, применяется коэффициент масштабирования, чтобы максимальное значение пикселей было масштабировано до 1.0.
Обратите внимание, что при наличии одного или нескольких экстремальных выбросов (например, из-за дефектных пикселей) аргументы -rescale и -posrescale могут привести к неожиданному результату. Это можно смягчить, предварительно применив косметическую коррекцию к изображению

linear_match

    linear_match reference low high

Вычисляет и применяет линейную функцию между опорным (reference) изображением и загруженным изображением.
Алгоритм будет игнорировать все опорные пиксели, значения которых выходят за пределы диапазона [low, high]

link

    link basename [-date] [-start=index] [-out=]

Аналогична команде CONVERT, но конвертирует только изображения FITS, найденные в текущей рабочей директории. Это удобно, чтобы избежать конвертации файлов JPEG или других файлов, которые могут находиться в директории. Дополнительный аргумент -date позволяет сортировать файлы по значению DATE-OBS вместо сортировки их названий в буквенно-цифровом виде
Ссылка: convert

linstretch

    linstretch -BP= [-sat] [-clipmode=] [channels] [-clipmode=]

Выполняет линейное растягивание изображения к новой точке чёрного BP.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам.
Необязательный параметр -sat может быть использован для применения линейного растягивания к каналу насыщенности (saturation channel) изображения. Этот аргумент работает только если выбраны все каналы. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

livestack

    livestack filename

Обрабатывает предоставленное изображение для укладки на лету. Возможна только после START_LS. Обработка включает калибровку входящего изображения (если так была сконфигурирована START_LS), дебайеризацию (если это полноцветное изображение), регистрацию и укладку. Временный результат будет сохранён в файле live_stack_00001.fit до тех пор, пока для изменения этого не будет добавлена новая опция
Ссылка: start_ls

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

Необходимо отметить, что команды укладки на лету переводят Siril в состояние, когда программа не может выполнять другие команды. После команды START_LS, могут быть переданы только команды LIVESTACK, STOP_LS и EXIT. Вызов STOP_LS переводит Siril в его нормальное состояние, когда укладка на лету не выполняется.

load

    load filename[.ext]

Загружает изображение filename из текущей рабочей директории, которое становится «текущим загруженным изображением», используемым во многих командах для работы с одним изображением.
Команда сначала пытается загрузить filename, затем filename.fit, filename.fits и, наконец, все поддерживаемые форматы.
Эта схема применима к каждой команде Siril, связанной со чтением файлов

load_seq

    load_seq sequencename[.ext]

Загружает последовательность sequencename из текущей рабочей директории. Эта последовательность станет «последовательностью, загруженной в данный момент». Если команды Siril для работы с последовательностями требуют указания названия последовательности, то для чтения метаданных последовательности, используя сценарии Python, последовательность необходимо загрузить

log

    log

Вычисляет и применяет логарифмический масштаб к загруженном изображению, используя формулу: log(1 - (value - min) / (max - min)), где min и max это, соответственно, минимальное и максимальное значения пикселя в канале

ls

    ls

Отображает список файлов и директорий в рабочей директории
Эта команда доступна только на Unix-подобных системах. Эквивалентная команда для Microsoft Windows описана по ссылке dir.

makepsf

    makepsf clear
    makepsf load filename
    makepsf save [filename]
    makepsf blind [-l0] [-si] [-multiscale] [-lambda=] [-comp=] [-ks=] [-savepsf=]
    makepsf stars [-sym] [-ks=] [-savepsf=]
    makepsf manual { -gaussian | -moffat | -disc | -airy } [-fwhm=] [-angle=] [-ratio=] [-beta=] [-dia=] [-fl=] [-wl=] [-pixelsize=] [-obstruct=] [-ks=] [-savepsf=]

Генерирует PSF для реконструкции любым из трех методов предоставляемых командами RL, SB или WIENER. В качестве первого аргумента должно быть указано одно из следующих ключевых слов: clear (очищает существующую PSF), load (загружает PSF из файла), save (сохраняет текущую PSF), blind (реконструкция вслепую), stars (генерирует PSF на основе измеренных на изображении параметров звезд) или manual (генерирует PSF на основе заданных вручную параметров функции).
При использовании аргумента clear дополнительные аргументы не требуются.
Для загрузки раннее сохранённой PSF аргументу load требуется второй аргумент filename с названием файла, содержащим PSF. Это может быть любой формат, с поддержкой которого был скомпилирован Siril, но файл должен быть квадратным и, в идеале, иметь нечётный размер.
Для сохранения ранее созданной PSF используется аргумент save. По выбору может быть указано имя файла, которое должно иметь расширение ".fit", ".fits", ".fts" или ".tif". Если имя файла не указано, PSF будет названа на основе имени открытого файла или последовательности.
Вместе с аргументом blind, могут быть указаны следующие необязательные аргументы: -l0 использует метод спуска l0, -si использует метод неравномерности спектра, -multiscale указывает методу l0 выполнить многоступенчатую оценку PSF, -lambda= предоставляет постоянную регуляризации.
Для PSF, рассчитанной по звёздам (stars) может быть передан единственный необязательный аргумент -sym, указывающий, что PSF должна быть симметричной.
Для PSF, рассчитанной вручную (manual), может быть передан необязательный аргумент -gaussian, -moffat, -disc или -airy (значение по умолчанию — Гауссов). Для PSF по Гауссу или Моффату могут переданы необязательные аргументы -fwhm=, -angle= и -ratio=. Необязательный аргумент -beta= может быть передан, если используется PSF по Моффату. Если эти значения не переданы, по умолчанию используются соответствующие значения, указанные в диалоге реконструкции. PSF по диску требует единственного аргумента -fwhm=, который в этой функции используется для установки диаметра PSF. Для PSF по диску Эйри могут быть переданы следующие аргументы: -dia= (устанавливает диаметр телескопа), -fl= (устанавливает фокусное расстояние телескопа), -wl= (устанавливает длину волны, для которой вычисляется дифракционная картина Эйри), -pixelsize= (устанавливает размер пикселя сенсора), -obstruct= (устанавливает размер центрального экранирования, как процент от общей площади апертуры). Если эти параметры отсутствуют, по умолчанию используются длина волны 525 нм и центральное экранирование в 0%. Siril попытается получить оставшиеся из открытого изображения, но некоторые программы захвата изображений могут не предоставлять всю необходимую информацию и в этом случае результаты будут плохими. Имейте ввиду, что видео в формате SER могут иметь незаполненные метаданные. Какие из аргументов можно не указывать для конкретного оборудования вы можете определить опытным путём.
Для любого из приведённых выше аргументов, могут быть указаны необязательные аргументы -ks= для установки размера PSF и -savepsf= filename для сохранения созданной PSF: название файла должно быть указано; требования к расширению файла такие же, как для makepsf save filename
Ссылки: psf, rl, sb, wiener

merge

    merge sequence1 sequence2 [sequence3 ...] output_sequence

Сливает несколько последовательностей, имеющих один тип (изображения FITS, последовательность FITS или SER) и одинаковые параметры в новую последовательность с базовым названием newseq, которая будет иметь те же параметры и будет создана в текущей рабочей директории. Входящие последовательности могут располагаться в разных директориях. Последовательности могут быть указаны с помощью абсолютных или относительных путей с точным названием последовательности (.seq) или только с базовым названием вместе или без завершающего знака нижнего подчёркивания '_'

merge_cfa

    merge_cfa file_CFA0 file_CFA1 file_CFA2 file_CFA3 bayerpattern

Создаёт цветное изображение с шаблоном Байера из 4 отдельных изображений, содержащих данные из подканалов шаблона Байера CFA0, CFA1, CFA2 и CFA3 (Соответствующая команда для разбиения шаблона CFA на подканалы — split_cfa). Эта функция может использоваться как часть рабочего процесса для применения некоторой предобработки к отдельным подканалам шаблона Байера перед дебайеризацией. Пятый параметр, bayerpattern, указывает шаблон Байера, который необходимо восстановить. bayerpattern должен быть 'RGGB', 'BGGR', 'GRBG' или 'GBRG'

mirrorx

    mirrorx [-bottomup]

Переворачивает загруженное изображение по горизонтальной оси. Опция -bottomup переворачивает изображение только в том случае, если оно ещё не находится в ориентации снизу вверх

mirrorx_single

    mirrorx_single image

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

mirrory

    mirrory

Переворачивает изображение по вертикали

modasinh

    modasinh -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels]

Модифицированное растягивание по arcsinh, основанное на работе группы ghsastro.co.uk.
Аргумент -D= определяет силу растягивания. Принимает значения между 0 и 10. Это единственный обязательный аргумент. Последующие необязательные аргументы дополнительно настраивают растягивание:
LP определяет диапазон сохранения теней между 0 и SP, где растягивание будет линейным, сохраняя детали в тенях;
SP определяет точку симметрии растягивания, между 0 и 1, т.е. точку, где растягивание будет наиболее интенсивным;
HP определяет область между HP и 1, где растягивание линейно, сохраняя детали в светах и предотвращая распухание звёзд.
Если аргументы не указаны, используются значения по умолчанию 0.0 для LP и SP, и 1.0 для HP.
Для цветового растягивания может быть передан необязательный аргумент -human, -even или -independent, позволяющий выбрать модель относительной чувствительности глаза, равновзвешенной светимости или независимые значения канала. Для монохромных изображений этот аргумент игнорируется. В качестве альтернативы, аргумент -sat указывает, что растягивание применяется к насыщенности изображения — для этого изображение должно быть цветным и должны быть выбраны все каналы.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам. С помощью аргумента -clipmode= можно установить режим обрезки в одно из следующих значений: clip, rescale, rgbblend или globalrescale. По умолчанию используется rgbblend

mtf

    mtf low mid high [channels]

Применяет передаточную функцию полутонов к изображению, загруженному в настоящий момент.
Необходимы три параметра low, midtones и high, где параметр баланса полутонов (midtones) определяет нелинейное растяжение гистограммы в диапазоне [0,1]. Для автоматического определения параметром см. AUTOSTRECH.
Для указания каналов, к которым применить растягивание, можно использовать необязательный параметр [channels], принимающий значения R, G, B, RG, RB или GB. По умолчанию растягивание применяется ко всем каналам
Ссылка: autostretch

neg

    neg

Изменяет значения пикселей загруженного в настоящий момент изображения на отрицательное представление, например, 1-значение для 32-х бит, 65535-значение для 16-ти бит. Режим просмотра при этом не изменяется

new

    new width height nb_channel [filename]

Создаёт новое изображение, заполненное нулями с размером width × height.
Для указания названия нового файла можно использовать необязательный параметр [filename].
Изображение имеет 32-битный формат и содержит nb_channel каналов, nb_channel может быть 1 или 3. Оно не сохраняется, но становится загруженным изображением, отображается и впоследствии может быть сохранено

nozero

    nozero level

Заменяет пустые (null) значения значениями level. Полезно перед операциями idiv или fdiv, главным образом для 16-битных изображений

offline

    offline

Переводит Siril в режим без доступа к сети. В этом режиме недоступны такие функции, как запросы к удалённым каталогам или обновление репозиториев git. Данные из кэша при этом остаются доступными

offset

    offset value

Добавляет постоянное значение value (указанное в ADU) к текущему изображению. Эта константа может принимать отрицательное значение.
В 16-битном режиме значения пикселей, выходящие за приделы [0, 65535], обрезаются. В 32-битном режиме обрезки не происходит

удалённый

    online

Переводит Siril в режим с доступом к сети. В этом режиме доступны такие функции, как запросы к удалённым каталогам, обновление репозиториев git и другие

parse

    parse str [-r]

Разбирает строку str, используя информацию из заголовка загруженного в данный момент изображения. Основная цель этой команды — отладка синтаксического анализа путей ключей заголовка, которые могут использоваться другими командами.
Опция -r указывает, что строку необходимо интерпретировать в режиме чтения. В этом режиме все подстановочные знаки (wildcards), определённые в строке str, используются для поиска файла, чьё название соответствует шаблону. В противном случае режимом по умолчанию является режим записи, и подстановочные знаки, при наличии, удаляются из анализируемой строки.
Если строка str начинается с префикса $def, он будет распознан как зарезервированное ключевое слово и будет выполнен его поиск в строках, сохранённых в gui_prepro.dark_lib, gui_prepro.flat_lib, gui_prepro.bias_lib или gui_prepro.stack_default для $defdark, $defflat, $defbias или $defstack, соответственно.
Когда загружена последовательность, можно так же использовать ключевое слово $seqname$

pcc

    pcc [-limitmag=[+-]] [-catalog=] [-bgtol=lower,upper]

Запускает фотометрическую коррекцию цвета на загруженном изображении, имеющем астрономическое решение.
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений смещения (+offset или -offset) ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
По умолчанию используется каталог звёзд NOMAD. Используемый каталог можно изменить, указав -catalog=apass, -catalog=localgaia или -catalog=gaia. Если доступна локальная версия полного каталога NOMAD, можно использовать её с помощью -catalog=nomad
Допустимое отклонение от значения фона может быть указано в единицах σ с помощью -bgtol=lower,upper: значения по умолчанию равны -2.8 и +2.0, соответственно

platesolve

    platesolve [-force] [image_center_coords] [-focal=] [-pixelsize=]
    platesolve ... [-noflip] [-downscale] [-order=] [-radius=] [-disto=]
    platesolve ... [-limitmag=[+-]] [-catalog=] [-nocrop]
    platesolve ... [-localasnet [-blindpos] [-blindres]]

Астрономическое решение загруженного изображения.
Если решение для изображения уже существует, ничего не будет делаться, если только не передан аргумент -force для повторного поиска решения. Если данные WCS или другие метаданные изображения ошибочны или отсутствуют, то должны быть переданы аргументы:
приблизительные координаты центра изображения могут быть представлены в виде десятичных градусов или градус/час минута секунда (J2000, разделённые двоеточием) и значениями прямого восхождения и склонения, разделённые запятой или пробелом (для astrometry.net — необязательно).
фокусное расстояние и размер пикселя могут быть переданы с помощью -focal= (в миллиметрах) и -pixelsize= (в микрометрах), переопределяя значения, полученные из изображения и настроек. См. также опции для решения вслепую с помощью локальной установки Astrometry.net
Если не указан аргумент -noflip, в том случае, если будет определено, что изображение находится в ориентации вверх ногами, оно будет перевёрнуто.
Для более быстрого поиска звёзд на больших изображениях, возможно уменьшить масштаб изображения с помощью -downscale.
Решение может учитывать искажения, используя соглашение SIP с полиномами до пятой степени. Значение по умолчанию берётся из настроек астрометрии. Его можно изменить с помощью параметра -order=, который задаёт значение от 1 до 5.
При использовании локальных каталогов решателя Siril или локальной установки Astrometry.net, если первоначальное решение не удалось, решатель будет искать решение в пределах радиуса, указанного с помощью опции -radius=. Если значение не указано, радиус поиска берётся из настроек астрометрии. Поиск поблизости Siril можно отключить, указав значение 0. (для Astrometry.net отключить нельзя).
Текущее решение можно сохранить как файл с данными о дисторсии с помощью аргумента -disto=.
Астрономическое решение изображений может быть получено с помощью Siril, используя каталог звёзд и алгоритм регистрации всего звёздного неба или с помощью локальной команды solve-field из пакета astrometry.net (включается с помощью -localasnet).
Настройки решателя Siril:
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений положительного или отрицательного смещения ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
Каталог звёзд выбирается автоматически, если только не передан аргумент -catalog=: если установлены локальные каталоги, то используются они. В противном случае выбор основывается на размере поля зрения и пределе звёздной величины. Если этот аргумент передан, будет принудительно использован удалённый каталог. Возможные значения аргумента: tycho2, nomad, localgaia, gaia, ppmxl, brightstars, apass.
Если рассчитанное поле зрения больше 5 градусов, обнаружение звёзд будет ограничено областью вокруг центра изображения, если не только не передан аргумент -nocrop.
Настройки решателя Astrometry.net:
Передача аргументов -blindpos и/или -blindres позволяет выполнять поиск вслепую для определения позиции и разрешения, соответственно. Вы можете использовать эти опции при решении изображений с неизвестными положением и разрешением

pm

    pm "expression" [-rescale [low] [high]] [-nosum]

Эта команда вычисляет выражение, заданное в аргументе, как в инструменте математических операций над пикселями. Всё выражение должно быть заключено в двойные кавычки, а переменные (которые в этом случае являются именами изображений без расширения, расположенными в рабочей директории) должны быть окружены символами $, например "$image1$ * 0.5 + $image2$ * 0.5". В выражении может быть использовано максимум 10 изображений.
Изображение можно масштабировать с помощью аргумента -rescale, за которым следуют значения low и high в диапазоне [0, 1]. Если эти значения не указаны, значения по умолчанию они устанавливаются равными 0 и 1. Другой необязательный аргумент, -nosum, указывает Siril не суммировать длительность экспозиции. Это влияет ключевые слова FITS, такие, как LIVETIME и STACKCNT

profile

    profile -from=x,y -to=x,y [-tri] [-cfa] [-arcsec] { [-savedat] | [-filename=] } [-layer=] [-width=] [-spacing=] ["-title=My Plot"]

Создаёт профиль интенсивности между двумя точками на изображении — cut (разрез). Аргументы могут быть переданы в любом порядке. Обязательные аргументы — -to=x,y и -from=x,y.
Аргумент -layer={red | green | blue | lum | col} определяет какой канал (либо светимость или цвет) отобразить на графике, если изображение цветное. Его можно использовать в сочетании с аргументом -tri, создающим 3 параллельных равноудалённых профиля, разделённых -spacing= пикселей. Следует отметить, что для трёхпрофильного типа, аргумент col обрабатывается так же, как lum.
Аргумент -cfa выбирает режим CFA, создающий 4 профиля, по одному для каждого канала CFA, для изображения с шаблоном Байера. Он не может быть использован со цветными или монохромными изображениями без шаблона Байера, но и не может использоваться вместе с аргументом -tri.
Аргумент -arcsec позволяет отобразить расстояние по оси x в угловых секундах, если доступны необходимые метаданные. Если необходимые метаданные не указаны или отсутствуют, расстояние отображается в пикселях.
Аргумент -savedat может быть передан в случае, если необходимо сохранить файлы данных; название файла будет выведено в журнал. В качестве альтернативы, для указания названия файла, в котором будут сохранены данные, можно использовать опцию -filename= (Аргумент -filename= подразумевает **-savedat)
Аргумент "-title=Мой заголовок" устанавливает пользовательский заголовок "Мой заголовок"

psf

    psf [channel]

Выполняет PSF (функция рассеяния точки) для выбранной звезды и отображает результат. Для автономной работы, выделение (в пикселях) может быть указано с помощью BOXSELECT. Если передан аргумент channel, это позволяет выбрать канал, в котором будет проанализирована звезда. Он может не указываться для монохромных изображений или, при запуске из графического интерфейса, с одним из активных каналов в отображении
Ссылка: boxselect

pwd

    pwd

Выводит путь к текущей рабочей директории

pyscript

    pyscript scriptname.py [script_argv]

Выполняет сценарий python Siril
Название сценария должно быть указано в качестве первого аргумента. Если он не найден в текущей рабочей директории, будет выполнен поиск по пользовательским путям к сценариям, указанным в настройках, и в локальном репозитории siril-scripts. Остальные аргументы будут рассматриваться как аргументы сценария и передаваться в сценарий как его вектор аргументов. Обратите внимание, что конкретный сценарий должен поддерживать чтение входящих данных из вектора аргументов

register

    register sequencename [-2pass] [-selected] [-prefix=] [-scale=]
    register sequencename ... [-layer=] [-transf=] [-minpairs=] [-maxstars=] [-nostarlist] [-disto=]
    register sequencename ... [-interp=] [-noclamp]
    register sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]

Находит и, опционально, выполняет геометрическую трансформацию изображений последовательности, переданной в аргументе, таким образом, чтобы изображения могли быть наложены на опорное изображение. Поскольку для регистрации используются звёзды, этот алгоритм работает только с изображениями глубокого космоса. Настройки определения звёзд могут быть изменены с помощью команды SETFINDSTAR или диалога Динамическая PSF.
Будут зарегистрированы все изображения в последовательности, если только не передана опция -selected. В этом случае исключённые изображения не будут обработаны.
Опция -2pass только вычисляет преобразования, но не создаёт преобразованных изображений. -2pass добавляет предварительный шаг к алгоритму для поиска хорошего опорного изображения перед вычислением преобразований на основе качества и кадрирования. Для создания преобразованных изображений после этого шага используйте SEQAPPLYREG.
В случае создания, название итоговой последовательности будет начинаться с префикса "r_", если с помощью опции -prefix= не указан иной. Итоговые изображения могут быть масштабированы путём передачи значения с плавающей точкой в диапазоне от 0.1 до 3 аргументу -scale=.
Опции преобразования изображений:
Для цветных изображений определение выполняется на зелёном слое, если не указан иной слой с помощью опции -layer=, принимающей значения от 0 до 2 (от красного до синего).
-transf= указывает вид преобразования; может быть shift, similarity, affine или homography (значение по умолчанию).
-minpairs= указывает минимальное количество пар звёзд, которое должно между кадром и опорным кадром. В противном случае этот кадр будет отброшен и исключён из последовательности.
-maxstars= указывает максимальное количество пар звёзд для поиска на каждом кадре (должно быть от 100 до 2000). С бо́льшим количеством звёзд регистрация будет более точной, но это потребует больше времени для вычислений.
-nostarlist отключает сохранение списка звёзд на диск.
-disto= использует полученные раннее в ходе астрономического решения данные дисторсии (со степенью SIP > 1). В качестве параметра используется либо image, чтобы использовать решение, содержащееся в загруженном в данный момент изображении, file, за которым следует путь к изображению, содержащему решение, либо master, чтобы автоматически загрузить соответствующий мастер-фaйл дисторсии, соответствующий каждому изображению. При использовании этой опции полиномы используются как для коррекции положения звёзд перед вычислением преобразования, так и для устранения дисторсии в изображениях при экспорте итоговых изображений.
Интерполяция изображений:
По умолчанию преобразования применяются к изображениям с использованием интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции по умолчанию используется фиксация (clamping), предотвращающая артефакты, но она может быть отключена с помощью аргумента -noclamp.
Сверхразрешение:
В противном случае изображения можно экспортировать с помощью алгоритма сверхразрешения HST, передав аргумент -drizzle, который может принимать дополнительные параметры:
-pixfrac= устанавливает долю пикселей (по умолчанию = 1.0).
-kernel= устанавливает ядро и обязательно принимает одно из следующих значений point (точка), turbo (турбо), square (квадрат), gaussian (Гаусс), lanczos2 (Ланцош-2) или lanczos3 (Ланцош-3). Значение по умолчанию — square.
-flat= указывает использовать ли мастер-кадр плоского поля для присвоения веса входящим пикселям при использовании сверхразрешения (по умолчанию — кадры плоского поля не используются).
Замечание: при использовании -drizzle для изображений, полученных на цветную камеру, входящие изображения не должны быть дебайеризованы. В этом случае определение звёзд всегда выполняется по зелёным пикселям
Ссылки:setfindstar, psf, seqapplyreg

reloadscripts

    reloadscripts

Выполняет повторное сканирование директорий со сценариями и обновляет меню Сценарии. Обратите внимание, что эта команда не работает в автономном режиме, т.е. через siril-cli, и что обновление происходит асинхронно, т.е. программа запускает обновление, но не дожидается окончания процесса

requires

    requires min_version [obsolete_version]

Возвращает ошибку, если версия Siril старше минимальной требуемой версии, указанной в первом аргументе. Принимает второй, необязательный, аргумент для версии Siril, при которой сценарий считается устаревшим и возвращает ошибку, если версия Siril новее или равна версии, переданной во втором аргументе.
Пример: requires 1.2.0 1.4.0 позволяет запускать сценарий для всех версий серий 1.2.x и 1.3.x, но сценарий не будет выполняться ни для какой из версий, более ранних, чем 1.2.0, или для версии 1.4.0 и более поздних

resample

    resample { factor | -width= | -height= | -maxdim= } [-interp=] [-noclamp]

Масштабирует изображение либо на коэффициент factor, либо к целевой ширине или высоте, указанной с помощью -width=, -height= или -maxdim=. Обычно это используется для изменения размера изображения: коэффициент 0.5 уменьшает размер вдвое. Аргумент -maxdim= можно использовать для изменения размера наибольшего измерения изображения к определённому размеру, что удобно для оптимизации изображений для определённых сайтов, например, для социальных сетей.
Можно отметить, что в графическом интерфейсе доступны несколько алгоритмов интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=, за которым следует один из методов, указанных в списке *no[ne], ne[arest], cu[bic], la[nczos4], li[near], ar[ea]}.
При интерполяции методом Ланцош-4 или бикубической интерполяции используется фиксация по умолчанию для предотвращения артефактов, но она может быть отключена с помощью аргумента -noclamp

rgbcomp

    rgbcomp red green blue [-out=result_filename] [-nosum]
    rgbcomp -lum=image { rgb_image | red green blue } [-out=result_filename] [-nosum]

Создаёт композитное RGB изображение, используя три независимых изображения, или композитное изображение LRGB, используя дополнительное яркостное изображение и три монохромных или одно цветное изображение. Итоговое изображение будет иметь название composed_rgb.fit или composed_lrgb.fit, если в необязательном аргументе не указано другое название. Другой необязательный аргумент, -nosum, указывает Siril не складывать время эскпозиций. Это влияет на ключевые слова FITS, такие, как LIVETIME и STACKCNT

rgradient

    rgradient xc yc dR dalpha

Создаёт два изображения с радиальным (dR пикселей) и вращательным (dalpha градусов) сдвигом по отношению к точке (xc, yc).
Сдвиги между этими изображениями имеют одинаковую амплитуду, но противоположенный знак. Далее изображения суммируются для создания итогового изображения. Этот процесс также называет фильтром Ларсона Секанина

rl

    rl [-loadpsf=] [-alpha=] [-iters=] [-stop=] [-gdstep=] [-tv] [-fh] [-mul]

Восстанавливает изображение с помощью метода Ричардсона-Люси.
PSF может быть загружена с помощью необязательного аргумента -loadpsf=filename (создан с помощью MAKEPSF).
Количество повторов устанавливается с помощью -iters (по умолчанию — 10).
Тип регуляризации может быть установлен с помощью -tv для полной вариации или -fh для нормы Фробнеуса для матрицы Гессе (по умолчанию — регуляризация отключена) и параметра -alpha=, устанавливающего силу регуляризации (меньшее значение = бо́льшая регуляризация, по умолчанию = 3000).
По умолчанию используется метод градиентного спуска с шагом 0.0005, однако с помощью -mul может быть использован мультипликативный метод.
Критерий остановки можно включить, указав предел остановки с помощью -stop=
Ссылки: psf, makepsf

rmgreen

    rmgreen [-nopreserve] [type] [amount]

Применяет фильтр подавления хроматического шума, удаляющий зелёный оттенок на текущем изображении. Этот фильтр основан на SCNR из PixInsight и этот же фильтр используется плагином HLVG в Photoshop.
По умолчанию светлота сохраняется, но это может быть отключено с помощью -nopreserve.
Аргумент type может принимать значения 0 для средний нейтральный, 1 для максимальный нейтральный, 2 для максимальная маска и 3 для аддитивная маска. По умолчанию — 0. Последние два могут принимать аргумент amount со значением между 0 и 1. Значение по умолчанию — 1

rotate

    rotate degree [-nocrop] [-interp=] [-noclamp]

Вращает загруженное изображение на угол degree. Чтобы избежать обрезки изображения, может быть использована опция -nocrop. При этом к изображению будут добавлены чёрные границы.
Замечание: если имеется активное выделение, например, если перед командой `rotate` использовалась команда `boxselect`, итоговое изображение будет кадрировано перед вращением. В данном случае аргумент -nocrop, если передан, будет проигнорирован.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции используется фиксация по умолчанию для предотвращения артефактов, но она может быть отключена с помощью аргумента -noclamp

rotatePi

    rotatePi

Вращает загруженное изображение на 180° вокруг центра. Это эквивалентно команде "ROTATE 180" или "ROTATE -180"
Ссылка: rotate

satu

    satu amount [background_factor [hue_range_index]]

Улучшает насыщенность цвета загруженного изображения. Для получения наилучших результатов используйте итеративно.
amount положительное значение увеличивает насыщенность цвета, отрицательное — уменьшает, 0 — ничего не делает, 1 — увеличивает насыщенность на 100%
background_factor это коэффициент (медиана + σ), используемый для установки порога, выше которого будет происходить изменение пикселей. При правильном подборе, это позволяет не увеличивать насыщенность цвета фонового шума. Значение по умолчанию — 1. При установке 0 порог отключается.
hue_range_index может быть [0, 6], что означает: 0 от розового до оранжевого, 1 от оранжевого до жёлтого, 2 от жёлтого до голубого, 3 для голубого, 4 от голубого до пурпурного, 5 от пурпурного до розового, 6 все цвета (значение по умолчанию)

save

    save filename [-chksum]

Сохраняет текущее изображение в файл filename.fit (или .fits, в зависимости от ваших настроек, см. SETEXT), расположенный в текущей рабочей директории. Изображение при этом остаётся загруженным. filename может содержать путь, если каталог уже существует. Опция -chksum сохраняет ключевые слова контрольной суммы (CHECKSUM и DATASUM) в заголовке FITS
Ссылка: setext

savebmp

    savebmp filename

Сохраняет текущее изображение в форме битовой карты с 8-ю битами на канал: filename.bmp (BMP 24 бита)

savejpg

    savejpg filename [quality]

Сохраняет текущее изображение в файл JPG: filename.jpg.
Вы имеете возможность установить качество сжатия. Значение параметра quality равное 100 обеспечивает наилучшую точность воспроизведения, в то время как более низкое значение увеличивает степень сжатия. Если значение не указано, применяется значение по умолчанию, равное 100

savejxl

    savejxl filename [-effort=] [-quality=] [-8bit]

Сохраняет текущее изображение в файл JPG XL: filename.jxl.
Все остальные параметры необязательны. Параметр качество (quality) определяет максимально допустимое расстояние между оригиналом и сжатым изображением: может быть указан параметр -quality=, который должен быть указан в виде числа с плавающей точкой в диапазоне от 0.0 до 10.0. Более высокое качество означает лучшее качество, но бо́льший размер файла. Качество 10.0 математически не имеет потерь, качество 9.0 визуально не имеет потерь, а качество 0 даёт визуально низкое качество изображения, но получается очень маленький размер файла. Значение по умолчанию равно 9,0; типичные значения варьируют от 7.0 до 10.0. Усилие сжатия (compression effort) можно регулировать с помощью дополнительного значения -effort=, где 9 — это максимальное усилие, но очень медленное, в то время как меньшее значение увеличивает степень сжатия. Значения выше 7 не рекомендуются, так как они могут работать очень медленно и практически не влияют на размер файла. Более того, иногда значение усилия 9 может привести к созданию файлов бо́льшего размера. Если этот аргумент опущен, используется значение по умолчанию 7. Опция -8bit, принудительно устанавливает результат до 8-ми бит на пиксель

savepng

    savepng filename

Сохраняет текущее изображение в файл PNG: filename.png с разрядностью 16 бит, если загружено 16- или 32-битное изображение, или 8 бит на канал, если загружено 8-битное изображение

savepnm

    savepnm filename

Сохраняет текущее изображение в формате NetPBM с 16 битами на канал.
Расширение итогового файла будет filename.ppm для RGB-изображений и filename.pgm для изображений в градациях серого

savetif

    savetif filename [-astro] [-deflate]

Сохраняет текущее изображение в виде несжатого 16-битного файла TIFF filename.tif. Опция -astro позволяет сохранить в формате Astro-TIFF, а -deflate включает сжатие.
См. также SAVETIF32 и SAVETIF8

savetif32

    savetif32 filename [-astro] [-deflate]

Аналогична команде SAVETIF, но итоговый файл сохраняется в файле filename.tif с разрядностью 32 бита на канал. Аргумент -astro сохранение в формате Astro-tiff, а аргумент -deflate включает сжатие
Ссылка: savetif

savetif8

    savetif8 filename [-astro] [-deflate]

Аналогична команде SAVETIF, но итоговый файл сохраняется в файле filename.tif с разрядностью 32 бита на канал. Аргумент -astro сохранение в формате Astro-tiff, а аргумент -deflate включает сжатие
Ссылка: savetif

sb

    sb [-loadpsf=] [-alpha=] [-iters=]

Восстанавливает изображение с помощью метода Брэгмана.
PSF может быть загружена с помощью необязательного аргумента -loadpsf=filename.
Количество повторов устанавливается с помощью -iters (по умолчанию — 1).
Коэффициент регуляризации -alpha= устанавливает силу регуляризации (меньшее значение = бо́льшая регуляризация, по умолчанию = 3000)
Ссылка: psf

select

    select sequencename from to

Эта команда позволяет выполнить массовый выбор изображений в последовательности sequencename (начиная с from и заканчивая to включительно). Это выделение для дальнейшей обработки.
См. также UNSELECT
Ссылка: unselect
Примеры:
select . 0 0
выбирает первую из загруженных в данный момент последовательностей
select sequencename 1000 1200
выбирает 201 изображение начиная с номера 1000 в последовательности sequencename
Второе число может быть больше количества изображений, просто чтобы дойти до конца.

seqapplyreg

    seqapplyreg sequencename [-prefix=] [-scale=] [-layer=] [-framing=]
    seqapplyreg sequencename ... [-interp=] [-noclamp]
    seqapplyreg sequencename ... [-drizzle [-pixfrac=] [-kernel=] [-flat=]]
    seqapplyreg sequencename ... [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]] [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Используя ранее вычисленные данные регистрации (см. REGISTER), выполняет геометрическое преобразование изображений последовательности, указанной в аргументе таким образом, чтобы они могли быть наложены на опорное изображение.
Название итоговой последовательности начинается с префикса "r_", если с помощью опции -prefix= не указан иной.
Для RGB-изображений регистрация выполняется на первом слое, для которого существуют данные, если не указан иной слой с помощью опции -layer= (0, 1 или 2 для R, G и B, соответственно).
Итоговые изображения могут быть масштабированы с помощью аргумента -scale=, являющимся дробным значением в диапазоне от 0,1 до 3.
Автоматическое кадрирование итоговой последовательности может быть сделано с помощью опции -framing= и указанием метода кадрирования из списка { current | min | max | cog } :
-framing=max (ограничивающая рамка) проецирует каждое изображение и вычисляет его сдвиг относительно опорного. Итоговая последовательность может быть уложена с помощью опции -maximize команды STACK, которая создаёт полное изображение, включающее все изображения последовательности.
-framing=min (общая область) обрезает каждое изображение до области, общей с всеми остальными изображениями в последовательности.
-framing=cog определяет лучшее кадрирование как центр тяжести (center of gravity — cog) всех изображений.
Интерполяция изображений:
По умолчанию преобразования применяются к изображениям с использованием интерполяции.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=. Доступны следующие методы: no[ne] (нет), ne[arest] (ближайший сосед), cu[bic] (бикубическая), la[nczos4] (Ланцош-4), li[near] (линейная), ar[ea] (отношение площади пикселя). Если передан аргумент none, принудительно выполняется сдвиг и к каждому изображению применяется попиксельный сдвиг без интерполяции.
При интерполяции методом Ланцош-4 или бикубической интерполяции по умолчанию используется фиксация (clamping), предотвращающая артефакты, но она может быть отключена с помощью аргумента -noclamp.
Сверхразрешение:
В противном случае изображения можно экспортировать с помощью алгоритма сверхразрешения HST, передав аргумент -drizzle, который может принимать дополнительные параметры:
-pixfrac= устанавливает долю пикселей (по умолчанию = 1.0).
-kernel= устанавливает ядро и обязательно принимает одно из следующих значений point (точка), turbo (турбо), square (квадрат), gaussian (Гаусс), lanczos2 (Ланцош-2) или lanczos3 (Ланцош-3). Значение по умолчанию — square.
-flat= указывает использовать ли мастер-кадр плоского поля для присвоения веса входящим пикселям при использовании сверхразрешения (по умолчанию — кадры плоского поля не используются).
Фильтрация изображений:
Изображения для регистрации могут быть отфильтрованы с помощью некоторых фильтров, например, выбранные или с лучшей FWHM, используя опции -filter-*.
Ссылки: register, stack
Опции фильтрации не зависят от порядка их использования и могут быть следующими:

    [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]]
    [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Лучшие изображения из последовательности могут быть уложены с использованием аргументов фильтрации. Каждый из этих аргументов может удалить некачественные изображения, основываясь на отличительных чертах в их названиях, взятых из данных регистрации с любым из трёх значений аргумента:
- a numeric value for the worse image to keep depending on the type of data used (between 0 and 1 for roundness and quality, absolute values otherwise),
- a percentage of best images to keep if the number is followed by a % sign,
- or a k value for the k.sigma of the worse image to keep if the number is followed by a k sign.
Так же можно выбрать изображения вручную либо раннее с помощью графического интерфейса или с помощью команд select или unselect, используя аргумент -filter-included.

seqccm

    seqccm sequencename [-prefix=]

Аналогична команде CCM, но применяется к последовательности sequencename. Обрабатываются только выбранные изображения из последовательности.
Название итоговой последовательности будет начинаться с префикса "ccm", если не указан иной с помощью аргумента -prefix=
Ссылка: ccm

seqclean

    seqclean sequencename [-reg] [-stat] [-sel]

Эта команда очищает выделение, данные регистрации и/или статистику, сохранённые для последовательности sequencename.
Вы можете очистить только данные выделения, регистрации и/или статистику, используя опции -sel, -reg или -stat, соответственно. Если никакой опции не передано, очищаются все данные

seqcosme

    seqcosme sequencename [filename].lst [-prefix=]

Аналогична команде COSME, но применяется к последовательности sequencename. Обрабатываются только выбранные изображения из последовательности.
Название итоговой последовательности будет начинаться с префикса "cosme_", если не указан иной с помощью аргумента -prefix=
Ссылка: cosme

seqcosme_cfa

    seqcosme_cfa sequencename [filename].lst [-prefix=]

Аналогична команде COSME_CFA, но применяется к последовательности sequencename. Обрабатываются только выбранные изображения из последовательности.
Название итоговой последовательности будет начинаться с префикса "cosme_", если не указан иной с помощью аргумента -prefix=
Ссылка: cosme_cfa

seqcrop

    seqcrop sequencename x y width height [-prefix=]

Обрезает последовательность, указанную в аргументе sequencename. Обрабатываются только выбранные изображения из последовательности.
Выделение для кадрирования задаётся координатами верхнего левого угла, x и y, и шириной (width) и высотой (height) выделения, подобно CROP.
Название итоговой последовательности будет начинаться с префикса "cropped_", если не указан иной с помощью опции -prefix=
Ссылка: crop

seqextract_Green

    seqextract_Green sequencename [-prefix=]

Аналогична команде EXTRACT_GREEN, но применяется к последовательности sequencename.
Название итоговой последовательности будет начинаться с префикса "Green_", если не указан иной с помощью аргумента -prefix=

seqextract_Ha

    seqextract_Ha sequencename [-prefix=] [-upscale]

Аналогична команде EXTRACT_HA, но применяется к последовательности sequencename.
Название итоговой последовательности будет начинаться с префикса "Ha_", если не указан иной с помощью аргумента -prefix=

seqextract_HaOIII

    seqextract_HaOIII sequencename [-resample=]

Аналогична команде EXTRACT_HAOIII, но применяется к последовательности sequencename.
Название итоговых последовательностей будут начинаться с префиксов "Ha_" и "OIII_"

seqfind_cosme

    seqfind_cosme sequencename cold_sigma hot_sigma [-prefix=]

Аналогична команде FIND_COSME, но применяется к последовательности sequencename.
Название итоговой последовательности будет начинаться с префикса "cc_", если не указан иной с помощью аргумента -prefix=
Ссылка: find_cosme

seqfind_cosme_cfa

    seqfind_cosme_cfa sequencename cold_sigma hot_sigma [-prefix=]

Аналогична команде FIND_COSME_CFA, но применяется к последовательности sequencename.
Название итоговой последовательности будет начинаться с префикса "cc_", если не указан иной с помощью аргумента -prefix=
Ссылка: find_cosme_cfa

seqfindstar

    seqfindstar sequencename [-layer=] [-maxstars=]

Аналогична команде FINDSTAR, но применяется к последовательности sequencename.
Аргумент -out= недоступен для этого процесса, поскольку все файлы списка звёзд сохраняются с именем по умолчанию seqname_seqnb.lst
Ссылка: findstar

seqfixbanding

    seqfixbanding sequencename amount sigma [-prefix=] [-vertical]

Аналогична команде FIXBANDING, но применяется к последовательности sequencename.
Название итоговой последовательности начинается с префикса "unband_", если с помощью опции -prefix= не указан иной
Ссылка: fixbanding

seqght

    seqght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде GHT, но имя последовательности должно быть указано в первом аргументе. Пользовательский префикс может быть передан с помощью необязательного аргумента -prefix=
Ссылка: ght

seqheader

    seqheader sequencename keyword [keyword2 ...] [-sel] [-out=file.csv]

Для всех изображений в последовательности выводит значение заголовка FITS, соответствующее указанным ключам. Можно указать несколько ключей подряд, разделив их пробелом. Аргумент -out=, за которым следует название файла, позволяет сохранить данные в файл csv. Аргумент -sel ограничивает вывод только выбранными изображениями последовательности

seqinvght

    seqinvght sequence -D= [-B=] [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде INVGHT, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: invght

seqinvmodasinh

    seqinvmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде INVMODASINH, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: invmodasinh

seqlinstretch

    seqlinstretch sequence -BP= [channels] [-sat] [-prefix=]

Аналогична команде LINSTRETCH, но название последовательности должно быть указано в первом аргументе. Необязательный аргумент -prefix= может быть использован для указания пользовательского префикса
Ссылка: linstretch

seqmerge_cfa

    seqmerge_cfa sequencename0 sequencename1 sequencename2 sequencename3 bayerpattern [-prefixout=]

Сливает 4 последовательности изображений для восстановления шаблона Байера. Последовательности указываются в аргументах sequencename0, sequencename1, sequencename2 и sequencename3.
Вариант восстанавливаемого шаблона Байера (RGGB, BGGR, GBRG или GRBG) должен быть указан в качестве второго аргумента. Порядок каналов в шаблоне Байера должен совпадать с порядком указанных последовательностей.
Замечание: все 4 входящих последовательности должны присутствовать и иметь одинаковые размер, разрядность и количество изображений.
Название итоговой последовательности будет начинаться с префикса "mCFA_", если не указан иной с помощью аргумента -prefixout=

seqmodasinh

    seqmodasinh sequence -D= [-LP=] [-SP=] [-HP=] [-clipmode=] [-human | -even | -independent | -sat] [channels] [-prefix=]

Аналогична команде MODASINH, но имя последовательности должно быть указано в первом аргументе. Пользовательский префикс может быть передан с помощью необязательного аргумента -prefix=
Ссылка: modasinh

seqmtf

    seqmtf sequencename low mid high [channels] [-prefix=]

Аналогична команде MTF, но применяется к последовательности sequencename.
Название итоговой последовательности начинается с префикса "mtf_", если с помощью опции -prefix= не указан иной
Ссылка: mtf

seqprofile

    seqprofile sequence -from=x,y -to=x,y [-tri] [-cfa] [-arcsec] [-savedat] [-layer=] [-width=] [-spacing=] [ {-xaxis=wavelength | -xaxis=wavenumber } ] [{-wavenumber1= | -wavelength1=} -wn1at=x,y {-wavenumber2= | -wavelength2=} -wn2at=x,y] ["-title=My Plot"]

Создаёт профиль интенсивность между двумя точками на каждом изображении последовательности. После обязательного первого аргумента, указывающего название последовательности, которую необходимо обработать, остальные аргументы аналогичны аргументам команды profile. Если обрабатывается последовательность и желательно, что номер текущего изображения и общее количество изображений отображались в формате "Моя последовательность (1/5)", заголовок должен заканчиваться (), например, "Моя последовательность ()" и данные будут заполнены автоматически

seqpsf

    seqpsf sequencename [channel] [{ -at=x,y | -wcs=ra,dec }] [-followstar]

Аналогична команде PSF, но применяемая к последовательностям. Это сходно с регистрацией по одной звезде, за исключением того, что результаты могут быть использованы для фотометрического анализа, а не для выравнивания изображений, и координаты звезды могут быть указаны с помощью опций.
Эта команда вызывается из выпадающего меню при щелчке правой кнопкой мыши на изображении, в пункте PSF для последовательности. Если для последовательности уже существуют данные регистрации, они будут использованы для смещения области поиска на каждом изображении. Если данные регистрации отсутствуют и если между изображениями в последовательности имеется значительный сдвиг, настройки по умолчанию не позволят найти звёзды в исходном положении области поиска.
The follow star option can then be activated with the argument -followstar.
Результаты будут отображены на вкладке "График", откуда их можно экспортировать в файл CSV для внешнего анализа.
При создании кривой блеска первая звезда, для которой была запущена seqpsf, отмеченная на экране буквой «V», будет рассматриваться как переменная звезда. Все остальные усредняются для создания эталонной световой кривой, вычитаемой из кривой блеска переменной звезды.
В данный момент при работе в автономном режиме эта команда выводит некоторые проанализированные данные в журнал, другая команда позволяет проанализировать несколько звёзд и построить график в виде кривой блеска: LIGHT_CURVE. В автономном режиме аргументы обязательны: необходимо указать название последовательности (можно использовать «.» для указания последовательности, загруженной в настоящий момент); -at= позволяет указать координаты целевой звезды в пикселях, а -wcs= — экваториальные координаты J2000
Ссылки: psf, light_curve

seqplatesolve

    seqplatesolve sequencename [image_center_coords] [-focal=] [-pixelsize=]
    seqplatesolve sequencename ... [-downscale] [-order=] [-radius=] [-force] [-noreg] [-disto=]
    seqplatesolve sequencename ... [-limitmag=[+-]] [-catalog=] [-nocrop] [-nocache]
    seqplatesolve sequencename ... [-localasnet [-blindpos] [-blindres]]

Ищет астрономическое решение последовательности. Результатом будет новая последовательность с префиксом «ps_», если входящая последовательность в формате SER, иначе обновляются заголовки изображений. Ввод метаданных для последовательностей в формате SER обязателен. Итоговая последовательность будет иметь вид куба FITS, поскольку формат SER не хранит данные WCS.
Если данные WCS или другие метаданные ошибочны или отсутствуют, то должны быть переданы:
приблизительные координаты центра изображения могут быть представлены в виде десятичных градусов или градус/час минута секунда (J2000, разделённые двоеточием) и значениями прямого восхождения и склонения, разделённые запятой или пробелом (для astrometry.net — необязательно).
фокусное расстояние и размер пикселя могут быть указаны с помощью -focal= (в миллиметрах) и -pixelsize= (в микрометрах), переопределяя значения, полученные из изображения и настроек. См. также настройки для поиска решения вслепую с помощью локальной установки Astrometry.net
Для более быстрого поиска звёзд на больших изображениях, возможно уменьшить масштаб изображения с помощью -downscale.
Решение может учитывать искажения, используя соглашение SIP с полиномами до пятой степени. Значение по умолчанию берётся из настроек астрометрии. Его можно изменить с помощью параметра -order=, который задаёт значение от 1 до 5.
При использовании локальных каталогов решателя Siril или локальной установки Astrometry.net, если первоначальное решение не удалось, решатель будет искать решение в пределах радиуса, указанного с помощью опции -radius=. Если значение не указано, радиус поиска берётся из настроек астрометрии. Поиск поблизости Siril можно отключить, указав значение 0. (для Astrometry.net отключить нельзя).
Уже решённые изображения по умолчанию пропускаются. Это можно изменить, передав опцию -force.
Данные регистрации будут обновлены, если не передан аргумент -noreg.
Текущее решение можно сохранить как файл с данными о дисторсии с помощью аргумента -disto=.
Астрономическое решение изображений может быть получено с помощью Siril, используя каталог звёзд и алгоритм регистрации всего звёздного неба или с помощью локальной команды solve-field из пакета astrometry.net (включается с помощью -localasnet).
Настройки решателя Siril:
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений положительного или отрицательного смещения ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
Каталог звёзд выбирается автоматически, если только не передан ключ -catalog=: если установлены локальные каталоги, то используются они. В противном случае выбор основывается на размере поля зрения и пределе звёздной величины. Если этот аргумент передан, будет принудительно использован удалённый каталог. Возможные значения аргумента: tycho2, nomad, gaia, ppmxl, brightstars, apass.
Если рассчитанное поле зрения больше 5 градусов, обнаружение звёзд будет ограничено областью вокруг центра изображения, если не только не передан аргумент -nocrop.
При использовании удалённых каталогов для всей последовательности выполняется однократное извлечение из каталога. При наличии большого дрейфа или разницы в масштабе, не все изображения могут быть решены. Аргумент -nocache отключает такое поведение и в этом случае используются метаданные каждого изображения (исключая принудительные значения, как координаты центра, размер пикселя и/или фокусное расстояние).
Настройки решателя Astrometry.net:
Передача аргументов -blindpos и/или -blindres позволяет выполнять поиск вслепую для определения позиции и разрешения, соответственно. Вы можете использовать эти опции при решении изображений с неизвестными положением и разрешением

seqresample

    seqresample sequencename { -scale= | -width= | -height= } [-interp=] [-prefix=]

Масштабирует последовательность, указанную в аргументе sequencename. Обрабатываются только выбранные изображения из последовательности.
Коэффициент масштаба указывается либо аргументом -scale=, либо указанием итоговых ширины, высоты или максимального измерения с помощью -width=, -height= или -maxdim=, соответственно.
Метод интерполяции пикселей может быть указан с помощью аргумента -interp=, за которым следует один из методов, указанных в списке ne[arest], cu[bic], la[nczos4], li[near], ar[ea]}.. Фиксация применяется для методов интерполяции cubic и lanczos.
Название итоговой последовательности начинается с префикса "scaled_", если с помощью опции -prefix= не указан иной

seqrl

    seqrl sequencename [-loadpsf=] [-alpha=] [-iters=] [-stop=] [-gdstep=] [-tv] [-fh] [-mul]

Аналогична команде RL, но применяется к последовательности, которая должна быть указана в первом аргументе
Ссылка: rl

seqsb

    seqsb sequencename [-loadpsf=] [-alpha=] [-iters=]

Аналогична команде SB, но применяется к последовательности, которая должна быть указана в первом аргументе
Ссылка: sb

seqsetmag

    seqsetmag magnitude

Аналогична команде SETMAG, но для загруженной последовательности.
Эта команда применима только после выполнения команды SEQPSF или её графического аналога (выберете область вокруг звезды и запустите анализ PSF для последовательности, она появится на графиках).
Эта команда имеет ту же цель, что и SETMAG, но повторно вычисляет опорную звездную величину для каждого изображения последовательности, на котором была найдена опорная звезда.
При запуске команды, последняя проанализированная звезда будет рассматриваться как опорная. Отображение графика блеска перед вводом команды упрощает её понимание.
Чтобы сбросить смещение опорной звезды и звёздной величины, см. SEQUNSETMAG
Ссылки: setmag, seqpsf, psf, sequnsetmag

seqsplit_cfa

    seqsplit_cfa sequencename [-prefix=]

Аналогична команде SPLIT_CFA, но применяется к последовательности sequencename.
Название итоговой последовательности начинается с префикса "CFA_" и номера, если с помощью опции -prefix= не указан иной.
Ограничение: вне зависимости от типа входящей последовательности, всегда будет создана последовательность файлов FITS
Ссылка: split_cfa

seqstarnet

    seqstarnet sequencename [-stretch] [-upscale] [-stride=value] [-nostarmask]

Эта команда вызывает Starnet++ для удаления звёзд с последовательности sequencename. См. STARNET
Ссылка: starnet

seqstat

    seqstat sequencename output_file [option] [-cfa]

Аналогична команде STAT для последовательности sequencename.
Данные будут сохранены в файле csv (output_file).
Необязательный параметр определяет количество вычисляемых статистических параметров: basic, main (по умолчанию) или full (больше деталей, но вычисляется дольше).
\tbasic (базовая статистика) включает среднее значение, медиану, стандартное отклонение (σ), шум фона (bgnoise), минимальное и максимальное значения
\tmain (расширенная статистика) в дополнение к базовой статистике включает абсолютное отклонение (avgDev), абсолютное отклонение медианы (MAD) and квадратный корень из BWMV
\tfull (полная статистика) в дополнение к расширенной статистике включает положение и масштаб.
Если передан аргумент -cfa и изображение является изображением CFA, статистика выводится для каждого фильтра
Ссылка: stat

seqsubsky

    seqsubsky sequencename { -rbf | degree } [-nodither] [-samples=20] [-tolerance=1.0] [-smooth=0.5] [-prefix=]

Аналогична команде SUBSKY, но применяется к последовательности sequencename.
Подмешивание шума (dithering), необходимое для изображений с низкими динамическими градиентами может быть отключено с помощью -nodither. Обратите внимание, что аргумент -existing недоступен для удаления фона в последовательности, так как кадры последовательности не обязательно всегда выровнены.
Название итоговой последовательности начинается с префикса "CFA_", если с помощью опции -prefix= не указан иной. В последовательности будут обработаны только выбранные изображения
Ссылка: subsky

seqtilt

    seqtilt sequencename

Аналогична команде TILT, но применяется последовательности sequencename. Как правило, она даёт лучшие результаты
Ссылка: tilt

sequnsetmag

    sequnsetmag

Сбрасывает калибровку звёздной величины и опорную звезду для последовательности. См. SEQSETMAG
Ссылка: seqsetmag

sequpdate_key

    sequpdate_key sequencename key value [keycomment]
    sequpdate_key sequencename -delete key
    sequpdate_key sequencename -modify key newkey
    sequpdate_key sequencename -comment comment

Аналогична команде UPDATE_KEY, но применяется последовательности sequencename. Однако эта команда не работает с последовательностями SER
Ссылка: update_key

seqwiener

    wiener sequencename [-loadpsf=] [-alpha=]

Аналогична команде WIENER, но применяется к последовательности, которая должна быть указана в первом аргументе
Ссылка: wiener

set

    set { -import=inifilepath | variable=value }

Обновляет значение настройки, используя имя её переменной с заданным значением или набором значений, используя существующий ini-файл с опцией -import=.
См. GET для получения списка переменных или их значений
Ссылка: get

set16bits

    set16bits

Запрещает сохранение изображений с разрядность 32 бита на канал при обработке. Вместо этого используются 16 бит

set32bits

    set32bits

Позволяет сохранение изображений с 32 битами на канал при обработке

setcompress

    setcompress 0/1 [-type=] [q]

Определяет, сжимать изображения или нет.
0 означает, что сжатие выключено, а 1 включает сжатие.
Если сжатие включено, его тип должен быть явно указан опцией -type= ("rice", "gzip1", "gzip2").
Связанное со сжатием значение квантования должно быть в диапазоне [0, 256].
Например, "set compress 1 -type=rice 16" устанавливает тип сжатия (rice) со значением квантования 16

setcpu

    setcpu number

Определяет количество потоков, используемых для вычисления.
Может быть равно числу виртуальных потоков, присутствующих в системе, т.е. числу ядер процессора или вдвое превышать это значение, если доступна технология гиперпоточности (Intel hyperthreading). Значение по умолчанию - максимально доступное число потоков, поэтому в основном это следует использовать для ограничения вычислительной мощности. Значение сбрасывается при каждом запуске Siril. См. также SETMEM
Ссылка: setmem

setext

    setext extension

Устанавливает расширение, используемое и понимаемое последовательностями.
Аргумент extension может быть "fit", "fts" или "fits"

setfindstar

    setfindstar [reset] [-radius=] [-sigma=] [-roundness=] [-focal=] [-pixelsize=] [-convergence=] [ [-gaussian] | [-moffat] ] [-minbeta=] [-relax=on|off] [-minA=] [-maxA=] [-maxR=]

Определяет параметры определения звёзд для команд FINDSTAR и REGISTER.
При отсутствии параметра выводит список текущих значений.
Передача reset сбрасывает все значения к значениям по умолчанию. Вы всё ещё можете передавать значения после этого ключевого слова.
Настраиваемые значения:
-radius= определяет радиус первоначального поискового окна и должно быть между 3 и 50.
-sigma= определяет пороговое значение превышения уровня шума и должно быть больше или равно 0.05.
-roundness= определяет минимальное значение округлости звёзд и должно быть между 0 и 0.95. -maxR позволяет установить верхнюю границу округлости для визуализации только тех областей, где звёзды значительно вытянуты. Не меняйте для регистрации.
-minA и -maxA определяют пределы минимальной и максимальной сохраняемых амплитуд звёзд, нормализованные между 0 и 1.
-focal= определяет фокусное расстояние телескопа.
-pixelsize= определяет размер пикселя сенсора.
-gaussian и -moffat настраивает используемую модель решателя (по умолчанию - Гауссова).
Если выбрана модель Моффата, аргумент -minbeta= определяет минимальное значение параметра β для которого будут приняты кандидаты в звёзды и должно быть больше или равно 0.0 и меньше чем 10.0.
-convergence= определяет количество выполняемых повторов для подгонки PSF и должно быть установлено между 1 и 3 (более толерантное).
-relax= ослабляет проверки, выполняемые для кандидатов в звёзды, чтобы определить, являются ли они звёздами или нет, и позволяет по-прежнему принимать объекты, не имеющие форму звёзд (по умолчанию отключено)
Ссылки: findstar, register, psf

Пороговое значение для обнаружения звезд вычисляется как медиана изображения (которая в целом отражает уровень фона) плюс k × σ, где σ является стандартным отклонением изображения (что является хорошим показателем амплитуды шума). Если на изображениях много звёзд и хорошее соотношение сигнал/шум, возможно, стоит увеличить это значение, чтобы ускорить обнаружение и избежать ложных срабатываний.

Рекомендуется проверить значения, используемые для последовательности, с помощью графического интерфейса Siril, доступного в меню «Анализ изображений», «Динамическая PSF...». Увеличение параметров может улучшить качество регистрации, но также важно иметь возможность обнаруживать несколько десятков звёзд на каждом изображении.

setmag

    setmag magnitude

Калибрует звёздную величину, выбирая звезду и задавая известную видимую звёздную величину.
После этого все вычисления PSF будут возвращать откалиброванную видимую звёздную величину вместо видимой величины относительно значений ADU. Следует отметить, что для того, чтобы быть осмысленным, указанное значение звёздной величины должно совпадать с наблюдательным фильтром.
Чтобы сбросить константу звёздной величины см. UNSETMAG
Ссылки: psf, unsetmag

setmem

    setmem ratio

Устанавливает новое отношение свободной памяти к памяти, использованной для укладки.
Значение ratio должно быть между 0.05 и 2, в зависимости от загруженности машины. Бо́льшее соотношение должно позволить siril выполнять укладку быстрее. Однако установка доли памяти, используемой для укладки, больше 1 потребует использования памяти на диске, что очень медленно и не рекомендуется (иногда даже не поддерживается), что приводит к сбою систему. Также может быть установлен фиксированный объём памяти в общих настройках с помощью SET, вместо указания соотношения
Ссылка: set

setphot

    setphot [-inner=20] [-outer=30] [-aperture=10] [-dyn_ratio=4.0] [-gain=2.3] [-min_val=0] [-max_val=60000]

Получает или устанавливает настройки фотометрии, используемые, главным образом, командой SEQPSF. Если указаны аргументы, то настройки обновляются. Ни один из аргументов не является обязательным, могут быть указаны любые. Значения по умолчанию отображаются в синтаксисе команды. После выполнения команды выводится текущая конфигурация.
Используется динамическое значение апертуры, если только её значение не установлено принудительно. В последнем случае используется значение aperture, указанное в настройках. При использовании динамической апертуры, радиус апертуры определяется указанным динамическим отношением («радиус/половина FWHM»).
Допустимые значения аргумента -dyn_ratio находятся в диапазоне [1.0, 5.0]. Значения за приделами этого диапазона будут автоматически установлены в фиксированное значение -aperture.
Усиление (gain) используется только если его значение недоступно из заголовка FITS
Ссылка: seqpsf

setref

    setref sequencename image_number

Устанавливает опорное изображения для последовательности, указанной в первом аргументе. image_number это порядковый номер изображения в последовательности (начинающийся с 1), а не номер в названии файла

show

    show [-clear] [{ -list=file.csv | [name] RA Dec }] [-nolog] [-notag]

На основании экваториальных координат показывает точку на загруженном изображении, имеющем астрономическое решение, используя временный каталог с пользовательскими аннотациями. Аргумент -clear сначала очищает этот каталог и может использоваться отдельно.
С помощью аргумента -list= можно передать несколько точек, используя файл в формате CSV, содержащий по крайней мере столбцы с данными о прямом восхождении и склонении. Если указанный файл так же также содержит столбец с названием, эти названия будут использованы как метки на изображении и отображены в журнале, если только не отключены с помощью опций -notag и -nolog.
Это доступно только через графический интерфейс Siril

spcc

    spcc [-limitmag=[+-]] [ { -monosensor= [ -rfilter= ] [-gfilter=] [-bfilter=] | -oscsensor= [-oscfilter=] [-osclpf=] } ] [-whiteref=] [ -narrowband [-rwl=] [-gwl=] [-bwl=] [-rbw=] [-gbw=] [-bbw=] ] [-bgtol=lower,upper] [ -atmos [-obsheight=] { [-pressure=] | [-slp=] } ]

Запускает спектрофотометрическую коррекцию цвета на загруженном изображении, имеющем астрономическое решение.
Предел звёздной величины, используемый при поиске решения, автоматически вычисляется из размера поля зрения, но он может быть указан с помощью значений смещения (+offset или -offset) ключа -limitmag=, или просто через абсолютное положительное значение для ограничения звёздной величины.
Для SPCC всегда используется каталог звёзд Gaia DR3. Если доступен, то по умолчанию используется локальный каталог Gaia DR3 xp_sampled. Это поведение может быть изменено с помощью аргумента -catalog={gaia | localgaia}.
Названия сенсоров и фильтров можно задать с помощью: -monosensor=, -rfilter=, -gfilter=, -bfilter= или -oscsensor=, -oscfilter=, -osclpf=; название точки белого можно указать с помощью -whiteref=. Во всех случаях название должно быть указано точно так, как оно указано в диалоге инструмента SPCC. Обратите внимание, что названия сенсоров, фильтров и точек белого могут содержать пробелы: в этом случае при использовании их в качестве аргументов команды spcc весь аргумент должен быть заключен в кавычки, например "-whiteref=Average Spiral Galaxy".
Узкополосный режим может быть выбран с помощью аргумента -narrowband, в этом случае предыдущие аргументы фильтра игнорируются, и длины волн и полосы пропускания узкополосного фильтра могут быть заданы с помощью -rwl=, -rbw=, -gwl=, -gbw=, -bwl= и -bbw=.
Если один из аргументов со спектральными данными опущен, то будет использоваться ранее использованное значение.
Допустимое отклонение от значения фона может быть указано в единицах σ с помощью -bgtol=lower,upper: значения по умолчанию равны -2.8 и +2.0, соответственно.
Атмосферная коррекция может быть применена с помощью -atmos. В этом случае применяются следующие необязательные аргументы: -obsheight= определяет высоту наблюдателя над уровнем моря в метрах (по умолчанию 10), -pressure= определяет местное атмосферное давление в месте наблюдения в гПа, или -slp= определяет атмосферное давление на уровне моря в гПа (давление по умолчанию равно 1013.25 гПа на уровне моря)

spcc_list

    spcc_list { oscsensor | monosensor | redfilter | greenfilter | bluefilter | oscfilter | osclpf | whiteref }

Выводит в журнал список названий SPCC для сенсоров, фильтров или точек белого, доступных при использовании команды spcc. Для этой команды необходим аргумент, для указания, какой список будет выведен: oscsensor, monosensor, redfilter, greenfilter, bluefilter, oscfilter, osclpf или whiteref.
Обратите внимание, что названия сенсоров, фильтров и точек белого могут содержать пробелы: в этом случае при использовании их в качестве аргументов команды spcc весь аргумент должен быть заключен в кавычки, например "-whiteref=Average Spiral Galaxy"
Ссылка: spcc

split

    split file1 file2 file3 [-hsl | -hsv | -lab]

Разделяет цветное изображение на три отдельных файла (по одному для каждого цвета) и сохраняет их как file1.fit, file2.fit и file3.fit. Последний необязательный аргумент, -hsl, -hsv или lab, указывает применять ли извлечение HSL, HSV или CieLAB. Если никакой опции не указано, извлекаются RGB изображения, что означает, что преобразование не выполняется

split_cfa

    split_cfa

Разделяет изображение CFA на четыре отдельных файла (по одному для каждого канала) и сохраняет их в файлы

stack

    stack seqfilename
    stack seqfilename { sum | min | max } [-output_norm] [-out=filename] [-maximize] [-upscale] [-32b]
    stack seqfilename { med | median } [-nonorm, -norm=] [-fastnorm] [-rgb_equal] [-output_norm] [-out=filename] [-32b]
    stack seqfilename { rej | mean } [rejection type] [sigma_low sigma_high]  [-rejmap[s]] [-nonorm, -norm=] [-fastnorm] [-overlap_norm] [-weight={noise|wfwhm|nbstars|nbstack}] [-feather=] [-rgb_equal] [-output_norm] [-out=filename] [-maximize] [-upscale] [-32b]

Укладывает последовательность sequencename, используя опции.
Тип выбраковки:
Допустимы: sum, max, min, med (или median) и rej (или mean). Если не указано никаких аргументов, кроме названия последовательности, то подразумевается укладка с помощью сложения (sum).
Укладка с выбраковкой:
Способам rej или mean необходимы дополнительные аргументы для способа выбраковки и значения. Способ выбраковки один из следующих n[one], p[ercentile], s[igma], m[edian], w[insorized], l[inear], g[eneralized], [m]a[d] для укладки без выбраковки, обрезки по процентилям, обрезки по σ, медианной обрезки, винсоризованной обрезки, линейной обрезки, GESDT или k-MAD обрезки, соответственно. Если аргумент не указан, по умолчанию используется винсоризованная обрезка.
Параметры выбраковки sigma low и sigma high обязательны, если только не выбран способ none.
Опционально могут быть созданы карты выбраковки, показывающие, где были выбракованы пиксели на одном (-rejmap) или двух (-rejmaps, выбраковка низов и верхов) вновь созданных изображениях.
Нормализация входящих изображений:
Для способов укладки med (или median) и rej (или mean) допустимы различные способы нормализации: -norm=add для аддитивной, -norm=mul для мультипликативной. Опции -norm=addscale и -norm=mulscale применяют такую же нормализацию, но с операциями масштабирования. Опция -nonorm отключает нормализацию. В противном случае по умолчанию применяется аддитивная нормализация с масштабированием.
Опция -fastnorm включает использование более быстрых оценок для положения и масштаба, чем используемые по умолчанию IKSS.
-overlap_norm вычисляем коэффициенты нормализации для перекрывающихся участков, а не изображений целиком (допускается только вместе с -maximize).
Другие опции для укладки с выбраковкой:
Присвоение веса изображениям в последовательности осуществляется с помощью -weight= и:
noise присваивает бо́льший вес кадрам с меньшим шумом фона.
nbstack присваивает вес входящим изображениям по числу изображений, использованных для их создания. Полезно для укладки на лету.
nbstars и wfwhm присваивают вес входящим изображениям по количеству звёзд или wFWHM, вычисленных в ходе регистрации.
-feather= применяет маску для размывания границ каждого изображения с указанием дистанции (в пикселях).
Результат укладки:
Название итогового изображения может быть установлено с помощью опции -out=, в противном случает оно будет названо sequencename_stacked.fit.
Опция -output_norm применяет нормализацию, что масштабировать результат в диапазон [0, 1] (только для укладки по медиане и по средней).
-maximize использует данные регистрации, чтобы уложенное изображение охватывало все изображения последовательности (неприменимо к укладке по медиане).
-upscale используя данные регистрации, вдвое увеличивает последовательность перед укладкой (неприменимо к укладке по медиане).
-rgb_equal использует нормализацию для выравнивания фона цветных изображений. Полезно если фотометрическая или спектрофотометрическая калибровка цвета или несвязанное авторастягивание (unlinked AUTOSTRETCH) не будут использоваться в дальнейшем.
-32b игнорировать разрядность, указанную в настройках, и сохранить уложенное изображение как 32-битное.
Фильтрация изображений:
Изображения могут быть уложены на основе фильтров, например, выбор вручную или с лучшей FWHM, а так же с некоторыми опциями -filter-*.
Ссылки: pcc, spcc, autostretch

    [-filter-fwhm=value[%|k]] [-filter-wfwhm=value[%|k]] [-filter-round=value[%|k]] [-filter-bkg=value[%|k]]
    [-filter-nbstars=value[%|k]] [-filter-quality=value[%|k]] [-filter-incl[uded]]

Лучшие изображения из последовательности могут быть уложены с использованием аргументов фильтрации. Каждый из этих аргументов может удалить некачественные изображения, основываясь на отличительных чертах в их названиях, взятых из данных регистрации с любым из трёх значений аргумента:
- a numeric value for the worse image to keep depending on the type of data used (between 0 and 1 for roundness and quality, absolute values otherwise),
- a percentage of best images to keep if the number is followed by a % sign,
- or a k value for the k.sigma of the worse image to keep if the number is followed by a k sign.
Так же можно выбрать изображения вручную либо раннее с помощью графического интерфейса или с помощью команд select или unselect, используя аргумент -filter-included.

stackall

    stackall
    stackall { sum | min | max } [-maximize] [-upscale] [-32b]
    stackall { med | median } [-nonorm, norm=] [-32b]
    stackall { rej | mean } [rejection type] [sigma_low sigma_high] [-nonorm, norm=] [-overlap_norm] [-weight={noise|wfwhm|nbstars|nbstack}] [-feather=] [-rgb_equal] [-out=filename] [-maximize] [-upscale] [-32b]

Открывает все последовательности в текущей директории и укладывает их с помощью опционально указанных типов укладки или фильтрации или с помощью суммирования. Для описания опций см. STACK
Ссылка: stack

starnet

    starnet [-stretch] [-upscale] [-stride=value] [-nostarmask]

Эта команда вызывает StarNet для удаления звёзд с загруженного изображения.
Предварительные условия: StarNet это внешняя программа, не связанная с Siril, которая должна быть корректно установлена перед первым использованием этой команды. Путь к директории с установленной версией StarNet для командной строки должен быть указан в разделе настроек Разное.
По завершении работы загружается изображение без звёзд, а в рабочей директории создаётся изображение с маской звёзд, если только не указан необязательный параметр -nostarmask.
Необязательные параметры, которые могут быть переданы команде:
- The option -stretch is for use with linear images and will apply a pre-stretch before running StarNet and the inverse stretch to the generated starless and starmask images.
- To improve star removal on images with very tight stars, the parameter -upscale may be provided. This will upsample the image by a factor of 2 prior to StarNet processing and rescale it to the original size afterwards, at the expense of more processing time.
- The optional parameter -stride=value may be provided, however the author of StarNet strongly recommends that the default stride of 256 be used

start_ls

    start_ls [-dark=filename] [-flat=filename] [-rotate] [-32bits]

Запускает сессию укладки на лету, опционально используя калибровочные файлы и ожидает входящие файлы от команды LIVESTACK пока не будет вызвана команда STOP_LS. По умолчанию используется регистрация по сдвигу и 16-битная обработка, поскольку это быстрее. Данные настройки могут быть изменены с помощью аргументов -rotate и -32bits
Необходимо отметить, что команды укладки на лету переводят Siril в состояние, когда программа не может выполнять другие команды. После команды START_LS, могут быть переданы только команды LIVESTACK, STOP_LS и EXIT. Вызов STOP_LS переводит Siril в его нормальное состояние, когда укладка на лету не выполняется
Ссылки:livestack, stop_ls, exit

stat

    stat [-cfa] [main]

Возвращает статистику текущего изображения. По умолчанию выводится базовая статистика; если передан аргумент main, то выводится расширенная статистика. При наличии выделения, выводится статистика для выделенной области. Если передан аргумент -cfa и изображение является изображением CFA, статистика выводится для каждого фильтра

stop_ls

    stop_ls

Останавливает сессию укладки на лету. Возможно только после START_LS
Ссылка: start_ls

subsky

    subsky { -rbf | degree } [-dither] [-samples=20] [-tolerance=1.0] [-smooth=0.5] [-existing]

Вычисляет синтетический градиент фона, используя либо полиномиальную функцию степени degree или радиально-базисную функцию (RBF), если указан аргумент -rbf, и вычитает градиент из изображения.
Количество и плотность образцов в горизонтальной строке и допуск для исключения ярких областей могут быть указаны опционально с помощью соответствующих аргументов. Допуск указывается в единицах медианного абсолютного отклонения (MAD): медиана + допуск * mad.
Шум, необходимый для низких динамических градиентов, может быть подмешан с помощью аргумента -dither.
Для радиально-базисной функции также доступен дополнительный параметр сглаживания. Для использования уже существующих образцов (например, если образцы фона были указаны с помощью сценария на Python), необходимо применить аргумент -existing

synthstar

    synthstar

Исправляет плохие звёзды на загруженном изображении. Неважно насколько велика кома, ошибка ведения или другие искажения звёзд, если процедура поиска звёзд Siril может найти звёзды, synthstar исправит их. Для исправления значительных недостатков, вы можете вручную выбрать те звёзды, которые хотите исправить. Это можно сделать используя консольную команду findstar или диалог «Динамическая PSF». Если поиск звёзд не был выполнен, он будет автоматически запущен с настройками по умолчанию.
Для наилучших результатов, команда synthstar должна быть выполнена перед растягиванием.
Итогом работы synthstar будет полностью скорректированная синтетическая маска звёзд, состоящая из идеально круглых PSF звёзд (с профилем Гаусса или Моффата в зависимости от насыщенности звезды), вычисленных в соответствии с интенсивностью, FWHM, оттенком и насыщенностью, измеренными для каждой звезды, обнаруженной на входящем изображении. Затем результат можно повторно объединить с изображением без звёзд, чтобы получить изображение с идеальными звёздами.
Эта команда не требует никаких параметров
Ссылка: psf

threshlo

    threshlo level

Заменяет значения ниже level на загруженном изображении значением level

threshhi

    threshi level

Заменяет значения выше level на загруженном изображении значением level

thresh

    thresh lo hi

Заменяет значения ниже level на загруженном изображении значением level

наклон

    tilt [clear]

Вычисляет наклон сенсора как разницу в FWHM между наилучшим и наихудшим усечёнными средними значениями угла. Аргумент clear позволяет очистить диаграмму наклона

trixel

    trixel [-p]

Для разработчиков.
Без каких-либо аргументов выводит список всех трикселей уровня 3, видимых на изображении, имеющем астрономическое решение. Звёзды из каждого трикселя можно отобразить с помощью команды CONESEARCH используя -trix=, за которой следует номер видимого трикселя
С аргументом -p выводит все допустимые звёзды из всех 512 трикселей 3-го уровня в файл "trixels.csv"
Ссылка: conesearch

unclipstars

    unclipstars

Перепрофилирует обрезанные звёзды для уменьшения их насыщенности, масштабируя исходящие данные, чтобы все значения пикселей были <= 1.0

unpurple

    unpurple [-starmask] [-blue=value] [-thresh=value]

Применяет косметический фильтр для уменьшения фиолетовых ореолов вокруг звёзд.
Если передан аргумент -starmask, то для определения областей изображения, на которые необходимо воздействовать, будет использована маска звёзд. Если «Динамическая PSF» уже запущена, она будет использоваться для создания маски, в противном случае она будет создана автоматически. Параметру -mod= следует присвоить значение около 0.14, чтобы уменьшить количество фиолетового цвета. Параметр -thresh= задает модификатор размера для каждой звезды в маске звёзд и должен быть достаточно большим, чтобы звёзды были полностью обработаны без остатков фиолетового ореола. Значение должно быть от 0 до 1, обычно около 0.5.
Если параметр -starmask не указан, уменьшение фиолетового цвета будет применено ко всему изображению для любых фиолетовых пикселей со значением светимости, превышающим заданное значение -thresh=. В этом случае значение -thresh= должно быть достаточно низким. Этот режим полезен для масок звёзд или других изображений без туманностей или галактик
Ссылка: psf

unselect

    unselect sequencename from to

Позволяет массовую отмену выбора изображений в последовательности sequencename (начиная с from и заканчивая to включительно). См. SELECT
Ссылка: select

unsetmag

    unsetmag

Сбрасывает калибровку блеска к 0. См. SETMAG
Ссылка: setmag

unsharp

    unsharp sigma multi

Применяет нерезкую маску, фактически отфильтрованное по Гауссу изображение со значением σ sigma и смешением (blend) с параметром amount, используемое как: out = in * (1 + amount) + filtered * (-amount).
См. также GAUSS, аналогичная команда без смешения
Ссылка: gauss

update_key

    update_key key value [keycomment]
    update_key -delete key
    update_key -modify key newkey
    update_key -comment comment

Обновляет ключевое слово FITS. Пожалуйста, обратите внимание, что валидность значения value не проверяется. За это ответственен пользователь. Также можно удалить ключ, указав аргумент -delete перед названием удаляемого ключа, или изменить ключ с помощью аргумента -modify. За последним должны следовать ключ, который нужно изменить, и название нового ключа. Наконец, аргумент -comment, за которым следует текст, добавляет комментарий к заголовку FITS. Пожалуйста, обратите внимание, что любой текст, содержащий пробелы, должен быть заключен в двойные кавычки

visu

    visu low high

Демонстрирует загруженное изображение, используя low и high как нижний и верхний пороги. Только графический интерфейс пользователя

wavelet

    wavelet nbr_layers type

Вычисляет вейвлетное преобразование для nbr_layers=1...n слоёв загруженного изображения, используя линейную (type=1) или В-сплайн (type=2) версию алгоритма. Результат сохраняется в файле как структура, содержащая слои, готовые к реконструкции с использованием весов с помощью WRECONS.
См. также EXTRACT
Ссылки: wrecons, extract

wiener

    wiener [-loadpsf=] [-alpha=]

Восстанавливает изображение, используя метод реконструкции Венера.
PSF, созданная с использованием MAKEPSF, может быть загружена с помощью необязательного аргумента -loadpsf=filename.
Аргумент -alpha= предоставляет коэффициент регуляризации, моделируемый Гауссовым шумом
Ссылки: psf, makepsf

wrecons

    wrecons c1 c2 c3 ...

Восстанавливает текущее изображение из слоёв, раннее вычисленных с помощью вейвлетов и с присвоенными весами с помощью коэффициентов c1, c2, ..., cn в соответствии с количеством слоёв, использованных для вейвлет-преобразования после использования WAVELET
Ссылка: wavelet

## Справочник по программному интерфейсу (API) модуля Sirilpy 1.0.25 языка Python

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

Данная документация сгенерирована автоматически из кода python-модуля версии 1.0.25.

Он также может выполнять команды Siril с помощью метода `SirilInterface.cmd()`, и его целью является предоставление надежного интерфейса для написания продвинутых скриптов для Siril, которые невозможно реализовать с использованием предыдущих простых файлов сценариев.

Например, теперь сценарии могут иметь графические интерфейсы на базе PyQt6 или TKinter с использованием модулей PyQt6 или tkinter и ttkthemes, а также они могут использовать множество модулей из экосистемы Python, включая numpy, scipy, pillow и многие другие.

Примечание

Существуют некоторые ограничения относительно модулей, которым для работы требуется установка системных бинарных пакетов.

В первоначальном выпуске модуля большинство методов, связанных с изображением или последовательностью, загруженными в Siril, доступны только для чтения. Цель заключается в том, чтобы параметры загруженного изображения или последовательности могли быть получены и использованы в качестве входных данных для сценариев, например, для вычислений или ввода условий, но в большинстве случаев для работы с загруженным изображением следует использовать существующий набор команд Siril. Таким образом, ключевые слова заголовка можно задать с помощью `cmd("update_key", "ключ", "значение")`, а большинство встроенных операций с изображениями можно выполнить с помощью соответствующей команды Siril. Основным исключением из правила методов python, предоставляющих доступ только для чтения, является метод `set_image_pixeldata()`, который позволяет устанавливать пиксельные данные в загруженном изображении из массива numpy. Это означает, что с помощью python можно добавлять новые алгоритмы обработки пикселей, изначально получая пиксельные данные из загруженного изображения с помощью `get_image_pixeldata()` и устанавливая их по завершении с помощью `set_image_pixeldata()`. Аналогичные функции доступны для получения и настройки пиксельных данных из кадров последовательности.

### Зависимости

Модуль sirilpy зависит от:

- numpy >= 1.20.0

- packaging >= 21.0

- pywin32 >= 300 (only on Windows)

### Руководство по написанию сценариев Siril

- В отличие от большинства сред Python, скрипты Siril запускаются непосредственно из самой программы Siril, и обычный пользователь обычно не знает, как получить доступ или как использовать виртуальное окружение Python за пределами Siril. Это означает, что некоторые задачи, которые довольно тривиальны в типичных сценариях Python, такие как установка пакетов, становятся более сложными. Нельзя ожидать, что пользователь будет получать доступ к командной строке и устанавливать пакеты самостоятельно с помощью команды `python3 -m pip install`.

  - Поэтому модуль предоставляет метод `ensure_installed()`. Этот метод использует pip для того чтобы убедиться, что необходимые модули установлены и могут быть импортированы.

- Скрипты Siril всегда должны содержать имя автора, информацию о правах на копирование / лицензионные сведения и контактные данные, такие как канал YouTube, веб-сайт или форум, где с ним можно связаться по вопросам, связанным со скриптом. Это является рекомендацией для независимо распространяемых скриптов и обязательным требованием для всех скриптов, отправляемых в репозиторий скриптов. Если вы пишете скрипт, вы несете ответственность за его поддержку.

- По мере роста репозитория и развития API не все опубликованные скрипты обязательно будут совместимы со всеми версиями Siril, которые будут использоваться:

  - Если ваш скрипт использует команды Siril, вы должны использовать команду `requires`. Её можно вызвать непосредственно в файле скрипта Siril, либо её можно вызвать из Python-скрипта с помощью `SirilInterface.cmd("requires", "min_version", {"max_version"})` (параметр max_version является необязательным), но ее можно использовать для того, чтобы скрипты, разработанные для старых версий Siril, больше не отображались как применимые к новым версиям, если синтаксис команды изменился.

  - Если ваш скрипт использует какие-либо функции python-модуля Siril, добавленные после первоначального выпуска, вам следует вызвать метод `sirilpy.check_module_version()`, чтобы убедиться, что установленная версия соответствует требованиям вашего скрипта. Версии, в которых были добавлены функции, будут перечислены в документации API для всех функций, добавленных после первоначального публичного выпуска.

  - Код, заполняющий представление репозитория скриптов Siril, автоматически будет фильтровать скрипты, чьи требования к версии Siril или версии модуля Python не соблюдаются.

  - Если в модуль после начального публичного релиза будут добавлены новые классы или методы, версия, в которой они были введены, будет отмечена в строке документации и в онлайн-документации, сгенерированной на её основе.

- Siril нацелен на работу под Linux, Windows и MacOS. Авторам скриптов рекомендуется, где это возможно, гарантировать, что их скрипты будут работать правильно на всех трех ОС.

### Sirilpy Connection

Этот подмодуль предоставляет основной класс SirilInterface, используемый для обмена данными между Siril и python-скриптом. Все его элементы доступны на корневом уровне модуля, поэтому нет необходимости импортировать подключение отдельно.

Модуль подключения для Siril предоставляет возможность подключаться к запущенному экземпляру Siril и взаимодействовать с ним. Включает широкий спектр методов, которые можно использовать для получения и установки данных из/в Siril.

class sirilpy.connection.SirilInterface

  Базовые классы: `object`

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

  analyse_image_from_file(filepath)

    Request Siril to load an image from a file and analyse it. This method does not change the image currently loaded in Siril. Any image format supported by Siril is supported. An ImageAnalysis object is returned, containing parameters that may be used to assess the quality of an image for use in culling.

    Параметры:

      filepath (`str`) -- String specifying the path to the image file to load.

    Тип результата:

      `ImageAnalysis`

    Результат:

      ImageAnalysis object containing quality metrics for the analysed image.

    Исключение:

      - FileNotFoundError -- if the specified file does not exist,

      - DataError -- on receipt of incorrect data,

      - SirilError -- если произошла ошибка.

  clear_image_bgsamples()

    Очищает все точки с образцами фона на изображении.

  clear_undo_history()

    Clears the image undo history, if there is undo history to be cleared

  cmd(*args)

    Отправляет команду в Siril для выполнения. Перечень доступных команд можно найти в онлайн-документации. Команда и её аргументы предоставляются в виде списка строк.

    Параметры:

      *args (`str`) -- Переменное количество строковых аргументов, объединяемых в команду

    Исключение:

      - DataError -- будет возвращено, если не был получен ответ (или получен некорректный ответ)

      - CommandError -- Если команда возвращает код состояния ошибки,

      - SirilError -- Если во время выполнения происходит любая другая ошибка.

    Пример

        siril.cmd("ght", "-D=0.5", "-b=2.0")

  command_error_message(status_code)

    Предоставляет строку, описывающую статус возврата из команды Siril.

    Параметры:

      status_code (`CommandStatus`) -- Код статуса, возвращаемый обработчиком команд Siril, или исключением CommandError.

    Результат:

      Строка, предоставляющая описание кода ошибки, возвращаемого командой Siril, для использования в обработке исключений.

    Тип результата:

      str

  confirm_messagebox(title, message, confirm_label)

    Создает модальное диалоговое окно подтверждения в Siril и ожидает ответа.

    Параметры:

      - title (`str`) -- Заголовок, отображаемый в окне сообщения (до 256 символов)

      - message (`str`) -- Сообщение, которое будет отображаться в окне сообщения (до 1021 символа)

      - confirm_label (`str`) -- Надпись, которая будет отображаться на кнопке подтверждения в окне сообщения (OK, Да, Подтвердить и т.д.) (До 24 символов)

    Результат:

      True, если была нажата кнопка подтверждения окна сообщения, в противном случае False

    Тип результата:

      bool

    Исключение:

      - DataError -- если ответ не был получен,

      - SirilError -- если произошла другая ошибка.

  connect()

    Устанавливает соединение с Siril на основе именованного канала или пути к сокету.

    Тип результата:

      `bool`

    Результат:

      True в случае успеха

    Исключение:

      SirilConnectionError -- если произошла ошибка соединения

  create_new_seq(seq_root)

    Creates a new .seq file with all images named seq_rootXXXXX.ext located in the current home folder. If a sequence with the same name is already loaded in Siril, it will not be recreated. This only works for FITS files, not FITSEQ nor SER. The newly created sequence is not loaded in Siril.

    Параметры:

      seq_root (`str`) -- Корневое название создаваемой последовательности.

    Результат:

      True, если последовательность была успешно создана, и False в противном случае

    Тип результата:

      bool

    Исключение:

      SirilError -- если произошла ошибка.

  disconnect()

    Закрывает установленное соединение через сокет или именованный канал. Обратите внимание, что обычно нет необходимости закрывать это соединение, за исключением случаев, когда по какой-то причине требуется закрыть одно соединение и затем открыть другое. Этот метод автоматически вызывается при завершении скрипта с помощью обработчика `atexit`, поэтому нет необходимости делать это вручную. Вызов этого метода сбросит индикатор прогресса.

    Исключение:

      SirilConnectionError -- если соединение не было закрыто.

  error_messagebox(my_string, modal=False)

    Отправляет сообщение об ошибке в Siril. Максимальная длина сообщения составляет 1022 байта: более длинные сообщения будут обрезаны (однако этого достаточно для окна сообщения об ошибке). Обратите внимание, что окно сообщения об ошибке по умолчанию не является модальным: оно предназначено для более заметного отображения сообщения об ошибке по сравнению с использованием журнала Siril перед закрытием приложения.

    Параметры:

      - my_string (`str`) -- Сообщение для отображения в окне сообщения об ошибке

      - modal (`Optional`[`bool`]) -- Устанавливает, должно ли окно сообщения быть модальным и ожидать завершения, или немодальным, позволяя скрипту продолжить выполнение. Обратите внимание, что хотя модальное окно сообщения будет блокировать выполнение скрипта, если запущен основной цикл TKinter, события будут продолжать накапливаться, поэтому, если окно сообщения вызвано нажатием кнопки, пользователь может нажать её снова, пока отображается окно сообщения, и вызвать второе окно сообщения, которое отобразится сразу после закрытия первого.

    Результат:

      True, если сообщение об ошибке было успешно отображено, и False в противном случае

    Тип результата:

      bool

    Исключение:

      SirilError -- если произошла ошибка.

  get_image(with_pixels=True, preview=False)

    Request a copy of the current image open in Siril. Requires a single image to be loaded.

    Параметры:

      - with_pixels (`Optional`[`bool`]) -- необязательный логический параметр, указывающий, следует ли получать данные пикселей в виде массива NumPy или только метаданные изображения. По умолчанию установлено значение True

      - preview (`Optional`[`bool`]) -- необязательный логический параметр, указывающий, следует ли получать данные пикселей для предпросмотра, т.е. 8-битные данные с автоматическим растягиванием. По умолчанию — False, т.е. реальные данные изображения

    Тип результата:

      `Optional`[`FFit`]

    Результат:

      FFit объект, содержащий метаданные изображения и (опционально) пиксельные данные, или None если произошла ошибка

    Исключение:

      - NoImageError -- если в Siril не загружено изображение

      - SirilError -- если произошла ошибка декодирования

  get_image_bgsamples()

    Запрашивает данные образцов фона из Siril.

    Тип результата:

      `Optional`[`List`[`BGSample`]]

    Результат:

      Список образцов фона BGSamples, где каждая пара координат выражена в виде кортежа [float, float], или None, если не установлены образцы фона.

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - DataError -- при получении неверных данных,

      - SirilError -- При других ошибках во время извлечения данных,

  get_image_filename()

    Request the filename of the loaded image from Siril. Requires a single image to be loaded.

    Тип результата:

      `Optional`[`str`]

    Результат:

      Имя файла в виде строки.

    Исключение:

      - NoImageError -- если нет загруженного изображения,

      - SirilError -- если произошла ошибка декодирования.

  get_image_fits_header(return_as='str')

    Retrieve the full FITS header of the current image loaded in Siril. Requires a single image to be loaded.

    Параметры:

      return_as -- Optional string specifying the format of the returned header. Can be 'str' for a string or 'dict' for a dictionary.

    Результат:

      The image FITS header as a string, or None if there is no header. dict: The image FITS header as a dictionary, or None if there is no header. None: If the header is empty or not available.

    Тип результата:

      str

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - SirilError -- При других ошибках во время извлечения данных,

  get_image_history()

    Retrieve history entries in the FITS header of the current loaded Siril image using shared memory. Requires a single image to be loaded.

    Параметры:

      none.

    Результат:

      Записи HISTORY из FITS заголовка в виде списка строк, или None, если в заголовке отсутствуют ключевые слова HISTORY.

    Тип результата:

      list

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - SirilError -- При других ошибках во время извлечения данных.

  get_image_iccprofile()

    Retrieve the ICC profile of the current Siril image using shared memory. Requires a single image to be loaded.

    Args: none.

    Результат:

      ICC профиль изображения в виде массива байтов или None, если текущее изображение не имеет ICC профиля.

    Тип результата:

      bytes

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - SirilError -- Если произошла любая другая ошибка.

  get_image_keywords()

    Request FITS keywords data from Siril as a FKeywords object. Requires a single image to be loaded.

    Тип результата:

      `Optional`[`FKeywords`]

    Результат:

      Объект FKeywords содержит ключевые слова FITS или None, если произошла ошибка

    Исключение:

      SirilError -- если произошла ошибка декодирования.

  get_image_pixeldata(shape=None, preview=False, linked=False)

    Извлекает пиксельные данные из изображения, загруженного в данный момент в Siril.

    Параметры:

      - shape (`Optional`[`list`[`int`]]) -- Необязательный список [x, y, w, h], определяющий регион для извлечения. Если указан, получает данные пикселей только для этого региона. Если None, получает данные пикселей для всего изображения.

      - preview (`Optional`[`bool`]) -- необязательный логический параметр, указывающий, следует ли получать данные пикселей для предпросмотра, т.е. 8-битные данные с автоматическим растягиванием. По умолчанию — False, т.е. реальные данные изображения

      - linked (`Optional`[`bool`]) -- optional bool specifying whether the autostretch preview should be linked or unlinked. If preview == False then this option is ignored.

    Результат:

      Данные изображения в виде массива numpy

    Тип результата:

      numpy.ndarray

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - ValueError -- Если предоставлена недопустимая форма,

      - DataError -- если массив невозможно преобразовать к правильным размерностям,

      - SirilError -- При других ошибках во время извлечения пиксельных данных,

  get_image_shape()

    Запрашивает форму изображения у Siril.

    Тип результата:

      `Optional`[`Tuple`[`int`, `int`, `int`]]

    Результат:

      Кортеж (канал, высота, ширина), представляющий форму изображения, или None, если форма изображения недоступна для возврата.

    Вызывает: SirilError: если произошла ошибка.

  get_image_stars(channel=None)

    Запрашивает данные модельной PSF звёзд у Siril.

    Параметры:

      channel (`Optional`[`int`]) -- Optional int specifying the channel to retrieve from. If provided 0 = Red / Mono, 1 = Green, 2 = Blue. If the channel is omitted the default behavior will be used: channel 0 for mono images, channel 1 (green) for color images. channel requires sirilpy v1.0.8 or higher.

    Тип результата:

      `List`[`PSFStar`]

    Результат:

      Список объектов PSFStar, содержащий данные о звёздах, или None, если звёзды не были обнаружены. Если звёзды уже были найдены командой findstar, тогда будет возращён этот список, в противном случае будет предпринята попытка автоматического поиск звёзд с использованием текущих настроек.

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - ValueError -- If an invalid channel is provided,

      - SirilError -- При других ошибках во время извлечения данных,

  get_image_stats(channel)

    Request image statistics from Siril for a specific channel. Requires a single image to be loaded.

    Параметры:

      channel (`int`) -- Целое число, указывающее, для какого канала требуется получить статистику (обычно 0, 1 или 2)

    Тип результата:

      `Optional`[`ImageStats`]

    Результат:

      Объект ImageStats, содержащий статистику, или None, если для выбранного канала статистика недоступна

    Исключение:

      - NoImageError -- если нет загруженного изображения,

      - SirilError -- если произошла ошибка.

  get_image_unknown_keys()

    Retrieve the unknown key in a FITS header of the current loaded Siril image using shared memory. Requires a single image to be loaded.

    Параметры:

      none.

    Результат:

      Неизвестные ключи в виде строки или None, если нет ключей.

    Тип результата:

      bytes

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - SirilError -- При других ошибках во время извлечения данных.

  get_selection_star(shape=None, channel=None, assume_centred=False)

    Retrieves a PSFStar star model from the current selection in Siril. Only a single PSFStar is returned: if there are more than one in the selection, the first one identified by Siril's internal star detection algorithm is returned. Update: from sirilpy 1.0.4 this method uses Siril's photometry functions to try to provide photometrically accurate values for PSFStar.mag, PSFStar.s_mag and PSFStar.SNR. If photometry succeeded and no saturated pixels were detected then PSFStar.phot_is_valid will be True, otherwise it will be False. :type shape: `Optional`[`list`[`int`]] :param shape: Optional list of [x, y, w, h] specifying the selection to

    > retrieve from. w x h must not exceed 300 px x 300 px. If provided, looks for a star in the specified selection If None, looks for a star in the selection already made in Siril, if one is made.

    Параметры:

      - channel (`Optional`[`int`]) -- Необязательное целое число, определяющее канал для получения данных. Если указан: 0 = Красный/Моно, 1 = Зеленый, 2 = Синий. Если канал не указан, то в режиме GUI будет использовано текущее окно просмотра, а если режима GUI нет, метод вернется к каналу 0

      - assume_centred (`bool`) -- Optional bool specifying whether to assume the star is already centred in the selection. Defaults to False.

    Результат:

      the PSFStar object representing the star model, or None if

        звезды в выделении не найдено.

    Тип результата:

      PSFStar

    Исключение:

      - ValueError -- Если предоставлена недопустимая форма,

      - NoImageError -- If no image is loaded,

      - SirilConnectionError -- If a communication error occurs,

      - SirilError -- If any other error occurred during execution.

  get_selection_stats(shape=None, channel=None)

    Retrieves statistics for the current selection in Siril. Requires a single image or a sequence to be loaded.

    Параметры:

      - shape (`Optional`[`list`[`int`]]) -- Необязательный список [x, y, w, h], определяющий выделение для получения данных. Если указан, ищется звезда в указанном выделении. Если None, ищется звезда в уже сделанном в Siril выделении, если оно есть.

      - channel (`Optional`[`int`]) -- Необязательное целое число, определяющее канал для получения данных. Если указан: 0 = Красный/Моно, 1 = Зеленый, 2 = Синий. Если канал не указан, то в режиме GUI будет использовано текущее окно просмотра, а если режима GUI нет, метод вернется к каналу 0

    Результат:

      the ImageStats object representing the selection statistics.

    Тип результата:

      ImageStats

    Исключение:

      - SirilError -- Если произошла ошибка в ходе обработки,

      - ValueError -- If an invalid shape is provided.

  get_seq()

    Request metadata for the current sequence loaded in Siril.

    Тип результата:

      `Optional`[`Sequence`]

    Результат:

      Sequence object containing the current sequence metadata, or None if an error occurred

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_seq_distodata(channel)

    Запрашивает данные о дисторсии из Siril

    channel: Integer specifying which channel to get registration data for (typically 0, 1, or 2)

    Тип результата:

      `Optional`[`DistoData`]

    Результат:

      DistoData object containing the channel distortion parameters, or None if an error occurred

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_seq_frame(frame, with_pixels=True, preview=False, linked=False)

    Request sequence frame as a FFit from Siril. The keywords, statistics, header and other metadata are always returned: if an ICC profile is present, this will also be populated in the resulting FFit, and optionally the pixel data can also be returned.

    Параметры:

      - frame (`int`) -- Integer specifying which frame in the sequence to retrieve data for (between 0 and Sequence.number - 1). This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - with_pixels (`Optional`[`bool`]) -- необязательный логический параметр, указывающий, следует ли возвращать данные пикселей для кадра. По умолчанию True

      - preview (`Optional`[`bool`]) -- bool specifying whether or not to return the real pixel data or an autostretched uint8_t preview version. Only has an effect in conjunction with with_pixels = True

    Тип результата:

      `Optional`[`FFit`]

    Результат:

      FFit object containing the frame data

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - DataError -- on receipt of incorrect data,

      - SirilError -- если произошла ошибка.

  get_seq_frame_filename(frame)

    Request the filename of the specified frame of the loaded sequence from Siril. Requires a sequence to be loaded.

    Параметры:

      frame (int) -- Specifies the frame index. This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

    Тип результата:

      `Optional`[`str`]

    Результат:

      Имя файла в виде строки.

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_seq_frame_header(frame, return_as='str')

    Retrieve the full FITS header of an image from the sequence loaded in Siril.

    Параметры:

      - frame (`int`) -- Integer specifying which frame in the sequence to retrieve data for (between 0 and Sequence.number - 1). This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - return_as -- Optional string specifying the format of the returned header. Can be 'str' for a string or 'dict' for a dictionary.

    Результат:

      The image FITS header as a string, or None if there is no header. dict: The image FITS header as a dictionary, or None if there is no header. None: If the header is empty or not available.

    Тип результата:

      str

    Исключение:

      - NoSequenceError -- If no sequence is currently loaded,

      - SirilError -- При других ошибках во время извлечения данных,

  get_seq_frame_pixeldata(frame, shape=None, preview=False, linked=False)

    Retrieves the pixel data from a frame in the sequence currently loaded in Siril.

    Параметры:

      - frame (`int`) -- selects the frame to retrieve pixel data from. This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - shape (`Optional`[`List`[`int`]]) -- Необязательный список [x, y, w, h], определяющий регион для извлечения. Если указан, получает данные пикселей только для этого региона. Если None, получает данные пикселей для всего изображения.

      - preview (`Optional`[`bool`]) -- optional bool specifying whether to get pixeldata as a preview (i.e. 8-bit autostretched data) or as real image data. Defaults to False (i.e. real image data).

      - linked (`Optional`[`bool`]) -- optional bool specifying whether the autostretched preview should be linked or unlinked. This option is ignored if preview is not True

    Результат:

      Данные изображения в виде массива numpy

    Тип результата:

      numpy.ndarray

    Исключение:

      - ValueError -- Если предоставлена недопустимая форма,

      - DataError -- если массив невозможно преобразовать к правильным размерностям,

      - SirilError -- For other errors during pixel data retrieval.

  get_seq_imgdata(frame)

    Request sequence frame metadata from Siril.

    Параметры:

      frame (`int`) -- Integer specifying which frame in the sequence to get image metadata for (between 0 and Sequence.number). This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

    Тип результата:

      `Optional`[`ImgData`]

    Результат:

      ImgData object containing the frame metadata, or None if an error occurred

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_seq_regdata(frame, channel)

    Request sequence frame registration data from Siril.

    Параметры:

      - frame (`int`) -- Integer specifying which frame in the sequence to get registration data for (between 0 and Sequence.number). This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - channel (`int`) -- Integer specifying which channel to get registration data for (typically 0, 1, or 2)

    Тип результата:

      `Optional`[`RegData`]

    Результат:

      RegData object containing the registration data, or None if no registration data is available for the specified frame and channel

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_seq_stats(frame, channel)

    Request sequence frame statistics from Siril.

    Параметры:

      - frame (`int`) -- Integer specifying which frame in the sequence to get statistics data for (between 0 and Sequence.number). This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - channel (`int`) -- Целое число, указывающее, для какого канала требуется получить статистику (обычно 0, 1 или 2)

    Тип результата:

      `Optional`[`ImageStats`]

    Результат:

      ImageStats object containing the statistics, or None if an error occurred

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - SirilError -- если произошла ошибка декодирования.

  get_siril_active_vport()

    Request the active viewport from Siril.

    Результат:

      - sirilpy.SirilVport.RED / sirilpy.SirilVport.MONO

      - sirilpy.SirilVport.GREEN,

      - sirilpy.SirilVport.BLUE,

      - sirilpy.SirilVport.RGB

      Note that RED and MONO share the same IntEnum value, so there is no difference between a test for one and the other; the two enum labels are provided solely to aid code legibility.

    Тип результата:

      A SirilVport representing the active vport

    Исключение:

      - DataError -- if no response or an invalid response is received,

      - SirilError -- если произошла ошибка.

  get_siril_config(group, key)

    Request a configuration value from Siril.

    Параметры:

      - group (`str`) -- Configuration group name,

      - key (`str`) -- Configuration key name within the group (Available values for group and key can be determined using the "get -A" command)

    Тип результата:

      `Union`[`bool`, `int`, `float`, `str`, `List`[`str`], `None`]

    Результат:

      The configuration value with appropriate Python type, or None if an error occurred.

    Исключение:

      - DataError -- if an unknown config type is encountered,

      - SirilError -- if an error occurred getting the requested config value

  get_siril_configdir()

    Request the user config directory used by Siril.

    Тип результата:

      `str`

    Результат:

      The user config directory as a string.

    Исключение:

      - DataError -- if no response is received,

      - SirilError -- for all other errors.

  get_siril_display_iccprofile()

    Retrieve the Siril display ICC profile.

    Args: none.

    Результат:

      The display ICC profile as a byte array, or None if Siril is running in headless mode.

    Тип результата:

      bytes

    Исключение:

      - NoImageError -- Если в данный момент изображение не загружено,

      - SirilError -- Если произошла любая другая ошибка.

  get_siril_log()

    Retrieve the full Siril log as a text string.

    Результат:

      The text of the Siril log.

    Тип результата:

      str

    Исключение:

      SirilError -- For errors during data retrieval,

  get_siril_panzoom()

    Request the pan and zoom state from Siril.

    Тип результата:

      `Tuple`[`float`, `float`, `float`]

    Результат:

      A tuple (x offset, y offset, zoomlevel) representing the current image pan and zoom state.

    Исключение:

      SirilError -- если произошла ошибка.

  get_siril_selection()

    Request the image selection from Siril.

    Тип результата:

      `Optional`[`Tuple`[`int`, `int`, `int`, `int`]]

    Результат:

      A tuple (x, y, height, width) representing the current selection, or None if no selection is made.

    Исключение:

      SirilError -- если произошла ошибка.

  get_siril_slider_state(float_range=False)

    Request the display slider state from Siril.

    Тип результата:

      `Tuple`[`int`, `int`, `SlidersMode`]

    Результат:

      A tuple (min, max, slider mode) representing the current slider state.

    Исключение:

      SirilError -- если произошла ошибка.

  get_siril_stf()

    Request the Screen Transfer Function in use in Siril.

    Тип результата:

      `STFType`

    Результат:

      A STFType representing the current STF state.

    Исключение:

      SirilError -- если произошла ошибка.

  get_siril_stf_linked()

    Determine whether the AutoStretch STF is configured to be linked or not

    Тип результата:

      `bool`

    Результат:

      A bool representing the current STF channel-linked state.

    Исключение:

      SirilError -- если произошла ошибка.

  get_siril_systemdatadir()

    Request the system data directory used by Siril.

    Тип результата:

      `Optional`[`str`]

    Результат:

      The system data directory as a string.

    Исключение:

      - DataError -- if no response is received,

      - SirilError -- for all other errors.

  get_siril_userdatadir()

    Request the user data directory used by Siril.

    Тип результата:

      `str`

    Результат:

      The user data directory as a string.

    Исключение:

      - DataError -- if no response is received,

      - SirilError -- for all other errors.

  get_siril_wd()

    Request the current working directory from Siril.

    Тип результата:

      `str`

    Результат:

      The current working directory as a string.

    Исключение:

      - DataError -- if no response was obtained,

      - SirilError -- for all other errors.

  image_lock()

    A context manager that handles claiming and releasing the processing thread.

    This method is designed to be used with a with statement to ensure that the thread is properly claimed before processing and released after processing, even if an exception occurs during processing. It is preferable to use this context manager rather than manually calling claim_thread() and release_thread() as the context manager will ensure correct cleanup if an exception occurs.

    Note that the image_lock() context should only be entered when the script itself is operating on the Siril image data. If the script is calling a Siril command to alter the Siril image then the context must not be entered or the Siril command will be unable to acquire the processing thread and will fail.

    Example:

        try:
            with siril.image_lock():
                # Get image data
                image_data = self.get_image_pixeldata()
                # Process image data
                processed_data = some_processing_function(image_data)
                # Set the processed image data
                siril.set_image_pixeldata(processed_data)
        except ProcessingThreadBusyError:
            # Handle busy thread case
            pass
        except ImageDialogOpenError:
            # Handle open dialog case
            pass

    Исключение:

      - ProcessingThreadBusyError -- If the thread is already in use

      - ImageDialogOpenError -- If an image processing dialog is open

      - SirilError -- If the thread cannot be claimed or released for other reasons

  info_messagebox(my_string, modal=False)

    Send an information message to Siril. The maximum message length is 1022 bytes: longer messages will be truncated. This is intended for displaying informational messages more prominently than using the Siril log.

    Параметры:

      - my_string (`str`) -- The message to display in the info message box

      - modal (`Optional`[`bool`]) -- Устанавливает, должно ли окно сообщения быть модальным и ожидать завершения, или немодальным, позволяя скрипту продолжить выполнение. Обратите внимание, что хотя модальное окно сообщения будет блокировать выполнение скрипта, если запущен основной цикл TKinter, события будут продолжать накапливаться, поэтому, если окно сообщения вызвано нажатием кнопки, пользователь может нажать её снова, пока отображается окно сообщения, и вызвать второе окно сообщения, которое отобразится сразу после закрытия первого.

    Результат:

      True if the info was successfully displayed, False otherwise

    Тип результата:

      bool

    Исключение:

      SirilError -- если произошла ошибка.

  is_cli()

    Check if the current instance is running in CLI mode. This method is useful to detect how the script was invoked and whether to show or not a GUI. This is False when the script is called by clicking in the Script menu, True otherwise.

    Результат:

      True if running in CLI mode, False otherwise.

    Тип результата:

      bool

  is_image_loaded()

    Check if a single image is loaded in Siril.

    Результат:

      True if a single image is loaded, False if a single image is not loaded

    Тип результата:

      bool

    Исключение:

      - DataError -- if no response is received,

      - SirilError -- for all other errors.

  is_sequence_loaded()

    Check if a sequence is loaded in Siril.

    Результат:

      True if a sequence is loaded, False if a sequence is not loaded

    Тип результата:

      bool

    Исключение:

      - DataError -- if no response is received,

      - SirilError -- for all other errors.

  load_image_from_file(filepath, with_pixels=True, preview=False, linked=False)

    Request Siril to load an image from a file and transfer it to sirilpy. This method does not change the image currently loaded in Siril. Any image format supported by Siril is supported. This may be used as an alternative to loading an image using astropy.io.fits, however perhaps the main benefit to using it is that it supports the preview option which can be used to obtain an 8-bit autostretched rendering of the image more quickly than is possible using astropy and applying an autostretch using numpy.

    Параметры:

      - filepath (`str`) -- String specifying the path to the image file to load.

      - with_pixels (`Optional`[`bool`]) -- bool specifying whether or not to return the pixel data for the image (default is True).

      - preview (`Optional`[`bool`]) -- bool specifying whether or not to return the real pixel data or an autostretched uint8_t preview version. Only has an effect in conjunction with with_pixels = True

      - linked (`Optional`[`bool`]) -- bool specifying whether the autostretch preview should be linked or not. Has no effect unless preview is True.

    Тип результата:

      `Optional`[`FFit`]

    Результат:

      FFit object containing the image data

    Исключение:

      - FileNotFoundError -- if the specified file does not exist,

      - DataError -- on receipt of incorrect data,

      - SirilError -- если произошла ошибка.

  log(my_string, color=LogColor.DEFAULT)

    Send a log message to Siril. The maximum message length is 1022 bytes: longer messages will be truncated.

    Параметры:

      - my_string (`str`) -- The message to log

      - color (`LogColor`) -- Defines the text color, defaults to white. See the documentation

      - which (for LogColor for an explanation of which colors should be used for)

      - purposes.

    Исключение:

      SirilError -- if the command fails

    Тип результата:

      `bool`

  open_dialog(dialog)

    Opens a Siril GUI dialog. Introduced in sirilpy version 1.0.20.

    Параметры:

      dialog (DialogID) -- Specifies the dialog to open.

    Результат:

      True if the dialog-opening action succeeded False if the dialog-opening action failed (e.g. because the criteria were not met)

    Исключение:

      - TypeError -- if the parameter is not a DialogID.

      - SirilError -- if the method is called headless or an error occurs.

  overlay_add_polygon(polygon)

    Adds a user polygon to the Siril display overlay :type polygon: `Polygon` :param polygon: Polygon defining the polygon to be added

    Результат:

      the input updated with the ID assigned by Siril

    Тип результата:

      Polygon

    Исключение:

      - TypeError -- invalid data provided,

      - SirilConnectionError -- on a connection failure,

      - DataError -- on receipt of invalid data,

      - SirilError -- on any failure

  overlay_clear_polygons()

    Clears all user polygons from the Siril overlay

    Результат:

      True if the command succeeded, False otherwise

    Тип результата:

      bool

    Исключение:

      - SirilError -- if an error occurred

      - SharedMemoryError -- if a shared memory error occurred

  overlay_delete_polygon(polygon_id)

    Deletes a single user polygon from the Siril overlay, specified by ID

    Параметры:

      id -- int specifying the polygon ID to be deleted

    Исключение:

      SirilError -- on failure

  overlay_draw_polygon(color=16711744, fill=False)

    Enters a mode where the user can draw a Polygon in the Siril window by clicking the main mouse button and dragging. Releasing the mouse button finalises and closes the polygon.

    Параметры:

      - color -- uint32 specifying packed RGBA values. Default: 0x00FF0040, 75% transparent green)

      - fill -- bool specifying whether or not to fill the polygon (default: False)

  overlay_get_polygon(polygon_id)

    Gets a single user polygon from the Siril overlay, specified by ID

    Параметры:

      id -- int specifying the polygon ID to be retrieved. The special ID -1 will

    retrieve the most recently added polygon.

    Результат:

      the specified Polygon if it exists, None otherwise

    Тип результата:

      Polygon

    Исключение:

      SirilError -- on failure

  overlay_get_polygons_list()

    Gets a List of all user polygons from the Siril overlay

    Результат:

      the list of Polygon if some exist, None otherwise

    Тип результата:

      List[Polygon]

    Исключение:

      - SirilError -- if an error occurred

      - SharedMemoryError -- if a shared memory error occurred

  pix2radec(x, y)

    Converts a pair of pixel coordinates into RA and dec coordinates using the WCS of the image loaded in Siril. This requires that an image is loaded in Siril and that it has been platesolved (i.e. it has a WCS solution).

    Параметры:

      - x (`float`) -- float: provides the x coordinate to be converted

      - y (`float`) -- float: provides the y coordinate to be converted

    Результат:

      (RA, Dec) as a Tuple of two floats.

    Тип результата:

      Tuple[float, float]

    Исключение:

      - NoImageError -- If no image or sequence is loaded,

      - ValueError -- If the image or loaded sequence frame is not plate solved,

      - SirilError -- For errors during pix2radec execution.

  radec2pix(ra, dec)

    Converts a pair of RA,dec coordinates into image pixel coordinates using the WCS of the image loaded in Siril. This requires that an image is loaded in Siril and that it has been platesolved (i.e. it has a WCS solution).

    Параметры:

      - ra (`float`) -- float: provides the RA coordinate to be converted

      - dec (`float`) -- float: provides the dec coordinate to be converted

    Результат:

      [x, y] as a Tuple of two floats.

    Тип результата:

      Tuple[float, float]

    Исключение:

      - NoImageError -- If no image or sequence is loaded,

      - ValueError -- If the image or loaded sequence frame is not plate solved,

      - SirilError -- For errors during radec2pix execution.

  redo()

    Redoes the last undone operation, if there is an undo history and an undone operation available to be redone.

  reset_progress()

    Resets the Siril progress bar.

    Параметры:

      none

    Исключение:

      SirilError -- For any errors.

    Тип результата:

      `bool`

  save_image_file(data, header=None, filename=None)

    Save image pixeldata and metadata to a FITS file. This uses Siril to save the image and can therefore be used to avoid a script dependency on astropy if it is only required for saving an image. This allows images to be saved directly from python without having to use set_image_pixeldata() and set_image_metadata_from_header_string() and saving the Siril image. It support processing multiple images without affecting the image currently loaded in Siril.

    Параметры:

      - data -- Either a numpy.ndarray containing the image data (must be 2D or 3D array with dtype float32 or uint16), OR a FFit object containing both data and header.

      - header -- string containing the FITS header data. Required if data is a numpy array, ignored if data is a FFit object.

      - filename -- string containing the path where the file should be saved. Required if data is a numpy array. If data is a FFit object and filename is None, will use fit.filename.

    Результат:

      True if successful, False otherwise

    Тип результата:

      bool

    Исключение:

      - ValueError -- if the input array or header is invalid,

      - TypeError -- if invalid parameter types are provided,

      - SirilError -- if there was an error in handling the command.

    Примеры

    # Using numpy array and header string siril.save_image_file(data_array, header_string, "output.fit")

    # Using FFit object siril.save_image_file(fit, filename="output.fit")

    # Using FFit object with its own filename siril.save_image_file(fit)

  set_image_bgsamples(points, show_samples=False, recalculate=True)

    Serialize a set of background sample points and send via shared memory. Points can be provided either as: - List of (x,y) Tuples: BGSamples are created with these positions and Siril will automatically compute the statistics. - List of BGSample objects: The complete sample data is sent to Siril. By default Siril will recalculate statistics for the sample points on receipt, but this can be overridden with the argument recalculate=False

    Параметры:

      - points (`Union`[`List`[`Tuple`[`float`, `float`]], `List`[`BGSample`]]) -- List of sample points, either as (x,y) tuples or BGSample objects

      - show_samples (`bool`) -- Whether to show the sample points in Siril

      - recalculate -- Whether to recalculate the sample points once set. This only applies if the sample points are provided as a List of BGSamples, in which case it defaults to True. If the sample points are provided as a List of (x,y) Tuples then the parameter has no effect. Setting recalculate=False is usually a bad idea but the option is provided to support potential advanced uses where the values are adjusted in python code to manipulate the background fit.

    Returns: True if the command succeeded, otherwise False

    Исключение:

      - NoImageError -- if no image is loaded in Siril,

      - ValueError -- if samples do not have valid positions,

      - SirilError -- if there was a Siril error in handling the command.

  set_image_filename(filename)

    Set the image filename in Siril. :type filename: `str` :param filename: the image filename to set :type filename: str

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the filename was set successfully

    Тип результата:

      bool

  set_image_iccprofile(iccprofile)

    Set the image ICC profile in Siril

    Параметры:

      - iccprofile (bytes) -- The ICC profile to send to Siril. This will

      - profile (replace an existing ICC)

      - None (if one is set. If)

    :param : :param any existing image ICC profile will be removed.:

    Returns: True if the command succeeded, otherwise False

    Исключение:

      - NoImageError -- if no image is loaded in Siril,

      - ValueError -- if iccprofile is not valid type,

      - SirilError -- if there was a Siril error in handling the command.

  set_image_metadata_from_header_string(header)

    Send image metadata to Siril from a FITS header. The header can be obtained from a sirilpy FFit.header or alternatively from a FITS file obened from disk using astropy.fits.

    Example:

        hdul = fits.open('your_fits_file.fits')
        # Get the header from the primary HDU (or any other HDU you want)
        header = hdul[0].header
        # Convert the header to string
        header_string = header.tostring(sep='\\n')
        # Send the metadata to Siril
        siril.set_image_metadata_from_header_string(header_string)

    Параметры:

      header (`str`) -- string containing the FITS header data

    Результат:

      True if successful, False otherwise

    Тип результата:

      bool

    Исключение:

      - TypeError -- invalid parameter provided,

      - NoImageError -- if no image is loaded in Siril,

      - SirilError -- если произошла ошибка.

  set_image_pixeldata(image_data)

    Send image data to Siril using shared memory.

    Параметры:

      image_data (`ndarray`) -- numpy.ndarray containing the image data. Must be 2D (single channel) or 3D (multi-channel) array with dtype either np.float32 or np.uint16.

    Исключение:

      - NoImageError -- if no image is loaded in Siril,

      - ValueError -- if the input array is invalid,

      - SirilError -- if there was an error in handling the command.

    Тип результата:

      `bool`

  set_seq_frame_incl(index, incl)

    Set whether given frame(s) are included in the currently loaded sequence in Siril. This method is intended for use in creating custom sequence filters.

    Параметры:

      - index (`Union`[`int`, `List`[`int`]]) -- integer or list of integers specifying which frame(s) to set the inclusion status for. This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame number 1. Passing a list is available since sirilpy 1.0.17

      - incl (`bool`) -- bool specifying whether the frame(s) are included or not.

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - TypeError -- if index is not an int or list of ints,

      - SirilError -- on failure.

  set_seq_frame_pixeldata(index, image_data, prefix)

    Send sequence frame image data to Siril using shared memory. Note that this method only works with sequences of FITS images: it does not work with FITSEQ, SER or AVI single-file sequences. The image_lock() context manager is not required in order to use this method.

    Параметры:

      - index (`int`) -- integer specifying which frame to set the pixeldata for. This uses a 0-based indexing scheme, i.e. the first frame is frame number 0, not frame numer 1.

      - image_data (`ndarray`) -- numpy.ndarray containing the image data. Must be 2D (single channel) or 3D (multi-channel) array with dtype either np.float32 or np.uint16.

      - prefix (`str`) -- String prefix to use when saving the file to make a new sequence. Note that saving sequence frames with a new prefix does not by itself create a new sequence: once all the frames have been saved with the new sequence prefix, `sirilpy.SirilInterface.create_new_seq()` must be called to create the actual sequence file. Note that while it is permitted to pass prefix=None, this will overwrite the existing sequence and is not typically what is wanted, therefore the parameter is not optional and must be passed explicitly.

    Исключение:

      - NoSequenceError -- если в Siril не загружена последовательность,

      - ValueError -- if the input array is invalid,

      - SirilError -- if there was an error in handling the command.

    Тип результата:

      `bool`

  set_siril_pan(xoff, yoff)

    Set the display offset (pan) in Siril to (xoff, yoff). :type xoff: `float` :param xoff: x display offset :type xoff: float :type yoff: `float` :param yoff: y display offset :type yoff: float

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the display offset was set successfully

    Тип результата:

      bool

  set_siril_selection(x=None, y=None, w=None, h=None, selection=None)

    Set the image selection in Siril using the provided coordinates and dimensions.

    Параметры:

      - x (`Optional`[`int`]) -- X-coordinate of the selection's top-left corner (must be provided with y, w, h)

      - y (`Optional`[`int`]) -- Y-coordinate of the selection's top-left corner (must be provided with x, w, h)

      - w (`Optional`[`int`]) -- Width of the selection (must be provided with x, y, h)

      - h (`Optional`[`int`]) -- Height of the selection (must be provided with x, y, w)

      - selection (`Optional`[`Tuple`[`int`, `int`, `int`, `int`]]) -- A tuple of (x, y, w, h) as returned by get_siril_selection()

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the selection was set successfully

    Тип результата:

      bool

  set_siril_slider_lohi(lo=None, hi=None)

    Set the slider values in Siril using the provided lo and hi values. If the sliders mode is not already set to USER, it is set to that mode as setting slider values is only relevant in that mode. :type lo: `Union`[`float`, `int`] :param lo: Low value for the slider (float [0,1] or uint16) :type hi: `Union`[`float`, `int`] :param hi: High value for the slider (float [0,1] or uint16)

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the slider state was set successfully

    Тип результата:

      bool

  set_siril_slider_mode(mode)

    Set the slider state in Siril using the provided lo, hi and mode values. :type mode: `SlidersMode` :param mode: SlidersMode enum value

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the slider state was set successfully

    Тип результата:

      bool

  set_siril_stf(mode)

    Set the screen transfer function in Siril using the provided enum value. :type mode: `SlidersMode` :param mode: STFType enum value

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the slider state was set successfully

    Тип результата:

      bool

  set_siril_stf_linked(state)

    Set the screen transfer function in Siril using the provided enum value. :type state: `bool` :param state: bool

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the slider state was set successfully

    Тип результата:

      bool

  set_siril_zoom(zoom)

    Set the display zoom. Passing any negative value will set 'zoom to fit'. :type zoom: `float` :param zoom: zoom level :type zoom: float

    Исключение:

      - SirilError -- если произошла ошибка.

      - ValueError -- if parameters are not properly provided.

    Результат:

      True if the display offset was set successfully

    Тип результата:

      bool

  undo()

    Undoes the last operation, if there is an undo history available.

  undo_save_state(my_string)

    Saves an undo state. The maximum message length is 70 bytes: longer messages will be truncated. Requires a single image to be loaded.

    Параметры:

      my_string (`str`) -- The message to log in FITS HISTORY

    Результат:

      True if the message was successfully logged, False if a logging error occurred or None if the script is headless (undo does not happen when headless)

    Тип результата:

      Optional[bool]

    Исключение:

      SirilError -- если произошла ошибка.

  update_progress(message, progress)

    Send a progress update to Siril with a message and completion percentage.

    Параметры:

      - message (`str`) -- Status message to display,

      - progress (`float`) -- Progress value in the range 0.0 to 1.0. The following special values can be used: -1.0 will pulsate the progress bar, and -2.0 will update the progress bar text but will not update the progress shown in the bar.

    Исключение:

      - ValueError -- If the progress argument is out of range,

      - SirilError -- For any other errors.

    Тип результата:

      `bool`

  warning_messagebox(my_string, modal=False)

    Send a warning message to Siril. The maximum message length is 1022 bytes: longer messages will be truncated. This is intended for displaying warning messages more prominently than using the Siril log.

    Параметры:

      - my_string (`str`) -- The message to display in the warning message box

      - modal (`Optional`[`bool`]) -- Устанавливает, должно ли окно сообщения быть модальным и ожидать завершения, или немодальным, позволяя скрипту продолжить выполнение. Обратите внимание, что хотя модальное окно сообщения будет блокировать выполнение скрипта, если запущен основной цикл TKinter, события будут продолжать накапливаться, поэтому, если окно сообщения вызвано нажатием кнопки, пользователь может нажать её снова, пока отображается окно сообщения, и вызвать второе окно сообщения, которое отобразится сразу после закрытия первого.

    Результат:

      True if the warning was successfully displayed, False otherwise

    Тип результата:

      bool

    Исключение:

      SirilError -- если произошла ошибка.

  xy_plot(plot_data, display=True, save=False)

    Serialize plot data and send via shared memory. See the sirilpy.plot submodule documentation for how to configure a PlotData object for use with SirilInterface.xy_plot()

    Параметры:

      - plot_metadata -- PlotMetadata object containing plot configuration

      - display -- bool indicating whether to display the plot on screen (defaults to True)

      - save -- bool indicating whether to save to the file specified in PlotData.savename (defaults to False)

    Исключение:

      - DataError -- if invalid xy_plot data is received via shared memory,

      - SirilError -- If an error occurs.

### Sirilpy Data Models

This submodule provides dataclasses to represent the main Siril data structures. Most dataclasses have corresponding deserialization methods that are used by the SirilInterface methods. All its members are made available at the module root level, there is no need to import models separately.

class sirilpy.models.BGSample(x=None, y=None, position=None, size=25, **kwargs)

  Базовые классы: `object`

  Python equivalent of the Siril background_sample struct. Used to hold background sample data obtained from Siril, or to generate or modify background sample data to set in Siril. A BGSample can be constructed as: - s1 = BGSample(x=1.0, y=2.0) - s2 = BGSample(position=(1.0, 2.0)) - s3 = BGSample(x=1.0, y=2.0, mean=0.5, size=31)

  classmethod deserialize(data)

    Deserialize a portion of a buffer into a BGSample object

    Параметры:

      data (bytes) -- The full binary buffer containing BGSample data

    Результат:

      A BGSample object

    Тип результата:

      BGSample

    Исключение:

      - ValueError -- If the buffer slice size does not match the expected size.

      - struct.error -- If there is an error unpacking the binary data.

  max: float = 0.0
  mean: float = 0.0
  median: Tuple[float, float, float] = (0.0, 0.0, 0.0)

    Median values for R, G and B channels. For mono images only median[0] is used.

  min: float = 0.0
  position: Tuple[float, float] | None = None

    Position in (x, y) image coordinates

  size: int = 25

    The default size matches the size of Siril bg samples.

  valid: bool = True

    Samples default to being valid

class sirilpy.models.DistoData(index=DistoType.DISTO_UNDEF, filename='', velocity=(0, 0))

  Базовые классы: `object`

  Python equivalent of Siril disto_params structure

  filename: str = ''

    filename if DISTO_FILE or DISTO_MASTER (and optional for DISTO_FILE_COMET)

  index: DistoType = 0

    Specifies the distrosion type

  velocity: Tuple[float, float] = (0, 0)

    shift velocity if DISTO_FILE_COMET

class sirilpy.models.FFit(bitpix=None, orig_bitpix=None, naxis=0, _naxes=(0, 0, 0), keywords=<factory>, checksum=False, header=None, unknown_keys=None, stats=<factory>, mini=0.0, maxi=0.0, neg_ratio=0.0, _data=None, top_down=False, _focalkey=False, _pixelkey=False, history=<factory>, color_managed=False, _icc_profile=None)

  Базовые классы: `object`

  Python equivalent of Siril ffit (FITS) structure, holding image pixel data and metadata.

  allocate_data()

    Allocate memory for image data with appropriate type. self.width, self.height, self.naxis, self.naxes and self.dtype must be set before calling this method.

    Исключение:

      ValueError -- if self.bitpix is not set to BitpixType.USHORT_IMG or BitpixType.FLOAT_IMG

  ensure_data_type(target_type=None)

    Ensure data is in the correct type with proper scaling

    Параметры:

      target_type -- Optional np.dtype to convert to. If None, uses self.type

    Исключение:

      ValueError -- if the conversion is between data types that are not internally used by Siril for calculation

  estimate_noise(array, nullcheck=True, nullvalue=0.0)

    Estimate the background noise in the input image using the sigma of first-order differences.

    noise = 1.0 / sqrt(2) * RMS of (flux[i] - flux[i-1])

    Параметры:

      - array (np.ndarray) -- 2D array of image pixels (np.uint16 or np.float32).

      - nullcheck (bool) -- If True, check for null values.

      - nullvalue (`Optional`[`float`]) -- The value of null pixels (only used if nullcheck is True).

    Результат:

      Estimated noise value.

    Тип результата:

      float

    Исключение:

      ValueError -- if the array is the wrong shape

  get_channel(channel)

    Get a specific channel of the pixel data. Note that this does not pull pixel data directly from the image loaded in Siril: that must previously have been obtained using get_image_pixeldata() or get_image()

    Тип результата:

      `ndarray`

  update_stats()

    Update image statistics for all channels. Note that this only updates the statistics based on the NumPy array representing pixel data in the python FFit object, it does not update the statistics of the image in Siril.

  bitpix: BitpixType | None = None

    FITS header specification of the image data type.

  property channels: int

    Каналы изображения

  checksum: bool = False

    Whether Siril will write FITS data checksums for this file.

  color_managed: bool = False

    Specifies whether the image is color managed or not.

  property data: ndarray | None

    The pixel data of the current image loaded in Siril, stored as a NumPy array

  header: str | None = None

    The FITS header as a string.

  property height: int

    Высота изображения

  history: list[str]

    Contains a list of strings holding the HISTORY entries for this image.

  property icc_profile: bytes | None

    The ICC profile as raw bytes data. This may be converted for use by modules such as pillow which can handle ICC profiles.

  keywords: FKeywords

    A FKeywords object containing FITS header keywords.

  maxi: float = 0.0

    The maximum value across all image channels.

  mini: float = 0.0

    The minimum value across all image channels.

  property naxes: Tuple[int, int, int]

    The naxes tuple holds the image dimensions as width x height x channels. Note that the axis ordering differs between Siril representation as held in naxes and numpy representation as held in _data.shape (which is channels x height x width)

  naxis: int = 0

    The number of axes (2 for a mono image, 3 for a RGB image). Corresponds to the FITS kwyword NAXIS.

  neg_ratio: float32 = 0.0

    The ratio of negative pixels to the total pixels.

  orig_bitpix: BitpixType | None = None

    FITS header specification of the original image data type.

  stats: List[ImageStats | None]

    A list of ImageStats objects, one for each channel.

  top_down: bool = False

    Specifies the ROWORDER for this image. The FITS specification directs that FITS should be stored bottom-up, but many CMOS sensors are natively TOP_DOWN and capture software tends to save FITS images captured by these sensors as TOP_DOWN.

  unknown_keys: str | None = None

    All unknown FITS header keys as a string. This gives access to header cards that Siril does not use internally.

  property width: int

    Ширина изображения

class sirilpy.models.FKeywords(bscale=1.0, bzero=0.0, lo=0, hi=0, flo=0.0, fhi=0.0, program='', filename='', row_order='', filter='', image_type='', object='', instrume='', telescop='', observer='', bayer_pattern='', sitelat_str='', sitelong_str='', focname='', date=None, date_obs=None, data_max=0.0, data_min=0.0, pixel_size_x=0.0, pixel_size_y=0.0, binning_x=1, binning_y=1, expstart=0.0, expend=0.0, bayer_xoffset=0, bayer_yoffset=0, airmass=1.0, focal_length=0.0, flength=0.0, iso_speed=0.0, exposure=0.0, aperture=0.0, ccd_temp=0.0, set_temp=0.0, livetime=0.0, stackcnt=0, cvf=0.0, gain=0, offset=0, focuspos=0, focussz=0, foctemp=0.0, centalt=0.0, centaz=0.0, sitelat=0.0, sitelong=0.0, siteelev=0.0, objctra=None, objctdec=None, ra=None, dec=None, pltsolvd=False, pltsolvd_comment=None)

  Базовые классы: `object`

  Python equivalent of Siril fkeywords structure. Contains the FITS header keyword values converted to suitable data types.

  classmethod deserialize(data)

    Deserialize binary keyword-block (the block produced by keywords_to_py()) into an FKeywords object. Raises ValueError on size mismatch and SirilError for other unpacking issues.

    Тип результата:

      `FKeywords`

  FLEN_VALUE: ClassVar[int] = 71
  KEYWORDS_FORMAT: ClassVar[str] = '!71s71s71s71s71s71s71s71s71s71s71s71s71s71s71s71sddQQddddddQQdddddddqqdddddddddQdqqqqdqqdd?'
  KEYWORDS_SIZE: ClassVar[int] = 1465
  airmass: float = 1.0

    Airmass at frame center (Gueymard 1993)

  aperture: float = 0.0

    Aperture value as a float

  bayer_pattern: str = ''

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

  bayer_xoffset: int = 0

    Смещение шаблона Байера по X

  bayer_yoffset: int = 0

    Смещение шаблона Байера по Y

  binning_x: int = 1

    XBINNING FITS header card as an int

  binning_y: int = 1

    YBINNING FITS header card as an int

  bscale: float = 1.0

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

  bzero: float = 0.0

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

  ccd_temp: float = 0.0

    CCD temperature as a float

  centalt: float = 0.0

    [град.] Высота телескопа

  centaz: float = 0.0

    [град.] Азимут телескопа

  cvf: float = 0.0

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

  data_max: float = 0.0

    used to check if 32b float is in the [0, 1] range

  data_min: float = 0.0

    used to check if 32b float is in the [0, 1] range

  date: datetime | None = None

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

  date_obs: datetime | None = None

    ss observation start, UT

    Type:

      YYYY-MM-DDThh

    Type:

      мм

  dec: float | None = None

    Dec as float, if available

  expend: float = 0.0

    Окончание экспозиции как Юлианская дата

  exposure: float = 0.0

    Exposure time as a float (s)

  expstart: float = 0.0

    Начало экспозиции как Юлианская дата

  fhi: float32 = 0.0

    MIPS-Hi key in FITS file, "Upper visualization cutoff (float)"

  filename: str = ''

    Original Filename

  filter: str = ''

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

  flength: float = 0.0

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

  flo: float32 = 0.0

    MIPS-LO key in FITS file, "Lower visualization cutoff (float)"

  focal_length: float = 0.0

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

  focname: str = ''

    Название фокусировчного оборудования

  foctemp: float = 0.0

    Температура фокусёра

  focuspos: int = 0

    Положение фокусёра

  focussz: int = 0

    [мкм] Шаг фокусёра

  gain: int = 0

    Gain factor read in camera

  hi: int = 0

    MIPS-HI key in FITS file, "Upper visualization cutoff"

  image_type: str = ''

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

  instrume: str = ''

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

  iso_speed: float = 0.0

    ISO speed value as a float

  livetime: float = 0.0

    Sum of exposure times (s)

  lo: int = 0

    MIPS-LO key in FITS file, "Lower visualization cutoff"

  objctdec: str | None = None

    object Dec as string, if available

  objctra: str | None = None

    object RA as string, if available

  object: str = ''

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

  observer: str = ''

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

  offset: int = 0

    Offset value read in camera

  pixel_size_x: float = 0.0

    XPIXSZ FITS header card as a float

  pixel_size_y: float = 0.0

    YPIXSZ FITS header card as a float

  pltsolvd: bool = False

    whether plate solved or not

  pltsolvd_comment: str | None = None

    plate solution comment

  program: str = ''

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

  ra: float | None = None

    RA as float, if available

  row_order: str = ''

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

  set_temp: float = 0.0

    CCD set temperature as a float

  siteelev: float = 0.0

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

  sitelat: float = 0.0
  sitelat_str: str = ''
  sitelong: float = 0.0

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

  sitelong_str: str = ''
  stackcnt: int = 0

    Number of stacked frames

  telescop: str = ''

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

class sirilpy.models.FPoint(x, y)

  Базовые классы: `object`

  Represents a 2D point with float x and y coordinate values in the Siril image.

  x: float

    x co-ordinate

  y: float

    y co-ordinate

class sirilpy.models.Homography(h00=0.0, h01=0.0, h02=0.0, h10=0.0, h11=0.0, h12=0.0, h20=0.0, h21=0.0, h22=0.0, pair_matched=0, Inliers=0)

  Базовые классы: `object`

  Python equivalent of the Siril Homography structure. Contains coefficients for the Homography matrix that maps a sequence frame onto the reference frame.

  Inliers: int = 0

    number of inliers kept after RANSAC step

  h00: float = 0.0

    Homography matrix H00

  h01: float = 0.0

    Homography matrix H01

  h02: float = 0.0

    Homography matrix H02

  h10: float = 0.0

    Homography matrix H10

  h11: float = 0.0

    Homography matrix H11

  h12: float = 0.0

    Homography matrix H12

  h20: float = 0.0

    Homography matrix H20

  h21: float = 0.0

    Homography matrix H21

  h22: float = 0.0

    Homography matrix H22

  pair_matched: int = 0

    number of pairs matched

class sirilpy.models.ImageAnalysis(bgnoise=0.0, fwhm=0.0, wfwhm=0.0, nbstars=0, roundness=0.0, imagetype=0, timestamp=0, channels=0, height=0, width=0, filter='')

  Базовые классы: `object`

  Structure to hold image analysis data, used for culling

  classmethod deserialize(data)

    Unpack a network-safe binary struct into an ImageAnalysis instance.

    Тип результата:

      `ImageAnalysis`

  serialize()

    Pack the dataclass into a network-safe binary struct.

    Тип результата:

      `bytes`

  FLEN: ClassVar[int] = 71
  bgnoise: float = 0.0

    RMS background noise

  channels: int = 0

    number of channels in the image

  filter: str = ''

    filter name (fixed-length string from C, max 70 chars)

  fwhm: float = 0.0

    Mean fwhm

  height: int = 0

    image height

  imagetype: ImageType = 0

    Image type enum

  nbstars: int = 0

    Number of stars detected

  roundness: float = 0.0

    Mean star roundness

  timestamp: int = 0

    00 UTC)

    Type:

      UNIX timestamp (64-bit seconds since 1970/1/1 00

  wfwhm: float = 0.0

    Mean weighted fwhm

  width: int = 0

    image width

class sirilpy.models.ImageStats(total=0, ngoodpix=0, mean=0.0, median=0.0, sigma=0.0, avgDev=0.0, mad=0.0, sqrtbwmv=0.0, location=0.0, scale=0.0, min=0.0, max=0.0, normValue=0.0, bgnoise=0.0)

  Базовые классы: `object`

  Python equivalent of Siril imstats structure. Contains statistics for a particular channel of a Siril image.

  classmethod deserialize(data)

    Deserialize binary data into an ImageStats object.

    Параметры:

      data (`bytes`) -- (bytes) Binary data to unpack

    Тип результата:

      `ImageStats`

    Returns: ImageStats object

    Raises: SirilError: If received data size is incorrect

      struct.error: If unpacking fails

  avgDev: float = 0.0

    average deviation of pixels

  bgnoise: float = 0.0

    RMS background noise

  location: float = 0.0

    location of pixel values

  mad: float = 0.0

    mean average deviation of pixels

  max: float = 0.0

    maximum pixel value

  mean: float = 0.0

    mean value of pixels

  median: float = 0.0

    median value of pixels

  min: float = 0.0

    minimum pixel value

  ngoodpix: int = 0

    number of non-zero pixels

  normValue: float = 0.0

    norm value of the pixels

  scale: float = 0.0

    scale value of the pixels

  sigma: float = 0.0

    standard deviation of pixels

  sqrtbwmv: float = 0.0

    square root of the biweight midvariance of pixel values

  total: int = 0

    total number of pixels

class sirilpy.models.ImgData(filenum=0, incl=False, date_obs=None, airmass=0.0, rx=0, ry=0)

  Базовые классы: `object`

  Python equivalent of Siril imgdata structure

  classmethod deserialize(response)

    Deserialize binary response into an ImgData object.

    Параметры:

      response (bytes) -- Binary data to unpack.

    Результат:

      An ImgData object with deserialized data.

    Тип результата:

      ImgData

    Исключение:

      - ValueError -- If received data size is incorrect.

      - struct.error -- If unpacking fails.

  airmass: float = 0.0

    airmass of the image

  date_obs: datetime | None = None

    date of the observation

  filenum: int = 0

    real file index in the sequence

  incl: bool = False

    selected in the sequence

  rx: int = 0

    width

  ry: int = 0

    height

class sirilpy.models.PSFStar(star_name=None, B=0.0, A=0.0, x0=0.0, y0=0.0, sx=0.0, sy=0.0, fwhmx=0.0, fwhmy=0.0, fwhmx_arcsec=0.0, fwhmy_arcsec=0.0, angle=0.0, rmse=0.0, sat=0.0, R=0, has_saturated=False, beta=0.0, profile=StarProfile.GAUSSIAN, xpos=0.0, ypos=0.0, mag=0.0, Bmag=0.0, s_mag=999.99, s_Bmag=999.99, SNR=0.0, phot_is_valid=False, BV=0.0, B_err=0.0, A_err=0.0, x_err=0.0, y_err=0.0, sx_err=0.0, sy_err=0.0, ang_err=0.0, beta_err=0.0, layer=0, units=None, ra=0.0, dec=0.0)

  Базовые классы: `object`

  Python equivalent of the Siril fwhm_struct structure. Contains data on a modelled fit to a star identified in the image.

  classmethod deserialize(data)

    Deserialize a portion of a buffer into a PSFStar object.

    Параметры:

      data (`bytes`) -- (bytes) The full binary buffer containing PSFStar data.

    Тип результата:

      `PSFStar`

    Результат:

      PSFStar object

    Исключение:

      - ValueError -- If the buffer slice size does not match the expected size.

      - struct.error -- If there is an error unpacking the binary data.

  A: float = 0.0

    amplitude

  A_err: float = 0.0

    error in A

  B: float = 0.0

    average sky background value

  BV: float = 0.0

    only used to pass data in photometric color calibration

  B_err: float = 0.0

    error in B

  Bmag: float = 0.0

    B magnitude

  R: int = 0

    Optimized box size to enclose sufficient pixels in the background

  SNR: float = 0.0

    SNR of the star

  ang_err: float = 0.0

    error in angle

  angle: float = 0.0

    angle of the x and yaxes with respect to the image x and y axes

  beta: float = 0.0

    Moffat equation beta parameter

  beta_err: float = 0.0

    error in beta

  dec: float = 0.0

    Declination

  fwhmx: float = 0.0

    FWHM in x axis in pixels

  fwhmx_arcsec: float = 0.0

    FWHM in x axis in arc seconds

  fwhmy: float = 0.0

    FWHM in y axis in pixels

  fwhmy_arcsec: float = 0.0

    FWHM in y axis in arc seconds

  has_saturated: bool = False

    Shows whether the star is saturated or not

  layer: int = 0

    image channel on which the star modelling was carried out

  mag: float = 0.0

    22. magnitude, approximate or accurate

  phot_is_valid: bool = False

    True if mag, Bmag, s_mag, s_Bmag and SNR are photometrically accurate with no saturated pixels. Introduced in sirilpy 1.0.4.

  profile: StarProfile = 0
  ra: float = 0.0

    Right Ascension

  rmse: float = 0.0

    RMSE of the minimization

  s_Bmag: float = 999.99

    error on the B magnitude

  s_mag: float = 999.99

    error on the (V) magnitude

  sat: float = 0.0

    Level above which pixels have satured

  star_name: str | None = None
  sx: float = 0.0

    Size of the fitted function on the x axis in PSF coordinates

  sx_err: float = 0.0

    error in sx

  sy: float = 0.0

    Size of the fitted function on the y axis in PSF coordinates

  sy_err: float = 0.0

    error in sy

  units: str | None = None

    Units

  x0: float = 0.0

    x coordinate of the peak

  x_err: float = 0.0

    error in x

  xpos: float = 0.0

    x position of the star in the image

  y0: float = 0.0

    y coordinate of the peak

  y_err: float = 0.0

    error in y

  ypos: float = 0.0

    y position of the star in the image

class sirilpy.models.Polygon(points, polygon_id=0, color=4294967295, fill=False, legend=None)

  Базовые классы: `object`

  Represents a user-defined polygon. These can be filled or outline-only, and can have any color and transparency (alpha) value. They can also have an optional label which is displayed centred on the polygon.

  Note that Polygons should be considered transitory if used with the overlay - they can be used to display information to the user but they may be cleared at any time if the user toggles the overlay button in the main Siril interface to clear the overlay.

  classmethod deserialize_polygon(data)

    Creates a Polygon object by deserializing a byte array.

    Результат:

      A Polygon object and any remaining bytes in the byte

        array. (The remaining bytes are for use in deserialize_polygon_list and can be safely ignored if deserializing a single polygon.)

    Тип результата:

      Tuple

    Исключение:

      ValueError -- If there is insufficient data to deserialize.

  classmethod deserialize_polygon_list(data)

    Creates a List of Polygon objects by deserializing a byte array.

    Результат:

      A List of Polygon objects.

    Тип результата:

      List

    Исключение:

      ValueError -- If there is invalid data to deserialize.

  classmethod from_rectangle(rect, **kwargs)

    Create a Polygon from a rectangle of the kind returned by sirilpy.connection.get_siril_selection().

    Параметры:

      - rect (Tuple[int, int, int, int]) -- Rectangle as (x, y, width, height)

      - **kwargs -- Additional keyword arguments to pass to Polygon constructor (polygon_id, color, fill, legend)

    Результат:

      A new Polygon instance representing the rectangle

    Тип результата:

      Polygon

  contains_point(x, y)

    Determine if a point is inside the polygon using Dan Sunday's optimized winding number algorithm.

    This algorithm is more robust than ray casting for complex polygons and handles edge cases better, including points on edges and self-intersecting polygons.

    Параметры:

      - x (float) -- X coordinate of the point to test.

      - y (float) -- Y coordinate of the point to test.

    Результат:

      True if the point is inside the polygon, False otherwise.

    Тип результата:

      bool

  get_bounds()

    Get the bounding box of the polygon.

    Результат:

      (min_x, min_y, max_x, max_y)

    Тип результата:

      Tuple[float, float, float, float]

    Исключение:

      ValueError -- If the polygon has no points.

  get_max_x()

    Get the maximum x coordinate of the polygon.

    Тип результата:

      `float`

  get_max_y()

    Get the maximum y coordinate of the polygon.

    Тип результата:

      `float`

  get_min_x()

    Get the minimum x coordinate of the polygon.

    Тип результата:

      `float`

  get_min_y()

    Get the minimum y coordinate of the polygon.

    Тип результата:

      `float`

  serialize()

    Serializes a single Polygon object into a byte array.

    Результат:

      A byte array representing the serialized polygon data.

    Тип результата:

      bytes

    Исключение:

      ValueError -- If the number of points exceeds the allowed limit.

  color: int = 4294967295

    32-bit RGBA color (packed, uint_8 per component. Default value is 0xFFFFFFFF)

  fill: bool = False

    whether or not the polygon should be filled when drawn

  legend: str = None

    an optional legend

  points: List[FPoint]

    List of points defining the polygon's shape

  polygon_id: int = 0

    unique identifier

class sirilpy.models.RegData(fwhm=0.0, weighted_fwhm=0.0, roundness=0.0, quality=0.0, background_lvl=0.0, number_of_stars=0, H=<factory>)

  Базовые классы: `object`

  Python equivalent of Siril regdata structure

  classmethod deserialize(data)

    Deserialize a binary response into a RegData object.

    Параметры:

      data (bytes) -- Binary data to unpack

    Тип результата:

      `RegData`

    Returns: RegData object

    Raises: SirilError if the received data doesn't match the expected size'

      struct.error If unpacking fails

  H: Homography

    Stores a homography matrix describing the affine transform from this frame to the reference frame

  background_lvl: float32 = 0.0

    background level

  fwhm: float = 0.0

    copy of fwhm->fwhmx, used as quality indicator

  number_of_stars: int = 0

    number of stars detected in the image

  quality: float = 0.0

    measure of image quality

  roundness: float32 = 0.0

    fwhm->fwhmy / fwhm->fwhmx, 0 when uninit, ]0, 1] when set

  weighted_fwhm: float32 = 0.0

    used to exclude spurious images

class sirilpy.models.Sequence(seqname='', number=0, selnum=0, fixed=0, nb_layers=-1, rx=0, ry=0, is_variable=False, bitpix=0, reference_image=0, imgparam=None, regparam=None, stats=None, distoparam=None, beg=0, end=0, exposure=0.0, fz=False, type=None, cfa_opened_monochrome=False, current=0)

  Базовые классы: `object`

  Python equivalent of Siril sequ structure

  beg: int = 0

    imgparam[0]->filenum

  bitpix: int = 0

    image pixel format, from fits

  cfa_opened_monochrome: bool = False

    CFA SER opened in monochrome mode

  current: int = 0

    file number currently loaded

  distoparam: List[DistoData] = None

    distortion data for the sequence [nb_layers]

  end: int = 0

    imgparam[number-1]->filenum

  exposure: float = 0.0

    exposure of frames

  fixed: int = 0

    fixed length of image index in filename

  fz: bool = False

    whether the file is compressed

  imgparam: List[ImgData] = None

    a structure for each image of the sequence [number]

  is_variable: bool = False

    sequence has images of different sizes

  nb_layers: int = -1

    number of layers embedded in each image file

  number: int = 0

    number of images in the sequence

  reference_image: int = 0

    reference image for registration

  regparam: List[List[RegData]] = None

    registration parameters for each layer [nb_layers][number]

  rx: int = 0

    first image width

  ry: int = 0

    first image height

  selnum: int = 0

    number of selected images

  seqname: str = ''

    name of the sequence

  stats: List[List[ImageStats]] = None

    statistics of the images for each layer [nb_layers][number]

  type: SequenceType = None

    the type of sequence

### Sirilpy Enums

This module provides all the enums that are used within sirilpy.

Enums submodule for Siril. This submodule contains all the enums used within sirilpy.

class sirilpy.enums.BitpixType(value)

  Базовые классы: `IntEnum`

  Mimics the Siril bitpix enum. Note that although Siril can handle opening FITS files of any data type, internally it processes images only as USHORT_IMG (uint16) or FLOAT_IMG (float32).

  BYTE_IMG = 8
  DOUBLE_IMG = -64
  FLOAT_IMG = -32
  LONG_IMG = 32
  SHORT_IMG = 16
  USHORT_IMG = 20

class sirilpy.enums.CommandStatus(value)

  Базовые классы: `IntEnum`

  Contains Siril command status codes, matching the values returned internally within Siril. These can be used for error handling. CMD_OK and CMD_NO_WAIT are no-error codes; all the other codes represent command errors. These are available through the CommandError exception and may generally be handled without being regarded as fatal to the script.

  CMD_ALLOC_ERROR = 1048576
  CMD_ARG_ERROR = 32
  CMD_DIR_NOT_FOUND = 4194304
  CMD_FILE_NOT_FOUND = 131072
  CMD_FOR_CFA_IMAGE = 65536
  CMD_FOR_PLATE_SOLVED = 262144
  CMD_GENERIC_ERROR = 128
  CMD_IMAGE_NOT_FOUND = 256
  CMD_INVALID_IMAGE = 1024
  CMD_LOAD_IMAGE_FIRST = 2048
  CMD_NEED_INIT_FIRST = 524288
  CMD_NOT_FOR_MONO = 16384
  CMD_NOT_FOR_RGB = 32768
  CMD_NOT_FOR_SINGLE = 8192
  CMD_NOT_FOUND = 1
  CMD_NOT_SCRIPTABLE = 8
  CMD_NO_CWD = 4
  CMD_NO_WAIT = 2
  CMD_OK = 0
  CMD_ONLY_SINGLE_IMAGE = 4096
  CMD_SELECTION_ERROR = 64
  CMD_SEQUENCE_NOT_FOUND = 512
  CMD_THREAD_RUNNING = 2097152
  CMD_WRONG_N_ARG = 16

class sirilpy.enums.DialogID(value)

  Базовые классы: `IntEnum`

  classmethod from_name(name)

    Safely create from a str containing a potential dialog name (e.g. "ASINH_DIALOG", returning None if the name no longer exists.

    Тип результата:

      `DialogID` | `None`

  ABERRATION_DIALOG = 19
  ABOUT_DIALOG = 0
  ANNOTATE_DIALOG = 1
  ASINH_DIALOG = 2
  ASTROMETRY_DIALOG = 3
  BACKGROUND_EXTRACTION_DIALOG = 4
  BINXY_DIALOG = 6
  CANON_FIXBANDING_DIALOG = 7
  CCM_DIALOG = 8
  CLAHE_DIALOG = 9
  COLOR_CALIBRATION = 10
  COMPOSITION_DIALOG = 12
  COMPSTARS_DIALOG = 11
  COSMETIC_DIALOG = 13
  CURVES_DIALOG = 14
  CWD_DIALOG = 15
  DECONV_DIALOG = 5
  DENOISE_DIALOG = 16
  DIALOG_FFT = 17
  DIALOG_STAR_REMIX = 18
  EPF_DIALOG = 20
  EXTRACT_CHANNEL_DIALOG = 21
  EXTRACT_WAVELETS_LAYERS_DIALOG = 22
  FILE_INFORMATION = 23
  GHT_DIALOG = 24
  HISTOGRAM_DIALOG = 25
  ICC_DIALOG = 26
  KEYWORDS_DIALOG = 27
  LINEARMATCH_DIALOG = 28
  MEDIAN_DIALOG = 29
  MERGE_CFA_DIALOG = 30
  NINA_LIGHT_CURVE = 31
  OPEN_DIALOG = 32
  PCC_DIALOG = 33
  PIXEL_MATH_DIALOG = 34
  PREFS_DIALOG = 35
  RESAMPLE_DIALOG = 36
  RGRADIENT_DIALOG = 37
  ROTATION_DIALOG = 38
  SATU_DIALOG = 40
  SAVEAS_DIALOG = 41
  SCNR_DIALOG = 42
  SEQLIST_DIALOG = 43
  SPLIT_CFA_DIALOG = 44
  STARNET_DIALOG = 45
  STARS_LIST_WINDOW = 46
  STAT_WINDOW = 47
  S_PCC_DIALOG = 39
  UNPURPLE_DIALOG = 48
  WAVELETS_DIALOG = 49

class sirilpy.enums.DialogReq(value)

  Базовые классы: `IntEnum`

  Represents the requirements to open a dialog represented by a DialogID

  ANY = 1

    Image or sequence loaded

  IMG = 2

    Image loaded

  MONO = 3

    Mono image loaded

  NONE = 4

    No requirement, this action works at any time

  PLTSOLVD = 5

    Image or sequence frame loaded and plate solved

  RGB = 6

    RGB image loaded

  RGBPLTSOLVD = 7

    RGB image or sequence frame loaded and plate solved

  SEQ = 8

    Sequence loaded

class sirilpy.enums.DistoType(value)

  Базовые классы: `IntEnum`

  Python equivalent of the Siril disto_source enum

  DISTO_FILE = 2

    Distortion from given file

  DISTO_FILES = 4

    Distortion stored in each file (true only from seq platesolve, even with no distortion, it will be checked upon reloading)

  DISTO_FILE_COMET = 5

    special for cometary alignement, to be detected by apply reg

  DISTO_IMAGE = 1

    Distortion from current image

  DISTO_MASTER = 3

    Distortion from master files

  DISTO_UNDEF = 0

    No distortion

class sirilpy.enums.ImageType(value)

  Базовые классы: `IntEnum`

  enum representing image functional types

  BIAS = 4
  DARK = 2
  FLAT = 3
  LIGHT = 1
  UNKNOWN = 0

class sirilpy.enums.LogColor(value)

  Базовые классы: `IntEnum`

  Defines colors available for use with `SirilInterface.log()` For consistency `LogColor.Default` should be used for normal messages, `LogColor.Red` should be used for error messages, `LogColor.Salmon` should be used for warning messages, LogColor.Green should be used for completion notifications, and `LogColor.Blue` should be used for technical messages such as equations, coefficients etc.

  BLUE = 4
  DEFAULT = 0
  GREEN = 3
  RED = 1
  SALMON = 2

class sirilpy.enums.PlotType(value)

  Базовые классы: `IntEnum`

  Enumeration of available plot types for visualizing data series.

  HYPHENS = 2
  LINES = 3
  LINESHYPHENS = 6
  LINESMARKS = 5
  LINESPOINTS = 4
  MARKS = 1
  POINTS = 0

class sirilpy.enums.STFType(value)

  Базовые классы: `IntEnum`

  enum representing STF types

  ASINH_DISPLAY = 4
  AUTOSTRETCH_DISPLAY = 5
  HISTEQ_DISPLAY = 6
  LINEAR_DISPLAY = 0
  LOG_DISPLAY = 1
  SQRT_DISPLAY = 2
  SQUARED_DISPLAY = 3

class sirilpy.enums.SequenceType(value)

  Базовые классы: `IntEnum`

  Python equivalent of the Siril sequence_type enum

  SEQ_AVI = 3
  SEQ_FITSEQ = 2
  SEQ_INTERNAL = 4
  SEQ_REGULAR = 0
  SEQ_SER = 1

class sirilpy.enums.SirilVport

  Базовые классы: `object`

  Defines the Siril viewports

  BLUE = 2
  GREEN = 1
  MONO = 0
  RED = 0
  RGB = 3

class sirilpy.enums.SlidersMode(value)

  Базовые классы: `IntEnum`

  MINMAX = 1
  MIPSLOHI = 0
  USER = 2

class sirilpy.enums.StarProfile(value)

  Базовые классы: `IntEnum`

  Python equivalent of the Siril starprofile enum. Used to identify the type of fit used to model a star in the image. Note that MOFFAT_FIXED is currently not used in Siril, but is reserved for future use for Moffat stars modelled with a fixed beta parameter

  GAUSSIAN = 0
  MOFFAT = 1
  MOFFAT_FIXED = 2

### Sirilpy Plotting

This submodule provides classes and method to access the native Siril plotting functionality. Of course, you can also use matplotlib but this submodule provides access to the same plotting capabilities as used internally within Siril for a more seamless result. All its members are made available at the module root level, there is no need to import models separately.

Once populated, the PlotData object can be plotted using `SirilInterface.xy_plot()`.

Plot submodule for Siril, providing classes for plot data representation and serialization. This submodule enables users to create and configure various types of plots with customizable appearance and error bars.

class sirilpy.plot.PlotData(title='Data Plot', xlabel='X', ylabel='Y', savename='plot', show_legend=True, datamin=None, datamax=None)

  Базовые классы: `object`

  Metadata container for plot configuration. The actual series data are held in SeriesData objects and can be added using the Class methods add_series or add_series_obj after initialization of the PlotData.

  Members:

    title: Plot title xlabel: X-axis label ylabel: Y-axis label savename: Save filename (extension is added automatically) show_legend: bool indicating whether to show legend datamin: List [xmin, ymin] forcing the bottom left coordinate to show. If omitted, the range is set to the data range. datamax: List [xmax, ymax] forcing the top right coordinate to show. If omitted, the range is set to the data range.

  classmethod serialize(plot_data)

    Serialize plot data for shared memory transfer using network byte order.

    Параметры:

      plot_data (`PlotData`) -- PlotData object containing plot configuration

    Тип результата:

      `Tuple`[`bytes`, `int`]

    Результат:

      Tuple of serialized bytes and total length

  add_series(x_coords, y_coords, label=None, plot_type=PlotType.LINES, n_error=None, p_error=None)

    Add a new series to the plot metadata.

    Результат:

      the created SeriesData object for further manipulation if needed.

    Тип результата:

      SeriesData

  add_series_obj(series)

    Add a pre-created SeriesData object to the plot metadata.

    Returns: None

    Тип результата:

      `None`

class sirilpy.plot.SeriesData(x_coords, y_coords, label=None, plot_type=PlotType.LINES, n_error=None, p_error=None)

  Базовые классы: `object`

  Represents a single data series for plotting.

  Members:

    x_coords: Either a List[float] or a np.ndarray containing the values for the x coordinates for this series

    y_coords: Either a List[float] or a np.ndarray containing the values for the y coordinates for this series

    label: A str containing a label for the series (shown in the plot legend)

    plot_type: a PlotType setting the type of marks to use

    n_error: Either a List[float] or a np.ndarray containing values for the y-axis negative errors for this series

    p_error: Either a List[float] or a np.ndarray containing values for the y-axis positive errors for this series

### Sirilpy Utility Methods

This submodule provides utility methods for use in Siril python scripts. The most important is `ensure_installed()` but there are also methods such as `download_with_progress()` which provides a highly robust method for downloading large files with good error recovery through a retries and resume mechanism.

Utility module for Siril Python interface providing helper functions for file operations, package management, and standard I/O control to support Siril's scripting capabilities.

class sirilpy.utility.SuppressedStderr

  Базовые классы: `object`

  This context manager allows suppression of the script's stderr, which can be useful if you are using module functions that are known to produce warnings that you want to avoid distracting the user with, such as FutureWarnings of features that have become deprecated but are in a dependency rather than your own code. The class should be used sparingly and should not be used to hide evidence of bad code.

class sirilpy.utility.SuppressedStdout

  Базовые классы: `object`

  This context manager allows suppression of the script's stdout, which can be useful to avoid flooding the log with stdout messages from an excessively verbose module used in the script.

  Пример

      import sirilpy as s
      siril = s.SirilInterface()
      print("This message will appear in the Siril log")
      with s.SuppressedStdout():
          print("This message will not appear")
      print("This message will appear again")

sirilpy.utility.check_module_version(requires=None)

  Check the version of the Siril module is sufficient to support the script. This is not mandatory if you are only using classes, methods etc. that are provided in the initial public release, but if you rely on methods that are noted int he API documentation as having been added at a particular version of the module then you must check the running sirilpy module supports your script by calling this function.

  Siril will not show scripts with unsatisfied check_module_version() calls in the repository list in 'Get Scripts', so if you want a function that enables different code paths for different versions you should use needs_module_version() instead.

  Параметры:

    requires (str) -- A version format specifier string following the same format used by pip, i.e. it may contain '==1.2', '!=3.4', '>5.6', '>=7.8', or a combination such as '>=1.2,<3.4'

  Результат:

    True if requires = None or if the available sirilpy module version satisfies the version specifier, otherwise False

  Исключение:

    ValueError -- if requires is an invalid version specifier.

sirilpy.utility.download_with_progress(siril, url, file_path, max_retries=3, retry_delay=5, resume=True)

  Robust file download method with native Siril progress tracking and error handling using retries and a resume mechanism.

  Тип результата:

    `bool`

sirilpy.utility.ensure_installed(*packages, version_constraints=None, reinstall=False)

  Ensures that the specified package(s) are installed and meet optional version constraints.

  Параметры:

    - *packages (str or List[str]) -- Name(s) of the package(s) to ensure are installed.

    - version_constraints (str or List[str], optional) -- Version constraint string(s) (e.g. ">=1.5", "==2.0"). Can be a single constraint or a list matching packages.

    - reinstall (bool, optional) -- Forces reinstallation. Defaults to False.

  Результат:

    True if all packages are successfully installed or already meet constraints.

  Тип результата:

    bool

  Исключение:

    - SirilError -- If package installation fails.

    - ValueError -- If a different number of constraints is provided to the number of packages to be installed.

    - TimeoutError -- If pip fails with an apparent timeout.

    - SystemExit -- If a package that is already imported needs to be reinstalled with a different version.

sirilpy.utility.human_readable_size(bytes_size)

  Convert bytes to human-readable format.

  Параметры:

    bytes_size (int) -- Size in bytes

  Результат:

    Formatted size with appropriate unit (B, KB, MB, GB, TB)

  Тип результата:

    str

  Исключение:

    TypeError -- on incorrect input type

sirilpy.utility.needs_module_version(requires=None)

  Check the version of the Siril module is sufficient to support a feature. This allows writing optional code paths for different sirilpy API levels. The function works the same as check_module_version() but the presence of an unsatisfied needs_module_version() call will not prevent a script from showing up in the list in 'Get Scripts'

  Параметры:

    requires (str) -- A version format specifier string following the same format used by pip, i.e. it may contain '==1.2', '!=3.4', '>5.6', '>=7.8', or a combination such as '>=1.2,<3.4'

  Результат:

    True if requires = None or if the available sirilpy module version satisfies the version specifier, otherwise False

  Исключение:

    ValueError -- if requires is an invalid version specifier.

sirilpy.utility.parse_fits_header(header_text, include_comments=False)

  Parse FITS header from text content into a dictionary with support for HIERARCH and CONTINUE keywords.

  Handles Siril's newline-separated FITS header format and converts it to a dictionary compatible with astropy.wcs.WCS. Supports extended FITS keywords via HIERARCH and long string values via CONTINUE.

  Параметры:

    - header_text (`str`) -- Raw header string with header cards separated by newlines. Expected format: "KEYWORD = value / comment"

    - include_comments (`bool`) -- If True, includes COMMENT and HISTORY cards in the output. If False (default), these cards are skipped.

  Тип результата:

    `Dict`[`str`, `Union`[`str`, `int`, `float`, `bool`]]

  Результат:

    Dictionary mapping FITS header keywords (str) to their parsed values. Values are converted to appropriate Python types: - 'T'/'F' -> bool - Quoted strings -> str (quotes removed, with CONTINUE support for long strings) - Numeric strings -> int or float - Everything else -> str - COMMENT/HISTORY cards -> str (content after keyword, if include_comments=True) - HIERARCH keywords -> str (full hierarchical keyword preserved)

  Заметки

  - Filters out warning messages, tracebacks, and other non-header content

  - By default ignores COMMENT and HISTORY cards (set include_comments=True to include)

  - Skips malformed cards or invalid keywords

  - Standard keywords must be ≤8 characters and alphanumeric (plus underscore/hyphen)

  - HIERARCH keywords can be longer and contain spaces/dots

  - CONTINUE cards are automatically merged with the previous string value

  - Comments after '/' are ignored for regular cards

  Пример

      >>> header_str = '''SIMPLE  = T / file conforms to FITS standard
      ... BITPIX  = -32 / bits per pixel
      ... HIERARCH ESO DET CHIP1 NAME = 'CCD #1' / detector name
      ... LONGSTR = 'This is a very long string that needs to be '
      ... CONTINUE  'continued on the next line'
      ... COMMENT Test comment'''
      >>> result = parse_fits_header(header_str)
      >>> result['SIMPLE']
      True
      >>> result['BITPIX']
      -32
      >>> result['HIERARCH ESO DET CHIP1 NAME']
      'CCD #1'
      >>> result['LONGSTR']
      'This is a very long string that needs to be continued on the next line'

sirilpy.utility.safe_subprocess_Popen(command, **kwargs)

  Provides a safe alternative to subprocess.Popen, accounting for the fact that a subprocess command line may be run from a flatpak environment and require use of flatpak-spawn to ensure it runs outside the sandbox, avoiding issues with subprocesses that rely on environment variables and so on. safe_subprocess_Popen is a drop-in replacement for subprocess.Popen for use in Siril scripts.

  Introduced in sirilpy version 1.0.3

sirilpy.utility.safe_subprocess_run(command, **kwargs)

  Provides a safe alternative to subprocess.Popen, accounting for the fact that a subprocess command line may be run from a flatpak environment and require use of flatpak-spawn to ensure it runs outside the sandbox, avoiding issues with subprocesses that rely on environment variables and so on. safe_subprocess_run is a drop-in replacement for subprocess.run for use in Siril scripts.

  Introduced in sirilpy version 1.0.3

sirilpy.utility.truncate_utf8(data, max_bytes)

  Truncates utf8 input. Accepts either bytes or str as input and returns data in the same format as the input.

  Параметры:

    data (bytes or str) -- The data to be truncated

  Результат:

    The truncated data

  Тип результата:

    bytes or str

  Исключение:

    TypeError -- if the input was not bytes or str

sirilpy.utility.uninstall_package(package_name)

  Uninstall a package using pip, streaming output to stdout. Introduced in sirilpy 1.0.15.

  Параметры:

    package_name (str) -- Name of the package to uninstall.

  Исключение:

    subprocess.CalledProcessError -- If pip uninstallation fails.

### Sirilpy GPU Helpers

This submodule provides helper classes to make it easier to manage GPU framework packages such as ONNX, Torch etc. for use in Siril python scripts. The landscape of these frameworks' support for different GPU architectures on different OSes is rapidly developing and the helpers aim to suggest reliable packages / configurations. This means that the proposed configurations may in some cases be conservative: the aim is to provide a good and robust level of GPU support for as many users as possible in an automated python environment rather than the absolute best, but perhaps fragile, optimisation.

GPU helper module for Siril Python interface providing helper functions for detection, installation and testing of GPU-related modules. Initial scope is ONNX, torch and jax

class sirilpy.gpuhelper.JaxHelper

  Базовые классы: `object`

  A helper class for detecting, installing, and testing JAX with appropriate hardware acceleration.

  This class automatically detects the system configuration and installs the correct JAX variant (CPU, CUDA, ROCm, etc.) based on available hardware.

  ensure_jax()

    Wrapper for install_jax() that only installs it if needed, with negligible overhead if it is already installed.

    Тип результата:

      `bool`

  get_recommended_backend()

    Determine the recommended JAX backend and installation parameters. When multiple GPUs are present, uses priority system to choose the best one.

    JAX has limited platform support: - NVIDIA: CUDA on Linux (Windows support experimental/limited) - AMD ROCm: Linux only - Apple Silicon: Metal backend - Intel: Experimental plugin with dependency issues

    Тип результата:

      `Dict`[`str`, `Any`]

    Результат:

      Dict with 'backend', 'packages', 'extra_index_url' keys

  install_jax(force_variant=None, version_constraint=None, force_reinstall=False)

    Install JAX with the appropriate variant for the detected hardware. Use this instead of ensure_installed() to ensure that jax is installed correctly for the given hardware / OS

    Параметры:

      - force_variant (`Optional`[`str`]) -- Override auto-detection with specific variant (e.g., 'jax[cpu]')

      - version_constraint (`Optional`[`str`]) -- Version constraint string (e.g., '>=0.4.0')

    force_reinstall: Forces a reinstallation

    Результат:

      True if installation succeeded, False otherwise

    Тип результата:

      bool

  is_jax_installed()

    Check if PyTorch is installed without importing it.

    Тип результата:

      `bool`

  status()

    Prints the current status of the Jax Helper class in regard to its support for different OSes, GPUs. The world of heterogenous computing is developing rapidly and while support for some of the frameworks for which helpers are available is not yet universally available, hopefully it will improve in the future.

  test_jax()

    Test JAX functionality and return execution provider.

    Результат:

      the bool returned is True if jax works or False if it does not, and the str is "gpu" if JAX is using GPU, "cpu" if using CPU or None if

    Тип результата:

      Tuple[bool,str]

    Исключение:

      - RuntimeError -- If JAX computation fails or accuracy check fails

      - ImportError -- If JAX is not installed

  uninstall_jax(dry_run=False)

    Detect and uninstall any existing JAX-related packages.

    This is useful when you need to clean up a problematic JAX installation before installing a different variant (e.g., falling back from GPU to CPU).

    Параметры:

      dry_run (`bool`) -- If True, only detect packages without uninstalling them

    Тип результата:

      `Dict`[`str`, `Any`]

    Результат:

      Dict containing information about detected and uninstalled packages

class sirilpy.gpuhelper.ONNXHelper

  Базовые классы: `object`

  A class to handle detection and installation of the appropriate ONNX Runtime package based on the system hardware and configuration.

  Example usage (this should be used instead of `sirilpy.ensure_installed("onnxruntime")` to install the correct package for the user's system.)

      oh = sirilpy.ONNXHelper()
      oh.ensure_onnxruntime()

  ensure_onnxruntime()

    Wrapper for install_onnxruntime() that only installs it if needed, with negligible overhead if it is already installed.

    Тип результата:

      `bool`

  get_execution_providers_ordered(ai_gpu_acceleration=True, force_check=False)

    Get execution providers ordered by priority. This function returns a list of available ONNX Runtime execution providers in a reasonable order of priority, covering major GPU platforms: The CPU provider is always included as the final fallback option.

    Параметры:

      - ai_gpu_acceleration (bool) -- Whether to include GPU acceleration providers. Defaults to True.

      - force_check (bool) -- Whether to force re-checking even if a cached config exists. Defaults to False.

    Результат:

      Ordered list of available execution providers.

    Тип результата:

      list

  get_recommended_backend()

    Determine the recommended ONNX Runtime backend based on hardware. When multiple GPUs are present, uses priority system to choose the best one.

    Note: ONNX Runtime has platform-specific backend support: - Windows: DirectML for all GPUs (NVIDIA, AMD, Intel) - more reliable, no driver dependencies - Linux: CUDA for NVIDIA, CPU for AMD (no ROCm support yet), OpenVINO for Intel

    Результат:

      'gpu', 'directml', 'openvino', 'coreml', or 'cpu'

    Тип результата:

      Backend name

  import_onnxruntime()

    Import onnxruntime, add it to the global dict, test if it's built against CUDA and if so preload the CUDA and CUDNN libraries to improve the chances of finding them if Torch[CUDA] happens to be installed.

  install_onnxruntime(force=False)

    Detect system configuration and install the appropriate ONNX Runtime package.

    Параметры:

      force -- bool: If True, force reinstallation even if onnxruntime is already installed.

    Результат:

      True if installation was successful or already installed, False otherwise.

    Тип результата:

      bool

    Исключение:

      TimooutError -- if a TimeoutError occurs in ensure_installed() - this avoids falling back to the CPU-only package purely because of network issues

  is_onnxruntime_installed()

    Check if any onnxruntime package is already installed and usable.

    Результат:

      (is_installed, package_name) where package_name could be

        'onnxruntime', 'onnxruntime-gpu', 'onnxruntime-silicon', etc.

    Тип результата:

      tuple

  run(session, model_path, output_names, input_feed, run_options=None, return_first_output=False)

    Run inference with automatic CPU fallback if the session fails.

    Параметры:

      - session -- The ONNX runtime inference session

      - model_path (str) -- Path to the ONNX model file (needed for CPU fallback)

      - output_names -- Names of the outputs to compute, or None for all outputs

      - input_feed -- Dictionary mapping input names to input tensors

      - run_options -- Optional run options for the inference session

      - return_first_output (bool) -- If True, return only the first output instead of the full list

    Результат:

      (result, session) where result is the inference output (or first output if return_first_output=True) and

        session is the (potentially updated) inference session

    Тип результата:

      tuple

  status()

    Prints the current status of the ONNX Helper class in regard to its support for different OSes, GPUs. The world of heterogenous computing is developing rapidly and while support for some of the frameworks for which helpers are available is not yet universally available, hopefully it will improve in the future.

  test_onnxruntime(ort=None)

    Test an imported onnxruntime.

    Args:install_torch(cuda_version=cuda_version)
      ort: The ONNX runtime module to test. If None, the method will

        attempt to import onnxruntime for the test.

    Результат:

      a list of confirmed working ONNXRuntime ExecutionProviders in priority order

    Тип результата:

      list

  uninstall_onnxruntime()

    Detects and uninstalls all variants of onnxruntime packages. Checks for any package starting with 'onnxruntime'.

    Результат:

      A list of uninstalled packages

    Тип результата:

      list

class sirilpy.gpuhelper.TorchHelper

  Базовые классы: `object`

  Helper class for PyTorch detection, installation and testing.

  ensure_torch(cuda_version=None)

    Ensure PyTorch is installed with the appropriate backend.

    Параметры:

      cuda_version (`Optional`[`str`]) -- Optional CUDA version to override auto-detection (e.g., 'cu118', 'cu126', 'cu128')

    Тип результата:

      `bool`

    Returns: True on success, False on failure

  get_recommended_backend()

    Determine the recommended PyTorch backend and installation parameters. When multiple GPUs are present, uses priority system to choose the best one.

    PyTorch has good cross-platform support: - NVIDIA: CUDA on all platforms - AMD ROCm-compatible: ROCm on Linux AND Windows - Intel Arc: XPU backend - Apple Silicon: MPS backend

    Тип результата:

      `Dict`[`str`, `Any`]

    Результат:

      Dict with 'backend', 'cuda_version', 'extra_index_url', 'packages' keys

  get_torch_device(use_gpu=True)

    Obtains a suitable torch device based on the capabilities of the installed torch package. if use_gpu is False, torch.device("cpu") will be returned. This function is available since sirilpy 1.0.17

    Тип результата:

      torch.device

  install_torch(cuda_version=None, extra_index_url=None, packages=None)

    Install PyTorch with specified configuration.

    Параметры:

      - cuda_version (`Optional`[`str`]) -- CUDA version (e.g., 'cu118', 'cu126', 'cu128')

      - extra_index_url (`Optional`[`str`]) -- PyTorch wheel repository URL

      - packages (`Optional`[`list`]) -- List of packages to install

  is_torch_installed()

    Check if PyTorch is installed without importing it.

    Тип результата:

      `bool`

  status()

    Prints the current status of the Torch Helper class in regard to its support for different OSes, GPUs. The world of heterogenous computing is developing rapidly and while support for some of the frameworks for which helpers are available is not yet universally available, hopefully it will improve in the future.

  test_torch()

    Run tests to verify that torch is installed and runs correctly.

  uninstall_torch()

    Detects and uninstalls PyTorch and related packages. Checks for torch ecosystem packages. :returns: A list of uninstalled packages :rtype: list

sirilpy.gpuhelper.detect_gpu_capabilities()

  Comprehensive GPU detection for all supported hardware.

  Тип результата:

    `Dict`[`str`, `Any`]

  Результат:

    Dict containing detected hardware information and recommendations for PyTorch, ONNX, and JAX backends.

sirilpy.gpuhelper.get_gpu_detection_report()

  Generate a comprehensive GPU detection report suitable for display in a GUI.

  Тип результата:

    `Dict`[`str`, `Any`]

  Результат:

    Dict containing all detected hardware and recommended configurations for ONNX, PyTorch, and JAX, including GPU priority information.

### Sirilpy TK GUI

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

This submodule is now deprecated. There are no longer any scripts in the repository that use tksiril and submissions to the siril-scripts repository will no longer be accepted if they use tksiril. You should migrate any personal scripts to use PyQt6 instead. The tksiril submodule will be removed in a future version of Siril.

This submodule provides some helper functions to support consistent GUI implementation using `tkinter`. It must be explicitly imported in order to be used. Note that when writing TKinter GUIs you should import ThemedTK from the ttkthemes module, because the bare TKinter UI shows up poorly on MacOS. ThemedTK and the methods available in the `tksiril` module help to provide a consistent look for Siril script GUIs on all platforms.

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

Linux users running a Wayland desktop should note that Tkinter does not yet have support for pure Wayland. In order to use python scripts utilising Tkinter GUIs you must have the XWayland compatibility package installed. If you don't, you will see errors about DISPLAY being unavailable.

    from sirilpy import tksiril

TKsiril submodule for Siril, providing utility methods to achieve consistent script GUI appearance using the TKinter toolkit.

DEPRECATION WARNING: the tksiril submodule is deprecated from Siril 1.4.3. It will remain part of sirilpy throughout the stable 1.4 series but has been removed from master and will therefore disappear with the release of Siril 1.6.0.

No new scripts will be accepted in the siril-scripts repository if they use the tksiril submodule.

class sirilpy.tksiril.ScrollableFrame(container, *args, **kwargs)

  Базовые классы: `Frame`

  A scrollable frame widget that can contain other widgets.

  This class creates a frame with vertical scrolling capability using a Canvas widget and Scrollbar. It supports both scrollbar and mouse wheel scrolling across all platforms (Windows, Mac, Linux).

  Usage:

    scrollable = ScrollableFrame(parent) scrollable.pack(fill="both", expand=True)

    # Add widgets to scrollable.scrollable_frame label = ttk.Label(scrollable.scrollable_frame, text="Hello") label.pack()

    # Optionally bind mouse wheel to child widgets scrollable.add_mousewheel_binding(label)

  add_mousewheel_binding(widget=None)

    Add mouse wheel scrolling support to a widget and its children.

    This method recursively binds mouse wheel events to the specified widget and all its child widgets. It uses platform detection to apply the appropriate event bindings for each operating system.

    Параметры:

      widget -- The tkinter widget to bind mouse wheel events to. The binding will be applied recursively to all children. If no widget is specified it will default to the ScrollableFrame itself.

    Пример

    # Add a complex widget to the scrollable frame frame = ttk.Frame(scrollable.scrollable_frame) label = ttk.Label(frame, text="Hello") button = ttk.Button(frame, text="Click me")

    # Bind mouse wheel to the entire widget hierarchy scrollable.add_mousewheel_binding(frame)

sirilpy.tksiril.create_tooltip(widget, text, wrap_length=250)

  Create a tooltip for a given Tkinter widget.

  Параметры:

    - widget (tk.Widget) -- The widget to attach the tooltip to

    - text (str) -- The tooltip text to display

    - max_width (int, optional) -- Maximum width of the tooltip. Defaults to 300.

    - wrap_length (int, optional) -- Length at which text wraps. Defaults to 250.

  Исключение:

    TypeError -- If text is not a string or the provided widget is not a valid Tkinter widget

sirilpy.tksiril.elevate(root)

  Raises the Tk root window to the top of the window stack. Useful after calls to sirilpy methods that present child windows of the main Siril window such as info_messagebox().

  NOTE: For this to work on KDE desktops, focus-stealing prevention must be disabled.

sirilpy.tksiril.match_theme_to_siril(themed_tk, s, on_top=False)

  Match the Tkinter theme to the Siril configuration and set the script dialog to have topmost status, meaning that it will remain in front of other non-topmost windows.

  Параметры:

    - s (SirilInterface) -- sirilpy.SirilInterface class to provide the Siril theme (light or dark) to match

    - themed_tk (ThemedTk) -- ThemedTk instance to apply the theme to

    - on_top -- whether the script window should be always on top of other windows

  Исключение:

    - TypeError -- If input arguments are of incorrect type

    - ValueError -- If the theme configuration is not 0 or 1

    - AttributeError -- If required methods are not available

    - RuntimeError -- If there are errors installing or setting the theme

sirilpy.tksiril.standard_style()

  Provide a standardised ttk style to allow consistent visual appearance between different Siril python scripts.

  Параметры:

    none

  Исключение:

    SirilError -- If the style creation or configuration fails

### Sirilpy Tkfilebrowser

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

This submodule is now deprecated. There are no longer any scripts in the repository that use tkfilebrowser and submissions to the siril-scripts repository will no longer be accepted if they use tkfilebrowser. You should migrate any personal scripts to use PyQt6 instead. The tkfilebrowser submodule will be removed in a future version of Siril.

This submodule is a fork of tkfilebrowser. The fork addresses a bug in the original code where duplicate device entries could cause errors in generating the filebrowser, and ensures the code can be mantained as the upstream package was last updated several years ago.

Documentation for tkfilebrowser can be found here. Note that some compatibility improvements have been made in the version included in sirilpy:

- `sirilpy.tkfilebrowser.askdirectory()` has been added as an alias for `tkfilebrowser.askopendirname()` to maintain compatibility with `tk.filedialog.askdirectory()`.

- In filefilter specifications `tkfilebrowser` requires multiple extensions to be provided separated by | whereas filedialog requires space-separated extensions: `sirilpy.tkfilebrowser` has been adapted to accept either format.

This submodule serves the sole purpose of being a drop-in replacement for the standard Tk filedialog on Linux, as the standard Tk filedialog is horrible on Linux. It can be used as a replacement like this:

    if sys.platform.startswith("linux"):
        import sirilpy.tkfilebrowser as filedialog
    else:
        from tkinter import filedialog

### Sirilpy Exceptions

This submodule provides some customized exceptions to support Siril-specific error handling. All its members are made available at the module root level, there is no need to import it separately.

The sirilpy exceptions policy is as follows:

- At a low level within sirilpy methods a variety of exception types may be raised (those shown below as well as exceptions raised from other modules such as struct.error). Internal exception types are all descended from SirilError and may therefore be caught using except SirilError. Other exception types are re-raised as a SirilError to show the method where they were generated, but the underlying error can still be seen either in a traceback or using the Exception `__cause__` property.

- Some error types are recoverable errors such as NoImageError, NoSequenceError and CommandError. These exception types can be handled at script level (for example by showing a warning dialog reminding the user to load an image).

- Other error types are typically not recoverable, such as SharedMemoryError or SirilConnectionError.

Exceptions submodule for Siril, providing exception classes for use in exception raising within the sirilpy module.

exception sirilpy.exceptions.CommandError(message='Command execution failed', status_code=CommandStatus.CMD_GENERIC_ERROR)

  Базовые классы: `SirilError`

  Raised when a command sent to Siril fails to execute properly. (Note: 'command' in this case refers to internal commands sent from the python module to the Siril python handler, not Siril commands of the type that might be entered in the Siril command entry.) The full set of command status codes is shown in the CommandStatus enum. These exceptions are often recoverable and should therefore be handled before generically handling other SirilError types that are considered fatal.

  status_code

    (CommandStatus) Indicates the status code returned by the Siril command. This may be used in error handlers to allow scripts to handle some types of command error and continue (e.g. by prompting a user intervention).

exception sirilpy.exceptions.DataError(message='Error handling data')

  Базовые классы: `SirilError`

  Raised when there are problems with data handling. This includes cases like:

  - Invalid image data

  - Data conversion errors

  - Memory allocation failures

  - Buffer overflows

exception sirilpy.exceptions.ImageDialogOpenError(message='Siril image dialog is open')

  Базовые классы: `SirilError`

  Exception raised when an image processing dialog is open.

exception sirilpy.exceptions.MouseModeError(message='Siril mouse mode error')

  Базовые классы: `SirilError`

  Exception raised when Siril is in the wrong mouse mode.

exception sirilpy.exceptions.NoImageError(message='No Siril image loaded')

  Базовые классы: `SirilError`

  Raised when a method requires an image to be loaded but no image is loaded. These exceptions are often recoverable and should therefore be handled before generically handling other SirilError types that are considered fatal.

exception sirilpy.exceptions.NoSequenceError(message='No Siril sequence loaded')

  Базовые классы: `SirilError`

  Raised when a method requires a sequence to be loaded but no sequence is loaded. These exceptions are often recoverable and should therefore be handled before generically handling other SirilError types that are considered fatal.

exception sirilpy.exceptions.ProcessingThreadBusyError(message='Siril processing thread is busy')

  Базовые классы: `SirilError`

  Exception raised when the processing thread is already in use.

exception sirilpy.exceptions.SharedMemoryError(message='Siril shared memory error')

  Базовые классы: `SirilError`

  Raised when there are problems connecting to or communicating with Siril using shared memory.

  SharedMemoryError is not raised directly but will be wrapped in a SirilError. It should generally be regarded as fatal and the script should shut down gracefully if possible or just stop.

exception sirilpy.exceptions.SirilConnectionError(message='Failed to connect to Siril')

  Базовые классы: `SirilError`

  Raised when there are problems connecting to or communicating with Siril. This includes cases like:

  - Siril not running

  - Socket connection failures

  - Communication protocol errors

  - Unexpected disconnections

  SirilConnectionError is not raised directly but will be wrapped in a SirilError. It should generally be regarded as fatal and the script should shut down gracefully if possible or just stop.

exception sirilpy.exceptions.SirilError(message='An error occurred')

  Базовые классы: `Exception`

  Base exception class for all Siril-related errors.

  All other Siril exceptions inherit from this class, making it easy to catch any Siril-related error with a single except clause.

## Как сообщать о проблемах

Если, несмотря на изучение документации и руководств, вы столкнулись со странным поведением, эта страница подскажет вам, как действовать дальше. Имейте в виду, что если что-то не работает, это не обязательно означает, что есть ошибка. Чаще всего проблемы возникают из-за неправильного использования. В таких случаях крайне важно предоставить точную информацию о проблеме, которая поможет нам определить, является ли это ошибкой или недоразумением. Обратитесь за рекомендациями к разделу о том, как отправить нам полезную информацию. Действительно, простое заявление, что это не работает, не поможет нам найти решение. Мы не предсказатели, и нам нужна информация, чтобы определить проблему и найти решение. Поэтому важно, чтобы вы рассказали нам, что вы делали в момент возникновения проблемы, какую операционную систему вы используете, какую версию Siril вы используете и, самое главное, журнал выполнения программы!

### Проверьте журналы изменений и системы отслеживания ошибок

Прежде всего, если вы думаете, что нашли ошибку в Siril, о ней уже могли сообщить (иногда буквально десятки раз). Поэтому мы просим вас сначала проверить, например, просмотрев журналы изменений или замечания <https://gitlab.com/free-astro/siril/-/issues>, которые уже были открыты и даже закрыты.

### Предоставьте нам полезную информацию

Как уже упоминалось во введении, нам нужна полезная информация, которая поможет решить проблему:

1. Какую операционную систему вы используете? Поскольку Siril может вести себя по-разному в Windows, Linux или macOS, нам необходимо знать эту информацию. Пожалуйста, будьте максимально точны.

2. Какую версию Siril вы используете? И как вы ее получили? Пакет скачали на сайте? Через третье лицо? Скомпилировали сами? И здесь, пожалуйста, будьте максимально точны.

3. Иногда полезно делиться скриншотами. Однако, пожалуйста, НЕ ДЕЛАЙТЕ СВОИ СКРИНШОТЫ НА СМАРТФОН — это неразборчиво. Ваша операционная система умеет делать скриншоты очень легко (Google поможет вам в этом), и Siril также предлагает такую функцию (кнопка с камерой). Наконец, желаемые форматы — это форматы изображений: `jpg`, `bmp` или `png`, но ни в коем случае не `pdf`.

4. Отправьте нам журналы выполнения программы (логи). В идеале мы предпочитаем логи на английском языке! Просто перейдите в настройки Siril и измените язык на английский на вкладке Интерфейс. Кроме того, существует два типа журналов: один отображается в консоли Siril, который описывает шаги, выполняемые программным обеспечением, и может помочь нам в отладке, и внутренние журналы, которые видны при запуске Siril из командной строки:

   - Первые очень полезны в большинстве случаев и могут быть экспортированы очень легко с помощью кнопки в правом нижнем углу. Это создает файл, который можно легко отправить нам.

   - Однако, когда программное обеспечение зависает (т.е. внезапно закрывается без предупреждения), вам нужно запустить Siril из командной строки, пытаясь воспроизвести сбой и получить журналы. В этом случае метод зависит от операционной системы.

     - Microsoft Windows: Откройте окно cmd (введите `cmd` в строке поиска Windows) и введите следующее:

           "C:\Program Files\Siril\bin\siril.exe" 2>&1 >output.log

       Это сохранит файл output.log в папке, в которой был запущено окно командной строки (в большинстве случаев в папке `%USERPROFILE%`).

     - macOS: Если вы установили Siril в папку Applications, как это рекомендуется, то для начала откройте приложение Terminal из папки Utilities в разделе Applications, затем скопируйте и вставьте следующую строку:

           /Applications/Siril.app/Contents/MacOS/siril > ~/Desktop/output.log 2>&1

       После сбоя журнал выполнения программы будет доступен на рабочем столе в файле `output.log`.

     - GNU/Linux: Просто запустите Siril в терминале. Обычно файл программы находится в переменной `$PATH`, в этом случае введите:

           siril > output.log 2>&1

       это все, что вам нужно, чтобы перенаправить логи в файл `output.log`. Это сохранит файл output.log в папке, где был запущен терминал

5. Отправьте нам свою фотографию. Если вы находите свое изображение странным, не стесняйтесь поделиться им с нами, обычно в формате FITS. Это всегда интереснее, чем скриншот. Для этого вам нужно воспользоваться большим файлообменным сервисом. Их много, и мы можем предложить WeTransfer, например. В этом случае загрузите свои данные на WeTransfer и получите ссылку для скачивания, чтобы поделиться ею.

### Как с нами связаться?

Связаться с нами и сообщить об ошибке можно несколькими способами. Самый простой — найти нас на форуме. Но также можно открыть запрос в нашем репозитарии gitlab. В этом случае сначала проверьте, не был ли открыт такой же запрос. Возможно, он даже был закрыт, так как проблема была решена, в этом случае в Changelog будет показано краткое описание с номером запроса. Чтобы просмотреть запрос (даже закрытый) и убедиться, что вы столкнулись с той же проблемой, перейдите по адресу https://gitlab.com/free-astro/siril/-/issues/XXXX, указав вместо XXXX номера запроса.

Совет

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