Detect all branches in a plant picture

2019-04-21 04:18发布

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

enter image description here

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

enter image description here

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

enter image description here

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

1条回答
淡お忘
2楼-- · 2019-04-21 04:48

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.

查看更多
登录 后发表回答