Our government sadly doesn't provide the return number, so I had to do things manually. I've recently used CSF Filter within CloudCompare (included from version 2.8 beta, its standard location is on the right "CSF Filter"). It basically flips the pointcloud upside-down, then drapes a cloth over it, so anywhere where trees would be, the cloth will only fall onto the ground.Just working out how to filter by the scans 'return', to remove tree noise... The last return being ground height info. It would also improve workflow having RGB info for all the points in all the clouds, I'm reasonably sure I have a workaround in the pipeline.
This is a very quick and rough example, but it works pretty great.