How to detect and count the tree crown with a very high density automatically?

I'm trying to detect and count the palm trees at low density and high density. I used CircularHough function to detect circular radius and circular centroid of palm trees after pre-processed image. I got a fairly good result but there are some errors in the detection and some undetected trees which high density. My result showed in the link below.
I used this code to detect the tree crown.
tic;
[accum, circen, cirrad] = ...
CircularHough_Grd(a_dilate1, [5 22],...
8, 13, 1);
toc
if any(cirrad <= 0)
inds = find(cirrad>0);
cirrad = cirrad(inds);
circen = circen(inds,:);
end
togglefig Results
imshow(a_dilate1);
hold on;
plot(circen(:,1), circen(:,2), 'rh');
for ii = 1 : size(circen, 1)
rectangle('Position',[circen(ii,1) - cirrad(ii), circen(ii,2) - cirrad(ii), 2*cirrad(ii), 2*cirrad(ii)],...
'Curvature', [1,1], 'edgecolor', 'b', 'linewidth', 1.5);
end
My question is why this code can't detect the tree crown with higher density? Anyone can help me, please? And how to detect the tree crown with a very high density as in the picture below?

Answers (1)

If the image is pretty much solid green, how do you expect it to find the trees? Maybe you can just go with area fraction rather than the count.

2 Comments

Is it possible to detect the trees with cropped one tree as a sample image or by shape of tree crown?

Sign in to comment.

Asked:

on 25 Jun 2014

Commented:

on 26 Jun 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!