diff --git a/Modules/Classification/CLUtilities/include/itkMultiHistogramFilter.cpp b/Modules/Classification/CLUtilities/include/itkMultiHistogramFilter.cpp index def8b65fcc..18af7898bd 100644 --- a/Modules/Classification/CLUtilities/include/itkMultiHistogramFilter.cpp +++ b/Modules/Classification/CLUtilities/include/itkMultiHistogramFilter.cpp @@ -1,112 +1,112 @@ #ifndef itkMultiHistogramFilter_cpp #define itkMultiHistogramFilter_cpp #include #include #include #include #include "itkMinimumMaximumImageCalculator.h" template< class TInputImageType, class TOuputImageType> itk::MultiHistogramFilter::MultiHistogramFilter(): m_Delta(0.6), m_Offset(-3.0), m_Bins(11), m_Size(5), m_UseImageIntensityRange(false) { this->SetNumberOfRequiredOutputs(m_Bins); this->SetNumberOfRequiredInputs(0); for (int i = 0; i < m_Bins; ++i) { this->SetNthOutput( i, this->MakeOutput(i) ); } } template< class TInputImageType, class TOuputImageType> void itk::MultiHistogramFilter::BeforeThreadedGenerateData() { typedef itk::MinimumMaximumImageCalculator ImageCalculatorFilterType; if (m_UseImageIntensityRange) { - typedef ImageCalculatorFilterType::Pointer imageCalculatorFilter + typename ImageCalculatorFilterType::Pointer imageCalculatorFilter = ImageCalculatorFilterType::New(); imageCalculatorFilter->SetImage(this->GetInput(0)); imageCalculatorFilter->Compute(); m_Offset = imageCalculatorFilter->GetMinimum(); m_Delta = 1.0*(imageCalculatorFilter->GetMaximum() - imageCalculatorFilter->GetMinimum()) / (1.0*m_Bins); } InputImagePointer input = this->GetInput(0); for (int i = 0; i < m_Bins; ++i) { CreateOutputImage(input, this->GetOutput(i)); } } template< class TInputImageType, class TOuputImageType> void -itk::MultiHistogramFilter::ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType threadId) +itk::MultiHistogramFilter::ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread, ThreadIdType /*threadId*/) { double offset = m_Offset;// -3.0; double delta = m_Delta;// 0.6; typedef itk::ImageRegionIterator IteratorType; typedef itk::ConstNeighborhoodIterator ConstIteratorType; typename TInputImageType::SizeType size; size.Fill(m_Size); InputImagePointer input = this->GetInput(0); // MITK_INFO << "Creating output iterator"; std::vector iterVector; for (int i = 0; i < m_Bins; ++i) { IteratorType iter(this->GetOutput(i), outputRegionForThread); iterVector.push_back(iter); } ConstIteratorType inputIter(size, input, outputRegionForThread); while (!inputIter.IsAtEnd()) { for (int i = 0; i < m_Bins; ++i) { iterVector[i].Set(0); } for (unsigned int i = 0; i < inputIter.Size(); ++i) { double value = inputIter.GetPixel(i); value -= offset; value /= delta; int pos = (int)(value); pos = std::max(0, std::min(m_Bins-1, pos)); iterVector[pos].Value() += 1;// (iterVector[pos].GetCenterPixel() + 1); } for (int i = 0; i < m_Bins; ++i) { ++(iterVector[i]); } ++inputIter; } } template< class TInputImageType, class TOuputImageType> itk::ProcessObject::DataObjectPointer itk::MultiHistogramFilter::MakeOutput(itk::ProcessObject::DataObjectPointerArraySizeType /*idx*/) { itk::ProcessObject::DataObjectPointer output; output = ( TOuputImageType::New() ).GetPointer(); return output; } template< class TInputImageType, class TOuputImageType> void itk::MultiHistogramFilter::CreateOutputImage(InputImagePointer input, OutputImagePointer output) { output->SetRegions(input->GetLargestPossibleRegion()); output->Allocate(); } #endif //itkMultiHistogramFilter_cpp