[Insight-users] medial curve extraction compile error
Xavier Mellado Esteban
xme at unizar.es
Mon Jun 30 09:30:37 EDT 2008
Dear Alex,
Below are my comments.
Oleksandr Dzyubak <adzyubak at gmail.com> ha escrito:
> Dear Xavier,
>
> I still cannot make the algorithm work. It does not extract the centerline.
> What am I doing wrong?
>
> To make my tests simple, I made a 3D cylinder extruded along Z axis
> (just one vessel)
> and work with that binary image (Object white, background black. Should
> it be vice versa?).
It depends on the filter that generates the DT, not on the
representation of the object. I use for synthetic images 0 for
background, and 1 for object. But, it doesn?t matter, the important
step is how the computation of the DT is done, not the representation
of the binary object.
> I have tried several DT algorithms from the ITK lib (Danielsson,
> Maurer, and "Generalized DT").
> As you advised, I made a signed distance transform on the images with
> negative sign inside.
>
> You say that DT should be "with positive sign outside the object, and
> negative sign inside."
> So it has to be "zero-crossing at the object edge" then, right?
Yes.
> Has the cylinder to be solid or just a surface before DT?
>
If it is not a solid, there is no notion of inside or outside, and
therefore there is no sign. A binary object is a solid. The only
exception to this is where the vessel is cut by the image border.
> Concerning the parameters sigma and threshold.
> "Usage example" suggests sigma=1.0 and threshold=0.0.
> In the code the defaults are sigma=0.5 and threshold=0.0.
> How sensitive are they to variations?
This sigma is used for smoothing a bit the DT before compute the
gradient. I usually use the x axis spacing (if the y axis spacing is
the same). Otherwise, you can modify the executable and use a
different sigma for each direction., if you want.
Leave the threshold at 0.0.
>
> Thanks,
>
> Alex
>
The filter was thought for being used on Geodesic Active Contours
outputs (or similar with signed DTs).
Options:
1) Try to generate a synthetic solid (binary image) and then segment
it with the Geodesic Active Contours, or any other segmentation filter
with a DT as output (use ITKSnap for "rapid segmenting").
2) Generate your object with Paraview and convert it to a DT. Or use
Paraview to convert pre-existing objects to DTs. The synthetic objects
for the figures in the paper where created using this option.
I hope this helps. Regards:
Xavi
PD: If it doesn?t work, you may send me your synthetics objects and
DTs to take a look at them.
> Xavier Mellado Esteban wrote:
>>
>> Dear Alex,
>>
>> I fixed the problem. I did some changes in file
>> "itkAverageOutwardFluxImageFilter.h" in order to compile it with gcc
>> 4.x.
>>
>> I test it on a 32 bits machine, with OpenSuse 10.3, gcc 4.2.1, and
>> ITK 3.4. It works now and it was repacked and uploaded as
>> "MedialCurve-IJCv21.zip".
>> Try it, please. Let me know if you still have problems.
>>
>> Please, read carefully the paper, and look at the testing data, to
>> know if your input images are suitable for this filter. They must be
>> signed distance transform images, with positive sign outside the
>> object, and negative sign inside.
>>
>> I hope this filter helps you. Feel free to contact me with any doubt.
>>
>> Best regards,
>> Xavi
>>
>>
>>
>>
>>
>>
>>
>> Oleksandr Dzyubak <adzyubak at gmail.com> ha escrito:
>>
>>>
>>> Hello,
>>>
>>> I just tried to test "Flux drive medial curve extraction" algorithm
>>> published by IJ.
>>>
>>> http://insight-journal.org/midas/handle.php?handle=1926/560
>>>
>>> I have a Linux box with gcc version 4.1.2.
>>> When compiling, I am getting error messages below.
>>>
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:84: error: 'InputImageDimension' was not declared in this
>>> scope
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:84: error: 'OutputImageDimension' was not declared in this
>>> scope
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:84: error: template argument 1 is
>>> invalid
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:84: error: template argument 2 is
>>> invalid
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:88: error: to refer to a type member of a template parameter, use
>>> 'typename
>>> TInputVectorPixelType::ValueType'
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:90: error: 'InputImageDimension' was not declared in this
>>> scope
>>> /home/dzyubak/Test/MedialCurve_IJCv20/itkAverageOutwardFluxImageFilter.h:90: error: template argument 2 is
>>> invalid
>>> make[2]: *** [CMakeFiles/itkMedialCurveTest.dir/itkMedialCurveTest.o]
>>> Error 1
>>> make[1]: *** [CMakeFiles/itkMedialCurveTest.dir/all] Error 2
>>> make: *** [all] Error 2
>>>
>>> How can I fix that?
>>>
>>> Thanks,
>>> Alex
>>>
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>>
>>
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users
More information about the Insight-users
mailing list