Телескопы покупают здесь


A A A A Автор Тема: Алгоритм выделения звёзд на снимке  (Прочитано 1005 раз)

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

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Хорошо находящий центроиды звёзд и обходящий дефекты и всевозможные ложняки. Кто может посоветовать? Готовый код желательно :)
Ядро www.astrometry.net это делает очень хорошо, но там чёрт ногу сломит.
per astra ad anus

Оффлайн Deimos

  • Модератор
  • *****
  • Сообщений: 17 481
  • Благодарностей: 319
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от Deimos
    • Белорусская любительская астрономическая сеть
Re: Алгоритм выделения звёзд на снимке
« Ответ #1 : 04 Окт 2017 [16:41:23] »
Если в двух словах, то дефекты матрицы отбраковываются по слишком высокому контрасту. Также отбраковываются существенно несимметричные объекты. Из найденных надо оставить только те, для которых получается красивый центроид, ну и если объектов много, то можно прошерстить статистические параметры. Если известны хотя бы примерно параметры изображения объектов, то алгоритм можно делать существенно проще общего случая.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #2 : 04 Окт 2017 [16:48:49] »
Проблема в том что это слишком общее объяснение :), вроде как есть имплементации типа http://photutils.readthedocs.io/en/stable/api/photutils.DAOStarFinder.html но они косячные. Элементарно мажут на несколько пикселов. нет у кого-то проверенной имплементации, с результатами пригодными для хотя бы грубой астрометрии (ну, с RMS ошибки меньше 1 пиксела - больше это уж совсем смешно)?
per astra ad anus

Оффлайн Deimos

  • Модератор
  • *****
  • Сообщений: 17 481
  • Благодарностей: 319
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от Deimos
    • Белорусская любительская астрономическая сеть
Re: Алгоритм выделения звёзд на снимке
« Ответ #3 : 04 Окт 2017 [19:08:50] »
Готовый алгоритм есть только под определённые характеристики звезды под конкретный прибор.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #4 : 04 Окт 2017 [19:40:44] »
Ну вот astrometry.net практически любой снимок, зараза, распознаёт с достаточной точностью чтобы вслепую найти WGS по звёздам. Просто исходник громоздок, лень разбираться :(
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #5 : 04 Окт 2017 [20:16:42] »
вам просто звезды найти или астрометрию сделать?

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #6 : 04 Окт 2017 [20:19:53] »
звезды найти. я заморочился сделать движок астрометрии, работающий на GPU, так чтобы очень быстро отрабатывал, за миллисекунды. тогда появится возможность юзать его для гидирования (чтоб гидировать не по 1 звезде а всему кадру - намного точнее), коррекции полярки, обучения PEC и т.п.

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

ну а саму астрометрию потом как сделать без ветвлений я более-менее придумал
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #7 : 04 Окт 2017 [20:24:18] »
звезды найти. я заморочился сделать движок астрометрии, работающий на GPU, так чтобы очень быстро отрабатывал, за миллисекунды. тогда появится возможность юзать его для гидирования (чтоб гидировать не по 1 звезде а всему кадру - намного точнее), коррекции полярки, обучения PEC и т.п.

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

на питоне есть.
работает вот здесь: https://all-sky.kourovka.ru/

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #8 : 04 Окт 2017 [20:25:50] »
еще будет полезно
http://www.adass.org/adass/proceedings/adass98/mighellkj/
и описание SExtractor

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #9 : 04 Окт 2017 [20:30:41] »
Спасибо, а что именно за имплементация на питоне? Я сегодня мучил одну, и она безнадёжно косячна (могу кинуть пример результата)...

https://photutils.readthedocs.io/en/stable/photutils/detection.html вот эта реализация, и на их же примере который они тут дают - всё печально выглядит. это даже на картиночке которую они сами постят, видно. кружочки "мажут" от звезд на 1-3 пиксела.
« Последнее редактирование: 04 Окт 2017 [20:38:57] от anovikov »
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #10 : 04 Окт 2017 [20:42:38] »
Спасибо, а что именно за имплементация на питоне? Я сегодня мучил одну, и она безнадёжно косячна (могу кинуть пример результата)...

https://photutils.readthedocs.io/en/stable/photutils/detection.html вот эта реализация, и на их же примере который они тут дают - всё печально выглядит. это даже на картиночке которую они сами постят, видно. кружочки "мажут" от звезд на 1-3 пиксела.

архив со скриптами и тестовым файлом
http://optlab.kourovka.ru/krussh/all_sky/search%20star.zip

там поиск звезд. без точного определения центра звезды.
можно добавить или определение центра масс  (что быстрее) для объектов или фитирование моффатом/гауссом (что точнее).


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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #11 : 04 Окт 2017 [20:45:14] »
Спасибо! Покурю. Да, про фитирование гауссом думал. Как думаете - нужен эллиптический гаусс, или простого советского достаточно?
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #12 : 04 Окт 2017 [20:47:26] »
https://photutils.readthedocs.io/en/stable/photutils/detection.html вот эта реализация, и на их же примере который они тут дают - всё печально выглядит. это даже на картиночке которую они сами постят, видно. кружочки "мажут" от звезд на 1-3 пиксела.

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

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

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #13 : 04 Окт 2017 [20:50:22] »
Спасибо! Покурю. Да, про фитирование гауссом думал. Как думаете - нужен эллиптический гаусс, или простого советского достаточно?

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

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #14 : 04 Окт 2017 [20:56:08] »
А что если у меня сервант и на нём нет X? Как сохранить результат в картинку вместо вывода на экран? А так работает, что-то отрабатывает, на удивление без гемора запустилось.
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #15 : 04 Окт 2017 [20:59:54] »
А что если у меня сервант и на нём нет X? Как сохранить результат в картинку вместо вывода на экран? А так работает, что-то отрабатывает, на удивление без гемора запустилось.
в модуле Draw_Pic в последней строке поменять
##    plt.show()
    plt.savefig('foo.png')

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

  • *****
  • Сообщений: 9 275
  • Благодарностей: 90
    • Сообщения от anovikov
Re: Алгоритм выделения звёзд на снимке
« Ответ #16 : 04 Окт 2017 [21:14:59] »
Сделал... результат интересный - присланную картинку (мега сложную) разобрало очень хорошо, другие - часто вообще ничего никуда не попадает. То есть кружки там где совсем ничего нет, а яркие звезды неподалеку без кружков.
per astra ad anus

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #17 : 04 Окт 2017 [21:22:53] »
Сделал... результат интересный - присланную картинку (мега сложную) разобрало очень хорошо, другие - часто вообще ничего никуда не попадает. То есть кружки там где совсем ничего нет, а яркие звезды неподалеку без кружков.

дальше начинается настройка.
в модуле Core:
saturation = 4500 уровень перекопа
SN = 3                С/Ш для детектирования
FWHM_e = 3       примерный FWHM

для 16-битных изображений хорошим началом будет
saturation = 45000
SN = 30               
FWHM_e = 3       

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #18 : 04 Окт 2017 [21:28:21] »
вот пример для порогов С/Ш=3 и 30

Оффлайн krussh

  • *****
  • Сообщений: 2 407
  • Благодарностей: 107
  • http://www.soulfulbits.com/
    • Сообщения от krussh
Re: Алгоритм выделения звёзд на снимке
« Ответ #19 : 04 Окт 2017 [21:53:39] »
нашел косяки в коде которые могут помешать для работы с другими снимками.
Ошибки при вычислении фона для некалиброванных кадров.
Завтра утром поправлю и пришлю обновление)