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

12 views (last 30 days)
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)

Image Analyst
Image Analyst on 25 Jun 2014
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.

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!