Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
5
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

164      Глава 5. Поиск Плутона

Использование детектора транзиентов

Вообразите, насколько обрадовался бы Клайд Томбо, будь у него вот такой детектор транзиентов. Это устройство из разряда «настрой и забудь». Даже изменение яркости на изображениях третьей пары, столь проблематичное в случае с блинк-компаратором, не представляет сложности для этой программы.

Итоги

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

Дополнительная литература

«Out of the Darkness: The Planet Pluto» (Stackpole Books, 2017), написанная самим открывателем Плутона Клайдом Томбом (Clyde Tombaugh) и его соавтором Патриком Муром (Patrick Moore), повествует, естественно, об истории обнаружения Плутона.

В книге «Chasing New Horizons: Inside the Epic First Mission to Pluto»1 (Picador, 2018) Алан Стер (Alan Stern) и Дэвид Гринспун (David Grinspoon) рассказывают о том, как отправляли на Плутон космическое судно с прахом Клайда Томбо.

Практический проект: представление орбитальной траектории

Отредактируйте программу transient_detector.py так, чтобы в случае наличия транзиента на обоих входных снимках OpenCV рисовала линию, соединяющую эти транзиенты. Таким образом удастся обозначить орбитальную траекторию транзиента относительно звезд на заднем плане.

Именно эта информация оказалась ключом для обнаружения Плутона. Клайд Томбо использовал расстояние между двумя положениями планеты на двух

1 Стерн А., Гринспун Д. «За новыми горизонтами. Первый полет к Плутону».

Практический проект: найди отличия      165

фотопластинах, а также время между экспозициями, дабы убедиться, что планета проходит рядом с прогнозированной Лоуэллом траекторией, а также чтобы удостовериться, что это именно планета, а не астероид, вращающийся вокруг Земли и поэтому расположенный на более близком расстоянии от Земли.

Решение под названием practice_orbital_path.py вы можете найти в приложении к книге или в каталоге Chapter_5.

Практический проект: найди отличия

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

На рис. 5.14 левый и правый снимки различаются. Можете найти отличия? Давайте даже так. Сможете ли вы написать программы Python, которые будут выравнивать и сравнивать эти изображения, а также обводить кружками найденное изменение?

Рис. 5.14. Найдите отличие между левым и правым изображениями

Исходные изображения вы найдете в каталоге montages директории Chapter_5, доступной для скачивания с сайта книги. Это цветные изображения, которые, прежде чем искать объекты, нужно конвертировать в оттенки серого и выровнять.

166      Глава 5. Поиск Плутона

Решения, называемые practice_montage_aligner.py и practice_montage_difference_ finder.py, вы найдете в приложении к книге и в каталоге montages.

Усложняем проект: сосчитаем звезды

Как пишет журнал Sky and Telescope, невооруженным глазом в любом полушарии звездного неба можно видеть 9906 звезд (https://www.skyandtelescope.com/ astronomy-resources/how-many-stars-night-sky-09172014/). Это безусловно много, но если взглянуть в телескоп, то их число возрастет экспоненциально.

Для оценки количества звезд астрономы наблюдают за небольшими участками неба. Они используют программу для подсчета звезд, а затем экстраполируют результаты на более обширные области. Представьте, что вы работаете ассистентом в обсерватории Лоуэлла и занимаетесь наблюдениями. Напишите программу Python, подсчитывающую количество звезд на изображении 5_no_transient_left. png, использованном в проектах 7 и 8.

Подсказки ищите онлайн по запросу «как подсчитать точки в изображении с помощью Python и OpenCV» (how to count dots in an image with Python and OpenCV). Решение, использующее Python и SciPy, вы найдете на странице http://prancer. physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy. Вы добьетесь более точных результатов, если разделите изображение на меньшие части.