Segmenting tree clouds: need some suggestions
I’m trying to segment a lot of trees of an 1 hectare big forest plot. Since segmenting it all at once is not feasible, because it is to much data, I decided to devide my original point cloud in smaller subclouds.
I know the exact position of every tree in that plot and hence I cropped a 30m hexagon shaped plot out of the original (did that with CloudCompare and a very useful command line script which I came up with [CMD.exe on windows]).
Now I have over 800 30m plots and my “target” tree is exactly in the center of that plot.
Then I created a script using the tutorials to segment and export the tree in the center of that plot to an individual point cloud.
1. create a list of files to load
2. create loop
3. load file using readers
4. classify ground points
5. create DTM
6. extract a slice parallel to the DTM
7. create 2D positions from point density
8. create point voxel grid
9. create seed voxel grid
10. segment using seed voxel grid
11. Modify voxel grid segmentation # to check whether the segmentation was successful ##I only keep validate trees
12. segment a scene using indices grid
13. export the segmented tree to xyb file.
This is working actually pretty good, BUT still I think this could be done more robustly.
If you look at the attached pictures I attached, you can see that nearly every tree in that plot is segmented. Is there a way that only the tree in the center gets segmented?
I tried to insert between step 5 and 6 an “Extract points in a part of a bounding box” step so that an small subset (1m in dieameter) is created and used that to create only one seed point. But doing so results that every tree is then a part of one subset (all trees would have the same color).
I tried as well to modify my parameters of seed point size and searching parameters for the clusterization but it is not leading to the desired results.
Do you guys have any suggestions how only the tree in the center of my plot is segmented?
p.s. I attached a sample plot as well.
p.p.s. I could in general decrease the size of my hexagonal plots, but some trees have crows which are about 30 m diameter and I want to include those as well.
p.p.p.s If it would help, I have a list with the exact coordinates of each tree I want to segment.
|Sep_trees_full_30m_plot.PNG (81.5 KB) Sep_trees_full_30m_plot.PNG|
|Sep_trees_full_30m_plot_2.PNG (302 KB) Sep_trees_full_30m_plot_2.PNG|
|02_Extract_Trees_Crown_Projections_Script.xsct2 (651 KB) 02_Extract_Trees_Crown_Projections_Script.xsct2||script for segmenting trees (loop)|
|Plot_1.xyb (1.37 GB) Plot_1.xyb|
you are right, the step does not allow you to use only one seed cluster. The target tree`s seed needs to run competitive djikstra vs the seed`s of its neighboring trees, expected 3-6 trees I assume.
You should simply extract like you do, then search for your desired cloud, but dont throw away all the other nice segmented clouds. The more you move from the center of the plot, the less good qsm will be, but
you should use up all your data, not only the one you have ground truth for.
Can I maybe use your cloud for screenshots and or video? I will leave a link with your name and you institution if you want.
thank you for your reply!
Since I want to correlate the QSM with other data I need to know which tree I just segmented. Thats why I only want to segment the tree in the center, because I now what ID this individual has.
Right now my script is running quite robust, but I have to check every tree manually. Its a tedious task but it does not take to much time. (5 min per tree).
I downloaded cloud, 2 logos and copied them together with a text file into a folder to not loose track. Might make the video on weekend if I find the time .
I modeled them with my still too unstable to release simpleForest plugin. This one I hopefully publish this summer, but as I left science my time to progress is more limited than 2-3 years before .
I will rerun that modeling and make a quick video on my old tutorial channel with the affiliation as requested.
Thanks already quite a lot
p.s. Too improve your target tree finding, here is what I would do:
- After segmentation store all trees with CT exporters as ascii files. Assuming that your target tree is one of the nice larger trees, sort all files by size. Remove (move to another folder to have still that data as I recommended) all files smaller than the 5-10 largest clouds. Drag and drop those large clouds into cloud compare. Click on the center tree which you look for and on cloud compares left side in the file list the correct name should be highlighted. Viola!!!
pps: Could you give me the latin and english name of the tree species? Would be amazing...
just send me an e-mail, so I can reply directly regarding the specie names.
regarding you recommendation, the target tree is not always the biggest one. The DBH varies from 5 to 80 cm...
But thank you anyways for your help that was good thinking!
Looking forward to your mail.
after spending the second time a long run to try to sent you an email I give up. I cannot sent to tobias.meißner@medizin.uni-leipzig.de from my emails as this includes UTF8 encoded “ß”. Do you have an alternative email?
I’m sorry there was a autocorrection error.
The correct email would be firstname.lastname@example.org. shame on me