X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=vv%2FvvMaximumIntensityProjection.cxx;h=c7ffb52d0078e1fda50e8f11a528acb23f6c9167;hb=3d059f81bab4d113bdd5e87bc15a266381ee7182;hp=8baeb5545c7665e8e4af1a8fdfba25722795a9ad;hpb=95b2888f075a2873e583c6e818716ac8381bee0f;p=clitk.git diff --git a/vv/vvMaximumIntensityProjection.cxx b/vv/vvMaximumIntensityProjection.cxx index 8baeb55..c7ffb52 100644 --- a/vv/vvMaximumIntensityProjection.cxx +++ b/vv/vvMaximumIntensityProjection.cxx @@ -1,7 +1,7 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + 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 @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ + ======================================================================-====*/ #include #include @@ -25,53 +25,60 @@ #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(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->GetScalarTypeAsString().c_str()) +QString("' for the input image.\nKnown types are ") + QString(list.c_str())); - error=true; + 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: - QMessageBox::warning(0,"Unsupported image dimension",QString("Unsupported image dimension. Supported dimensions are 3 and 4")); - error=true; - } + 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()); }