2

Я пытаюсь написать сценарий в python для обнаружения и подсчета объектов внутри изображения, но я терпеть неудачу.Обнаружение и подсчет объектов на картинке

Впервые я заинтересовался и попробовал что-то с помощью компьютерного зрения. Я попытался использовать модуль cv2 (открыть cv), следуя инструкциям по сопоставлению функций и сопоставлению шаблонов, представленных here. Я также пытался использовать scikit-образ, но я тоже не могу добиться хорошего результата. Я также думал о поиске контуров, а затем оформил 2d-кривую.

Позвольте мне объяснить немного больше проблемы. У меня есть набор значков, составляющих большое изображение. Состав этого изображения или сцены выполнен простым фоном или прозрачным, а также несколькими изображениями из набора значков. Эти изображения из набора значков могут претерпевать в основном 3 основных преобразования: масштаб, вращение и перевод. Они также могут перекрываться.

An quick example by means of Android version icons.

Выход целевого сценария будет что-то вроде:

C -> 1

D -> 1

E -> 1

F - > 1

G -> 1

H -> 2

I -> 3

J -> 0

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

PS: извините за то, что не публикует здесь изображения, но у меня пока нет достаточной репутации.

ответ

1

Там много методов, которые вы можете попробовать. Но если вы действительно хотите сделать что-то быстрое и легкое, попробуйте манипулировать вашим набором изображений таким образом, чтобы каждая категория имела четко отличительные и уникальные цвета. Таким образом, вы можете принимать некоторые решения о присутствии объекта, ища свой цвет, или даже лучше подсчитать количество контуров определенного цвета.

Псевдо-код:

  1. предварительной обработки изображений - (нормализуют, порог только целевые цвета, используя функцию backprojections)
  2. findContours
  3. для каждого контура
    1. проверить, если он является допустимым контуром «функции» - вы можете позже улучшить свою программу, фильтруя некоторые шумные регионы.
    2. Оцените наиболее вероятную категорию, к которой она принадлежит.

Это также должно дать вам очень хорошую скорость работы.В противном случае вам нужно сделать некоторые предположения о масштабах, поворотах, окклюзии/перекрытиях значков.

+1

Спасибо, я попробую это решение как можно скорее. Во всяком случае, я достиг хороших результатов благодаря инструментам SVM для обнаружения объектов, доступных в [dlib library] (http://dlib.net/). –

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