нахождение контуров корня растения

1

У меня есть изображение, которое имеет такие корни: Изображение 174551

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

Я также непосредственно применил определение canny edge и contour, как этот снимок ниже. Он имеет около 62000 контуров, но я не могу использовать его, чтобы получить контур каждого корня. Изображение 174551

Я также породил изображение, используя HSV, а затем некоторое среднее размытие. Но это не уменьшило шум. Дальнейшее размывание приводит только к потере корневых функций.

Изображение 174551

Может ли кто-нибудь предложить мне лучший подход к решению этой проблемы? Будет ли работать подход на основе машинного обучения лучше? Спасибо

Теги:
opencv
opencv-contour
edge-detection

2 ответа

0

Первый шаг определяет большой корень, пользовательский выбор или большую эрозию. Второе основание шага по предыдущей координате центра большой площади, создайте алгоритм заполнения (например, Paint Bucket Tool in Paint) на этом исходном пороговом изображении

  • 0
    Спасибо за предложение. Проблема в том, что у меня есть несколько таких изображений, и некоторые из них имеют корни ближе, некоторые в другой ориентации. Я пытаюсь понять, смогу ли я написать скрипт для обнаружения на всех изображениях без какого-либо вмешательства пользователя.
  • 0
    @ShankarS Используйте cv2.findContours для обнаружения самой большой области и примените второй шаг, описанный ранее, ориентация не является проблемой.
0

Используйте Cv2.BoundingRect(), он получает прямоугольную область вашего контура. Также вы можете использовать MedianFilter чтобы избавиться от шума "соль и перец" на вашем снимке.

  • 0
    Использование медианного фильтра также разрушает корневые части, поскольку они очень тонкие.
  • 0
    Кажется, мы уже близко. Я полагаю, попробуйте использовать функцию Дилат, она сделает ваши контуры толще. Тогда просто ищите самые большие контуры на изображении. Вы могли бы написать простую логику для этого. Просто найдите три самых больших контура.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню