00001 00002 #ifndef WX_STL_WIDGET_03 00003 #define WX_STL_WIDGET_03 00004 00005 #include <vector> 00006 00007 #include <vtkImageData.h> 00008 #include <vtkActor.h> 00009 #include <vtkMarchingCubes.h> 00010 #include <vtkPolyDataMapper.h> 00011 #include <vtkAppendFilter.h> 00012 #include <vtkImageThreshold.h> 00013 #include <vtkExtractVOI.h> 00014 #include <vtkOutlineFilter.h> 00015 #include <vtkImageSeedConnectivity.h> 00016 #include <vtkImageCast.h> 00017 00018 #include "wxVTKRenderWindowInteractor.h" 00019 #include "wxSurfaceWidget.h" 00020 #include "wxVtkBaseView.h" 00021 00022 00023 #include "../wxMaracasMPR.h" 00024 #include "pPlotter/mBarRange.h"//SIL// 00025 00026 #include <kernel/marInterface.h> 00027 #include <kernel/axisExtractor02.h> 00028 00029 00030 #include "kernel/vtkSTLExtractor.h" 00031 #include "kernel/vtkJoiner.h" 00032 00033 00034 00035 00036 //------------------------------------------------------------------ 00037 //------------------------------------------------------------------ 00038 //------------------------------------------------------------------ 00039 00040 class wxSTLWidget_03: public wxPanel{ 00041 public: 00042 wxSTLWidget_03(wxWindow *parentmar,marInterface *mar); 00043 ~wxSTLWidget_03(); 00044 void ConfigureVTK(); 00045 void Refresh(); 00046 00047 void OnOpacity_Vol(wxScrollEvent& event); // Result Volume 00048 void OnMinSpin ( wxScrollEvent & event ); 00049 void OnMaxSpin ( wxScrollEvent & event ); 00050 00051 //SIL new// 00052 void OnRangeSpin( wxScrollEvent & event ); 00053 00054 //Handled events form the bar 00055 void OnStartChanged_range(wxCommandEvent& event); 00056 void OnEndChanged_range(wxCommandEvent& event); 00057 void OnBarMoved_range(wxCommandEvent& event); 00058 00059 00060 void OnBtnExtraction(wxCommandEvent& event); 00061 void OnBtnSaveBinaryFile(wxCommandEvent& event); 00062 00063 // 00064 void Reset_vtk_STLFile(); 00065 void OnBtnSTLFileLoad(wxCommandEvent& event); 00066 void OnBtnSTLFileErase(wxCommandEvent& event); 00067 void OnOpacitySTLFile(wxScrollEvent& event); 00068 00069 00070 // -------------------------------------- 00071 // STL FUNCTIONS DHC 00072 // -------------------------------------- 00073 void generateSTLSurfaces(); 00074 void OnBtnCreateFileSTL(wxCommandEvent& event); 00075 void OnChangeSTLGaussLevel(wxScrollEvent& event); 00076 void OnChangeSTLMarchingCubesLevel(wxScrollEvent& event); 00077 void OnOpacitySTLExternal(wxScrollEvent& event); 00078 void OnOpacitySTLInternal(wxScrollEvent& event); 00079 00080 00081 //--------------------------------------- 00082 // JOIN REGIONS FUNCTIONS 00083 //--------------------------------------- 00084 void OnJoinRegions(wxCommandEvent& event); 00085 00086 private: 00087 00088 //Processing 00089 vtkImageData *_imagedata; 00090 double _range[2]; 00091 vtkImageCast *cast2; 00092 vtkImageCast *cast3; 00093 vtkImageCast *cast4; // binary segmentation result 00094 vtkImageThreshold *_thresh; 00095 vtkImageThreshold *_thresh2; 00096 vtkImageSeedConnectivity *_connect; 00097 vtkImageSeedConnectivity *_connect2; 00098 00099 00100 00101 vtkPolyDataMapper *_2_mapfinal; 00102 vtkActor *_2_stripfinal; 00103 vtkPolyDataMapper *_2_isoMapperMC6; 00104 vtkActor *_2_isoActorMC6; 00105 vtkMarchingCubes *_2_isoMC6; 00106 double _sensibility_JF; 00107 int _maxSize; 00108 int _minSize; 00109 00110 // Load STL file 00111 vtkPolyDataMapper *_loadSTLMapper; 00112 vtkActor *_loadActorSTL; 00113 00114 00115 wxSlider *_opacity_Vol; 00116 wxSlider *_sl_minSize; 00117 wxSlider *_sl_maxSize; 00118 wxSlider *_sl_minSizeSpin; 00119 wxSlider *_sl_maxSizeSpin; 00120 wxSlider *_sl_RangeSizeSpin; 00121 00122 00123 /* 00124 * Represents the bar of min and max for merging the functionality of two sliders for controlling the segmentation parameters 00125 */ 00126 mBarRange * sl_barrange_segmentation; 00127 int lastResizeRef_Value; 00128 int minRangeValue; 00129 int maxRangeValue; 00130 00131 wxVtk3DBaseView *_imageviewer3D; 00132 wxPanel *CreateControlPanel(wxWindow *parent); 00133 wxPanel *CreateViewPanel(wxWindow *parent); 00134 00135 //Maracas 00136 marInterface *_mar; 00137 wxMaracasMPR *_wxMaracasMPR; 00138 00139 void ResetTree2_JF(); 00140 void ExtractSurface(int x, int y, int z); 00141 00142 wxWindow* CreateSelectAPointPanel(wxWindow *parent); 00143 wxWindow* CreateSegmentationPanel(wxWindow *parent); 00144 wxWindow* CreateSmoothingPanel(wxWindow *parent); 00145 wxWindow* CreateReadSTLFilePanel(wxWindow *parent); 00146 00147 //--------------------- 00148 // Processing 00149 //--------------------- 00150 void ConfigureProcessing(marImageData *marimagedata, int x, int y, int z); 00151 00152 00153 //--------------------- 00154 // STL SURFACES DHC 00155 //--------------------- 00156 void ConfigureSTL(); 00157 double _stlDeltaGaussLevel; 00158 double _stlMarchingCubesLevel; 00159 00160 00161 vtkPolyData *stlInterna; 00162 vtkPolyData *stlExterna; 00163 00164 wxSlider *stlSliderDeltaGauss; 00165 wxSlider *stlSliderMarchingCubes; 00166 00167 vtkPolyDataMapper *dsm1; 00168 vtkActor *actorInternal; 00169 wxSlider *stlSliderOpacityInternal; 00170 00171 vtkPolyDataMapper *dsm2; 00172 vtkActor *actorExternal; 00173 wxSlider *stlSliderOpacityExternal; 00174 00175 vtkSTLExtractor *stlExtractor; 00176 00177 wxSlider *_sl_opacity_STL_file; 00178 00179 00180 00181 //-------------------------- 00182 // JOIN REGIONS 00183 //-------------------------- 00184 00185 vtkImageData *arteryImageData; 00186 vtkJoiner *joiner; 00187 vtkMarchingCubes *joinMarchingCubes; 00188 vtkPolyDataMapper *joinMapper; 00189 vtkActor *joinActor; 00190 00191 }; 00192 00193 #endif // WX_STL_WIDGET_03 00194 00195 00196 00197