]> Creatis software - clitk.git/commitdiff
MIP tool using David's framework
authorschaerer <schaerer>
Tue, 26 Oct 2010 12:37:54 +0000 (12:37 +0000)
committerschaerer <schaerer>
Tue, 26 Oct 2010 12:37:54 +0000 (12:37 +0000)
tools/CMakeLists.txt
tools/clitkBinarizeImageGenericFilter.cxx
tools/clitkMIPGenericFilter.cxx
vv/CMakeLists.txt
vv/qt_ui/vvToolMIP.ui [new file with mode: 0644]
vv/vvToolMIP.cxx [new file with mode: 0644]
vv/vvToolMIP.h [new file with mode: 0644]

index ce3d09e793aca8d9a1c3971dff04e38be9f563eb..ce1d70663353baa2300305e918e46f56822b0eaf 100644 (file)
@@ -3,7 +3,8 @@ INCLUDE(${PROJECT_SOURCE_DIR}/cmake/common.cmake)
 #=========================================================
 #Add your ggo files to this list if they are used by vv
 FOREACH(clitkTool clitkAffineTransform clitkBinarizeImage clitkImageArithm
-        clitkMedianImageFilter clitkImageConvert clitkImageResample clitkCropImage) 
+        clitkMedianImageFilter clitkImageConvert clitkImageResample clitkCropImage
+        clitkMIP)
     WRAP_GGO(${clitkTool}_GGO_C ${clitkTool}.ggo)
     SET(GGO_C_FILES ${GGO_C_FILES} ${${clitkTool}_GGO_C})
 ENDFOREACH(clitkTool)
@@ -16,6 +17,7 @@ ADD_LIBRARY(clitkImageConvertLib clitkImageConvertGenericFilter.cxx)
 ADD_LIBRARY(clitkImageResampleLib clitkImageResampleGenericFilter.cxx)
 ADD_LIBRARY(clitkBinarizeImageLib clitkBinarizeImageGenericFilter.cxx)
 ADD_LIBRARY(clitkImageArithmImageLib clitkImageArithmGenericFilter.cxx)
+ADD_LIBRARY(clitkMIPLib clitkMIPGenericFilter.cxx)
 
 TARGET_LINK_LIBRARIES(clitkBinarizeImageLib clitkToolsGgoLib)
 
index c5cb4451f8d03a4bad72b97c89e4a671764fd870..005a534c5ebc39be35287a96a63423b39fc276cf 100644 (file)
@@ -63,8 +63,10 @@ void BinarizeImageGenericFilter::InitializeImageType()
 void BinarizeImageGenericFilter::SetArgsInfo(const args_info_type & a)
 {
   mArgsInfo=a;
-  SetIOVerbose(mArgsInfo.verbose_flag);
-  if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes();
+  if (mArgsInfo.verbose_given)
+    SetIOVerbose(mArgsInfo.verbose_flag);
+  if (mArgsInfo.imagetypes_given && mArgsInfo.imagetypes_flag)
+    this->PrintAvailableImageTypes();
 
   if (mArgsInfo.input_given) {
     SetInputFilename(mArgsInfo.input_arg);
index 1cfd41b80c2f24df5a36edd6e1688b2605bb5d52..fcb4cfb8f535cbbccc4b8c342511adbc0f57f623 100644 (file)
@@ -62,8 +62,8 @@ void MIPGenericFilter::SetArgsInfo(const args_info_type & a)
 {
   mArgsInfo=a;
   SetIOVerbose(mArgsInfo.verbose_flag);
-  if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes();
-
+  if (mArgsInfo.imagetypes_given && mArgsInfo.imagetypes_flag)
+    this->PrintAvailableImageTypes();
   if (mArgsInfo.input_given) {
     SetInputFilename(mArgsInfo.input_arg);
   }
index b14086906fc91d31ea2a7022249e9ebae69d39d7..39a5e0a01a3772d89349c40144c4a7d3a2e61fcb 100644 (file)
@@ -18,6 +18,7 @@ SET(vv_TOOLS
   vvToolResample
   vvToolExtractPatient
   vvToolExtractLung
+  vvToolMIP
   vvToolConvert ## with dummy vvToolConvert.ui
   
   ## these ones are for tests (not working)
@@ -28,6 +29,7 @@ SET(vv_TOOLS
 )
 # dependencies of the tools
 # Future issues : when tool depend on other tools ... how to manage that ?
+#  >> add the relevant $_LIBS variable to the tool that has dependencies?
 SET(vvToolRigidReg_LIBS clitkAffineRegistrationLib clitkRegistrationGgoLib)
 SET(vvToolBinarize_LIBS clitkBinarizeImageLib)
 SET(vvToolResample_LIBS clitkImageResampleLib)
@@ -35,6 +37,7 @@ SET(vvToolConvert_LIBS clitkImageConvertLib)
 SET(vvToolExtractPatient_LIBS clitkSegmentationGgoLib)
 SET(vvToolExtractLung_LIBS clitkSegmentationGgoLib)
 SET(vvToolCropImage_LIBS clitkToolsGgoLib)
+SET(vvToolMIP_LIBS clitkMIPLib clitkToolsGgoLib)
 
 #=========================================================
 # List of vv source files
diff --git a/vv/qt_ui/vvToolMIP.ui b/vv/qt_ui/vvToolMIP.ui
new file mode 100644 (file)
index 0000000..10cb99c
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>vvToolMIP</class>
+ <widget class="QWidget" name="vvToolMIP">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>319</width>
+    <height>86</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Projection Dimension</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QSpinBox" name="dimensionSpinBox"/>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/vv/vvToolMIP.cxx b/vv/vvToolMIP.cxx
new file mode 100644 (file)
index 0000000..970ad35
--- /dev/null
@@ -0,0 +1,104 @@
+/*=========================================================================
+
+  Program:   vv
+  Module:    $RCSfile: vvToolMIP.cxx,v $
+  Language:  C++
+  Date:      $Date: 2010/10/26 12:37:58 $
+  Version:   $Revision: 1.1 $
+  Author :   Bharath Navalpakkam (Bharath.Navalpakkam@creatis.insa-lyon.fr)
+
+  Copyright (C) 2010
+  Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+  CREATIS                   http://www.creatis.insa-lyon.fr
+
+  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 <http://www.gnu.org/licenses/>.
+
+  =========================================================================*/
+
+#include <QMessageBox>
+#include <QSpinBox>
+#include <itkImage.h>
+#include <itkMaximumProjectionImageFilter.h>
+
+#include "vvToolMIP.h"
+#include "vvSlicerManager.h"
+#include "vvSlicer.h"
+#include "vvToolInputSelectorWidget.h"
+#include "clitkMIPGenericFilter.h"
+
+//------------------------------------------------------------------------------
+// Create the tool and automagically
+ADD_TOOL(vvToolMIP);
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+vvToolMIP::vvToolMIP(vvMainWindowBase * parent, Qt::WindowFlags f)
+  :vvToolWidgetBase(parent,f),
+   vvToolBase<vvToolMIP>(parent),
+   Ui::vvToolMIP()
+{
+  // Setup the UI
+  Ui_vvToolMIP::setupUi(mToolWidget);
+  //mFilter=clitk::MIPGenericFilter::New(); //Causes a segfault. Why? (joel 26/10/2010)
+  mFilter=new clitk::MIPGenericFilter;
+
+  // Main filter
+  // Set how many inputs are needed for this tool
+  //AddInputSelector("Select one image", mFilter);
+  AddInputSelector("Select one image");
+}
+
+//------------------------------------------------------------------------------
+vvToolMIP::~vvToolMIP()
+{
+  delete mFilter;
+}
+//------------------------------------------------------------------------------
+void vvToolMIP::Initialize()
+{
+  SetToolName("MIP");
+  SetToolMenuName("Maximum Intensity Projection");
+  SetToolIconFilename(":common/icons/ducky.png");
+  SetToolTip("Compute the maximum intensity projection of an image.");
+  SetToolExperimental(true);
+}
+//------------------------------------------------------------------------------
+
+void vvToolMIP::apply()
+{
+  if (!mCurrentSlicerManager) close();
+  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+  // Main filter
+  clitk::MIPGenericFilter::args_info_type args_info;
+  cmdline_parser_clitkMIP_init(&args_info);
+  args_info.dimension_arg=this->dimensionSpinBox->value();
+  args_info.dimension_given=true;
+  clitk::MIPGenericFilter* filter= dynamic_cast<clitk::MIPGenericFilter*>(mFilter);
+  filter->SetArgsInfo(args_info);
+  filter->SetInputVVImage(mCurrentImage);
+  filter->Update();
+  vvImage::Pointer output = filter->GetOutputVVImage();
+  std::ostringstream osstream;
+  osstream << "MIPed_" << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
+  AddImage(output,osstream.str());
+  QApplication::restoreOverrideCursor();
+  close();
+}
+//------------------------------------------------------------------------------
+void vvToolMIP::InputIsSelected(vvSlicerManager *m)
+{
+  mCurrentSlicerManager =m;
+  this->dimensionSpinBox->setMaximum(m->GetDimension()-1);
+}
+
+//-----------------------------------------------------------------------------
diff --git a/vv/vvToolMIP.h b/vv/vvToolMIP.h
new file mode 100644 (file)
index 0000000..1689880
--- /dev/null
@@ -0,0 +1,65 @@
+/*=========================================================================
+
+Program:   vv
+Module:    $RCSfile: vvToolMIP.h,v $
+Language:  C++
+Date:      $Date: 2010/10/26 12:37:59 $
+Version:   $Revision: 1.1 $
+Author :   Joel Schaerer (joel.schaerer@gmail.com)
+
+Copyright (C) 2010
+Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+CREATIS                   http://www.creatis.insa-lyon.fr
+
+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 <http://www.gnu.org/licenses/>.
+
+=========================================================================*/
+
+#ifndef VVTOOLMIP_H
+#define VVTOOLMIP_H
+
+#include <vvImage.h>
+
+#include <QtDesigner/QDesignerExportWidget>
+#include "vvToolBase.h"
+#include "QWidget"
+#include "vvToolWidgetBase.h"
+#include "ui_vvToolMIP.h"
+
+
+//------------------------------------------------------------------------------
+class vvToolMIP:
+  public vvToolWidgetBase,
+  public vvToolBase<vvToolMIP>, 
+  private Ui::vvToolMIP
+{
+  Q_OBJECT     
+  public:
+    vvToolMIP(vvMainWindowBase* parent=0, Qt::WindowFlags f=0);
+    ~vvToolMIP();
+
+    static void Initialize();
+    virtual void InputIsSelected(vvSlicerManager * m);
+    virtual void apply();
+  protected:
+
+    template<class PixelType,int Dim> void Update_WithDimAndPixelType(vvImage::Pointer);
+    template<class PixelType> void Update_WithPixelType(vvImage::Pointer);
+
+    Ui::vvToolMIP ui;
+
+}; // end class vvToolMIP
+//------------------------------------------------------------------------------
+
+#endif
+