Обнаружить все ветки в изображении растения

Я хотел бы знать что-то, что обнаружит все зеленые ветки из следующего изображения

введите описание изображения здесь

В настоящее время я начинаю с применения фильтра Frangi

   options=struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
 'FrangiBetaTwo', 7, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(img), options);

Выход фильтра Frangi выглядит следующим образом

введите описание изображения здесь

За этим следует преобразование Hough Transform для обнаружения всех строк

[H,theta,rho] = hough(outIm,'Theta',-90:1:89);
P = houghpeaks(H,100,'threshold',ceil(0.3*max(H(:))),'NhoodSize',[21 21]);
lines = houghlines(outIm,theta,rho,P,'FillGap',10,'MinLength',100);

Выводится этот

введите описание изображения здесь

Любые выводы о том, что я могу попробовать, помимо этих методов?

Ответ 1

Вы можете использовать модель гауссовой смеси с использованием цвета (GMM) для сегментирования зеленых ветвей. Установите 2 модели GMM 1 для зеленых ветвей и 2-й для остальной части объектов на изображении. Но чтобы инициализировать то, что вы должны сначала пометить некоторые ручные записные книжки, чтобы узнать GMM, как выглядят ветки и другие. После установки обеих моделей GMM на основе каракулей вы можете найти вероятность всех пикселей для обеих моделей GMM, и на основе этого вы разделите свои две ветки и не ветки. Маркировка каракулей должна охватывать большую часть цветовых вариаций изображения.