A A A A Автор Тема: Оптимальное сложение снимков + Программа FITStacker  (Прочитано 90289 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Юрий Торопин

  • *****
  • Сообщений: 3 959
  • Рейтинг: +239/-22
  • хочу в Намибию, Майданак, далее - везде :)
    • Skype - yuriy.toropin
Если для двух сложенных серий отнормированных кадров измерены
SN1, SN2 - соотношение сигнал/шум для любого непересвеченого объекта на суммарном изображении,
N1, N2, где
SNi=(Ii - BGi)/Ni
,
Ii - сигнал (Max) для объекта,
BGi - среднее (Mean) значение сигнала фона в (окрестностях)объекта,
Ni - значение шума (Sigma) сигнала (фона) для i-того кадра, которые нужно сложить.

Пусть
SN2 = m*SN1,
N2 = k*N1,
где m и k - известные коэффициенты, определяемые на основании измерений параметров снимков.

Задача состоит в определении коэффициента n, на который необходимо умножить второй снимок для того, чтобы получить сумму с наилучшим соотношение сигнал/шум для исходных (суммарных) кадров, описываемых относительными коэффициентами m и k.

Несложная задача на поиск экстремума (максимума) соотношения сигнал/шум даёт ответ, что коэффициент n вычисляется как
n=m/k.

Всё.

Одинаковый шум (значения Sigma, k=1), но разные соотношения сигнал/шум у кадров (разные сигналы) - домножаем на отношение m=SN2/SN1 второй кадр (или делим первый на неё же, если m>1).

Произвольные шумы, произвольные соотношения сигнал/шум для кадров - считаем n и домножаем на него второй кадр, если n<1, либо делим на n первый кадр.

При этом соотношение сигнал/шум суммы кадров будет связано с соотношениями сигнал/шум для первого и второго кадров, как
SNSum=SN1(1+m2)1/2=SN1(1+(SN2/SN1)2)1/2=(SN12+SN22)1/2.

:)
« Последнее редактирование: 30.04.2008 [12:25:02] от Юрий Торопин »

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Спасибо за рассчеты, я начал писать програмку оптимального сложения fits-ов, посмотрим что выйдет.
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн StasVАвтор темы

  • *****
  • Сообщений: 2 377
  • Рейтинг: +84/-0
  • Награды Неоднократный победитель конкурса астрофото
Вот смотрю уже в соседней теме пошло обсуждение. ;D
Действительно, основной проблемой ограничивающий метод, является невозможность сложения сигмаклипингом. Поэтому метод применим только к сложению серий уже полученных сигмаклипингом.
Чтобы расширить метод оптимального сложения на единичные кадры необходимо с этой проблемой справиться.
Вот, что пришло в голову:
Разбить сложение сигмаклипингом на сам сигмаклипинг и сложение ;D
А именно
Реализуем сам сигмаклиппинг
Имеем N кадров
берем на каждом кадре один и тот же пиксель с координатами x, y, назовем его Pn , где n номер кадра
Определяем среднее значение для этого пикселя  на всех кадрах (Pср) и Сигму. Все пиксели, у которых значение яркости выбивается из диапазона   Pср - k*Сигма  < P < Pср + k*Сигма  заменяем среднем значением Pср.  k  - масштабный коэффициент сигмаклипинга
Эту операцию повторяем независимо для всех пикселей с другими координатами

На входе алгоритма - массив кадров и на выходе тоже массив, а не сумма.

Вот и все! Сложение не происходит а сигмаклипинг действует. Обработанные таким образом файлы можно без проблем «скармливать» алгоритму оптимального сложения

Поправьте, если что не так
« Последнее редактирование: 01.05.2008 [14:14:39] от StasV »

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Валяюсь дома, болею, делать нечего...
Накропал софтинку сложения по этому методу.

пре-альфа версия, пока без сигма-клиппинга, работает с ч.б. фитсами

http://qhy.narod.ru/FITStacker.zip

Add... - добавляет кучку файлов в список.
Del     - удаляет текущий кадр из списка.
Prev, Next - листают файлы.

Для вытягивания кадра из тьмы служит Гамма

Левой кнопкой мыши выделяется квадрат с фоном без звезд (его фон и шум указываются сверху)
Правой кнопкой мыши - квадрат на снимаемом объекте, без пересвеченых деталей, но достаточно отличный по яркости от фона.

Merge - складывает кадры и показывает результат
Save - отправляет результат в dev\null  ;)

Проверил работу, сложил 4 разнородных кадра (LRGB), их сигнал/шум оценивался как 44, 20, 22, 17. Сигнал/шум суммы получился 55. Сравнил с ручным сложением по этому методу (считал коэфициенты на калькуляторе и складывал), тогда  сигнал/шум получался 54. В общем, похоже.

Дальше можно сделать -
1. работу с цветными fits
2. сложение сигма клиппингом.
3. копирование FITS хедера в финальный кадр (инфа о телескопе, дате, фильтрах...)
« Последнее редактирование: 02.05.2008 [00:57:01] от Ivan7enych »
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн Павел Бахтинов

  • Модератор
  • *****
  • Сообщений: 2 446
  • Рейтинг: +100/-11
    • Искусство астрофотографии
Можно реализовать алгоритм, который будет производить селекцию пикселей по сигме ориентируясь на отнормированные по сигналу кадры, а складывать уже отнормированные по шуму. Но как быть с разным уровнем фона, он ведь почти целиком "отбросится" и вообще какими значениями замещать "дырки". Немного путаница в голове на эту тему
Алгоритм, на мой взгляд, может состоять из трех этапов (начал писать вчера утром, извиняюсь за частичные повторения с предыдущими сообщениями).

1) Нормализация последовательности кадров по амплитуде сигнала. Меряется среднее значение участка фона и вычитанием соответствующей константы из каждого кадра фон приводится к нулевому уровню. Затем измеряется уровень сигнала объекта (например, интенсивность непересвеченной звезды) и каждый кадр делится на константу, пропорциональную измеренной величине.
Эти действия могут быть реализованы имеющимися средствами Ириса (и, по идее, должны бы делаться перед сигма-клиппингом всегда, независимо от того, будет использоваться "оптимальное сложение", или нет).

2) Селекция артефактных значений (сигма-клиппинг). Попиксельно измеряется RMS последовательности кадров; значения, отличающиеся от среднего на величину, большую измеренной в заданное число раз, отбраковываются и заменяются медианой последовательности значений оставшихся кадров.
Насколько можно судить по описанию, алгоритм совпадает с имеющимся в Iris методом "sigma-median", с той лишь разницей, что результаты не складываются между собой сразу, а записываются в отдельные файлы.

3) Собственно, "оптимальное сложение". На заданном фоновом участке каждого кадра измеряется RMS шума (после этапа 2 оно несколько изменится), кадры делятся на константы, пропорциональные квадратам измеренных величин, и складываются.
Как и для этапа 1, это также можно сделать существующими средствами Ириса, пусть и не в автоматическом режиме.

Таким образом, если бы Бюль написал модификацию метода "sigma-median" с записью результатов в отдельные файлы, оптимальное сложение уже можно было бы реализовать в Iris в ручном режиме (чего достаточно для экспериментов и для работы с небольшим количеством кадров).


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

Оффлайн Юрий Торопин

  • *****
  • Сообщений: 3 959
  • Рейтинг: +239/-22
  • хочу в Намибию, Майданак, далее - везде :)
    • Skype - yuriy.toropin
Валяюсь дома, болею, делать нечего...
Накропал софтинку сложения по этому методу.

пре-альфа версия, пока без сигма-клиппинга, работает с ч.б. фитсами
...

Ivan7enych, спасибо за програмулину! Работает и падает не часто :)

Алгоритм, похоже, реализован правильно, сложение 6 кадров (2 цветных серии, конвертированные в каналы), даёт ожидаемое оптимальное значение S/N,
S/Ni = (46.91, 45.60, 34.54, 33.85, 33.96, 28.22) -> S/NSum = 92.56

Как программа складывает, она ещё на что-то нормирует кадры, борясь с пересветами?

Можно ли выкидывать в простейший TXT файл статистику по кадрам, как-то
имя файла, N, S/N?

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Ivan7enych, спасибо за програмулину! Работает и падает не часто :)

Пожалуйста. :) Допишу основу и выложу исходники (под VisualC++ 6.0), чтобы математику можно было дальше сообща дописывать.

Пиши где падает (падение на удалении последнего файла из серии уже нашел).

Как программа складывает, она ещё на что-то нормирует кадры, борясь с пересветами?

Примерно как Павел Бахтинов написал, за основу берет активный файл (отображаемый на экране), все остальные кадры перед сложением приводятся к той же яркости и уровню фона.

Можно ли выкидывать в простейший TXT файл статистику по кадрам, как-то
имя файла, N, S/N?

Да, это несложно.
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн Юрий Торопин

  • *****
  • Сообщений: 3 959
  • Рейтинг: +239/-22
  • хочу в Намибию, Майданак, далее - везде :)
    • Skype - yuriy.toropin
Пиши где падает (падение на удалении последнего файла из серии уже нашел).
Здесь и падало! :)

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

Яркости объекта Ii и уровню фона BGi? То есть у кадров оказывается одинаковый сигнал, но разные величины шума Ni и соответственно, их соотношения SNi обратно пропорциональны Ni и кадры домножаются на квадраты соотношений шумов, (N1/Ni)2. Всё так :) В принципе, достаточно нормировать только на уровень фона, формула, приведённая выше, эквивалентна нормировке яркости :)
« Последнее редактирование: 02.05.2008 [11:00:05] от Юрий Торопин »

Оффлайн StasVАвтор темы

  • *****
  • Сообщений: 2 377
  • Рейтинг: +84/-0
  • Награды Неоднократный победитель конкурса астрофото
Как раз хотел свести все написанное, да Павел опередил ;D
Вот, коллективными усилиями и создали алгоритм.

1) Нормализация последовательности кадров по амплитуде сигнала. Меряется среднее значение участка фона и вычитанием соответствующей константы из каждого кадра фон приводится к нулевому уровню. Затем измеряется уровень сигнала объекта (например, интенсивность непересвеченной звезды) и каждый кадр делится на константу, пропорциональную измеренной величине.
Одно замечание, фон можно приводить к нулевому уровню, только если дальнейшая математика умеет работать с отрицательными значениями яркости пикселей. В противном случае, при отсечении отрицательных значений, фон будет рваным. А если фон имеет градиенты (засветка к примеру) могут быть откинуты и слабые периферийные части объектов.
Если программа использует знаковые переменные, то можно работать с нулевым фоном. Только потом, для пост-обработки, все равно придется поднимать фон и «выводить» картинку из отрицательных значений

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

PS
Делать все эти операции в разных программах весьма трудоемко, да и ошибиться можно. Такая реализация не приживеться.
Думаю, нужно обязательно реализовывать алгоритм целиком в одной программе!!! Иван, возьмешься?
« Последнее редактирование: 02.05.2008 [11:37:31] от StasV »

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Одно замечание, фон можно приводить к нулевому уровню, только если дальнейшая математика умеет работать с отрицательными значениями яркости пикселей.

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

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

Угу. Сижу думаю над сигма-клиппингом. Очень не хочется все кадры в оперативку грузить, максмум что хочу позволить - 3-4 буффера, 1-й суммы яркостей для каждого пикселя, 2-й - суммы весов...

Кстати, почему-бы не использовать известный шум фона картинки для отбрасывания пикселей?
Если мы складываем кадры разного качества, то хорошо-бы на чистой картинке более жестко детектировать дефекты.
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн StasVАвтор темы

  • *****
  • Сообщений: 2 377
  • Рейтинг: +84/-0
  • Награды Неоднократный победитель конкурса астрофото
Кстати, почему-бы не использовать известный шум фона картинки для отбрасывания пикселей?
Если мы складываем кадры разного качества, то хорошо-бы на чистой картинке более жестко детектировать дефекты.
Сигмаклипинг с малыми коэффициентами по Сигме, так сказать агрессивный сигмаклипнг опасен.
1. Шум имеет статистическое распределение, вероятно близкое к нормальному. Отсечение краев этого распределения меняет статистическое распределение шума. Если отсекать слишком сильно, нарушится естественное распределение шума и картинка будет выглядеть не естественно.

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


 

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Кстати, почему-бы не использовать известный шум фона картинки для отбрасывания пикселей?
Если мы складываем кадры разного качества, то хорошо-бы на чистой картинке более жестко детектировать дефекты.
Сигмаклипинг с малыми коэффициентами по Сигме, так сказать агрессивный сигмаклипнг опасен.
1. Шум имеет статистическое распределение, вероятно близкое к нормальному. Отсечение краев этого распределения меняет статистическое распределение шума. Если отсекать слишком сильно, нарушится естественное распределение шума и картинка будет выглядеть не естественно.

Я имел в виду не слишком сильно, а варьировать степень от кадра к кадру.

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

Понял, буду думать дальше. :)
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
На выходных вплотную позанимался сигма-клиппингом, заставил работать.

Работает в 3 прохода,
1-й - просто осредняет все файлы (с оптимальными коэфициентами),
2-й - собирает отклонения от полученного среднего,
3-й - суммирует по новой (с оптимальными коэфициентами), только с отбрасыванием точек по отклонению от среднего

Ссылка на программу та же.

Для отладки программа может сохранять bmp где красным отмечены отброшенные клиппингом точки.

Чтобы не было резкой границы "точка принята" / "точка отброшена" ввел параметр SigmaFade - переходную зону где точка плавно ослабляется. Помогает бороться с некрасивыми артефактами, когда середина яркого трека спутника отбрасывается, а 2 края трека добавляются.

Для борьбы с плавающими градиентами, добавил размер квадрата к котором локально изображение выравнивается со осредненным (влияет не на сумму, а только на алгоритм отбрасывания точек). Помогает не отбросить целиком чуть более светлый угол кадра.
« Последнее редактирование: 04.05.2008 [11:12:53] от Ivan7enych »
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн StasVАвтор темы

  • *****
  • Сообщений: 2 377
  • Рейтинг: +84/-0
  • Награды Неоднократный победитель конкурса астрофото
На выходных вплотную позанимался сигма-клиппингом, заставил работать.

Ссылка на программу та же.

Для отладки программа может сохранять bmp где красным отмечены отброшенные клиппингом точки.

Иван, автоматическая нормировка перед сигмаклиппингом уже есть?

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 10 635
  • Рейтинг: +386/-3
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Астропроекты и астрософт
Иван, автоматическая нормировка перед сигмаклиппингом уже есть?

Есть конечно, по замеренным в квадратах фону и яркости объекта. Гонял на пачке снимков, когда была то ясная погода, то облака.
« Последнее редактирование: 04.05.2008 [11:56:45] от Ivan7enych »
Видео отчеты мастерской
сотовый 926 - О23-O267
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн Павел Бахтинов

  • Модератор
  • *****
  • Сообщений: 2 446
  • Рейтинг: +100/-11
    • Искусство астрофотографии
Попробовал программку - работает :)

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

И главное, очень интересно было бы опробовать вот эту идею:
Кстати, почему-бы не использовать известный шум фона картинки для отбрасывания пикселей?
То есть, для формирования порога отбраковки использовать не сигму распределения значений данного пикселя на всех складываемых кадрах, а сигму фоновой площадки данного кадра.
В классическом сигма-клиппинге, когда в данный пиксель на одном из кадров серии попадает дефект, вычисленная для этого пикселя сигма также резко возрастает, что затрудняет селекцию. Из-за этого, при обработке N кадров, коэффициент при сигме не может быть выбран большим, чем корень квадратный из N-1. Если кадров в серии немного, приходится выбирать малые коэффициенты, но тогда алгоритм "срезает" наряду с дефектными и много "годных" пикселей.
Предложенная модификация, на первый взгляд, лишена этого недостатка (выборка по площади может быть достаточно большой, а оценка сигмы - более устойчивой), но надо пробовать - вдруг мы что-то не так понимаем...
« Последнее редактирование: 06.05.2008 [15:32:54] от Павел Бахтинов »

Оффлайн Pilgrim

  • *****
  • Сообщений: 5 394
  • Рейтинг: +104/-11
  • Игорь Чекалин
  • Награды Неоднократный победитель конкурса астрофото
    • Astronomical 3D screensavers
Павел, а как же быть со звёздочками? Они ведь так же выбиваются из окружающей площадки фона. Да и площадки может не быть - достаточно вспомнить снимки в Млечном Пути, где весь фон усыпан звёздами. И на ярких участках протяженных объектов непонятно что будет.

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

Может и есть смысл, но по-моему "калибровка" это процесс максимального выделения сигнала без его искажений. То есть граница между калибровкой и пост-обработкой проходит там, где фото всё еще имеет научную ценность. Думаю большинство "художественных астрофотографов" с радостью займутся астро/фото-метрией, если обнаружат на кадре что-то интересное, да и мелкие галактики в поиске новых многие "шерстят" до пост-обработки.
« Последнее редактирование: 06.05.2008 [01:31:22] от Pilgrim »
Pix Insight - make sex faster.

Оффлайн Павел Бахтинов

  • Модератор
  • *****
  • Сообщений: 2 446
  • Рейтинг: +100/-11
    • Искусство астрофотографии
Павел, а как же быть со звёздочками? Они ведь так же выбиваются из окружающей площадки фона.
...
По-моему такая "пространственная" селекция это не правильный путь. Она взаимо-искажает участки изображения.
Игорь, речь вовсе не идет о пространственной фильтрации. Как и при обычном сигма-клиппинге, каждый пиксель обрабатывается отдельно; отбрасываются значения, отличающиеся более чем на заданную (пороговую) величину от среднего (возможно, лучше - медианного) значения данного пикселя на складываемых кадрах.
Речь только о том, чтобы по-другому вычислять этот порог.

...Да и площадки может не быть - достаточно вспомнить снимки в Млечном Пути, где весь фон усыпан звёздами.
В этом случае без вариантов - придется применять только "классический" сигма-клиппинг. Впрочем, оценить сигму фона для целей оптимального сложения тоже ведь не удастся, так что этот случай в данной теме... эээ ... несколько оффтопичен ;D
« Последнее редактирование: 06.05.2008 [15:35:09] от Павел Бахтинов »

Оффлайн lazyBSD

  • *****
  • Сообщений: 3 374
  • Рейтинг: +11/-2
У меня есть пара предложений/пожеланий по зарождающейся программе сложения, которая может вырасти ( зная Ивана ;) ) в полноценную программу полного цикла обработки.

Чтобы не повторять ошибок Christian Buil, нужно изначально заложить в программу настраиваемую многопоточность и отделить GUI от математики.
Вся математика должно быть в консольной программе. Это даст легкость переноса под любую ОС.
Сразу нужно предусмотреть интерфейс плагинов для основной программы, или, как это сделал Аркадий в LINZIK, встроить вспомогательный интерпретатор, чтобы желающие могли писать математику сообща или независимо друг от друга. В данном случае, IMHO, лучше подходят плагины — быстрее и проще для Ивана.
Было бы огромным плюсом, если бы эта программа смогла работать по TCP/IP, чтобы распределять задачи на отдельные компьютеры, подключенные к инету или локалке. Расширяемость и масштабируемость, думаю, очевидна.
/ссылка запрещена правилами форума/

Оффлайн kost973

  • *****
  • Забанен!
  • Сообщений: 6 505
  • Рейтинг: +202/-68
  • готов ответить на все вопросы кармалюбителей лично
    • Skype - kost973
    • kost973
Было бы огромным плюсом, если бы эта программа смогла работать по TCP/IP, чтобы распределять задачи на отдельные компьютеры, подключенные к инету или локалке. Расширяемость и масштабируемость, думаю, очевидна.


не удержался... даешь обработку фоток всеми компами рунета! :)