diff --git a/Modules/Multilabel/Testing/mitkLabelSetImageSurfaceStampFilterTest.cpp b/Modules/Multilabel/Testing/mitkLabelSetImageSurfaceStampFilterTest.cpp index a991b89c71..7a7a4ee23b 100644 --- a/Modules/Multilabel/Testing/mitkLabelSetImageSurfaceStampFilterTest.cpp +++ b/Modules/Multilabel/Testing/mitkLabelSetImageSurfaceStampFilterTest.cpp @@ -1,94 +1,86 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include #include #include #include #include #include #include #include class mitkLabelSetImageSurfaceStampFilterTestSuite : public mitk::TestFixture { CPPUNIT_TEST_SUITE(mitkLabelSetImageSurfaceStampFilterTestSuite); MITK_TEST(Result_Match_Expectation); CPPUNIT_TEST_SUITE_END(); private: mitk::LabelSetImage::Pointer m_LabelSetImage; mitk::Surface::Pointer m_Surface; public: void setUp() override { mitk::Image::Pointer regularImage = mitk::ImageGenerator::GenerateRandomImage(50,50,50,1,1,1,1,0.3,0.2); m_LabelSetImage = dynamic_cast(mitk::IOUtil::LoadBaseData(GetTestDataFilePath("Multilabel/EmptyMultiLabelSegmentation.nrrd")).GetPointer()); mitk::Label::Pointer label1 = mitk::Label::New(); label1->SetName("Label1"); mitk::Label::PixelType value1 = 1; label1->SetValue(value1); mitk::Label::Pointer label2 = mitk::Label::New(); label2->SetName("Label2"); mitk::Label::PixelType value2 = 2; label2->SetValue(value2); - m_LabelSetImage->GetActiveLabelSet()->AddLabel(label1); - m_LabelSetImage->GetActiveLabelSet()->AddLabel(label2); - m_Surface = mitk::IOUtil::LoadSurface(GetTestDataFilePath("BallBinary30x30x30Reference.vtp")); } void tearDown() override { // Delete LabelSetImage m_LabelSetImage = 0; } void Result_Match_Expectation() { mitk::LabelSetImageSurfaceStampFilter::Pointer filter = mitk::LabelSetImageSurfaceStampFilter::New(); filter->SetSurface(m_Surface); filter->SetForceOverwrite(true); filter->SetInput(m_LabelSetImage); filter->Update(); - mitk::LabelSetImage::Pointer result = dynamic_cast(filter->GetOutput()); - mitk::IOUtil::Save(result,"d:/tmp/output.nrrd"); + mitk::LabelSetImage::Pointer result =dynamic_cast(m_LabelSetImage.GetPointer());//dynamic_cast(filter->GetOutput()); + //result->DisconnectPipeline(); + //mitk::LabelSetImage::Pointer result =dynamic_cast(m_LabelSetImage->Clone().GetPointer());//dynamic_cast(filter->GetOutput()); mitk::LabelSetImage::Pointer expectedResult = dynamic_cast(mitk::IOUtil::LoadBaseData(GetTestDataFilePath("Multilabel/StampResultBasedOnEmptyML.nrrd")).GetPointer()); - mitk::LabelSetImage::Pointer expectedResult2 = dynamic_cast(mitk::IOUtil::LoadBaseData(GetTestDataFilePath("Multilabel/StampResultBasedOnEmptyML.nrrd")).GetPointer()); - mitk::IOUtil::Save(expectedResult,"d:/tmp/output2.nrrd"); - - mitk::Image::Pointer p1 = dynamic_cast(expectedResult.GetPointer()); - mitk::Image::Pointer p2 = dynamic_cast(expectedResult2.GetPointer()); - MITK_INFO << "Equality: " << mitk::Equal(p1, p2,10,true); - MITK_ASSERT_EQUAL(expectedResult, result, "Result after stamping should be equal to the saved version"); + MITK_ASSERT_EQUAL(result, expectedResult, "Result after stamping should be equal to the saved version"); } // Reduce contours with nth point void TestGetActiveLabel() { } }; MITK_TEST_SUITE_REGISTRATION(mitkLabelSetImageSurfaceStampFilter) \ No newline at end of file diff --git a/Modules/Multilabel/mitkLabelSetImageSurfaceStampFilter.cpp b/Modules/Multilabel/mitkLabelSetImageSurfaceStampFilter.cpp index c4d5f14002..8df57d7acb 100644 --- a/Modules/Multilabel/mitkLabelSetImageSurfaceStampFilter.cpp +++ b/Modules/Multilabel/mitkLabelSetImageSurfaceStampFilter.cpp @@ -1,107 +1,108 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkLabelSetImageSurfaceStampFilter.h" #include "mitkImageAccessByItk.h" #include "mitkImageCast.h" #include #include #include #include mitk::LabelSetImageSurfaceStampFilter::LabelSetImageSurfaceStampFilter() { this->SetNumberOfIndexedInputs(1); this->SetNumberOfRequiredInputs(1); } mitk::LabelSetImageSurfaceStampFilter::~LabelSetImageSurfaceStampFilter() { } void mitk::LabelSetImageSurfaceStampFilter::GenerateData() { - GenerateOutputInformation(); + //GenerateOutputInformation(); this->SetNthOutput(0,this->GetInput(0)); mitk::Image::Pointer inputImage = this->GetInput(0); if (m_Surface.IsNull()) { MITK_ERROR << "Input surface is NULL."; return; } mitk::SurfaceToImageFilter::Pointer surfaceToImageFilter = mitk::SurfaceToImageFilter::New(); surfaceToImageFilter->MakeOutputBinaryOn(); surfaceToImageFilter->SetInput(m_Surface); surfaceToImageFilter->SetImage(inputImage); surfaceToImageFilter->Update(); mitk::Image::Pointer resultImage = surfaceToImageFilter->GetOutput(); AccessByItk_2(inputImage, ItkImageProcessing, m_Surface, resultImage); + inputImage->DisconnectPipeline(); } template void mitk::LabelSetImageSurfaceStampFilter::ItkImageProcessing( itk::Image* itkImage, mitk::Surface::Pointer surface, mitk::Image::Pointer resultImage ) { typedef itk::Image ImageType; mitk::LabelSetImage::Pointer LabelSetInputImage = dynamic_cast(GetInput()); try { typename ImageType::Pointer itkResultImage = ImageType::New(); mitk::CastToItkImage(resultImage, itkResultImage); typedef itk::ImageRegionConstIterator< ImageType > SourceIteratorType; typedef itk::ImageRegionIterator< ImageType > TargetIteratorType; SourceIteratorType sourceIter(itkResultImage, itkResultImage->GetLargestPossibleRegion()); sourceIter.GoToBegin(); TargetIteratorType targetIter(itkImage, itkImage->GetLargestPossibleRegion()); targetIter.GoToBegin(); int activeLabel = (LabelSetInputImage->GetActiveLabel(LabelSetInputImage->GetActiveLayer()))->GetValue(); while (!sourceIter.IsAtEnd()) { int sourceValue = static_cast(sourceIter.Get()); int targetValue = static_cast(targetIter.Get()); if ((sourceValue != 0) && (m_ForceOverwrite || !LabelSetInputImage->GetLabel(targetValue)->GetLocked())) // skip exterior and locked labels { targetIter.Set(activeLabel); } ++sourceIter; ++targetIter; } } catch (itk::ExceptionObject& e) { mitkThrow() << e.GetDescription(); } this->Modified(); } void mitk::LabelSetImageSurfaceStampFilter::GenerateOutputInformation() { mitk::Image::Pointer inputImage = (mitk::Image*) this->GetInput(); mitk::Image::Pointer output = this->GetOutput(); itkDebugMacro(<<"GenerateOutputInformation()"); if(inputImage.IsNull()) return; } \ No newline at end of file