Detect all branches in a plant picture

2019-04-21 04:36发布

问题:

I would like to know of something that will detect all the green branches from the following image

Currently i am starting with applying the Frangi filter

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

The output of Frangi filter is as follows

This is followed by Hough Transform to detect all the lines

[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);

The output is this

Any leads on what i can try apart from these techniques ?

回答1:

You can use color based Gaussian mixture model(GMM) for segmenting out green branches. Fit 2 GMM models 1 for green branches, and 2nd for rest of the objects in image. But to initialize that you have to mark some mannual scribbles initially to make know GMM how branches and other look like. After fitting both GMM models on the basis of scribbles, you can find likelihood of all pixels for both GMM models, and on basis of that you divide your in two regions branch and non branch. Marking of scribbles should cover most of the color variation in image.