как найти фигуры, которые представляют собой слегка вытянутый овал/прямоугольник с загнутыми углами/иногда сектор круга?

как распознать переход зебры из вида сверху, используя открыть?

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

(i) умею это

(ii) найти контуры в нем

(iii) найдите на нем черные полосы, в моем случае он слегка овальной формы

теперь мой вопрос, как найти эту слегка овальную форму ??

посмотрите здесь изображения перехода: www.shaastra.org/2013/media/events/70/Tab/422/Modern_Warfare_ps_v1.pdf


person user1929880    schedule 27.12.2012    source источник


Ответы (1)


Вообще говоря, я считаю, что есть два подхода, которые вы можете рассмотреть.

Один из подходов — это более грубый подход к анализу изображения, как вы описали. Здесь вы применяете эвристику, основанную на ваших знаниях о проблеме, чтобы идентифицировать пиксели, задействованные в частях пути. Обратите внимание, что «грубая сила» здесь не является чем-то плохим, это просто прилагательное.

Альтернативный подход заключается в применении методов распознавания образов для поиска областей изображения, которые с высокой вероятностью являются частью пути. Здесь вы будете преобразовывать свое изображение в (надеюсь) значимые функции: линии, точки, градиент (например: Градиенты (HOG)), относительная интенсивность (например: Хаар-подобные функции ) и т. д., а также использовать методы машинного обучения, чтобы выяснить, как эти функции описывают, скажем, дорогу и туннель (в вашем примере).

Поскольку вы спрашиваете о первом, я собираюсь сосредоточиться на нем. Если вы хотите узнать больше о последнем, поищите в Интернете, StackOverflow или задайте конкретные вопросы, которые у вас есть.

Таким образом, для подхода "грубого анализа изображения" вашим первым шагом будет вероятно предварительная обработка изображения по мере необходимости;

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

  • Рассмотрите возможность размытия изображения, чтобы уменьшить шум, если вас меньше интересуют попиксельные значения (например, края) и больше интересуют более крупные структуры (например, градиенты).

  • Рассмотрите возможность увеличения резкости изображения по причинам, противоположным размытию.

  • Проведите небольшое исследование по предварительной обработке изображений. Это определенно изученная тема, но вряд ли «решенная» (что бы это ни значило). На этом этапе есть много вещей, которые можно попробовать, и, конечно же, дерьмо на входе => дерьмо на выходе.

После этого вы захотите создать некоторые «функции».

  • Как вы упомянули, ребра кажутся подходящим пространством функций для этой проблемы. Не забывайте, что помимо Canny существует множество других замечательных алгоритмов обнаружения границ (см. Prewitt). , Sobel и т. д.) Однако после применения алгоритма обнаружения краев у вас останутся только данные пикселей . Чтобы добраться до функций, вам, вероятно, потребуется извлечь линии из краев. Здесь пригодится пространство преобразования Hough.

  • (Также, как идея, вы можете подумать о цветовом пространстве вместе с детекторами краев. Я имею в виду, что детекторы краев обычно работают в черно-белом цветовом пространстве, но вместо того, чтобы преобразовывать изображение в оттенки серого, вы можете преобразовать его в соответствующее цветовое пространство. и просто используйте один канал. Например, если игровое поле красное, а линии на пешеходном переходе синие, преобразуйте изображение в HSV и возьмите канал оттенка в качестве входных данных для детектора краев. Скорее всего, вы получите лучший контраст между области, а не только оттенки серого. Для яркого и тусклого используйте канал значений, для желтого и синего используйте цветовое пространство Opponent и т. д.)

  • Вы также можете просмотреть баллы. Алгоритмы, такие как детектор углов Харриса или лапласиан Гаусса (LOG), будут извлекать «ключевые точки» (с другим определением для каждого алгоритма, но в целом воспроизводимым).

  • Есть много других возможностей для изучения, не останавливайтесь на достигнутом.

Вот тут-то и начинается грубая сила.

  • Первое, что приходит на ум, — параллельные линии. Даже на кривой края линий «примерно» параллельны. Вы можете легко разработать алгоритм поиска дорожки в своей игре, находя линии, каждая из которых примерно параллельна своим соседям. Обратите внимание, что линейные детекторы, такие как преобразование Хафа, обычно применяются таким образом, что они находят «пики» или чрезмерно представленные углы в наборе данных. Таким образом, если вы сгенерируете преобразование Хафа для всего изображения, вам будет сложно найти любую из нужных вам линий. Вместо этого вы, вероятно, захотите использовать скользящее окно для изучения каждой области по отдельности.

  • В частности, говоря об искривленных областях, вы можете использовать преобразование Хафа для довольно легкого обнаружения кругов и эллипсов. Вы можете применить эвристику, например: две концентрические полуокружности с заданной разницей в радиусе (~ 250 в вашей задаче) укажут дорогу.

  • Если вы используете точки/углы, вы можете попытаться придумать алгоритм для соединения углов одной линии с другой. Вы можете установить ограничение на расстояние и градус поворота от одного угла к другому, что позволит закругленные повороты, но запретит невозможные пути. Это могло бы прояснить края дороги, будучи устойчивым к поворотам.

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

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

person Sean Connolly    schedule 27.12.2012