Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect all branches in a plant picture

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 ?

like image 205
Harjatin Avatar asked Jan 24 '16 02:01

Harjatin


1 Answers

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.

like image 168
Gaurav Pawar Avatar answered Oct 16 '22 19:10

Gaurav Pawar