0

I did an thinning operation on vessels, and now I'm trying to reconstruct it.

How to expand them to normal vessels in ITK when I have a skeleton line and radius values for each pixel?

Gagiel
  • 45
  • 5
  • is the radius uniform or different at different pixels on the skeleton ? – navneeth Jul 01 '12 at 15:25
  • The pixels are of different radius. I tried VesselTubeSpatialObject but it seems it could not include all organ vessels because it confused by ends and made lots of round-ups. – Gagiel Jul 02 '12 at 16:22
  • if your radius was uniform, you could use a fast marching filter on the skeleton & get the vessel tree right away. However since you have diff radii at each point it is challenging. You should post this on the itk lists too. – navneeth Jul 03 '12 at 13:24

1 Answers1

0

DISCLAIMER: This could be slow, but since no other answer has been suggested, here you go.

Since your question does not indicate this, I'm assuming that you're talking about a 2D image, but the following approach can be extended for 3D too. This is how I'd go about it:

  1. Create a blank image with zero filled pixel values
  2. Create multiple instances of disk/sphere ShapedNeighborhoodIterator each having a different radius on the blank image (choose the most common radii from the vessel width histogram).
  3. Visit each pixel in the binary skeleton image. When you come upon a white (vessel skeleton) pixel, recollect the vessel radius at that pixel.
  4. If you already have a ShapedNeighborhoodIterator for that radius value, take the iterator to the pixel location in the blank image and fill up a disk/sphere of white pixels centered about that pixel. If you don't have a ShapedNeighborhoodIterator for that radius value, create one and do the same operation.

Once you finish iterating over the skeletonized image, you will have a reconstructed tree in the other image. Note that step 2 is optional, but will help you achieve faster computation.

Papouh
  • 504
  • 1
  • 3
  • 12