- typename RelPosFilterType::Pointer relPosFilter = RelPosFilterType::New();
- relPosFilter->SetInput(working_image);
- relPosFilter->SetAlpha1(m_Angle1); // xy plane
- relPosFilter->SetAlpha2(m_Angle2);
- relPosFilter->SetK1(M_PI/2.0); // Opening parameter, default = pi/2
- relPosFilter->SetFast(true);
- relPosFilter->SetRadius(1); // seems sufficient in this cas
- // relPosFilter->SetVerboseProgress(true);
- relPosFilter->Update();
- relPos = relPosFilter->GetOutput();
+ typename RelPosFilterType::Pointer relPosFilter;
+
+ typename FloatImageType::Pointer m_FuzzyMap;
+ for(int i=0; i<GetNumberOfAngles(); i++) {
+ // Compute fuzzy map
+ relPosFilter = RelPosFilterType::New();
+ relPosFilter->SetInput(working_image);
+ relPosFilter->SetAlpha1(m_Angle1[i]); // xy plane
+ relPosFilter->SetAlpha2(m_Angle2[i]);
+ relPosFilter->SetK1(M_PI/2.0); // Opening parameter, default = pi/2
+ relPosFilter->SetFast(true);
+ relPosFilter->SetRadius(1); // seems sufficient in this case
+ // relPosFilter->SetVerboseProgress(true);
+ relPosFilter->Update();
+ relPos = relPosFilter->GetOutput();
+
+ if (GetNumberOfAngles() != 1) {
+ // Creation of the first m_FuzzyMap
+ if (i==0) {
+ m_FuzzyMap = clitk::NewImageLike<FloatImageType>(relPos, true);
+ m_FuzzyMap->FillBuffer(0.0);
+ }
+
+ // Add to current fuzzy map
+ typedef itk::AddImageFilter<FloatImageType, FloatImageType, FloatImageType> AddImageFilter;
+ typename AddImageFilter::Pointer addFilter = AddImageFilter::New();
+ addFilter->SetInput1(m_FuzzyMap);
+ addFilter->SetInput2(relPos);
+ addFilter->Update();
+ m_FuzzyMap = addFilter->GetOutput();
+ }
+ else m_FuzzyMap = relPos;
+ }
+
+ // Divide by the number of relpos
+ if (GetNumberOfAngles() != 1) {
+ typedef itk::DivideByConstantImageFilter<FloatImageType, float, FloatImageType> DivideFilter;
+ typename DivideFilter::Pointer divideFilter = DivideFilter::New();
+ divideFilter->SetInput(m_FuzzyMap);
+ divideFilter->SetConstant(GetNumberOfAngles());
+ divideFilter->Update();
+ m_FuzzyMap = divideFilter->GetOutput();
+ }
+
+ relPos = m_FuzzyMap;