[Insight-users] MultiScaleHessianBasedMeasureImageFilter + HessianToObjectnessMeasureImageFilter, empty image

Luca Antiga luca.antiga at gmail.com
Wed Oct 13 05:09:51 EDT 2010


Hi Sergio,
 good. To get less noise you can do one of two things:
1. increase sigma min
2. increase gamma (by one order of magnitude at a time)
Just play with those two and check out the differences visually, you'll be able to control the behavior of the filter.
Best regards

Luca


On Oct 13, 2010, at 10:23 AM, Sergio Vera wrote:

> Ravi, Luca, thanks to both of you.
> 
> Indeed a stupid mistake, using twice the SetSigmaMinimum method... :(
> Now the filter works properly :)
> 
> I might add another question?
> Is there any standard procedure or trick to reduce the amount of noisy structures that the hessian filters enhance? Along with the coronary vessels and other tubes of the image, a lot of noisy blobs are enhanced..
> 
> thanks
> 
> On Mon, Oct 11, 2010 at 11:11 PM, Luca Antiga <luca.antiga at gmail.com> wrote:
> Hi Sergio,
>  the line
> hessian->SetSigmaMinimum(2.4);
> should be 
> hessian->SetSigmaMaximum(2.4);
> 
> Probably a method SetSigmaRange taking two arguments would be a safer choice to avoid this kinds of mistakes.
> 
> Hope this helps.
> 
> Luca
> 
> 
> 
> On Oct 11, 2010, at 12:22 PM, Sergio Vera wrote:
> 
>> Hello all
>> 
>> Currently I use HessianRecursiveGaussianImageFilter Hessian3DToVesselness to enhance coronary arteries in CTA images. I would like to test the multiscale hessian enhancement using MultiScaleHessianBasedMeasureImageFilter and HessianToObjectnessMeasureImageFilter, however, I'm only obtainig empty (black) images as a result of the enhancement and the scales.
>> 
>> Here is a snippet of the code:
>>  
>> typedef itk::ThresholdImageFilter<ITKImgInType> ThrFilter;
>> ThrFilter::Pointer thr = ThrFilter::New();
>> thr->SetInput(&a_imgIn);
>> thr->SetLower(80); 
>> thr->SetUpper(10000); // remove other parts of the image with low values 
>> 
>> typedef itk::CastImageFilter<ITKImgInType, F1d3ITKImgType> CastFilter;
>> CastFilter::Pointer cast2float = CastFilter::New();
>> cast2float->SetInput(thr->GetOutput());
>> 
>> typedef itk::SymmetricSecondRankTensor<float, 3> HessianPixelType;
>> typedef itk::Image<HessianPixelType, 3> HessianImage;
>> 
>> typedef itk::MultiScaleHessianBasedMeasureImageFilter <F1d3ITKImgType, HessianImage, F1d3ITKImgType> HessianFilter;
>> HessianFilter::Pointer hessian = HessianFilter::New();
>> hessian->SetInput(cast2float->GetOutput());
>> hessian->SetNumberOfSigmaSteps(6);
>> hessian->SetSigmaStepMethodToEquispaced();
>> hessian->SetSigmaMinimum(1.1);
>> hessian->SetSigmaMinimum(2.4); // This sizes in mm?
>> hessian->SetGenerateHessianOutput(true);
>> hessian->SetGenerateScalesOutput(true);
>> 
>> typedef itk::HessianToObjectnessMeasureImageFilter <HessianImage, F1d3ITKImgType> ObjectnessFilter;
>> ObjectnessFilter::Pointer vesselFilter = ObjectnessFilter::New();
>> vesselFilter->SetScaleObjectnessMeasure(false);
>> vesselFilter->SetBrightObject(true);
>> vesselFilter->SetAlpha(0.5);
>> vesselFilter->SetBeta(0.5);
>> vesselFilter->SetGamma(5.0);
>> vesselFilter->SetObjectDimension(1); // vessels
>> 	
>> hessian->SetHessianToMeasureFilter(vesselFilter);
>> 	
>> try {
>>   hessian->Update();
>> } catch (const itk::ExceptionObject& e) {
>>   std::cerr << __FUNCTION__ << ": itk::ExceptionObject caught: " << e.what() << '\n';
>>   return eErrorITKExceptionRunningSegmentation;
>> } catch (...) {
>>   std::cerr << __FUNCTION__ << ": '...' exception caught.\n";
>>   return eErrorUnknownExceptionStartingSegmentation;
>> }
>> spy::WriteFile<F1d3ITKImgType>(__FUNCTION__, "Vesselness.mhd", *(hessian->GetOutput()), true);
>> spy::WriteFile<F1d3ITKImgType>(__FUNCTION__, "Scales.mhd", *(hessian->GetScalesOutput()), true);
>> spy::WriteFile<F1d3ITKImgType>(__FUNCTION__, "Converted2Float.mhd", *(cast2float->GetOutput()), true);
>> 
>> The two first images written to disk are empty. Correct size and spacing but only black voxels. Converted2Float.mhd seems to be correcttly converted
>> Thanks in advance
>> -- 
>> Sergio Vera
>> 
>>  Alma IT Systems
>>  C/ Vilana, 4B, 4º 1ª
>>  08022 Barcelona
>>  T. (+34) 932 380 592
>>  www.alma3d.com
>> _____________________________________
>> 
>> Powered by www.kitware.com
>> 
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>> 
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.html
>> 
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>> 
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users
> 
> 
> 
> 
> -- 
> Sergio Vera
> 
>  Alma IT Systems
>  C/ Vilana, 4B, 4º 1ª
>  08022 Barcelona
>  T. (+34) 932 380 592
>  www.alma3d.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20101013/724ac45c/attachment-0001.htm>


More information about the Insight-users mailing list