Skip to content

DenisDenis9331/image_comparison_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система сравнения изображений

Описание

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

Система использует несколько методов сравнения изображений:

  • HashComparator — быстрый поиск по среднему хэшу (для точных и почти точных копий).
  • PerceptualHashComparator — устойчив к небольшим изменениям, использует перцептивные, дифференциальные и вейвлет-хэши (pHash, dHash, wHash).
  • FeatureComparator (ORB) — сравнение по ключевым точкам (ORB), устойчиво к повороту, масштабированию, частичному кадрированию.
  • NeuralComparator (ResNet18) — извлекает признаки с помощью нейросети (ResNet18) и сравнивает их косинусным сходством, что позволяет находить даже сильно изменённые, но похожие по смыслу изображения.

Результирующая оценка — взвешенное среднее всех методов. Для каждого совпадения выводятся оценки каждого метода отдельно.

Установка

  1. Создайте и активируйте виртуальное окружение:
    python3 -m venv venv
    source venv/bin/activate
  2. Установите зависимости:
    pip install -r requirements.txt
    

Использование

  1. Поместите изображения для поиска в папку images/.

  2. Запустите поиск похожих изображений:

    python -m image_comparison_system.main images/image1.png images/ 0.7

    где:

    • image1.png — путь к целевому изображению,
    • images — папка с базой изображений,
    • 0.7 — порог похожести (от 0 до 1).
  3. В результате вы увидите список похожих изображений с общей оценкой и оценками каждого метода сравнения.

Как добавить свой метод сравнения

  1. Создайте новый класс-компаратор в папке comparators/, унаследованный от BaseComparator.
  2. Реализуйте метод compare(self, img1, img2).
  3. Зарегистрируйте компаратор и его вес в CompositeComparator (composite_comparator.py).

Пример замера

Для демонстрации устойчивости системы к различным трансформациям были использованы следующие изображения:

  • image1.png — перевёрнутое изображение оригинала
  • image2.png — отзеркаленное изображение оригинала
  • image3.png — точная копия image1.png
  • image4.jpg — другое изображение с похожими объектами (трубы, но другие)
  • image5.png — оригинал

Результаты сравнения (целевое изображение: image5.png, порог похожести: 0):

python3 -m image_comparison_system.main images/image5.png images/ 0
Found 4 similar images:
  images/image1.png (similarity: 0.659)
    HashComparator: 0.719
    PerceptualHashComparator: 0.651
    FeatureComparator: 0.227
    NeuralComparator: 0.915
  images/image3.png (similarity: 0.659)
    HashComparator: 0.719
    PerceptualHashComparator: 0.651
    FeatureComparator: 0.227
    NeuralComparator: 0.915
  images/image2.png (similarity: 0.594)
    HashComparator: 0.531
    PerceptualHashComparator: 0.521
    FeatureComparator: 0.227
    NeuralComparator: 0.954
  images/image4.jpg (similarity: 0.455)
    HashComparator: 0.484
    PerceptualHashComparator: 0.469
    FeatureComparator: 0.024
    NeuralComparator: 0.709

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages