Получение значения Hue из пиков в гистограмме opencv - PullRequest
1 голос
/ 13 мая 2019

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

  • Оранжевый 0-22
  • Желтый 22- 38
  • Зеленый 38-75
  • Синий 75-130
  • Фиолетовый 130-160
  • Красный 160-179

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

Я пытался посмотреть гистограмму, но у меня был бы фон, который был бы не только белым или черным. Итак, гистограмма сбивает с толку.

Если вы дадите мне несколько идей о том, как решить эту проблему, я буду признателен за это.

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Вы можете попробовать метод грубой силы, при котором вы пробуете все цветовые диапазоны, а затем используете findcontours ( пример ), чтобы увидеть, можете ли вы найти контур, который, возможно, является прямоугольником.Если фон очень шумный, вы можете использовать минимальный размер контура ( contourArea ).Вы также можете проверить твердость , разделив область контура на область minAreaRect , результат для прямоугольника (с хорошим обнаружением) должен приблизиться к 1.

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

0 голосов
/ 14 мая 2019

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

Использование гистограмм для сегментации изображений лучше всего работает с изображениями в оттенках серого с равномерным фоном, так что, увидев взгляды на своей гистограмме, вы узнаете основные интенсивности объектов, которые вы пытаетесь сегментировать. Этот метод плохо подходит для вашего приложения, потому что фигуры, которые вы пытаетесь сегментировать, неоднородны по оттенку, без просмотра примеров изображений, я бы, вероятно, сказал, что это не сработает, однако вы можете сойти с рук это если изменение оттенков прямоугольников относительно схоже ... в основном, если у вас есть прямоугольники 15-30, вы можете быть в порядке, но если они варьируются от 20 до 100, вам не повезет, то же самое происходит с вариация фона.

Если фон и прямоугольники имеют очень четко определенные границы, и цвета фона переходят ОЧЕНЬ плавно, вам, возможно, удастся отделаться от некоторого региона, растущего на фоне, чтобы получить список всех пикселей фона а затем просто установите их на черный или что-то еще, чтобы лучше проанализировать прямоугольники на переднем плане, но я могу только так много размышлять с информацией, которую вы дали в своем посте

...