Дарки, флеты, биасы, оффсеты и прочая калибровочная магия

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

Ожидания и суровая реальность

Предположим, есть в ночном небе далёкая-далёкая туманность "Весёлый рептилоид".
Что же получится на снимке при съёмке этого объекта?
Для простоты будем использовать 8битную камеру с ч/б матрицей 10х10 пикселей (256 градаций серого, без байеровских цветных фильтров)
Будем считать, что съёмка производилась в абсолютно тёмную ночь сквозь совершенно прозрачную и несветящуюся атмосферу.

ОжиданиеРеальность

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

Загрязнение сигнала

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

Неравномерность приёма сигнала по всему полю кадра

Первое, что встаёт на пути сигнала к матрице фотоаппарата - различная оптика, светофильтры и защитное стекло самой матрицы.
Пылинки на матрице, грязь на объективе, неравномерности в светопропускании фильтров,
винъетирование оптики и прочие неприятности снижают уровень поступающего сигнала на определённых участках кадра.
То есть сигнал попадает на матрицу уже "испорченым".
Для компенсации таких проблем служат кадры плоского поля, они же флеты (flat).
Флеты представляют собой снимки равномерно освещённой серой поверхности, на которой проявятся все недостатки.
Пыль на матрице
Способов съёмки флетов в сети описано немало - от софтбокса до рассветного неба.
Программа для калибровки, руководствуясь такой "картой", приведёт яркость всего поля снимка к одному уровню.
Чтобы ощутить всю мощь такого инструмента как флет, можно поэкспериментировать с обычными дневными снимками с винъетирующим широкоугольным объективом
и последующей калибровкой флетами (делением снимка на флет).

Темновой ток, тепловой шум

Это самая заметная проблема цифровых снимков. Чем выше температура, в которой пребывает матрица, тем больше на снимке этих проклятых разноцветных случайных пикселей.
При всех одинаковых параметрах съёмки (экспозиция, чувствительность, оптика), снимок летней ночью будет поразительно отличаться от снимка зимней морозной ночью по уровню шумов.
И эта проблема касается практически всей электроники. Недаром серьёзные научные детекторы, камеры и другие высокоточные устройства оборудованы мощным активным охлаждением
(например, с применением жидкого азота).
Шум матрицы
Как же избавиться от этой напасти без применения жидкого азота?
Совсем избавиться не получится, но значительно снизить уровень шумов на снимке можно с помощью так называемых темновых кадров, они же дарки (dark).
Дарки позволяют выяснить на каком уровне шумит пиксель
и вычесть это значение из значения сигнала соответствующего пикселя на исходном снимке.
Кстати, эти исходные снимки называются лайтами (light). Видимо, в противовес даркам, как иллюстрации самого большого недостатка цифровых матриц.
Дарки снимаются при точно таких же параметрах, как у лайтов (экспозиция, чувствительность, окружающая температура и т.п.), но с закрытым объективом.
Это позволяет запечатлеть шум, наиболее соответствующий шуму на исходных снимках.

Шумы считывания, шум дискретизации, ток смещения

Если представить себе гипотетическую матрицу, совершенно лишённую темновых токов, то снимок с закрытым объективом должен представлять собой полную черноту.
То есть значение яркости каждого пикселя должно быть равно нулю. Однако, несовершенство материалов, схемотехники и реального мира в целом
приводит к тому, что сигнал с матрицы принимается всегда, даже если фотоны не попадают на её фотоприёмники.
Попросту говоря, снимок ни при каких идеальных внешних условиях не получится совершенно чёрным.
На глазок он будет казаться чёрным, но на самом деле пиксели снимка будут слегка серыми, в разной степени.
То есть каждая матрица имеет почти постоянный сдвиг яркости в сторону повышения в виде слабого шума.
Шум считывания
Вроде бы нe такое сильное загрязнение (в примере оно даже преувеличено) и на одиночном кадре они роли не сыграют, но при сложении многих изображений (лайтов) они начнут проявляться. Кроме того, этим смещением загрязнены не только основные снимки, но и все остальные калибровочные кадры - дарки и флеты. В результате калибровки такими "грязными" кадрами неизбежно возникнут дополнительные искажения.
Чтобы выяснить "карту" смещений, снимают так называемые оффсеты (offset), они же биасы (bias), что и переводится как "смещение". Съёмка производится при тех же параметрах, что и основные снимки, но с закрытым объективом и c самой минимальной выдержкой.
В результате получатся темновые кадры, которые в идеале будут отражать только смещение, а тепловые шумы не успеют зафиксироваться.

Калибровка

В общем виде, калибровка представляет собой следующую формулу:

super_photo = (light - offset - dark) / flat
В чём её смысл?
  • Вычитание шумов: значение сигнала в лайте содержит в себе исходный сигнал + смещение + тепловой шум.
    Например, при реальном значении сигнала 30, смещении 5 и шуме 20, пиксель в лайте получит значение 55.
    Вычтем загрязнение и получим реальное значение - 30.
  • Корректировка яркостей пикселей по плоскому полю (флеты):
    Допустим, мы имеет два "пикселя" матрицы - чистый и внешне затемнённый пылинкой до 60% (40% света пропадает зря).
    Оба фотоприёмника условно получают сигнал уровня 30. Но при этом в лайте один пиксель получится со значением 30, а второй - с 18.
    Получив флет, мы узнаем, что коэффициент "пропускания" сигнала для первого пикселя будет равен 1, для второго - 0.6.
    Разделим значение каждого пикселя на коэффициент и получим выровненный сигнал ( 30/1=30 и 18/0.6=30)

Исходный снимок.
Вычитаем оффсеты.
Видим небольшое улучшение.
Вычитаем дарки.
Уже намного лучше, но неидеально.
Последний штрих - делим на флет.
Влияние пыли в левой части кадра устранено.

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

super_photo = (light - offset - (dark - offset)) / (flat - offset)
Если копать глубже, то флеты загрязнены ещё и своими собственными темновыми токами и если перфекционизм свербит,
можно наснимать ещё отдельных флет-дарков (или дарк-флетов) по той же технологии, что обычные дарки, и вычесть их из флетов. В результате формула примет вид:
super_photo = (light - offset - (dark - offset)) / (flat - offset - flat_dark)
Все эти процессы автоматизируют программы для обработки астрофото (и даже RAW-конвертеры), так что вручную ничего считать не нужно.
Главное - подготовить правильные калибровочные файлы, загрузить их, например, в Deep Sky Stacker (DSS) и тыкнуть в несколько кнопок.
А для комсомольцев и мутантов существует программа IRIS, в которой можно все операции совершать почти вручную, последовательно и с промежуточными файлами.
В общем, зная как работает калибровка, можно на свой вкус и цвет выбрать софт.

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

Мастер-файлы и количество калибровочных снимков

Мастер-файлы (мастер-дарк, мастер-оффсет, мастер-флет и т.п.) - это "склеенные" особым образом наборы соответствующих снимков.
Зачем они нужны? Почему нельзя использовать один оффсет, один дарк и один флет?
Проблема в том, что шумы изменяются во времени и в одиночных калибровочных кадрах они совсем не будут совпадать с шумом в лайте.
Чтобы эффективно провести калибровку, нужно наснимать много калибровок и статистически выяснить наиболее частое значение шума по каждому пикселю.
Чем больше снимков мы получим, тем точнее выясним это значение и с лучшим результатом провести калибровку.
Кроме того, шумы снижают динамический диапазон снимка и чем сильнее они это делают, тем сложнее отделить шум от полезного сигнала и,
следовательно, нужно точнее калибровать (больше калибровочных кадров)




Copyleft (C) Человечество. Все права принадлежат народу. Любое использование, кроме предъявления претензий к автору, допускается на свой страх и риск.