diff --git a/Modules/ToFProcessing/Testing/files.cmake b/Modules/ToFProcessing/Testing/files.cmake index 6d2c5050b3..8a49f5df75 100644 --- a/Modules/ToFProcessing/Testing/files.cmake +++ b/Modules/ToFProcessing/Testing/files.cmake @@ -1,8 +1,7 @@ SET(MODULE_TESTS mitkToFDistanceImageToPointSetFilterTest.cpp mitkToFDistanceImageToSurfaceFilterTest.cpp mitkToFCompositeFilterTest.cpp - mitkToFVisualizationFilterTest.cpp mitkToFProcessingCommonTest.cpp mitkToFImageDownsamplingFilterTest.cpp ) diff --git a/Modules/ToFProcessing/Testing/mitkToFVisualizationFilterTest.cpp b/Modules/ToFProcessing/Testing/mitkToFVisualizationFilterTest.cpp deleted file mode 100644 index 360860f5a0..0000000000 --- a/Modules/ToFProcessing/Testing/mitkToFVisualizationFilterTest.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/*========================================================================= - -Program: Medical Imaging & Interaction Toolkit -Language: C++ -Date: $Date: 2010-03-12 14:05:50 +0100 (Fr, 12 Mrz 2010) $ -Version: $Revision: 16010 $ - -Copyright (c) German Cancer Research Center, Division of Medical and -Biological Informatics. All rights reserved. -See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. - -This software is distributed WITHOUT ANY WARRANTY; without even -the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#include -#include -#include - -#include -#include - -/**Documentation - * test for the class "ToFVisualizationFilter". - - This test creates an image filled with certain values for which the output of the filter is known. - The image is set as input and the results of the filter are compared with the expected values. - However, the test does not work with the current version of the filter and that is why most parts of it are commented out. - */ - -int mitkToFVisualizationFilterTest(int argc , char* argv[]) -{ - MITK_TEST_BEGIN("ToFVisualizationFilter"); - - mitk::ToFVisualizationFilter::Pointer tofVisualizationFilter = mitk::ToFVisualizationFilter::New(); - MITK_TEST_CONDITION_REQUIRED((tofVisualizationFilter.IsNotNull()),"Testing constructor"); - - //Create test image - mitk::Image::Pointer inputImage = mitk::Image::New(); - unsigned int dims[2] = {1, 4}; - inputImage->Initialize(mitk::PixelType(typeid(float)), 2, dims, 1); - //special cases for transformation - float* cornerCases = new float[4]; - cornerCases[0] = 0.0f; - cornerCases[1] = 5.0f; - cornerCases[2] = 50.0f; - cornerCases[3] = 100.0f; - - //corresponding expected values for greyScale: - int resultForZero[3] = {0, 0, 0}; //black - int resultForMin[3] = {13, 13, 13}; //dark grey - int resultForMid[3] = {128, 128, 128}; //mid grey - int resultForMax[3] = {255, 255, 255}; //white - - inputImage->SetSlice(cornerCases); - - bool valuesAreCorrect = true; - - tofVisualizationFilter->SetInput(inputImage); -// tofVisualizationFilter->SetWidget1TransferFunctionType(mitk::ToFVisualizationFilter::ConversionType_Greyscale); -// MITK_TEST_CONDITION_REQUIRED((tofVisualizationFilter->GetWidget1TransferFunctionType() == mitk::ToFVisualizationFilter::ConversionType_Greyscale), -// "Testing set/getFunctionType"); - - tofVisualizationFilter->Update(); - - mitk::Image::Pointer outputImage = tofVisualizationFilter->GetOutput(0); - MITK_TEST_CONDITION_REQUIRED((outputImage.IsNotNull()),"Testing setInput/getOutput"); - - //TODO: not working with current version of the filter -// unsigned char* dataOut = (unsigned char *)outputImage->GetData(); -// for(int r=0;r<4;r++) -// { -// switch(r) -// { -// case 0: -// { -// if((resultForZero[0] != dataOut[r*3+0]) || (resultForZero[1] != dataOut[r*3+1]) || (resultForZero[2] != dataOut[r*3+2])) -// valuesAreCorrect = false; -// break; -// } -// case 1: -// { -// if((resultForMin[0] != dataOut[r*3+0]) || (resultForMin[1] != dataOut[r*3+1]) || (resultForMin[2] != dataOut[r*3+2])) -// valuesAreCorrect = false; -// break; -// } -// case 2: -// { -// if((resultForMid[0] != dataOut[r*3+0]) || (resultForMid[1] != dataOut[r*3+1]) || (resultForMid[2] != dataOut[r*3+2])) -// valuesAreCorrect = false; -// break; -// } -// case 3: -// { -// if((resultForMax[0] != dataOut[r*3+0]) || (resultForMax[1] != dataOut[r*3+1]) || (resultForMax[2] != dataOut[r*3+2])) -// valuesAreCorrect = false; -// break; -// } -// } -// } - -// MITK_TEST_CONDITION_REQUIRED(valuesAreCorrect, "Testing if values are correctly mapped to greyscale"); - -// cornerCases[0] = 0.0f; -// cornerCases[1] = 1.0f; -// cornerCases[2] = 50.5f; -// cornerCases[3] = 100.0f; - -// //corresponding expected values for RBG: -// int RGBresultForZero[3] = {0, 0, 0}; //black -// int RGBresultForMin[3] = {255, 0, 0}; //red -// int RGBresultForMid[3] = {255, 255, 0}; //yellow -// int RGBresultForMax[3] = {0, 0, 255}; //blue - -// //TODO why does "setSlice" on the first inputImage not change the values??? -// inputImage = mitk::Image::New(); -// inputImage->Initialize(typeid(float), 2,dims);; - -// inputImage->SetSlice(cornerCases); - -// bool RGBvaluesAreCorrect = true; - -// tofVisualizationFilter->SetInput(inputImage); -// tofVisualizationFilter->SetWidget1TransferFunctionType(mitk::ToFVisualizationFilter::ConversionType_HSVThresholded); -// tofVisualizationFilter->Update(); - -// outputImage = tofVisualizationFilter->GetOutput(0); -// MITK_TEST_CONDITION_REQUIRED((outputImage.IsNotNull()),"Testing setInput/getOutput"); - -// dataOut = (unsigned char *)outputImage->GetData(); -// for(int r=0;r<4;r++) -// { -// switch(r) -// { -// case 0: -// { -// if((RGBresultForZero[0] != dataOut[r*3+0]) || (RGBresultForZero[1] != dataOut[r*3+1]) || (RGBresultForZero[2] != dataOut[r*3+2])) -// RGBvaluesAreCorrect = false; -// break; -// } -// case 1: -// { -// if((RGBresultForMin[0] != dataOut[r*3+0]) || (RGBresultForMin[1] != dataOut[r*3+1]) || (RGBresultForMin[2] != dataOut[r*3+2])) -// RGBvaluesAreCorrect = false; -// break; -// } -// case 2: -// { -// if((RGBresultForMid[0] != dataOut[r*3+0]) || (RGBresultForMid[1] != dataOut[r*3+1]) || (RGBresultForMid[2] != dataOut[r*3+2])) -// RGBvaluesAreCorrect = false; -// break; -// } -// case 3: -// { -// if((RGBresultForMax[0] != dataOut[r*3+0]) || (RGBresultForMax[1] != dataOut[r*3+1]) || (RGBresultForMax[2] != dataOut[r*3+2])) -// RGBvaluesAreCorrect = false; -// break; -// } -// } -// } - -// MITK_TEST_CONDITION_REQUIRED(RGBvaluesAreCorrect, "Testing if values are correctly mapped to RGB"); - - - MITK_TEST_END(); - -} - diff --git a/Modules/ToFProcessing/files.cmake b/Modules/ToFProcessing/files.cmake index 23b971defc..a38fe955e9 100644 --- a/Modules/ToFProcessing/files.cmake +++ b/Modules/ToFProcessing/files.cmake @@ -1,10 +1,9 @@ SET(CPP_FILES mitkToFCompositeFilter.cpp mitkToFDistanceImageToPointSetFilter.cpp mitkToFDistanceImageToSurfaceFilter.cpp mitkToFImageDownsamplingFilter.cpp mitkToFProcessingCommon.cpp mitkToFSurfaceVtkMapper3D.cpp mitkToFTestingCommon.cpp - mitkToFVisualizationFilter.cpp ) diff --git a/Modules/ToFProcessing/mitkToFVisualizationFilter.cpp b/Modules/ToFProcessing/mitkToFVisualizationFilter.cpp deleted file mode 100644 index 15286ff1c0..0000000000 --- a/Modules/ToFProcessing/mitkToFVisualizationFilter.cpp +++ /dev/null @@ -1,470 +0,0 @@ -/*========================================================================= - -Program: Medical Imaging & Interaction Toolkit -Module: $RCSfile$ -Language: C++ -Date: $Date$ -Version: $Revision$ - -Copyright (c) German Cancer Research Center, Division of Medical and -Biological Informatics. All rights reserved. -See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. - -This software is distributed WITHOUT ANY WARRANTY; without even -the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -mitk::ToFVisualizationFilter::ToFVisualizationFilter() -{ - this->m_ImageWidth = 0; - this->m_ImageHeight = 0; - this->m_ImageSize = 0; - - this->m_MitkDistanceImage = NULL; - this->m_MitkAmplitudeImage = NULL; - this->m_MitkIntensityImage = NULL; - - this->m_Widget1ColorTransferFunction = NULL; - this->m_Widget2ColorTransferFunction = NULL; - this->m_Widget3ColorTransferFunction = NULL; - - SetImageType(this->m_Widget1ImageType, 0); - SetImageType(this->m_Widget2ImageType, 1); - SetImageType(this->m_Widget3ImageType, 2); - - OutputImageType::Pointer output0 = static_cast(this->MakeOutput(0).GetPointer()); - OutputImageType::Pointer output1 = static_cast(this->MakeOutput(1).GetPointer()); - OutputImageType::Pointer output2 = static_cast(this->MakeOutput(2).GetPointer()); - - SetNumberOfRequiredOutputs(3); - SetNthOutput(0, output0.GetPointer()); - SetNthOutput(1, output1.GetPointer()); - SetNthOutput(2, output2.GetPointer()); - -} - -mitk::ToFVisualizationFilter::~ToFVisualizationFilter() -{ - -} - -void mitk::ToFVisualizationFilter::SetInput( mitk::Image* distanceImage ) -{ - this->SetInput(0, distanceImage); -} - -//TODO: braucht man diese Methode? -void mitk::ToFVisualizationFilter::SetInput( unsigned int idx, mitk::Image* image ) -{ - if ((image == NULL) && (idx == this->GetNumberOfInputs() - 1)) // if the last input is set to NULL, reduce the number of inputs by one - this->SetNumberOfInputs(this->GetNumberOfInputs() - 1); - else - this->ProcessObject::SetNthInput(idx, image); // Process object is not const-correct so the const_cast is required here - - this->CreateOutputsForAllInputs(); - - if (idx == 0) - { - this->m_ImageWidth = image->GetDimension(0); - this->m_ImageHeight = image->GetDimension(1); - this->m_ImageSize = this->m_ImageWidth * this->m_ImageHeight * sizeof(float); - } - CheckTransferFunction(idx, image); -} - - mitk::Image* mitk::ToFVisualizationFilter::GetInput() -{ - return this->GetInput(0); -} - - mitk::Image* mitk::ToFVisualizationFilter::GetInput( unsigned int idx ) -{ - if (this->GetNumberOfInputs() < 1) - return NULL; //TODO: geeignete exception werfen - return static_cast< mitk::Image*>(this->ProcessObject::GetInput(idx)); -} - -void mitk::ToFVisualizationFilter::GenerateData() -{ - this->m_MitkDistanceImage = this->GetInput(0); - this->m_MitkAmplitudeImage = this->GetInput(1); - this->m_MitkIntensityImage = this->GetInput(2); - - //this->m_DistanceFloatData = (float*)this->m_MitkDistanceImage->GetData(); - //this->m_AmplitudeFloatData = (float*)this->m_MitkAmplitudeImage->GetData(); - //this->m_IntensityFloatData = (float*)this->m_MitkIntensityImage->GetData(); - - mitk::Image::Pointer outputImageWidget1 = this->GetOutput(0); - mitk::Image::Pointer outputImageWidget2 = this->GetOutput(1); - mitk::Image::Pointer outputImageWidget3 = this->GetOutput(2); - - //colorTransferFunction = m_Controls->m_ToFVisualisationSettingsWidget->GetWidget3ColorTransferFunction(); - //imageType = m_Controls->m_ToFVisualisationSettingsWidget->GetWidget3ImageType(); - //RenderWidget(m_MultiWidget->mitkWidget3, this->m_QmitkToFImageBackground3, this->m_Widget3ImageType, imageType, - // colorTransferFunction, videoTexture, this->m_Widget3Texture ); - - //outputImageWidget1->Initialize(input->GetPixelType(), *input->GetTimeSlicedGeometry()); - //outputImageWidget1->SetPropertyList(input->GetPropertyList()->Clone()); - InitImage(outputImageWidget1); - - float* floatData; - unsigned char* image; - image = (unsigned char*)outputImageWidget1->GetData(); - floatData = GetDataFromImageByImageType(this->m_Widget1ImageType); - ConvertFloatImageToRGBImage(this->m_Widget1ColorTransferFunction, floatData, image); - // copy input 0...n to output 0...n - for (unsigned int idx=0; idxGetNumberOfOutputs(); idx++) - { - mitk::Image::Pointer outputImage = this->GetOutput(idx); - mitk::Image::Pointer inputImage = this->GetInput(idx); - if (outputImage.IsNotNull()&&inputImage.IsNotNull()) - { - outputImage->CopyInformation(inputImage); - outputImage->Initialize(inputImage); - outputImage->SetSlice(inputImage->GetSliceData()->GetData()); - } - } -} - -void mitk::ToFVisualizationFilter::InitImage(mitk::Image::Pointer image) -{ - unsigned int dimensions[2]; - dimensions[0] = this->m_ImageWidth; - dimensions[1] = this->m_ImageHeight; - image->Initialize(mitk::PixelType(mitkIpPicUInt, 24, 3), 2, dimensions); //unsigned char RGB -} - -void mitk::ToFVisualizationFilter::CreateOutputsForAllInputs() -{ - this->SetNumberOfOutputs(this->GetNumberOfInputs()); // create outputs for all inputs - for (unsigned int idx = 0; idx < this->GetNumberOfOutputs(); ++idx) - if (this->GetOutput(idx) == NULL) - { - DataObjectPointer newOutput = this->MakeOutput(idx); - this->SetNthOutput(idx, newOutput); - } - this->Modified(); -} - -void mitk::ToFVisualizationFilter::GenerateOutputInformation() -{ - mitk::Image::ConstPointer input = this->GetInput(); - mitk::Image::Pointer output = this->GetOutput(); - - if (output->IsInitialized()) - return; - - itkDebugMacro(<<"GenerateOutputInformation()"); - - output->Initialize(input->GetPixelType(), *input->GetTimeSlicedGeometry()); - output->SetPropertyList(input->GetPropertyList()->Clone()); -} - -vtkColorTransferFunction* mitk::ToFVisualizationFilter::GetWidget1ColorTransferFunction() -{ - return this->m_Widget1ColorTransferFunction; -} - -void mitk::ToFVisualizationFilter::SetWidget1ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction) -{ - this->m_Widget1ColorTransferFunction = colorTransferFunction; -} - -vtkColorTransferFunction* mitk::ToFVisualizationFilter::GetWidget2ColorTransferFunction() -{ - return this->m_Widget2ColorTransferFunction; -} - -void mitk::ToFVisualizationFilter::SetWidget2ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction) -{ - m_Widget2ColorTransferFunction = colorTransferFunction; -} - -vtkColorTransferFunction* mitk::ToFVisualizationFilter::GetWidget3ColorTransferFunction() -{ - return this->m_Widget3ColorTransferFunction; -} - -void mitk::ToFVisualizationFilter::SetWidget3ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction) -{ - this->m_Widget3ColorTransferFunction = colorTransferFunction; -} - -//vtkColorTransferFunction* mitk::ToFVisualizationFilter::GetWidget4ColorTransferFunction() -//{ -// return this->m_Widget4ColorTransferFunction; -//} -// -//void mitk::ToFVisualizationFilter::SetWidget4ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction) -//{ -// this->m_Widget4ColorTransferFunction = colorTransferFunction; -//} - -std::string mitk::ToFVisualizationFilter::GetWidget1ImageType() -{ - return this->m_Widget1ImageType; -} - -void mitk::ToFVisualizationFilter::SetWidget1ImageType(std::string imageType) -{ - this->m_Widget1ImageType = imageType; -} - -std::string mitk::ToFVisualizationFilter::GetWidget2ImageType() -{ - return this->m_Widget2ImageType; -} - -void mitk::ToFVisualizationFilter::SetWidget2ImageType(std::string imageType) -{ - this->m_Widget2ImageType = imageType; -} - -std::string mitk::ToFVisualizationFilter::GetWidget3ImageType() -{ - return this->m_Widget3ImageType; -} - -void mitk::ToFVisualizationFilter::SetWidget3ImageType(std::string imageType) -{ - this->m_Widget3ImageType = imageType; -} - -int mitk::ToFVisualizationFilter::GetWidget1TransferFunctionType() -{ - return this->m_Widget1TransferFunctionType; -} - -void mitk::ToFVisualizationFilter::SetWidget1TransferFunctionType(int transferFunctionType) -{ - this->m_Widget1TransferFunctionType = transferFunctionType; -} - -int mitk::ToFVisualizationFilter::GetWidget2TransferFunctionType() -{ - return this->m_Widget2TransferFunctionType; -} - -void mitk::ToFVisualizationFilter::SetWidget2TransferFunctionType(int transferFunctionType) -{ - this->m_Widget2TransferFunctionType = transferFunctionType; -} - -int mitk::ToFVisualizationFilter::GetWidget3TransferFunctionType() -{ - return this->m_Widget3TransferFunctionType; -} - -void mitk::ToFVisualizationFilter::SetWidget3TransferFunctionType(int transferFunctionType) -{ - this->m_Widget3TransferFunctionType = transferFunctionType; -} - -vtkColorTransferFunction* mitk::ToFVisualizationFilter::GetColorTransferFunctionByImageType(std::string imageType) -{ - if (this->m_Widget1ImageType.compare(imageType) == 0) - { - return this->m_Widget1ColorTransferFunction; - } - else if (this->m_Widget2ImageType.compare(imageType) == 0) - { - return this->m_Widget2ColorTransferFunction; - } - else if (this->m_Widget3ImageType.compare(imageType) == 0) - { - return this->m_Widget3ColorTransferFunction; - } - else - { - return this->m_Widget3ColorTransferFunction; - } -} - -void mitk::ToFVisualizationFilter::CheckTransferFunction(int idx, mitk::Image* image) -{ - if (idx == 0) - { - if (this->m_Widget1ColorTransferFunction == NULL ) - { - InitializeTransferFunction(idx, image); - } - } - else if (idx == 1) - { - if (this->m_Widget2ColorTransferFunction == NULL ) - { - InitializeTransferFunction(idx, image); - } - } - else if (idx == 2) - { - if (this->m_Widget3ColorTransferFunction == NULL ) - { - InitializeTransferFunction(idx, image); - } - } -} - -void mitk::ToFVisualizationFilter::InitializeTransferFunction(int idx, mitk::Image* image) -{ - int min, max; - if (idx == 0) - { - if (image) - { - min = image->GetScalarValueMin(); - max = image->GetScalarValueMax(); - } - else - { - min = 0; - max = 7000; - } - this->m_Widget1ColorTransferFunction = vtkColorTransferFunction::New(); - this->m_Widget1TransferFunctionType = 1; - ResetTransferFunction(this->m_Widget1ColorTransferFunction, this->m_Widget1TransferFunctionType, min, max); - } - else if (idx == 1) - { - if (image) - { - min = image->GetScalarValueMin(); - max = image->GetScalarValueMax(); - } - else - { - min = 0; - max = 20000; - } - this->m_Widget2ColorTransferFunction = vtkColorTransferFunction::New(); - this->m_Widget2TransferFunctionType = 0; - ResetTransferFunction(this->m_Widget2ColorTransferFunction, this->m_Widget2TransferFunctionType, min, max); - } - else if (idx == 2) - { - if (image) - { - min = image->GetScalarValueMin(); - max = image->GetScalarValueMax(); - } - else - { - min = 0; - max = 20000; - } - this->m_Widget3ColorTransferFunction = vtkColorTransferFunction::New(); - this->m_Widget3TransferFunctionType = 0; - ResetTransferFunction(this->m_Widget3ColorTransferFunction, this->m_Widget3TransferFunctionType, min, max); - } -} - -void mitk::ToFVisualizationFilter::SetImageType(std::string& str, int index) -{ - if (index == 0) - { - str = std::string("Distance"); - } - else if (index == 1) - { - str = std::string("Amplitude"); - } - else if (index == 2) - { - str = std::string("Intensity"); - } - else if (index == 3) - { - str = std::string("Video"); - } - else if (index == 5) - { - str = std::string("Surface"); - } -} - -void mitk::ToFVisualizationFilter::ResetTransferFunction(vtkColorTransferFunction* colorTransferFunction, int type, double min, double max) -{ - colorTransferFunction->RemoveAllPoints(); - if (type == 0) - { - colorTransferFunction->AddRGBPoint(min, 0, 0, 0); - colorTransferFunction->AddRGBPoint(max, 1, 1, 1); - } - else - { - if (min>0.01) - { - colorTransferFunction->AddRGBPoint(0.0, 0, 0, 0); - colorTransferFunction->AddRGBPoint(min-0.01, 0, 0, 0); - } - colorTransferFunction->AddRGBPoint(min, 1, 0, 0); - colorTransferFunction->AddRGBPoint(min+(max-min)/2, 1, 1, 0); - colorTransferFunction->AddRGBPoint(max, 0, 0, 1); - } - colorTransferFunction->SetColorSpaceToHSV(); -} - -float* mitk::ToFVisualizationFilter::GetDataFromImageByImageType(std::string imageType) -{ - void* data; - if (imageType.compare("Distance")==0) - { - data = this->m_MitkDistanceImage->GetData(); - } - else if (imageType.compare("Amplitude")==0) - { - data = this->m_MitkAmplitudeImage->GetData(); - } - if (imageType.compare("Intensity")==0) - { - data = this->m_MitkIntensityImage->GetData(); - } - return (float*)data; -} - -void mitk::ToFVisualizationFilter::ConvertFloatImageToRGBImage(vtkColorTransferFunction* colorTransferFunction, float* floatData, unsigned char* image, bool flip) -{ - vtkFloatArray* floatArrayDist; - floatArrayDist = vtkFloatArray::New(); - floatArrayDist->Initialize(); - int numOfPixel = this->m_ImageWidth * this->m_ImageHeight; - float* flippedFloatData; - - if (flip) - { - flippedFloatData = new float[numOfPixel]; - for (int i=0; im_ImageHeight; i++) - { - for (int j=0; jm_ImageWidth; j++) - { - flippedFloatData[i*this->m_ImageWidth+j] = floatData[((this->m_ImageHeight-1-i)*this->m_ImageWidth)+j]; - } - } - floatArrayDist->SetArray(flippedFloatData, numOfPixel, 0); - } else - { - floatArrayDist->SetArray(floatData, numOfPixel, 0); - } - - colorTransferFunction->MapScalarsThroughTable(floatArrayDist, image, VTK_RGB); - - if (flip) - { - delete[] flippedFloatData; - } -} diff --git a/Modules/ToFProcessing/mitkToFVisualizationFilter.h b/Modules/ToFProcessing/mitkToFVisualizationFilter.h deleted file mode 100644 index 26df21a817..0000000000 --- a/Modules/ToFProcessing/mitkToFVisualizationFilter.h +++ /dev/null @@ -1,177 +0,0 @@ -/*========================================================================= - -Program: Medical Imaging & Interaction Toolkit -Module: $RCSfile$ -Language: C++ -Date: $Date$ -Version: $Revision$ - -Copyright (c) German Cancer Research Center, Division of Medical and -Biological Informatics. All rights reserved. -See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. - -This software is distributed WITHOUT ANY WARRANTY; without even -the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#ifndef __mitkToFVisualizationFilter_h -#define __mitkToFVisualizationFilter_h - - -#include -#include "mitkImageToImageFilter.h" -#include -//#include -#include -#include -#include -#include -#include - -namespace mitk -{ - - class mitkToFProcessing_EXPORT ToFVisualizationFilter : public ImageToImageFilter - { - public: - - mitkClassMacro( ToFVisualizationFilter , ImageToImageFilter ); - itkNewMacro( Self ); - - /*! - \brief sets the input of this filter - \param distanceImage input is the distance image of e.g. a ToF camera - */ - virtual void SetInput( Image* distanceImage); - - /*! - \brief sets the input of this filter at idx - \param idx number of the current input - \param distanceImage input is the distance image of e.g. a ToF camera - \param CameraModel This is the camera model which holds parameters like focal length, pixel size, etc. which are needed for the reconstruction of the surface. - */ - virtual void SetInput(unsigned int idx, Image* distanceImage); - - /*! - \brief returns the input of this filter - */ - Image* GetInput(); - - /*! - \brief returns the input with id idx of this filter - */ - Image* GetInput(unsigned int idx); - - vtkColorTransferFunction* GetWidget1ColorTransferFunction(); - - void SetWidget1ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction); - - vtkColorTransferFunction* GetWidget2ColorTransferFunction(); - - void SetWidget2ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction); - - vtkColorTransferFunction* GetWidget3ColorTransferFunction(); - - void SetWidget3ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction); - - //vtkColorTransferFunction* GetWidget4ColorTransferFunction(); - - //void SetWidget4ColorTransferFunction(vtkColorTransferFunction* colorTransferFunction); - - vtkColorTransferFunction* GetColorTransferFunctionByImageType(std::string imageType); - - std::string GetWidget1ImageType(); - - void SetWidget1ImageType(std::string imageType); - - std::string GetWidget2ImageType(); - - void SetWidget2ImageType(std::string imageType); - - std::string GetWidget3ImageType(); - - void SetWidget3ImageType(std::string imageType); - - int GetWidget1TransferFunctionType(); - - void SetWidget1TransferFunctionType(int transferFunctionType); - - int GetWidget2TransferFunctionType(); - - void SetWidget2TransferFunctionType(int transferFunctionType); - - int GetWidget3TransferFunctionType(); - - void SetWidget3TransferFunctionType(int transferFunctionType); - - protected: - /*! - \brief standard constructor - */ - ToFVisualizationFilter(); - /*! - \brief standard destructor - */ - ~ToFVisualizationFilter(); - virtual void GenerateOutputInformation(); - /*! - \brief method generating the output of this filter. Called in the updated process of the pipeline. - This method generates the output of the ToFSurfaceSource: The generated surface of the 3d points - */ - virtual void GenerateData(); - /** - * \brief Create an output for each input - * - * This Method sets the number of outputs to the number of inputs - * and creates missing outputs objects. - * \warning any additional outputs that exist before the method is called are deleted - */ - void CreateOutputsForAllInputs(); - - void SetImageType(std::string& str, int index); - - void CheckTransferFunction(int idx, mitk::Image* image); - - void InitializeTransferFunction(int idx, mitk::Image* image); - - void ResetTransferFunction(vtkColorTransferFunction* colorTransferFunction, int type, double min, double max); - - void InitImage(mitk::Image::Pointer image); - - float* GetDataFromImageByImageType(std::string imageType); - - void ConvertFloatImageToRGBImage(vtkColorTransferFunction* colorTransferFunction, float* floatData, unsigned char* image, bool flip=false); - - int m_ImageWidth; - int m_ImageHeight; - int m_ImageSize; - - float* m_DistanceFloatData; - float* m_AmplitudeFloatData; - float* m_IntensityFloatData; - - mitk::Image::Pointer m_MitkDistanceImage; - mitk::Image::Pointer m_MitkAmplitudeImage; - mitk::Image::Pointer m_MitkIntensityImage; - - //double m_TimeBefore, m_TimeAfter; - //mitk::RealTimeClock::Pointer m_RealTimeClock; - - vtkColorTransferFunction* m_Widget1ColorTransferFunction; - vtkColorTransferFunction* m_Widget2ColorTransferFunction; - vtkColorTransferFunction* m_Widget3ColorTransferFunction; - //vtkColorTransferFunction* m_Widget4ColorTransferFunction; - - std::string m_Widget1ImageType; - std::string m_Widget2ImageType; - std::string m_Widget3ImageType; - //std::string m_Widget4ImageType; - - int m_Widget1TransferFunctionType; - int m_Widget2TransferFunctionType; - int m_Widget3TransferFunctionType; - - }; -} //END mitk namespace -#endif