diffCheckOrg / diffCheck

diffCheck is a CAD-integrated tool for evaluating digital timber fabrication processes.
https://diffcheckorg.github.io/diffCheck/
GNU General Public License v3.0
3 stars 2 forks source link

Frontend segmentation components #23

Closed DamienGilliard closed 2 months ago

DamienGilliard commented 4 months ago

This PR concerns the segmentation of the scan. We use the 3d model to identify the pieces we need to segment. It introduces both the cpp backend and components for:

DamienGilliard commented 4 months ago

Proposed strategy for additive:

Capture d’écran 2024-06-01 à 14 16 18
9and3 commented 3 months ago

thanks for the proposal @DamienGilliard ! 🚀

my questions/doubts:

DamienGilliard commented 3 months ago

Thanks for the reply !

I share your doubts about the recursive registration, i will soon know if it works sufficiently well (computation time wise, and accuracy wise)

For the second point, the reason is that planar surfaces in the scan can be the result of different pieces combined. This means that plane segmentation is not sufficient to get the point clouds of each piece. Do you agree ? I might be missing something ;)

9and3 commented 3 months ago

For the second point, the reason is that planar surfaces in the scan can be the result of different pieces combined. This means that plane segmentation is not sufficient to get the point clouds of each piece. Do you agree

Yes you are right indeed. Got no solutions for that though..

DamienGilliard commented 3 months ago

This branch has now been cleaned and contains the implementation of the initial segmentation. Branch(es) of this branch will contain the further implementation of the "semantic" segmentation. Capture d'écran 2024-06-23 124431

DamienGilliard commented 3 months ago

image on rougher point clouds (AKA real world point clouds), the plane segmentation leads to unsatisfactory results and will require additional steps to reach good results. Re-introducing an association distance threshold so we can only associate the closest points of the segments, instead of all points.

DamienGilliard commented 3 months ago

@9and3 add:

9and3 commented 3 months ago

I just merged the main in 58daa2a (it was a bit outdated this branch for doing the wraps), I think the easiest would be to not branching out for the wraps. If ok for you I will do it here directly and wait for your PR in #33 .

9and3 commented 3 months ago

Hello @DamienGilliard ,

I refactored/modified a bit the segmentation backend (mainly small fixes and decoupled some things from the segmentation function). I added two components: a) the normal estimator + b) the normal segmentation.

gh_snap5

Pop a message when the scan segmentation is ready for review on the other PR! 👍

DamienGilliard commented 2 months ago

Et merci !!

9and3 commented 2 months ago

Hello @DamienGilliard ! As discussed here's the 🥔 .. You can find an example file with internalized data I was testing here.

The metadata and wrap is there, just some work from c++ is needed.

As a note:

image

Let me know if you can make the associator a bit more tolerant to worse normal and less populated points as the one internalized the gh file.. thanks` 🦖

DamienGilliard commented 2 months ago

@9and3 I'm on it !

DamienGilliard commented 2 months ago

Capture d'écran 2024-07-16 214321

[WIP]:

Next Step:

9and3 commented 2 months ago
  • find a way to remove unwanted points that are now associated as a result of the new point association technique:

this point can be achieved by euclidean clustering/filtering maybe

9and3 commented 2 months ago

Let me know when we can merge (I left a note for the DFMesh.hh header to be integrated with the isPointOnFace() method ;) )