In this youtube channel from Micasense, they calculate tree count from a multispectral image.
Here is a list of the tools used in the workflow:
- Use "Raster calculator" to generate OSAVI index. You need Red and Infrared bands, the same used for NDVI.
- Use the identify tool on the OSAVI index and multispectral image to know which values correspond to the trees and with to backgound.
- Use "Raster calculator" to set a threshold that includes OSAVI values > 0.88 (adapt to your data) and Infrared values > 6000 (adapt to your data)
- Use the sieve tool to remove isolated pixels (noise in the threshold filter)
- Use the "Polygonize (Raster to Vector)" tool to create one feature for each tree.
- Use the query builder to exclude the polygon created for the background.
- Use the "buffer" tool with a small distance (adapt to your data) to smooth the tree polygons and avoid counting a possible branch as a whole tree. Make sure to check the "Dissolve result" option.
- Use the "centroids" tool to have a point for each feature.
Until here you already have one point per tree.
However, you can use some tools to help validate the detections and find areas of possible low confidence in the detection:
- Generate a "Proximity map (raster distance)" based on the centroids to highlight clusters of points which may need further checking.
- "Polygonize" this proximity map. Then calculate the area of the resulting features. Bigger outstanding clusters may indicate areas to check the detections.
- Tweaking the threshold and sieve values may help fine tune the detections.
See the video here:
Performing stand counts using multispectral data and index thresholding in QGIS