Point Clouds generated through photogrammetric methods (such as Dense Image Mapping) have different characteristics than traditional airborne laser scanner systems or “normal” LIDAR point clouds. Specifically, the data is very dense, which can negativity impact processing time, and the data is also very noisy, which can cause the normal classification routines to err. The echo information and surface roughness are not as useful with ground classification with photogrammetric point clouds, so we need to take a different approach to deal with these differences than we do with normal LIDAR data. Starting with TerraScan 016.022 for CONNECT edition the following workflow is now recommended.
Workflow
- Classify Isolated Points
- Classify Potential Surface (Classify Surface Routine)
- Smoothen Potential Surface
- Thin Potential Surface
- Classify Tentative Surface (Hard Surface Routine)
- Classify Ground (Ground Routine)
- Conduct above ground point classification process
This process can also be useful for processing point clouds gathered by low-end LIDAR hardware, which could have the similar issues of noisy data.
TS_1800_Photogrammetric Point Cloud Processing
Macros
01_isolated_hard_ground.mac
[TerraScan macro] Version=015.001 Description=Isolated, ground Author= ByLine=0 ByScanner=0 SlaveCanRun=1 AnotherComputerCanRun=1 CanBeDistributed=1 FnScanClassifyClass(9999,1,0) FnScanClassifyIsolated("1",7,2,"1",0.50,0) FnScanDeleteClass(7,0) FnScanClassifySurface("1",8,0.080,0) FnScanSmoothenXyz("8",0.100,"",0) FnScanThinPoints("8",16,2,0.100,0.100,0) FnScanClassifyHard("8",6,0.030,20.00,4.0,0.10,4.0,0) FnScanClassifyGround("6",2,"2",1,80.0,88.00,4.00,1.40,-1,5.0,0,2.0,0)
02_height_groups.mac
[TerraScan macro] Version=015.001 Description=Height from ground & grouping Author= ByLine=0 ByScanner=0 SlaveCanRun=1 AnotherComputerCanRun=1 CanBeDistributed=1 FnScanClassifyClass(8,3,0) FnScanClassifyClass(6,3,0) FnScanDistClass("Any","2") FnScanClassifyDistance("3",4,0.300,2.000,0) FnScanClassifyDistance("3",5,2.000,9999.000,0) FnScanAssignGroups("4-5",0,50,0,-1,0.250,10.0,2.50,-1,4.00,30,-1,20) FnGrpClassifyBest(3,"4-5",0.250,255,6,12,9,13,14,10,18,17,0)