This notebook is intended to demonstrate how vessel segmentation methods of ITKTubeTK can be applied to binary data.
import itk
from itk import TubeTK as ttk
from itkwidgets import view
import numpy as np
ImageType = itk.Image[itk.F, 3]
im1 = itk.imread("../Data/Binary/DSA-Binary.mha")
resample = ttk.ResampleImage.New(Input=im1, MakeIsotropic=True)
resample.Update()
im1Iso = resample.GetOutput()
imMath = ttk.ImageMath.New(im1Iso)
imMath.Threshold(1,1,0,1)
im1Inv = imMath.GetOutputFloat()
distFilter = itk.DanielssonDistanceMapImageFilter.New(im1Inv)
distFilter.SetUseImageSpacing(True)
distFilter.SetInputIsBinary(True)
distFilter.SetSquaredDistance(False)
distFilter.Update()
im1Dist = distFilter.GetOutput()
view(im1Dist)
Viewer(geometries=[], gradient_opacity=0.22, point_sets=[], rendered_image=<itk.itkImagePython.itkImageF3; pro…
numSeeds = 200
vSeg = ttk.SegmentTubes.New(Input=im1Dist)
#vSeg.SetVerbose(True)
vSeg.SetMinCurvature(0.0)
vSeg.SetMinRoundness(0.0)
vSeg.SetMinRidgeness(0.9)
vSeg.SetMinLevelness(0.0)
vSeg.SetRadiusInObjectSpace( 0.4 )
vSeg.SetSeedMask( im1Dist )
vSeg.SetSeedRadiusMask( im1Dist )
vSeg.SetOptimizeRadius(False)
vSeg.SetUseSeedMaskAsProbabilities(True)
vSeg.SetSeedExtractionMinimumProbability(0.4)
#vSeg.SetSeedMaskMaximumNumberOfPoints( numSeeds )
vSeg.ProcessSeeds()
tubeMaskImage = vSeg.GetTubeMaskImage()
view(tubeMaskImage)
Viewer(geometries=[], gradient_opacity=0.22, point_sets=[], rendered_image=<itk.itkImagePython.itkImageF3; pro…
SOWriter = itk.SpatialObjectWriter[3].New(vSeg.GetTubeGroup())
SOWriter.SetFileName( "BinaryImageVessels.tre" )
SOWriter.Update()