Как можно выделить цветные пиксели, которые не являются общими для двух изображений?

Вот что я хотел бы сделать:

У меня есть изображение рисового листа. У меня есть другое изображение рисового листа, на котором есть пятна коричневого цвета. То, что я хочу сделать, это отделить цветные пиксели, которые не являются общими для двух изображений, используя opencv.(Цвет точек может отличаться)

Я попытался сделать это с помощью пересечения гистограммы. Но удалось найти только общее количество пикселей между двумя изображениями.

Есть ли способ сделать это с помощью opencv? Пожалуйста, будьте любезны, чтобы помочь мне.

1 ответ

если 2 изображения идеально совпадают

  • если они соответствуют использованию RhinoDevel подход:
  • так переберите все пиксели первого изображения
  • и сравнить каждый пиксель с соответствующим пикселем из второго изображения
  • если разница выше порога
  • вы нашли не соответствующий пиксель и делать то, что вам нужно сделать
  • например, добавить пиксель к некоторой выходной карте или перекрасить (коричневый) пиксель в цвет первого изображения или что-то еще

если 2 изображения не совпадают

  • так что вы только что получили эталонное листовое изображение, и обработанное изображение может иметь любую позицию / поворот
  • создать список цветов для каждого изображения
  • сортировать их по возрастанию по цвету
  • Перечень сравнения стендов
  • если какой-либо цвет есть в list2, но не в list1
  • затем перекрасить / скопировать все пиксели, которые содержат такой цвет в / из image2
  • этот подход медленнее O(xs*ys*n)
  • xs,ys разрешение изображения 2 и n количество не распространенных цветов

[Заметки]

  • RGB обычно в порядке, но может быть, вы получили лучший результат в цветовом пространстве HSV
  • в HSV вы можете сравнить все 3 параметра или только некоторые из них, как игнорирование V value...
Другие вопросы по тегам