0

Я хотел бы обнаружить форму ниже, я попытался следующие методы:Я хотел бы, чтобы обнаружить пользовательскую форму с помощью OpenCV

1) обучив каскад с использованием opencv_traincascade и создания позитивных изображений с использованием opencv_createsamples - никакого успеха , лот ложных срабатываний, объект не имеет много функций.

2) Пробовал детекцию эллипса, снова много ложных срабатываний, так как на сцене много эллипсов. Кроме того, он не дал твердого обнаружения, поскольку это не идеальный эллипс.

3) Пробовал обнаружение цвета, дал хорошие результаты, но объект имеет несколько цветов, начиная от зеленого, красного, синего и желтого, поэтому цвет не может быть использован для обнаружения. Кроме того, он зависит от освещения.

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

Results using canny edge detection

Любая помощь будет принята с благодарностью.

+0

Вы пытались извлечь контур и ' резюме :: matchShapes'? Я нашел, что сопоставление фаски неплохое, но для оптимизации необходимых задач, таких как вращение объекта, масштаб объекта и искажения перспективы, необходимы определенные оптимизации. http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#double%20matchShapes(InputArray%20contour1,%20InputArray%20contour2,%20int%20method,%20double%20parameter) – Micka

+0

Я бы проверял (Охрана природы) (https://www.kaggle.com/c/the-nature-conservancy-fisheries-monitoring). Там много обсуждений подобных проблем. – Tchotchke

+0

@Micka Спасибо за это, я пробовал извлечение контура, но не пробовал 'cv :: matchShapes' даст попробовать. @Tchotchke Awesome, спасибо, что указал мне в этом направлении - проверит обсуждения (обсуждения). –

ответ

0

Возможно, вы можете попробовать что-то вроде этого. После этого у вас есть изображение края:

  1. Используйте findContours() для получения разделенных контуров.
  2. Запланируйте все контуры на черном изображении и используйте convexHull, чтобы иметь форму с этим контуром.
  3. Создайте шаблон края вашей формы и примените convexHull на нем: это будет ваш шаблон для поиска в каждом новом изображении.
  4. Для каждого нового изображения вычислите Normalized Cross Correlation и найдите координаты с max Correlation.

Этот метод имеет сильное предположение: форма, которую вы ищете, не меняет своего вращения, либо его масштаб. Если вы хотите быть инвариантным к вращению и масштабированию, вы должны применить другой метод для сравнения Template и Imgae (например, сопоставление шаблонов, которое является поворотным и масштабирующим инвариантом, например: http://www.cv-foundation.org/openaccess/content_cvpr_2013/papers/Korman_FasT-Match_Fast_Affine_2013_CVPR_paper.pdf)

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