]> Creatis software - clitk.git/blob - vv/vvToolSegmentation.h
First info in gui: mask size
[clitk.git] / vv / vvToolSegmentation.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef VVTOOLSEGMENTATION_H
19 #define VVTOOLSEGMENTATION_H
20
21 #include <QtDesigner/QDesignerExportWidget>
22
23 #include "vvToolBase.h"
24 #include "vvToolWidgetBase.h"
25 #include "vvROIActor.h"
26 #include "ui_vvToolSegmentation.h"
27
28 #include "vtkLookupTable.h"
29
30 //------------------------------------------------------------------------------
31 class vvToolSegmentation:
32   public vvToolWidgetBase,
33   public vvToolBase<vvToolSegmentation>, 
34   private Ui::vvToolSegmentation 
35 {
36   Q_OBJECT
37     public:
38   vvToolSegmentation(vvMainWindowBase * parent=0, Qt::WindowFlags f=0);
39   ~vvToolSegmentation();
40
41   //-----------------------------------------------------
42   static void Initialize();
43   virtual void InputIsSelected(vvSlicerManager * m);
44   void OpenBinaryImage();
45   void Erode();
46   void Dilate();
47   void Labelize();
48   void Merge();
49   void RemoveLabel();
50   void UpdateAndRenderNewMask();
51
52   //-----------------------------------------------------
53   public slots:
54   virtual void apply();
55   //  bool eventFilter(QObject *object, QEvent *event);
56   void KeyPressed(std::string KeyPress);
57   virtual bool close();
58   virtual void MousePositionChanged(int slicer);
59   //  virtual void keyPressEvent(QKeyEvent * event);
60   // virtual void reject();
61
62  protected:
63   // virtual void closeEvent(QCloseEvent *event);
64   Ui::vvToolSegmentation ui;
65   QSharedPointer<vvROIActor> mRefMaskActor;
66   QSharedPointer<vvROIActor> mCurrentMaskActor;
67   std::vector<QSharedPointer<vvROIActor> > mCurrentCCLActors;
68   vvImage::Pointer mRefMaskImage;
69   vvImage::Pointer mCurrentMaskImage;
70   vvImage::Pointer mCurrentCCLImage;
71   int mKernelValue;
72   vtkSmartPointer<vtkLookupTable> mDefaultLUTColor;
73   enum { State_Default, State_CCL};
74   int mCurrentState;
75
76   QSharedPointer<vvROIActor> CreateMaskActor(vvImage::Pointer image, int i, int colorID, bool BGMode=false);
77   
78   double mCurrentLabelUnderMousePointer;
79   double GetBackgroundValue() { return 0; }
80   double GetForegroundValue() { return 1; }
81   long ComputeNumberOfPixels(vvImage::Pointer image, double value);
82
83   // Compute and store sizes of mask Foreground
84   void   UpdateMaskSize(vvImage::Pointer image, long & pix, double & cc);
85   void   UpdateMaskSizeLabels();
86   long   mRefMaskSizeInPixels;
87   double mRefMaskSizeInCC;
88   long   mCurrentMaskSizeInPixels;
89   double mCurrentMaskSizeInCC;
90
91 }; // end class vvToolSegmentation
92 //------------------------------------------------------------------------------
93
94 #endif