Vessel Emphasis with ITK
← Noise Reduction with ITK | ● | Angiography →
Emphasis of vessels (vesselness) by two-step filter (itk::HessianRecursiveGaussianImageFilter and itk::Hessian3DToVesselnessMeasureImageFilter):
Basic filter concept: After an eigenvalue decomposition of the Hessian matrix (partial derivatives matrix) bright tubular structures have one eigenvalue close to zero and two negative eigenvalues (positive values correspond to dark tubular structures). The “vesselness” algorithm first produces the Hessian matrices as first filter step, then filters and emphasizes the tubular structures as second step.
typedef itk::HessianRecursiveGaussianImageFilter<Image3DDoubleType> HessianImageFilterType;
HessianImageFilterType::Pointer hessianFilter = HessianImageFilterType::New();
hessianFilter->SetInput(diffusionFilter->GetOutput());
// filter settings
hessianFilter->SetSigma(1.0);
// create hessian vesselness filter
typedef itk::Hessian3DToVesselnessMeasureImageFilter<float> VesselnessMeasureFilterType;
VesselnessMeasureFilterType::Pointer vesselnessFilter = VesselnessMeasureFilterType::New();
// filter settings
vesselnessFilter->SetAlpha1(0.5);
vesselnessFilter->SetAlpha2(2.0);
// connect input of vesselness filter to output of hessian filter
vesselnessFilter->SetInput(hessianFilter->GetOutput());
// create rescale filter
typedef itk::Image< float, 3> Image3DFloatType;
typedef itk::RescaleIntensityImageFilter<Image3DFloatType, Image3DType> RescaleImageFilterType;
RescaleImageFilterType::Pointer rescaleFilter = RescaleImageFilterType::New();
// filter settings
rescaleFilter->SetOutputMinimum(0);
rescaleFilter->SetOutputMaximum(32767);
// connect input of filter to output of predecessor
rescaleFilter->SetInput(vesselnessFilter->GetOutput());
... threshold at 1500 ...
... and so on ...
← Noise Reduction with ITK | ● | Angiography →