Subpixel edge detection with local surface fitting to maximum gradient

Dear all,
I’m new to vtk.

I’m wondering if there’s already a solutions for extracting surfaces from CT dataset, with subpixel precision.

Tools such as Slicer, FIJI and OpenIA uses marching cubes or flying edges for creating surfaces.

I’m looking for fitting surfaces to a local thresold rather than to a global ISO50 value.

Commercial tools such as VGStudio perform what they call “advanced surface determination” fitting surface locally taking into account the gradient of grayvalue rather than finding the closer position to a global value.
This is operated starting from an initial contour, computing normals and calculating (I guess) gradient and putting the edge at its maximum variation.

I work with wood objects, where variation in density in the same material can affect considerebly the surface extraction results.

thanks for your attention


To answer your question, vtkMarchingCubes and vtkContourFilter are two methods for generating surfaces with sub-pixel precision. But the question in your head seems to be different from the question you asked.

As far as I know, VTK has no filters that will produce surfaces based on the strength of the local gradient. Only the isovalue is used.

Thanks David for your reply.
You are right, I edited the post title.
In some application Global ISO tends to under-over-estimate regions with great variation in grayvalue from the average.

You can preprocess the image to remove global intensity variation and then use a global threshold value for surface extraction.

For example for MRI bias field correction algorithms (such as N4ITK) do exactly this. They are available in ITK and in most medical image processing applications.

Hi Andras.
I could, but variation in material densities are local and greater than global bias.
Wood density varies abruptly from the earlywood fo softwood to tropical hardwoods.
And they can be present in the same object.
Some part of its surface can be made of softwood, other from hardwood.
Extracting surfaces of multimaterial with great precision is my goal.

I see olny commercial packages are performing this, when devoted to metrology.

More structured ideas about it:

I tought it could be interesting also for medial application.

I think that slicer still has

slicer still hasn’t got a similar filter.

thanks for the attention

From a quick look at the paper referenced above, they performed some image preprocessing (anisotropic filtering) using ITK and surface extraction and smoothing (probably using VTK) . So, you may be able to reproduce their pipeline by writing a few ten lines of Python code.

Thanks Andras. It would be great! At the moment this is beyond my competence and skill.
At least you say that’s possibile, and this is a good news.
I hope that more people doing industrial CT will be interested in open-source post processing, developing scripts dedicated to its data post-processing.

Have you got any suggestion for further readings in filtering and surface extraction in ITK and VTK ambient?

VTK textbook, VTK examples, and the ITK software guide and SimpleITK notebooks are all excellent learning resources.

1 Like