X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=vv%2FvvMaximumIntensityProjection.cxx;h=c7ffb52d0078e1fda50e8f11a528acb23f6c9167;hb=dad240d633996ba10087d96ece317415086f5a59;hp=3014720cd3238337815dbce18da2f944e86b70c6;hpb=931a42358442f4ee4f314613c991c838d4b4e3b7;p=clitk.git
diff --git a/vv/vvMaximumIntensityProjection.cxx b/vv/vvMaximumIntensityProjection.cxx
index 3014720..c7ffb52 100644
--- a/vv/vvMaximumIntensityProjection.cxx
+++ b/vv/vvMaximumIntensityProjection.cxx
@@ -1,27 +1,20 @@
/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Program: vv
- Language: C++
- Author : Joel Schaerer (joel.schaerer@insa-lyon.fr)
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
-Copyright (C) 2008
-Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
-CREATIS-LRMN http://www.creatis.insa-lyon.fr
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3 of the License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-=========================================================================*/
+ It is distributed under dual licence
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ ======================================================================-====*/
#include
#include
@@ -31,47 +24,61 @@ along with this program. If not, see .
#include "vvToITK.h"
#include "vvFromITK.h"
#include "vvMaximumIntensityProjection.h"
+#include
+#include
void vvMaximumIntensityProjection::Compute(vvSlicerManager * slicer_manager)
{
+ mCurrentSlicerManager = slicer_manager;
+ mDimension = QInputDialog::getInteger(0, "MIP Axis","Choose the axis along which to perform the MIP",0,0,\
+ slicer_manager->GetImage()->GetNumberOfDimensions()-1,1);
#define TRY_TYPE(TYPE) \
-if (clitk::IsSameType(image->GetScalarTypeAsString())) { this->Update_WithPixelType(image); return; }
- std::string list = clitk::CreateListOfTypes();
- vvImage::Pointer image=slicer_manager->GetSlicer(0)->GetImage();
- TRY_TYPE(float);
- TRY_TYPE(short);
- std::cerr << "Error, I don't know the type '" << image->GetScalarTypeAsString() << "' for the input image. "
- << std::endl << "Known types are " << list << std::endl;
- exit(0);
+ if (clitk::IsSameType(image->GetScalarTypeAsITKString())) { this->Update_WithPixelType(image); return; }
+ std::string list = clitk::CreateListOfTypes();
+ vvImage::Pointer image=slicer_manager->GetSlicer(0)->GetImage();
+ TRY_TYPE(float);
+ TRY_TYPE(double);
+ TRY_TYPE(int);
+ TRY_TYPE(unsigned int);
+ TRY_TYPE(short);
+ TRY_TYPE(unsigned short);
+ TRY_TYPE(char);
+ TRY_TYPE(unsigned char);
+ QMessageBox::warning(0,"Unsupported image type",
+ QString("Error, I don't know the type")+QString(image->GetScalarTypeAsITKString().c_str()) +QString("' for the input image.\nKnown types are ") + QString(list.c_str()));
+ error=true;
#undef TRY_TYPE
}
template
void vvMaximumIntensityProjection::Update_WithPixelType(vvImage::Pointer image)
{
- switch(image->GetNumberOfDimensions())
- {
- case 3:
- Update_WithDimAndPixelType(image);
- break;;
- case 4:
- Update_WithDimAndPixelType(image);
- break;;
- default:
- DD("Error: dimension not handled.");
- }
+ switch(image->GetNumberOfDimensions()) {
+ case 3:
+ Update_WithDimAndPixelType(image);
+ break;;
+ case 4:
+ Update_WithDimAndPixelType(image);
+ break;;
+ default:
+ QMessageBox::warning(0,"Unsupported image dimension",QString("Unsupported image dimension. Supported dimensions are 3 and 4"));
+ error=true;
+ }
}
template
void vvMaximumIntensityProjection::Update_WithDimAndPixelType(vvImage::Pointer image)
{
- typedef itk::Image ImageType;
- typedef itk::Image OutputImageType;
- typedef itk::MaximumProjectionImageFilter FilterType;
- typename FilterType::Pointer filter = FilterType::New();
- filter->SetProjectionDimension(Dim-1);
- typename ImageType::ConstPointer input = vvImageToITK(image);
- filter->SetInput(input);
- filter->Update();
- mOutputImage=vvImageFromITK(filter->GetOutput());
+ typedef itk::Image ImageType;
+ typedef itk::Image OutputImageType;
+ typedef itk::MaximumProjectionImageFilter FilterType;
+ typename FilterType::Pointer filter = FilterType::New();
+ filter->SetProjectionDimension(mDimension);
+ typename ImageType::ConstPointer input = vvImageToITK(image);
+ filter->SetInput(input);
+ filter->Update();
+ mOutputImage=vvImageFromITK(filter->GetOutput());
+ // std::ostringstream osstream;
+ // osstream << "MIP_" << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
+ // AddImage(mOutputImage,osstream.str());
}