Получение оценки сравнения из сравнения изображений OpenCv - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь написать функцию в OpenCv для сравнения двух изображений - imageA и imageB, чтобы проверить, насколько они похожи.

Я хочу получить три результата сравнения (значение от 0 до 100), как показано ниже. 1. Гистограммы - compareHist (): метод OpenCV 2. Соответствие шаблонам - matchTemplate (): метод OpenCV 3. Подбор объектов - BFMatcher (): метод OpenCV

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

Я знаю, что есть разные алгоритмы, которые можно использовать для вышеуказанных функций. Итак, просто уточняю, какие изображения я буду использовать. 1. Как упомянуто выше, это будет сравнение один к одному. 2. Это все изображения, сделанные человеком с помощью мобильной камеры. 3. Соответствующие изображения будут сделаны в основном из одного и того же объекта / места. (Согласно времени суток, освещение может отличаться) 4. Если изображения не совпадают, пользователю будет предложено щелкнуть другое изображение, пока оно не совпадет. 5. Виды сравниваемых изображений могут включать в себя - коридор, рабочий стол, экран компьютера (содержимое на экране, который нужно сравнить), перцовый документ и т. Д. 1014 *.

Ответы [ 2 ]

1 голос
/ 24 января 2020

1 - С помощью гистограммы вы можете получить оценку сравнения, используя пересечение гистограммы . Если вы разделите пересечение двух гистограмм на объединение двух гистограмм, вы получите оценку между 0 (нет совпадений вообще) и 1 (полное совпадение), как в примере на следующем графике:

enter image description here

Вы можете вычислить пересечение для гистограммы с помощью простого For l oop.

2- При сопоставлении с шаблоном вы получаете разные оценки для каждого метода сравнения. В этой ссылке вы можете увидеть детали каждого метода. В некоторых методах наивысшая оценка означает лучшее совпадение, но в некоторых других наименьшая оценка означает наибольшее совпадение. Для определения оценки от 0 до 1 следует учитывать 2 оценки: одну для сопоставления изображения с самим собой (наибольшее количество совпадений) и две для сопоставления двух совершенно разных изображений (минимальное совпадение), а затем нормализовать оценки по количеству пикселей на изображении ( высота * ширина ).

3- Соответствие объектов отличается от двух последних методов. У вас может быть два одинаковых изображения с плохими характеристиками (которые не совпадают) или два концептуально разных изображения, которые имеют много совпадающих элементов. Хотя, если изображения многофункциональны, мы можем определить что-то как счет. Для этого рассмотрим следующий пример:

  • Img1 имеет 200 функций
  • Img2 имеет 170 функций
  • Эти два изображения имеют 100 совпавших функций
  • Рассмотрим 0,5 (100/200) как показатель соответствия всего изображения

Вы также можете включить расстояния между согласованными парами объектов в оценку, но я думаю, что этого достаточно.

0 голосов
/ 22 января 2020

Относительно оценки сравнения. Вы пытались ввести средневзвешенное значение, чтобы получить окончательное сравнение метри c? Взвесьте 3 метода сопоставления, которые вы реализуете, в соответствии с их точностью, лучший метод получает «самый тяжелый» вес.

Кроме того, если вы хотите изучить дополнительные методы сопоставления, попробуйте выполнить сопоставление на основе FFT: http://machineawakening.blogspot.com/2015/12/fft-based-cosine-similarity-for-fast.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...