[Insight-users] Mean Shift Blurring Filter

camille orny camille.orny at gmail.com
Thu Jul 30 08:57:29 EDT 2009


Hello,

I am trying to use the itk::SampleMeanShiftBlurringFilter to get, for each
pixel, the value of the mode the mean shift algorithm associates it to.

I have written the following code which is compiled without any error
reports. Hower I get a "segmentation error" when I execute it. It seems the
problem comes from the line  filter->SetInputSample(sample); when I
progressively comment the code.

Are there any problems with that filter ?

Regards,

typedef itk::Image< PixelType, 2> TInputImage;
typedef itk::Image< PixelType, 2> TOutputImage;
typedef itk::Image< unsigned char, 2> TOutputImage2;
typedef otb::ImageFileReader<TInputImage> ReaderType;
typedef itk::Statistics::ScalarImageToListAdaptor<TInputImage> SampleType;

typedef itk::RescaleIntensityImageFilter<TOutputImage,TOutputImage2>
RescalerType;
typedef otb::StreamingImageFileWriter<TOutputImage> WriterType;
typedef otb::StreamingImageFileWriter<TOutputImage2> WriterType2;
//typedef std::vector< int > ClusterLabelsType;
typedef itk::Statistics::SampleMeanShiftBlurringFilter<SampleType>
FilterType;

//typedef itk::FixedArray<int, 1> TVector;
//typedef itk::Statistics::ListSample < TVector > ListSampleType;

ReaderType::Pointer reader=ReaderType::New();
SampleType::Pointer sample=SampleType::New();
FilterType::Pointer filter=FilterType::New();
WriterType::Pointer writer=WriterType::New();
WriterType2::Pointer writer2=WriterType2::New();
//RescalerType::Pointer rescaler=RescalerType::New();

reader->SetFileName(argv[1]);
reader->Update();
TInputImage::Pointer inimage=reader->GetOutput();

sample->SetImage(inimage);

filter->SetInputSample(sample);
filter->Update();

TOutputImage::Pointer limage=TOutputImage::New();
limage->CopyInformation(inimage);
limage->SetRegions(limage->GetLargestPossibleRegion());
limage->Allocate();
limage->FillBuffer(0);


itk::ImageRegionIterator<TOutputImage>
lit(limage,limage->GetLargestPossibleRegion());
lit.GoToBegin();


ListSampleType::Iterator it=(filter->GetOutput())->Begin();
int i=0;

std::cout<<"hello";

while(!lit.IsAtEnd() )

{
    std::cout<<"while";
  lit.Set((filter->GetOutput())->GetMeasurementVector(i)[0]);
  std::cout<<(filter->GetOutput())->GetMeasurementVectorSize();
  ++lit;
  ++it;
  ++i;
}

writer->SetInput(inimage);
writer->SetFileName(argv[2]);
writer->Update();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090730/897ab43d/attachment.htm>


More information about the Insight-users mailing list