[Insight-users] medial curve extraction compile error
Oleksandr Dzyubak
adzyubak at gmail.com
Tue Jul 1 18:48:43 EDT 2008
Dear Xavier,
Thanks for your quick response.
As you advised, I used ParaView for image manipulations.
For simplicity, I converted your sEDT example (cylinder.vtk) to the
Analyze75 format
and ran your algorithm on it. As you foresaw, it works fine.
However whenever I ran the algorithm on my synthetic vessels, it does not
give me a correct medial line.
The good news is that all the "heat sources" are located inside the vessel.
The bad news is that they are distributed over the volume
(mostly close to the back and front sides) instead of composing the one
pixel line.
BTW, it should not matter but just in case.
Your vessel is coplanar to the XY-plane versus mine being normal to the
plane.
Could it affect the result somehow?
You can find the test images I use following the links below.
1) Synthetic one vessel 3D binary image (400x400x80) without noise*
(**Cylinder.tar.gz
<http://interdiscipline.org/Physics/ImageProc/Images/Cylinder.tar.gz>)*.
The image is in Analyze75 format with 8 bit unsigned char (Little
Endian) pixel type (19.8 KB).
Background is set to "0" and foreground "255".
http://interdiscipline.org/Physics/ImageProc/Images/Cylinder.tar.gz
2) Its negative signed Euclidean Distance Map image *(**sEDT.tar.gz
<http://interdiscipline.org/Physics/ImageProc/Images/sEDT.tar.gz>)*.
The image is in Analyze75 format with float (Little Endian) pixel type
(26.3 MB).
http://interdiscipline.org/Physics/ImageProc/Images/sEDT.tar.gz
3) Its Centerline image* (**Centerline.tar.gz
<http://interdiscipline.org/Physics/ImageProc/Images/Centerline.tar.gz>)*.
The image is in Analyze75 format with 8 bit unsigned char (Little
Endian) pixel type (17.2 KB).
http://interdiscipline.org/Physics/ImageProc/Images/Centerline.tar.gz
It looks like the only one last step is left.
Thanks for your help,
Alex
Xavier Mellado Esteban wrote:
>
> 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.
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> 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