Page 1 of 2

[request]Point Cloud Cleanup

Posted: Tue Jul 03, 2012 6:20 pm
by vscalone
I've used CloudCompare for a whole hour now, and I can see that it works very well compared to other programs like it. I have one request for this program, in order for it to be a viable solution to mesh creation for my purposes.

A way to select vertices and delete them from the point cloud, would make this the perfect and simplest program for my needs.

Please let me know what can be done about this and how I can help, my background is in 3D modeling but I'm not experienced enough in writing plug-ins or programming.

Thanks

Re: [request]Point Cloud Cleanup

Posted: Wed Jul 04, 2012 9:15 am
by daniel
Hi,

indeed it shouldn't be too complicated as you can already 'select' vertices (in fact you can only pick them and spawn a label attached to them with SHIFT + left click on a vertex). To do that on a mesh you'll need to force the display of its vertices (by checking the checkbox on the left of the 'vertices' entity in the db tree). You can also enlarge the displayed size of the points to make this process easier.

The main issue here is the human interface: how do you imagine such a tool? Do you want to delete vertices or would it be sufficient to select triangles and delete them (I must admit it would be much easier).

Alternatively, you could flag vertices (by picking them sequentially) and eventually use the 'filter points by value' tool to remove all vertices with a given value. But I guess an interactive edition would be more convenient?

Re: [request]Point Cloud Cleanup

Posted: Fri Jul 06, 2012 6:26 pm
by vscalone
It may be easier to delete triangles, but that is only after computing a mesh based on points. With some point clouds, certain points will make amorphous shapes protruding from the desired mesh. Deleting those triangles can create holes that you then have to patch, making the process longer.

My process is...
Running photo solve.
Taking point cloud into MeshLab to do cleanup and build geometry.
Low-poly retopologizing and painting with modo.

MeshLab is a good program but can't handle high density clouds very well, I've noticed higher density clouds are computable with CloudCompare. If you look at Meshlab, they have a simple select vertices tool which generates a selection box, then hit CTRL+Delete(or the UI button) to delete them.They don't have a hotkey for selecting though.

Meshlab also cannot handle multiple point cloud merging as CloudCompare can, and that is a big benefit to have.

Re: [request]Point Cloud Cleanup

Posted: Mon Jul 09, 2012 7:17 pm
by daniel
Hi,

have you tested the 'segmentation tool'? (the scissors icon). You can selected points (either inside a rectangle or inside a polyline that you draw on screen) and you can afterwards flag them as 'inside' or 'outisde' your selection. You can repeat the process many times until you validate this manual 'segmentation'. On completion, CloudCompare will split the cloud in two new clouds.

Re: [request]Point Cloud Cleanup

Posted: Mon Jul 09, 2012 7:21 pm
by vscalone
I have not tested that yet. I'm past the point cloud section of my procress with this current project but I will keep that in mind for the next project.

Re: [request]Point Cloud Cleanup

Posted: Fri May 10, 2013 6:12 am
by andrewod
The snippet tool is good for chopping chunks out of the cloud but you need a better tool for clean up. In fact you really need some 3d functionality for cleanup. Snippet is a 2d tool in the plane of the screen so you have to hack the cloud to get to points that are surrounded.

Suggest you add some type of three dimensional eraser. Perhaps being able to select and clear an octree cell may be the place to start.

Re: [request]Point Cloud Cleanup

Posted: Mon Jan 20, 2014 11:50 pm
by jedfrechette
andrewod wrote:The snippet tool is good for chopping chunks out of the cloud but you need a better tool for clean up. In fact you really need some 3d functionality for cleanup.
A nice 3D selection tool would be pretty cool but coming up with a good UI might be a challenge.

I think there is quite a bit of room for improvement in the existing 2D segmentation tool to make it more efficient and user friendly. Right now all the extra clicks required to select points and transfer them to a new cloud make it impractical to use except, as andrewod notes, for chopping out a few big chunks. Consider the common case where scans were collected outdoors and you want to segment out all of the partially scanned pedestrians or vehicles. Doing this might require making hundreds of small individual selections involving thousands of clicks. I don't, however, want to segment my input cloud in to hundreds of separate clouds. I want to send the individual selections to a few segmented clouds, maybe a "pedestrians" cloud, a "vehicles" cloud, and a "junk" cloud, or maybe I just want everything to go to the "junk" cloud. With that in mind this is how I would redesign the segmentation tool.

First I would model it after the selection tools in Photoshop (or most other DCC applications). Instead of an extra button click to select inside or outside the 2D boundary every time a new boundary is drawn you should be able to set a global mode for the tool (add to selection, remove from selection, toggle selection) that affects all boundaries that are drawn. There should also be ways to invert the current selection, deselect everything, and select everything.

Next, instead of always creating a new point cloud every time I confirm a selection I should be able to set a target point cloud that the current selection is moved to when I confirm it. The option to create a new cloud from the selection is also useful and should still be kept.

Oh yeah, configurable keyboard shortcuts for all of these tasks are pretty important too. Basically I want to be able to zoom in on part of the cloud make a selection, pause segmentation, rotate around to a few other angles to confirm only the points I want are selected, resume segmentation, add or subtract from the selection as needed, confirm the selection, and move on to the next area all in a few tens of seconds at most.

All of the above would work quite well with the existing box and polygon selection tools. Two additional selection tools that would be useful though would be Freehand and, my personal favorite, Paint Brush selection. These selection tools would be particularly useful when used with a graphics tablet.

Although the above changes would greatly increase usability they don't help much with the other problem andrewod points out, the difficulty of getting at a cluster of points that are surrounded by other points. To address this it might be useful to introduce the concept of points being either hidden or visible orthogonal to the point cloud that they belong to. For example, I might start with a single point cloud of a statue inside a room. I want to segment out the statue but points on the walls and ceiling are getting in the way and making selection difficult. Being able to select the walls and ceiling, hide the points, segment out the statue, then restore the hidden wall and ceiling points; leaving me with two point clouds (one for the room and one for the statue) would be very useful. In addition to being useful for ad-hoc selections like this having the ability to temporarily hide points would also be useful for working through a data set in a more systematic way. For example, with large outdoor datasets it is often convenient to step through them, working with consecutive slices of points each of which is only a few meters thick.

Thanks for making it all the way through this post. Seeing as this is my first post I would also like to say thanks for all of the hard work that has already gone in to CloudCompare. The software has a lot of potential and in someways is already much nicer than some of the commercial offerings.

Re: [request]Point Cloud Cleanup

Posted: Tue Jan 21, 2014 9:44 am
by daniel
Wow, thanks for the suggestions. It's really interesting to get feedback from users and to hear about their workflow or their needs.

Such a segmentation tool would be great of course. But frankly I don't know when we will have time to do all this (but we'll definitely try to pick some ideas from this).

Meanwhile, I'll take this opportunity to regroup several pieces of information about the 2D segmentation tool that are spread all over the place (I'll put all this on the wiki afterwards).

First you can use keyboard shortcuts (since version 2.5.2):
  • space bar = pause/unpause
  • tab key = switch between polygonal and rectangular selection mode
  • 'I' key = segment points inside
  • 'O' key = segment points outside
  • CTRL key = use a rectangular selection area instead of the polygonal one
  • return key = apply segmentation (close the tool)
  • delete key = apply segmentation and delete hidden points (close the tool)
  • escape key = cancel transformation (close the tool)
And to approach a little bit the workflow you suggest, when I want to segment multiple parts so that they all fall in the same cloud, I use the following workflow:
  • start the tool
  • segment the first entity (just define your polygon and once done use the ''I'' (inside) or ''O'' (outside) shortcuts)
  • don't close the tool (once you have segmented the cloud you are automatically in the "paused" mode that let you freely transform the camera)
  • un-pause the tool (with the space bar) and segment a new part
  • repeat the process until all parts have been segmented out.
  • close the tool the normal way (''enter'' key) in order to get two clouds: one with the pedestrians for instance, and one with the other points.
Of course you'll have to be very careful with the current tool as there's no 'undo' and if you do a single mistake you'll have to repeat the whole process ;)

Re: [request]Point Cloud Cleanup

Posted: Tue Jan 21, 2014 3:23 pm
by jedfrechette
daniel wrote: First you can use keyboard shortcuts (since version 2.5.2)
The shorecuts are great, I didn't know they existed. It would probably be good to add them to the tool tips.
daniel wrote:
  • segment the first entity (just define your polygon and once done use the ''I'' (inside) or ''O'' (outside) shortcuts)
  • don't close the tool (once you have segmented the cloud you are automatically in the "paused" mode that let you freely transform the camera)
  • un-pause the tool (with the space bar) and segment a new part
The problem is as soon as I use I press (I) to segment inside the rest of the cloud is hidden so I can't build up a a selection from separate parts. From my last post the idea of setting a target cloud that confirmed points are moved too is probably the feature I would like to see most and I think it would really help in this situation.
daniel wrote: Of course you'll have to be very careful with the current tool as there's no 'undo' and if you do a single mistake you'll have to repeat the whole process ;)
Yeah not having an undo also slows down the process a lot. Even if I don't make any mistakes, I spend way more time than I would like thinking about the next step because I'm afraid I will.

Re: [request]Point Cloud Cleanup

Posted: Tue Jan 21, 2014 3:42 pm
by daniel
Well indeed in this case you'll have to think the reverse way and segment "outside" (the removed points will all be "output" to a new cloud on completion of the process).

Of course this way you don't see your collection "growing" but al least you see the job progress (e.g. you'll remove the pedestrians one after the other).