0

Я хотел бы знать, как я могу подойти к моей задаче: удалить черешок из листа, с очень незначительным эффектом на лист.OpenCV - Leaf Petiole Removal

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

Я попробую также сегментацию на основе цветового пространства HSV, но я очень буду признателен за идею пространства BGR.

Слева направо (входное изображение, контур найден морфологический наносятся структурным элементом размера ядра, которое зависит для каждого вида листьев)

Я использую OpenCV с C++.

example problem petiole detection

+0

Попробуйте дистанционное преобразование ..... это может дать некоторую проницательность –

+0

спасибо за предложение и отредактируйте советы: D – Alex

ответ

0

Как уже упоминалось в комментариях мне было интересно попробовать это сам. И это то, что я получил:

enter image description here

Я использовал расстояние преобразования, но окончательное решение не кажется настолько совершенным. Если вы хотите, у меня есть код на python.

КОД:

dist_transform = cv2.distanceTransform(thresh1,cv2.DIST_L2,5) 
ret, stalk = cv2.threshold(dist_transform,0.095*dist_transform.max(),255,0) 

stalk = np.uint8(stalk) 
cv2.imshow('stalk_removed.jpg',stalk) 

thresh1 Где это бинарное изображение листа.

+0

Python тоже будет хорошо! – Alex

+1

Я нашел некоторые другие методы, но это было здорово для того, чтобы дать мне идеи; так что для меня это нормально. – Alex

+0

Рад, что я мог помочь. Кстати, какие другие методы вы нашли? Мне интересно знать ..... –