Exemplo n.º 1
0
void itkSegmentLV< TImage>
::ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
                       ThreadIdType threadId)
{



  typename TImage::ConstPointer input = this->GetInput();
  typename TImage::Pointer output = this->GetOutput();

  //caster2->SetInput(input);

  ConnectedRegionGrowing->SetInput( input );

  ConnectedRegionGrowing->SetLower( lowerThreshold );

  ConnectedRegionGrowing->SetUpper( upperThreshold );

  ConnectedRegionGrowing->SetRadius( radius );

  ConnectedRegionGrowing->SetSeed( index );

  ConnectedRegionGrowing->SetReplaceValue( 255 );

  binaryErode->SetKernel( structuringElement );

  binaryDilate->SetKernel( structuringElement );

  binaryDilate->SetInput( ConnectedRegionGrowing->GetOutput());

  binaryErode->SetInput( binaryDilate->GetOutput() );



  sbs->SetInput(binaryErode->GetOutput() );

//  sbs->SetInput(ConnectedRegionGrowing->GetOutput() );

  sbs->SetInputFilter(connected);

  sbs->SetOutputFilter(rescaleFilter);

  labelShapeKeepNObjectsImageFilter->SetInput( connected->GetOutput() );

  labelShapeKeepNObjectsImageFilter->SetBackgroundValue( 0 );

  labelShapeKeepNObjectsImageFilter->SetNumberOfObjects( 1 );

  labelShapeKeepNObjectsImageFilter->SetAttribute( LabelShapeKeepNObjectsImageFilterType::
		  LabelObjectType::NUMBER_OF_PIXELS);


  rescaleFilter->SetOutputMinimum(0);

  rescaleFilter->SetOutputMaximum(itk::NumericTraits<signed short>::max());

  rescaleFilter->SetInput(labelShapeKeepNObjectsImageFilter->GetOutput());

  sbs->Update();

  this->AllocateOutputs();

  ImageAlgorithm::Copy(sbs->GetOutput(), output.GetPointer(), output->GetRequestedRegion(),
                       output->GetRequestedRegion() );

}