A A A A Автор Тема: Плугин под MaximDL для автофокусировки по маске Бахтинова  (Прочитано 2177 раз)

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

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Изначальная задумка родилась в этой теме: https://astronomy.ru/forum/index.php/topic,146056.0.html

Потом, после пары экспериментов, я понял, что поля моего телескопа для фокусировки во внеосевике на краю поля, скорей всего не хватит. Тогда я пошёл по другому пути постоянного контроля фокуса.

Я решил написать плугин для MaximDL, который будет делать:
- одевать апертурную маску на телескоп, с использованием модельного сервопривода и Arduino nano: https://astronomy.ru/forum/index.php/topic,124272.msg3821008.html#msg3821008 ;
- делать снимок всего кадра в bin4;
- искать яркую звезду и делать ROI снимок в bin1;
- детектировать дефокус по маске;
- калиброваться, если не было калибровки ранее или если нажата принудительная калибровка (поворот маски или камеры была изменён, изменился масштаб);
- фокусировка с управлением не только ASCOM мотором с шаговиком, но и любым аналоговым моторчиком, т.к. теперь есть обратная связь не только по значению, но и по знаку дефокуса.

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

Плугин написан на VB, т.к. C# пример я не нашёл. Для работы требует MS DotNet 4 redistributable.
Может вызываться из меню Plugin максима или как самостоятельный COM-объект из скрипта в Autosave (это пока не проверял, но пишут должно работать).
Как раз возможность вызвать его из одной из строчек Autosave'а даёт достаточно быстрый автофокус. Хоть и меж кадрами.



Почему мне не понравился FocusMax? Или почему я не фокусирую стандартными средствами максима?
Я пробовал и то, и другое. Порой, находясь в обсерватории, я запускал автофокус. А, как процедура пройдёт, проверял результат маской. То, что я видел, порой мне нравилось. Порой - нет. И, вспоминая одну статью одного брендового астрофотографа (имя не помню, не суть), я понимаю, что лучше 5 кадров в фокусе, чем 50 вне фокуса. Я хочу 100% попадания в цель. Ну... конечно, если я создал инструмент, а не поделку :)

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

Публичную бета-версию планирую предоставить для тестов через неделю-две. Зависит от погоды. Все свои отснятые жуки я через программу прогнал и найденные косяки исправил или обозначил для исправления в дальнейшем.
モ - mo

Оффлайн faddy

  • *****
  • Сообщений: 711
  • Благодарностей: 68
  • Горбачев Константин Владимирович
    • Сообщения от faddy
Олег, отличная идея! Думаю такой плагин будет очень востребован..
Ждем бета версию.

Оффлайн d_w

  • *****
  • Сообщений: 1 947
  • Благодарностей: 131
    • Сообщения от d_w
github будет какойнить?
Откуда алгоритм обработки Ж от маски? Какая библиотека или опять же алгоритм детектирования собственно этой Ж?

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
github будет какойнить?

Нет. А зачем?

Откуда алгоритм обработки Ж от маски? Какая библиотека или опять же алгоритм детектирования собственно этой Ж?

Сам придумал. Честно сказать, я впервые занимался и программированием на VB, и тем более под максим. Впервые в жизни обрабатывал растровое шумное изображение, ещё и малого масштаба (жук небольшой на пиксель порядка 1" при относительном порядка f5+-).

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

Я хотел, по совету друзей, использовать алгоритм Хафа или преобразование Радона, да не нашёл готовую библиотеку под .net.

А мой алгоритм простой:
1. ищу центр жука
2. радиусом от 5 до упора ищу пики. Пик есть повышение выше фона. Точнее, выше среднего по кругу. В найденном повышении выше фона, длинее 1 пикселя, находится угол центроида пика (с учётом веса).
Формируется массив [радиус, пики]. Тут бы его чуть почистить, но потом.
3. от максимального радиуса (или край листа, или где пиков < 4) вниз сканирую до шести радиусов, в которых 6 лучей. Тут бы тоже проверку на очевидные отхождения. Хотя бы медиану, а не среднее. Нужно больше данных.
4. найденные азимуты группирую по направлению жука, разворачиваю его так, чтобы было просто найти какие разницы азимутов использовать для анализа. Усредняю пары, нахожу разницу.

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

Единственное требование - искать наибольший эффективный радиус и усреднять меньше шагов вглубь к центру. Тогда плечо шире и точность определения угла выше.
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Пока что центр у меня считается с пиксельной точностью. Углы - с субпиксельной с учётом веса.
Увеличить точность без изменения алгоритма помогает встроенная возможность удвоить и учетверить масштаб.

Переведу центр в субпиксельный, станет точнее.

Хочу сегодня попробовать разных "грустных" жуков тоже наснимать. Те, что смог нагуглить, я уже проверил - с ними всё хорошо. Речь про атмосферную дисперсию: http://astro.milantiev.com/2016/09/06/dispersion/

Ещё важное замечание, пока что программа не распознает жуков, отснятых в узкополосниках: http://astro.milantiev.com/2016/07/20/bahtinov-spectr/
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
А... чёрт. Отменили погоду.
Кидайте плиз в меня жуками :)
Буду их замерять... да интерфейс доводить до удобного. Пока больше технический взгляд на проблему был.

oleg@milantiev.com
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Погоды пока нет. Так что бумагомарательством занимался вчера: http://astro.milantiev.com/2016/10/22/maximdl-bahtinov-autofocus-plugin/
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Публичную бета-версию планирую предоставить для тестов через неделю-две. Зависит от погоды. Все свои отснятые жуки я через программу прогнал и найденные косяки исправил или обозначил для исправления в дальнейшем.

Вроде бы поделка начинает чуууть-чуть походить на продукт.
Выкладываю описание и первую бету:
http://astro.milantiev.com/2016/11/02/maximdl-bahtinov-autofocus-plugin-2/

Нужна обратная связь. Можно здесь, можно в личке, на сайте или в скайпе oleg_milantiev, или емыл oleg@milantiev.com :)
モ - mo

Оффлайн Dimaz

  • *****
  • Сообщений: 769
  • Благодарностей: 36
    • Сообщения от Dimaz
Скачал dll, попытался поставить Microsoft dotnet 4 redistributable, но при установке сказала, что уже стоит более новая версия.
При попытке добавить плагин в MaximDL получаю The selected file does not contain a valid plug-in object.
Win7 x64, MaximDL v5.23

10" LX200GPS, 80/480 FPL-53 Triplet, AZ-EQ6 GT, ZEQ25 GT, Canon 550D, Moravian G2-8300FW, Lodestar, QHY5L-II, Canon EF 200 F/2.8L

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Скачал dll, попытался поставить Microsoft dotnet 4 redistributable, но при установке сказала, что уже стоит более новая версия.
При попытке добавить плагин в MaximDL получаю The selected file does not contain a valid plug-in object.
Win7 x64, MaximDL v5.23
Смодулировал ошибку.

Докинул туда же файл FocusMask.tlb
Нужно в тот же каталог его кинуть.

Корректирую описание. Спасибо за первую обратную связь :)
モ - mo

Оффлайн Dimaz

  • *****
  • Сообщений: 769
  • Благодарностей: 36
    • Сообщения от Dimaz
Теперь Plug-in Error: Could not load component  :(
10" LX200GPS, 80/480 FPL-53 Triplet, AZ-EQ6 GT, ZEQ25 GT, Canon 550D, Moravian G2-8300FW, Lodestar, QHY5L-II, Canon EF 200 F/2.8L

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Теперь Plug-in Error: Could not load component  :(
Ищу, как повторить у себя. Ставлю на ещё два компа обсерватории.
Можешь пока попробовать обновить максим до 5.24? Вряд ли... но оно и тебе будет полезно (не вредно), и проверим заодно.

http://download.milantiev.com/astro/MaximDL/
Лицензия не слетит, просто обновляй поверх.
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Смог повторить ошибку. Ищу решение.
モ - mo

Оффлайн Dimaz

  • *****
  • Сообщений: 769
  • Благодарностей: 36
    • Сообщения от Dimaz
Обновил MaximDL, ошибка та же
10" LX200GPS, 80/480 FPL-53 Triplet, AZ-EQ6 GT, ZEQ25 GT, Canon 550D, Moravian G2-8300FW, Lodestar, QHY5L-II, Canon EF 200 F/2.8L

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Может есть зависимости по библиотекам? Может какого рантайма не хватает? Может стоит пройтись Dependency Walker-ом?
У природы нет плохой погоды, у неё просто на нас аллергия.

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

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Может есть зависимости по библиотекам? Может какого рантайма не хватает? Может стоит пройтись Dependency Walker-ом?
О... скорей всего. Я просто в винде э... начинающий программист.
Ща прогуглю каждое твоё слово :)

У maximdl, к сожалению, с диагностикой не очень. Он не говорит чего именно не хватает.
Для сборки я ставил себе на комп кучу разного мусора.

Ещё есть мысль пересобрать на мелком компе. Я писал в #develop IDE, не в Visual Studio.
Изучаю. Пробую.
モ - mo

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
Может есть зависимости по библиотекам? Может какого рантайма не хватает? Может стоит пройтись Dependency Walker-ом?
Скачал. Нафига ей MSJAVA? :)))))
Продолжаю искать решение.
モ - mo

Оффлайн Alex1958

  • *****
  • Забанен!
  • Сообщений: 3 533
  • Благодарностей: 178
  • постоянно под постоянным наблюдением,:-))
    • Сообщения от Alex1958
у меня такая же ошибка, Win7 64-bit. "Could not found comp..."
Крым-моя Родина, Севастополь -город русских моряков. Донбасс-нет войне.

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

  • *****
  • Сообщений: 17 931
  • Благодарностей: 1094
  • Олег Милантьев - L71 Vedrus Observatory
  • Награды Призер конкурса астрофото
    • Сообщения от mo
у меня такая же ошибка, Win7 64-bit. "Could not found comp..."
Аха. Понял.
Тогда пока на паузу.

Устраню её, сообщу.
Главное, что добился повтора у себя. А решение-то дело простое.
モ - mo

Оффлайн Alex_6619

  • *****
  • Сообщений: 1 072
  • Благодарностей: 43
    • Сообщения от Alex_6619
Хорошая вещь компьютер...Посидел пять минут-полтора часа прошло....