diff --git a/Modules/ToFProcessing/mitkToFCompositeFilter.cpp b/Modules/ToFProcessing/mitkToFCompositeFilter.cpp index c336ba8c3a..5472959967 100644 --- a/Modules/ToFProcessing/mitkToFCompositeFilter.cpp +++ b/Modules/ToFProcessing/mitkToFCompositeFilter.cpp @@ -186,18 +186,20 @@ void mitk::ToFCompositeFilter::ProcessSegmentation(IplImage* inputIplImage) { segmentationMask = nullptr; } - float *f = (float*)inputIplImage->imageData; + float* tmpImage = new float[m_ImageHeight * m_ImageWidth]; + memcpy(tmpImage, inputIplImage->imageData, m_ImageHeight * m_ImageWidth * sizeof(float)); + for(int i=0; im_ImageWidth*this->m_ImageHeight; i++) { if (this->m_ApplyThresholdFilter) { - if (f[i]<=m_ThresholdFilterMin) + if (tmpImage[i]<=m_ThresholdFilterMin) { - f[i] = 0.0; + tmpImage[i] = 0.0; } - else if (f[i]>=m_ThresholdFilterMax) + else if (tmpImage[i]>=m_ThresholdFilterMax) { - f[i] = 0.0; + tmpImage[i] = 0.0; } } if (this->m_ApplyMaskSegmentation) @@ -206,11 +208,12 @@ void mitk::ToFCompositeFilter::ProcessSegmentation(IplImage* inputIplImage) { if (segmentationMask[i]==0) { - f[i] = 0.0; + tmpImage[i] = 0.0; } } } } + memcpy(inputIplImage->imageData, tmpImage, m_ImageHeight * m_ImageWidth * sizeof(float)); } ItkImageType2D::Pointer mitk::ToFCompositeFilter::ProcessItkBilateralFilter(ItkImageType2D::Pointer inputItkImage) @@ -241,7 +244,7 @@ void mitk::ToFCompositeFilter::ProcessCVMedianFilter(IplImage* inputIplImage, Ip void mitk::ToFCompositeFilter::ProcessStreamedQuickSelectMedianImageFilter(IplImage* inputIplImage) { - float* data = (float*)inputIplImage->imageData; + const char* data = inputIplImage->imageData; int imageSize = inputIplImage->width * inputIplImage->height; float* tmpArray; @@ -285,7 +288,7 @@ void mitk::ToFCompositeFilter::ProcessStreamedQuickSelectMedianImageFilter(IplIm for(int j=0; jm_DataBuffer[this->m_DataBufferCurrentIndex][j] = data[j]; + memcpy(this->m_DataBuffer[this->m_DataBufferCurrentIndex][j], data + j*sizeof(float), sizeof(float)); } float tmpValue = 0.0f; @@ -315,7 +318,7 @@ void mitk::ToFCompositeFilter::ProcessStreamedQuickSelectMedianImageFilter(IplIm delete[] tmpArray; } -#define ELEM_SWAP(a,b) { register float t=(a);(a)=(b);(b)=t; } +#define ELEM_SWAP(a,b) { float t=(a);(a)=(b);(b)=t; } float mitk::ToFCompositeFilter::quick_select(float arr[], int n) { int low = 0; diff --git a/Modules/ToFProcessing/mitkToFDistanceImageToSurfaceFilter.cpp b/Modules/ToFProcessing/mitkToFDistanceImageToSurfaceFilter.cpp index 84338beab6..8be26a0f89 100644 --- a/Modules/ToFProcessing/mitkToFDistanceImageToSurfaceFilter.cpp +++ b/Modules/ToFProcessing/mitkToFDistanceImageToSurfaceFilter.cpp @@ -122,16 +122,16 @@ void mitk::ToFDistanceImageToSurfaceFilter::GenerateData() m_VertexIdList->SetId(i, 0); } - float* scalarFloatData = nullptr; + const char* scalarFloatData = nullptr; if (this->m_IplScalarImage) // if scalar image is defined use it for texturing { - scalarFloatData = (float*)this->m_IplScalarImage->imageData; + scalarFloatData = this->m_IplScalarImage->imageData; } else if (this->GetInput(m_TextureIndex)) // otherwise use intensity image (input(2)) { ImageReadAccessor inputAcc(this->GetInput(m_TextureIndex)); - scalarFloatData = (float*)inputAcc.GetData(); + scalarFloatData = reinterpret_cast(inputAcc.GetData()); } ImageReadAccessor inputAcc(input, input->GetSliceData(0,0,0)); @@ -287,7 +287,9 @@ void mitk::ToFDistanceImageToSurfaceFilter::GenerateData() //Scalar values are necessary for mapping colors/texture onto the surface if (scalarFloatData) { - scalarArray->InsertTuple1(m_VertexIdList->GetId(pixelID), scalarFloatData[pixelID]); + float tuple; + memcpy(&tuple,scalarFloatData + pixelID * sizeof(float), sizeof(float)); + scalarArray->InsertTuple1(m_VertexIdList->GetId(pixelID), tuple); } //These Texture Coordinates will map color pixel and vertices 1:1 (e.g. for Kinect). float xNorm = (((float)i)/xDimension);// correct video texture scale for kinect