У меня есть изображение, которое имеет такие корни:
Я хочу обрезать каждый корень отдельно. Сначала я думал о тяжелой дилатации, сопровождаемой эрозией и контурным обнаружением капли, но поскольку корни тонкие, это не работает.
Я также непосредственно применил определение canny edge и contour, как этот снимок ниже. Он имеет около 62000 контуров, но я не могу использовать его, чтобы получить контур каждого корня.
Я также породил изображение, используя HSV, а затем некоторое среднее размытие. Но это не уменьшило шум. Дальнейшее размывание приводит только к потере корневых функций.
Может ли кто-нибудь предложить мне лучший подход к решению этой проблемы? Будет ли работать подход на основе машинного обучения лучше? Спасибо
Первый шаг определяет большой корень, пользовательский выбор или большую эрозию. Второе основание шага по предыдущей координате центра большой площади, создайте алгоритм заполнения (например, Paint Bucket Tool in Paint) на этом исходном пороговом изображении
Используйте Cv2.BoundingRect()
, он получает прямоугольную область вашего контура. Также вы можете использовать MedianFilter
чтобы избавиться от шума "соль и перец" на вашем снимке.