Как найти параметры цвета RGB/HSV для отслеживания цвета?
-
19-09-2019 - |
Вопрос
Я хотел бы отслеживать цвет в наборе изображений. По этой причине я использую алгоритм постоянного порога, упомянутого вВведение в автономные мобильные роботы. Анкет Этот метод просто отмечает все те пиксели, которые являются одними из минимума и максимального порога красного, зеленого, синего (или оттенка, насыщения, значения в моем случае).
Моя проблема заключается в том, что - хотя HSV менее чувствителен к изменению условий освещения - я все еще хотел бы установить пороговые значения из программы, чтобы минимизировать количество ложных срабатываний и ложных отрицательных. Другими словами, алгоритм гарантирует, что в конце отмечается только определенный набор пикселей, например, прямоугольник на калибровочном изображении.
Я знаю, что проблема заключается в поиске в 6-мерном пространстве параметров, и я мог бы придумать возможные решения, но я ищу мнение и опыт других программистов по этому вопросу.
Если это важно, я пытаюсь реализовать его в C ++ с помощью OpenCV.
Решение
Насколько я понимаю, вопрос Вы ищете процедуру для калибровки 6 порогов (мин и максимума для каждого из каналов HSV) из калибровочного изображения, которое содержит ваш маркер отслеживания. Анкет Чтобы достичь этого, я бы:
- Первый вручную Разграничить регион, в калибровке изображения, где появляется маркер
- Рассчитать гистограммы региона, один для каждого из каналов HSV
- установить мин и максимальные пороги к процентилям гистограммы 0,05 и 0,95 соответственно
Не используя минимальные и максимальные значения гистограммы, а скорее ее 0,05 и 0,95 процентиля помогает более устойчивой мерой.
РЕДАКТИРОВАТЬ:
Модификация второго шага: Если вы хотите минимизировать ошибку, вы можете установить нормилизирован гистограмма маркера и нормализован Гистограмма окружающей среды (это может быть 2 отдельным изображениям) и вычитать последнее из первого. Полученная гистограмма маркера будет иметь фоновые значения пикселей, ослабленные. Это повлияет на значения вышеупомянутых процентилей.