ищем галактики похожие на млечный путь

нужно сделать программу которая из набора фото галактик отбирает те которые более похожи по форме и спектру изображения на млечный путь
программа находится в папке с набором фото jpg
фото с млечным путём - млечный путь.jpg

Создание программы для отбора изображений галактик, похожих на Млечный Путь, требует использования методов обработки изображений и, возможно, машинного обучения. Ниже приведен пример на Python с использованием библиотеки OpenCV для обработки изображений и NumPy для работы с массивами.

Перед тем как начать, убедитесь, что у вас установлены необходимые библиотеки. Вы можете установить их с помощью pip:

pip install opencv-python numpy scikit-image

Вот пример кода, который выполняет вашу задачу:




import cv2
import numpy as np
import os
from skimage.metrics import structural_similarity as ssim

# Путь к папке с изображениями
image_folder = './'
# Путь к изображению Млечного Пути
milky_way_image_path = os.path.join(image_folder, 'млечный путь.jpg')

# Загрузка изображения Млечного Пути
milky_way_image = cv2.imread(milky_way_image_path)
milky_way_image = cv2.cvtColor(milky_way_image, cv2.COLOR_BGR2GRAY)

# Функция для вычисления схожести
def calculate_similarity(image1, image2):
    # Приведение изображений к одному размеру
    image1_resized = cv2.resize(image1, (100, 100))
    image2_resized = cv2.resize(image2, (100, 100))
    return ssim(image1_resized, image2_resized)

# Список для хранения схожих изображений
similar_images = []

# Проход по всем файлам в папке
for filename in os.listdir(image_folder):
    if filename.endswith('.jpg') and filename != 'млечный путь.jpg':
        # Загрузка изображения галактики
        galaxy_image_path = os.path.join(image_folder, filename)
        galaxy_image = cv2.imread(galaxy_image_path)
        galaxy_image = cv2.cvtColor(galaxy_image, cv2.COLOR_BGR2GRAY)

        # Вычисление схожести
        similarity = calculate_similarity(milky_way_image, galaxy_image)

        # Условие для отбора схожих изображений (можно настроить порог)
        if similarity > 0.5:  # Порог схожести (0.5 - это пример)
            similar_images.append((filename, similarity))

# Сортировка по схожести
similar_images.sort(key=lambda x: x[1], reverse=True)

# Вывод результатов
print("Схожие изображения с Млечным Путем:")
for img, sim in similar_images:
    print(f"{img}: {sim:.2f}")


Объяснение этого кода:
Импорт библиотек: Используем OpenCV для обработки изображений и scikit-image для вычисления структурного сходства.
Загрузка изображений: Загружаем изображение Млечного Пути и конвертируем его в градации серого.

Функция calculate_similarity: Эта функция вычисляет схожесть между двумя изображениями, изменяя их размер для упрощения вычислений.
Цикл по изображениям: Проходим по всем изображениям в папке, вычисляем схожесть и добавляем схожие изображения в список.
Сортировка и вывод: Сортируем схожие изображения по степени схожести и выводим результаты.
Настройка порога:
Вы можете настроить порог схожести, изменив значение 0.5 на другое, в зависимости от того, насколько строгими или либеральными вы хотите быть в отборе.

Примечание:
Этот пример является базовым и может быть улучшен с использованием более сложных методов обработки изображений или машинного обучения для более точного определения схожести.


Рецензии