markusmnzngr / LiDAR-3D-Urban-Forest-Mapping

3D modeling of urban forests based on LiDAR point clouds
https://ioer.de/en/research/spatial-information-and-modelling
MIT License
11 stars 3 forks source link

Using LiDAR Classification of Vegetation instead of NDVI and "Gridded building roof heights" ? #1

Closed KlatbahII closed 1 year ago

KlatbahII commented 1 year ago

Hi i read your article, and tried your process with my data on a little area.

Data used

I have a LiDAR with a density of 20 pts/m².

lidar_classification
LiDAR i used display in CloudCompare. On this area, the dimension Classification have value from 1 to 6

I also have an 3DCityDB Database with buildings on the area.
I managed to create the csv with the "Gridded building roof heights"

zone_1
CSV file with "Gridded building roof heights" displayed in QGIS.

I don't have building models on all of the area where i want to use your process.
I have an IRC raster(RGB + NIR) that i used to generate a NDVI raster with a resolution of 50cm.

qgis_ndvi
NDVI raster displayed in QGIS

Results

I managed to get good results. So thanks a lot for your process.

qgis_results
Results displayed in QGIS, i'm impressed with the delineation/delimitation of the crowns and the positioning of the trees.

But in the next picture, you can see the reason why i create this issue.
I display here the LiDAR that is created by your process in the folder urban_forest_classification

lidar_results
Picture on top is the output lidar of your process with RGB displayed, and the picture on the bottom shows the dimension Classification of the LiDAR where Yellow is Vegetation(5) and Orange is Building(6)

Possible improvement ?

But i noticed something that i wanted to improve.
It is a specific thing to the data i have at my disposal.
The LiDAR i have has a really good point segmentation in the dimension Classification.

So i wanted to know if it's possible to run your process without :

And only use the LiDAR with my Classification where the areas of vegetations are already "segmented". I want to know if i can use the points that have a value of 5(Vegetation) in the dimension Classification.
Because after reading your paper, and running your process, what i think i understood is that the NDVI and the "Gridded building roof heights" are used to define the "areas" of vegetations where the trees and the crowns will be created.

I ask you this, because when i looked at the results i found out that trees are generated on wrong places, where the points in the LiDAR are classified as Building.
There is two issues that i found:

Trees and crown are generated where points are classified as Building(6)

issues_tree
The areas in yellow are where trees are false.

Crowns covers area where all the points are classified as Building(6)

issues_crown_building
Crowns contains Building points. The little black and white points are the "Gridded building roof heights"

I hope my explanations are clear.
If it's not and you're willing to respond let me know what you didn't understand.
I've never used R before and managed to get your process running with my data, and i wanted to know if it's not too hard to do a little tweaks.

Thanks in advance

markusmnzngr commented 1 year ago

Hi Klatbahll,

Thanks for your comment. I’m happy you could make use of the workflow.

The whole workflow is sequential and the first steps where NDVI and roof heights are valuable information are mainly to classify tree points in the point cloud.

So if you already have a good classification of tree points you could skip the first steps and filter your point cloud, rasterize it to a canopy height model and then run the parts where individual tree segmentation starts.

For point cloud filtering and rasterization I would point you to the lidR package, from where I also use the functions. I hope I could help you and would close the issue because the code is specialized to give a classification of tree points in LiDAR data that aren’t already classified.

Let me know if you have trouble adapting the code to your purpose.