auto tree count

RokRok Global Mapper UserPosts: 19Trusted User
edited May 2014 in Elevation Data
Hi everybody,

I have classified airborne LiDAR data of the forest area. My idea is to aoutocount and position trees with use of normalised DSM that I can generate with GM (15.1). It's easy to determine each tree manualy in that DSM but I'd like GM would do it. Since there is only min/max function that sweeps dataset, my idea was to generate 1m contours. Than filter only contours with no other contours inside and generate 3D point in the weighted center of that contour. That is a long workaround and still need to filter out low contours that are generated in the "valleys" between crowns.
I would like to have function that would determine local min and/or max values (with certain treshold). What do you suggest?
Should generate slope/height raster layer and than try with raster calculator to determine tree positions?
Any ideas and suggestions appreciated. Thanks for the effort and best regards,
Rok

Comments

  • global_mapperglobal_mapper Administrator Posts: 17,238
    edited April 2014
    Rok,

    If you have classified Lidar I would suggest perhaps creating one grid surface from the ground/water points with the minimum filter, then creating another surface from the vegetation points with the maximum filter. Then use the Analysis->Combine/Compare Terrain menu command to subtract the ground surface from the tree surface and get a Signed Difference surface.

    I think any regions more than say 2 or 3 meters above ground might be considered a tree. You could then go to the Alter Elevation Values tab of the Options dialog for the difference grid layer and set the minimum valid to your minimum tree height (say 3 meters). This should make everything less than 3 meters above ground be invalid. Then right-click on the layer in the Control Center and select to create a coverage polygon. Hopefully there are a lot of little areas created from trees that are separate from others. You can then create points from the centroids of those areas using the Digitizer Tool and hopefully have tree points.

    Thanks,

    Mike
    Global Mapper Guru
    geohelp@bluemarblegeo.com
    Blue Marble Geographics for Coordinate Conversion, Image Reprojection and Vector Translation
  • RokRok Global Mapper User Posts: 19Trusted User
    edited May 2014
    Hi Mike,

    Thanks for reply. First part is clear and I call it "normalised DSM". I use LAS export with option save heights above ground. But in the forrest crowns are usually not separated. Would be hard to implement function to search for local height extremes? I guess it would be helpfull for many topographic tasks and for "smart" decimating ground from pointcloud.

    Thanks for the effort and best regards,
    Rok
  • RokRok Global Mapper User Posts: 19Trusted User
    edited May 2014
    Hi Mike,

    Any chance for mentioned local min/max function in the near future?

    Thanks and best regards,
  • global_mapperglobal_mapper Administrator Posts: 17,238
    edited May 2014
    You could create a regular grid of area features over the surface grid using the option to create a regular grid of features in the Digitizer Tool. Make it small enough to get most tree crowns (maybe 5m x 5m grid?). Then select those areas, right-click in the Digitizer tool, then select the option under Measure/Analyze to calculate elevation stats. This will include a minimum and maximum elevation in each area and give you a prompt to save the min/max points in each area as new point features.

    This will then give you points for the maximum height inside each little area from the normalised DSM that you have made only valid above a certain height delta. Those may work well as tree crown points.

    Let me know if I can be of further assistance.

    Thanks,

    Mike
    Global Mapper Guru
    geohelp@bluemarblegeo.com
    Blue Marble Geographics for Coordinate Conversion, Image Reprojection and Vector Translation
  • RokRok Global Mapper User Posts: 19Trusted User
    edited May 2014
    You could create a regular grid of area features over the surface grid using the option to create a regular grid of features in the Digitizer Tool. Make it small enough to get most tree crowns (maybe 5m x 5m grid?). Then select those areas, right-click in the Digitizer tool, then select the option under Measure/Analyze to calculate elevation stats. This will include a minimum and maximum elevation in each area and give you a prompt to save the min/max points in each area as new point features.

    This will then give you points for the maximum height inside each little area from the normalised DSM that you have made only valid above a certain height delta. Those may work well as tree crown points.

    Let me know if I can be of further assistance.

    Thanks,

    Mike
    Global Mapper Guru
    geohelp@bluemarblegeo.com
    Blue Marble Geographics for Coordinate Conversion, Image Reprojection and Vector Translation

    Hi Mike,
    I have checked your approach and it gets me quite near. Next step would be grouping max hight points inside certain radius into one, but I don't know how to do it.
    I have considered another approach that I thought it could get good results. After exporting normalised laz with only high vegetation, I imported it again as depths. Than change class for all points from vegetation to unclassified. Than autoclassify ground with large bin size. Idea was that only points on the top of the crowns will be classified as ground, but results were poor. Maybe you can help me how this auto ground tool works so I can figure what parameters would be best.

    Thanks for your effort and support,
    Rok
  • global_mapperglobal_mapper Administrator Posts: 17,238
    edited May 2014
    Rok,

    Do your Lidar points have multiple returns per-pulse? The auto-ground classification will only consider the last return of a pulse since that is the only one that could be ground, so if your tree crowns were the first return of several (quite likely) it wouldn't matter if the elevation was inverted, they would still be ignored as potential ground points.

    The auto-ground classification wouldn't work very well for just inverted vegetation anyway since tree crowns wouldn't make for a very obvious ground surface as what appears to be the 'ground' surface would undulate up and down so much that almost nothing in a vegetated area would look like a ground surface, at least not with enough certainty to classify the points.

    Would you could maybe do instead is grid your max height points to some binned grid size large enough to group nearby crowns but small enough to not grab multiple tree crowns. So maybe a 3m grid with the 'maximum' setting so you always get the top. Also slide the no-data distance slider all the way to the tight side so you don't get any valid grid cells in between clusters of max height points. Once you have that grid, right-click on it in the Control Center and select to create points from the grid cell centers. This will give you a new point cloud layer with a point from each grid cell that had at least one 'max-height' point. The tree crown point location should be within a half-grid cell (1.5m in this example) of the actual crown location.

    Let me know if I can be of further assistance.

    Thanks,

    Mike
    Global Mapper Guru
    geohelp@bluemarblegeo.com
    Blue Marble Geographics for Coordinate Conversion, Image Reprojection and Vector Translation
Sign In or Register to comment.