Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Holes in mesh-surface when using lloyd or odt optimization on labeled images

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Holes in mesh-surface when using lloyd or odt optimization on labeled images


Chronological Thread 
  • From: Sebastian Bachmann <>
  • To:
  • Subject: Re: [cgal-discuss] Holes in mesh-surface when using lloyd or odt optimization on labeled images
  • Date: Tue, 18 Feb 2025 09:06:10 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:X5F8SKHZqSu5N/BCpLqE1MeALOsnbusQ8zAX/mhsVBpeadyAiq mV7ZEmPGzP+VUssRYb6La90ci7MBThHPtOi7X5Uo3PYOCLghrLEGgm1/qH/9SCIULDH4xmuJ uIGpIWYLbN5BpB7foSizPXLz9P+ri6zJw=
  • Ironport-phdr: A9a23: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 /g61kVKR3w/Acnei3MGV35P/x8=
  • Ironport-sdr: 67b43f74_j1UIBpoa0cEpxw+X2kiRTGs/Cwz31c5fGB8DxQ6nSwGTxXW PMoJ43pNIu5ZL30mLph5MxP+15ThQay0G+LwBkg==

Hi!

Sure, here is an example: https://files.reox.at/.mesh/

You may have to run it several times until such a hole appears, as no optimization is present. However, you can make them appear much easier by changing the line with refine_mesh_3 to:
CGAL::refine_mesh_3(c3t3, domain, criteria, CGAL::parameters::odt());

ODT seems to be more prone than Lloyd.
I uploaded two surface.off files as well, where this can be seen (surface.off is without odt/lloyd and the second run, surface_odt.off is with ODT active).

Best,
Sebastian

Am 17.02.2025 um 11:34 schrieb Jane Tournois:
Hello,
can you please post some code and data so that we can try to reproduce your issue?
Best,
Jane

Le 07/02/2025 à 16:30, Sebastian Bachmann ( via cgal- discuss Mailing List) a écrit :
Hi!

I send this mail to the list yesterday, but apparently it was not posted - but I also did not get a rejection mail? I suspect that attachments are not allowed and get silently dropped?
So here it is again with a link instead, sorry if it is now posted twice!


I extended the example code from mesh_3D_image_with_custom_initialization.cpp to mesh a multi-label 3D image, i.e., I have for example 3 voxel values: 0 (background), 1 (some part), and 2 (some other part).
This works reasonable well, but if I go down with the cell size, I get weird artifacts in the surface of the mesh: at some random places, "holes" appear (see screenshot here: https://files.reox.at/.mesh/ screenshot.png).

I tried to track down the problem and it can be triggered by using lloyd or odt optimization. When either of these are used, such holes appear in my mesh (much much more in odt) - if I switch them off, these holes are usually gone. But I found also images were such holes appear in certain configurations, even without llyod or odt active.
There, I can influence these holes by choosing a larger relative_error_bound in create_labeled_image_mesh_domain (my default is 1e-7) or by generating a new mesh, as there is some randomness in initialize_triangulation_from_labeled_image (in my code, I specified a seed for the PRNG and thus can reliably trigger it by choosing a specific seed).

Interestingly, it seems to appear more often when more than two labels are used. Thus, in a binary image (only 0 and 1), this does not happen. For example, if I take the same image with 3 labels and replace all 2's by 1's, I get a much better mesh.

Is there anything I may have missed to implement, for example during the creation of the label domain? I can try to track down the problem even more, but don't know at the moment where to look next and thus would appreciate some guidance!

Best,
Sebastian





Archive powered by MHonArc 2.6.19+.

Top of Page