void MorphologicalGradientImageFilterITK::morphologicalGradientImageFilterITK() { if (!enableProcessing_.get()) { outport1_.setData(inport1_.getData(), false); return; } typedef itk::Image<T, 3> InputImageType1; typedef itk::Image<T, 3> OutputImageType1; typedef T PixelType; typename InputImageType1::Pointer p1 = voreenToITK<T>(inport1_.getData()); if(structuringElement_.get() == "binaryBall"){ shape_.setVisible(false); typedef itk::BinaryBallStructuringElement < PixelType, 3 > KernelType; typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); KernelType structuringElement; typename KernelType::SizeType radius; radius[0] = radius_.get().x; radius[1] = radius_.get().y; radius[2] = radius_.get().z; structuringElement.SetRadius(radius); structuringElement.CreateStructuringElement(); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } else if(structuringElement_.get() == "binaryCross"){ shape_.setVisible(false); typedef itk::BinaryCrossStructuringElement < PixelType, 3 > KernelType; typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); KernelType structuringElement; typename KernelType::SizeType radius; radius[0] = radius_.get().x; radius[1] = radius_.get().y; radius[2] = radius_.get().z; structuringElement.SetRadius(radius); structuringElement.CreateStructuringElement(); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } else if(structuringElement_.get() == "flat"){ shape_.setVisible(true); typedef itk::FlatStructuringElement < 3 > KernelType; typename KernelType::SizeType radius; radius[0] = radius_.get().x; radius[1] = radius_.get().y; radius[2] = radius_.get().z; if(shape_.get() == "box"){ KernelType structuringElement = KernelType::Box(radius); typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } else if(shape_.get() == "ball"){ KernelType structuringElement = KernelType::Ball(radius); typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } else if(shape_.get() == "cross"){ KernelType structuringElement = KernelType::Cross(radius); typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } else if(shape_.get() == "annulus"){ KernelType structuringElement = KernelType::Annulus(radius); typedef itk::MorphologicalGradientImageFilter<InputImageType1, OutputImageType1, KernelType> FilterType; typename FilterType::Pointer filter = FilterType::New(); filter->SetInput(p1); filter->SetAlgorithm(algorithm_.get()); filter->SetKernel(structuringElement); observe(filter.GetPointer()); try { filter->Update(); } catch (itk::ExceptionObject &e) { LERROR(e); } Volume* outputVolume1 = 0; outputVolume1 = ITKToVoreenCopy<T>(filter->GetOutput()); if (outputVolume1) { transferRWM(inport1_.getData(), outputVolume1); transferTransformation(inport1_.getData(), outputVolume1); outport1_.setData(outputVolume1); } else outport1_.setData(0); } } }