2009-10-05 2 views
3

Я хотел бы отслеживать цвет в наборе изображений. По этой причине я использую алгоритм постоянного порогового значения, упомянутый в Introduction to Autonomous Mobile Robots. Этот метод просто отмечает все те пиксели, которые являются минимальными и максимальным порогом красного, зеленого, синего (или оттенка, насыщенности, значения в моем случае).Как найти параметры цвета RGB/HSV для отслеживания цвета?

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

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

Если это важно, я пытаюсь реализовать его на C++ с помощью OpenCV.

+0

Я понимаю ограничения только порогового значения в HSV, но я не понимаю, что вы подразумеваете под «Я все еще хочу установить пороговые значения из программы» и где вы получите свои 6 параметров. Не могли бы вы переформулировать свой вопрос, пожалуйста. – Ivan

+0

Я хотел бы иметь программу для поиска минимального и максимального уровней оттенка, насыщенности и значения: это 6 параметров. Соответствующие пороговые значения таковы, что все пиксели, имеющие отслеживаемый цвет, отмечены, а другие пиксели не отмечены. – rics

ответ

2

Насколько я понимаю, вопрос вы ищете процедуру калибровки 6 порогов (мин и макс для каждого из каналов HSV) из калибровочного изображения, которое содержит ваш маркер отслеживания. Для достижения этой цели, я бы:

  1. сначала вручную очертить области, в калибровочном изображении, где маркер появляется
  2. расчета гистограмм, регион, один для каждого из HSV каналов
  3. установить минимальные и максимальные пороги на гистограмму процентили 0.05 и 0.95 соответственно

Не использовать минимальные и максимальные значения гистограммы, а его 0,05 и 0,95 процентиля помогают измерению быть более устойчивыми к шуму.

EDIT:

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

+0

Интересное решение без необходимости поиска. Моя проблема заключается в том, что он не гарантирует, что за пределами выделенной области будет отображаться только минимальное количество отмеченных пикселей. Кроме того, мне не нужен ручной шаг в этом процессе. – rics

+0

Если вы хотите избежать ручного шага, вы можете отобразить маркер так, чтобы он отображался в полноэкранном режиме. Что касается точки, в которой вы хотите обеспечить минимальное количество ошибок, вы должны понимать ограничения обнаружения объектов на основе пороговых значений и что они не являются устойчивыми к изменениям в способах получения, окружающем освещении и т. Д. Обычно люди используют пороговое значение + некоторую форму фильтрация. – Ivan

Смежные вопросы