[Insight-users] error using SliceBySliceImageFilter and WatershedFilter
Sara Rolfe
smrolfe at u.washington.edu
Thu Oct 11 17:02:34 EDT 2012
Hi Brad,
Thanks for your suggestion. When I swap in the
MorphologicalWatershedImageFilter it works correctly. I think you're
right that there's a bug in the WatershedImageFilter causing this
behavior.
Thanks,
Sara
On Oct 11, 2012, at 12:15 PM, Bradley Lowekamp wrote:
> Hello Sara,
>
> At first glance I don't see any thing wrong with your code. You may
> have encountered a bug with itk::WatershedImageFilter when it is
> heavily re-use, but that would require some detailed checking.
>
> As a quick fix you could try the
> itk::MorphologicalWatershedImageFilter which is in review instead
> and see if you get the results you are looking for.
>
> Brad
>
> On Oct 11, 2012, at 2:54 PM, Sara Rolfe <smrolfe at u.washington.edu>
> wrote:
>
>> Hello,
>>
>> I am attempting to do a slice-by-slice watershed segmentation of a
>> 3D image. First, I got the watershed segmentation working
>> correctly on a 2D image. Next, I tried to implement it with the
>> SliceBySliceImageFilter. I connected the SliceBySliceImageFilter
>> to a pipeline with the gradient filter as the input filter and the
>> watershed filter as the output. Running gave me a continuous
>> output of the following error:
>>
>> WaterShedFilter_SBS(5879,0xa0689720) malloc: *** error for object
>> 0x48c187c: Non-aligned pointer being freed
>> *** set a breakpoint in malloc_error_break to debug
>> ...
>>
>> I have read the article on the slice-by-slice filter http://www.insight-journal.org/browse/publication/133
>> and have gotten it working with the gradient filter alone and a
>> pipeline of two gradient filters. However, when I put in the
>> watershed filter alone or with the gradient filter, I get the above
>> error. I'd appreciate any advice. An excerpt of my code is below.
>>
>> Thanks,
>> Sara
>>
>>
>> const int inputDim =3;
>> const int sliceDim =2;
>> typedef itk::Image<float, inputDim> InputImageType;
>> typedef itk::Image<unsigned long, inputDim>
>> OutputImageType;
>> typedef itk::Image<float, sliceDim> SliceFloatImageType;
>> typedef itk::ImageFileReader< InputImageType > ReaderType;
>> typedef itk::GradientMagnitudeImageFilter< SliceFloatImageType,
>> SliceFloatImageType > GradientMagnitudeImageFilterType;
>> typedef itk::WatershedImageFilter<SliceFloatImageType>
>> WatershedFilterType;
>> typedef itk::SliceBySliceImageFilter< InputImageType,
>> OutputImageType,GradientMagnitudeImageFilterType,
>> WatershedFilterType > SliceBySliceFilterType;
>>
>> InputImageType::Pointer inputImage = reader->GetOutput();
>>
>> GradientMagnitudeImageFilterType::Pointer
>> gradientMagnitudeImageFilter =
>> GradientMagnitudeImageFilterType::New();
>>
>> WatershedFilterType::Pointer watershedFilter =
>> WatershedFilterType::New();
>> watershedFilter->SetThreshold(threshold);
>> watershedFilter->SetLevel(level);
>> watershedFilter->SetInput(gradientMagnitudeImageFilter-
>> >GetOutput());
>>
>> SliceBySliceFilterType::Pointer sliceBySliceFilter =
>> SliceBySliceFilterType::New();
>> sliceBySliceFilter -> SetInput(inputImage);
>> sliceBySliceFilter -> SetInputFilter(gradientMagnitudeImageFilter);
>> sliceBySliceFilter -> SetOutputFilter(watershedFilter);
>> sliceBySliceFilter->Update();
>>
>> _____________________________________
>> 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.php
>>
>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20121011/bab2006c/attachment.htm>
More information about the Insight-users
mailing list