Non-zero 3D image surface

Hello,
I’d like to ask your advice.

INPUT

  • 3D image.
    • -1 = background
    • 0…X = object

OUTPUT

  • triangular surface
    • containing values equal to the value of the edge voxels of the object

Can you please advise me what combination of filters I should choose?
Thank you in advance for any advice…

  • triangular surface

Check vtkMarchingCubes & vtkFlyingEdges3D
and the examples therein.

containing values equal to the value of the edge voxels of the object

not sure what you mean here. But both filters should produce scalar values for each point based on the isosurface they belong to.

It’s possible that vtkDiscreteMarchingCubes will give you the desired result, and I think that’s the best place to start. However, it will create inner surfaces between each value in addition to the outer surface. It assumes the values are categorical (e.g. label values) rather than continuous.

A very general (but not very efficient) solution is to apply vtkThreshold to remove all cells with a negative value, followed by vtkGeometryFilter to get the outer surface.

Thank you for your answers. I’ll try your suggested solutions :+1: