Друзья, у нас сегодня есть сразу два повода погрузиться в глубины космоса. Во-первых, начинается главный летний звездопад – персеиды. Каждую минуту, при ясном небе, вероятность исполнения желаний будет достигать 10%.
А вот и вторая причина! Начинается наш цикл постов про астро-ориентацию и звездные датчики. В космосе, на летательном аппарате или на земле, алгоритм ориентации всегда можно собрать из однотипных компонентов. Давайте спроектируем такой? Что нужно сделать?
Во-первых нужно отфильтровать изображение. Это мы сделаем в первом примере, который находится 👉 здесь. Если рассуждать по порядку, то мы сперва загрузим в Engee какой-нибудь снимок и создадим скрипт, а потом:
- Научимся исключать отдельные области снимка, например те, где наиболее вероятна засветка. Научимся задавать интересующую область через массив CartesianIndices.
- Построим гистограмму изображения (вид графика histogram) и убедимся что изображение достаточно контрастно (и вообще в том, что в кадре есть звезды). Подправим контраст при помощи adjust_histogram.
- Выберем алгоритм бинаризации из библиотеки ImageBinarization, например MinimumError(). Есть множество отличных локальных и глобальных алгоритмов, которые по-разному реагируют на шум.
- Полученное черно-белое изображение легко сегментировать на объекты (label_components()) и взять координаты их центроидов (component_centroids()).
- Наконец, немного простейшей геометрической оптики – рассчитаем трехмерные координаты звезд относительно камеры.
В одном интерактивном скрипте мы пройдем путь от гипотезы до реализации, примем проектные решения и создадим высокоуровневую модель алгоритма фильтрации изображения.
Кстати! Весь ближайший месяц, в созвездии Персея будут сразу и Марс, и Юпитер, очень заметные на ночном небе. Единственная возможная интерпретация этого явления – приближается летняя школа Julia, которая пройдет в конце августа, и мы рады сообщить, что стали ее информационным партнером!
Желаем вам интересного чтения и ждем вас в Engee!