"CHM with Detected Tree Tops" shows lack of trees

조회 수: 4 (최근 30일)
Pedro
Pedro 2023년 9월 15일
답변: Rahul 2025년 8월 12일
Hi there
I'm using the following code to calculate tree heights.
The issue I'm facing is that some trees are not being recognized/segmented, i.e. there are gaps. The image "CHM with Detected Tree Tops" shows the CHM with the canopys which are recognizable by human eye, but for some reason the detect tree tops code doesn't put the red dots on all the trees. It seems like the segmentation is considering a cluster of trees as one. I tried several grid resolutions and the smaller the number, the better the results. But it is still missing some trees. I also tried a mintreeheight of 2 meters (the trees of the terrain where way above this number).
What are the possible causes for this lack trees? Besides this parameters, the code is the same as in the link above.
Thanks

답변 (1개)

Rahul
Rahul 2025년 8월 12일
Hi Pedro,
I understand that you are working with the Extraction of Forest Metrics and Individual Tree Attributes example to detect tree tops from a Canopy Height Model (CHM), and that certain trees which are visually distinct are not being marked by the 'detectTreeTops' function. It is observed that varying 'gridResolution' and 'MinTreeHeight' improves results to some extent, yet some trees remain undetected, particularly when multiple canopies are close together and are segmented as one.
You can consider the following possible influencing factors while working with LiDAR-based tree segmentation workflows in MATLAB:
  • CHM resolution: Coarser resolutions can merge nearby canopy peaks, while overly fine grids may introduce noise.
  • 'WindowSize' parameter in 'detectTreeTops': Larger values merge adjacent trees, whereas smaller values can detect noise as trees.
  • Smoothing or filtering: Excessive smoothing on the CHM can remove smaller peaks before detection.
  • Local maxima detection limitations: Overlapping crowns may not produce distinct peaks in the CHM, causing under-detection.
It could be a good practice to experiment with smaller 'WindowSize' values and different CHM resolutions to better separate adjacent trees. Preprocessing the CHM with lighter smoothing or applying segmentation algorithms such as 'watershed' on the CHM can also improve results.
For example:
% Example: Adjusting detection parameters
% chm: Canopy Height Model raster
treeTops = detectTreeTops(chm, ...
'MinTreeHeight', 2, ...
'WindowSize', 3); % smaller window to separate nearby peaks
If you have control over CHM preprocessing, you can also try the following snippet:
% Optional: Light smoothing to reduce noise while keeping peaks
chmFiltered = imgaussfilt(chm, 0.5);
treeTops = detectTreeTops(chmFiltered, ...
'MinTreeHeight', 2, ...
'WindowSize', 3);
Fore more information regarding various functions and parameters mentioned in the given code snippet, you can refer to the following documentation links:

카테고리

Help CenterFile Exchange에서 Electrophysiology에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by