00001 00002 #ifndef WX_PATHOLOGY_WIDGET_01 00003 #define WX_PATHOLOGY_WIDGET_01 00004 #include <vector> 00005 00006 #include "vtkImageData.h" 00007 #include "vtkActor.h" 00008 #include "vtkMarchingCubes.h" 00009 #include "vtkPolyDataMapper.h" 00010 #include "vtkAppendFilter.h" 00011 #include "vtkImageThreshold.h" 00012 #include "vtkExtractVOI.h" 00013 #include "vtkOutlineFilter.h" 00014 #include "vtkImageGaussianSmooth.h" 00015 #include "vtkImageCast.h" 00016 #include "vtkImageEuclideanDistance.h" 00017 #include "vtkPolyDataConnectivityFilter.h" 00018 #include "vtkPointSet.h" 00019 #include "vtkDataSetMapper.h" 00020 #include "vtkImageContinuousDilate3D.h" 00021 #include "vtkStripper.h" 00022 #include "vtkImageResample.h" 00023 #include "vtkPolyDataNormals.h" 00024 #include "vtkCellCenters.h" 00025 #include "vtkImageEuclideanDistance.h" 00026 //#include "vtkSphericalVOI.h" 00027 00028 00029 #include "wxVTKRenderWindowInteractor.h" 00030 #include "wxSurfaceWidget.h" 00031 #include "wxVtkBaseView.h" 00032 00033 00034 #include "kernel/marInterface.h" 00035 #include "kernel/axisExtractor02.h" 00036 #include "kernel/vtkSTLExtractor.h" 00037 #include "kernel/vtkDijkstraImageData.h" 00038 00039 00040 00041 class wxPathologyWidget_01: public wxPanel{ 00042 public: 00043 wxPathologyWidget_01(wxWindow *parentmar,marInterface *mar); 00044 ~wxPathologyWidget_01(); 00045 void ConfigureVTK(); 00046 void ConfigureVTK(vtkImageData *imagedata, int x, int y, int z, double param); 00047 void Refresh(); 00048 00049 // -------------------------------------- 00050 // STL FUNCTIONS DHC 00051 // -------------------------------------- 00052 void ConfigureSTL(); 00053 void generateSTLSurfaces(); 00054 void OnBtnFileSTL(wxCommandEvent& event); 00055 void OnBtnLoadBinaryForSTL(wxCommandEvent& event); 00056 void OnChangeSTLGaussLevel(wxScrollEvent& event); 00057 void OnChangeSTLMarchingCubesLevel(wxScrollEvent& event); 00058 void OnOpacitySTLExternal(wxScrollEvent& event); 00059 void OnOpacitySTLInternal(wxScrollEvent& event); 00060 void OnSTLSubdivisionLevel(wxScrollEvent& event); 00061 00062 //--------------------------------------- 00063 // PATHOLOGY FUNCTIONS 00064 //--------------------------------------- 00065 void generatePathologySurface(); 00066 void OnBtnSetP1(wxCommandEvent& event); 00067 void OnBtnSetP2(wxCommandEvent& event); 00068 void OnBtnSetPat(wxCommandEvent& event); 00069 void OnBtnExtractPat(wxCommandEvent& event); 00070 void OnChangePatOpacity(wxScrollEvent& event); 00071 void OnChangePatMarchingCubes(wxScrollEvent& event); 00072 void OnBtnExtractAxis(wxCommandEvent& event); 00073 00074 00075 private: 00076 00077 00078 wxVtk3DBaseView *_imageviewer3D; 00079 wxPanel *CreateControlPanel(wxWindow *parent); 00080 wxPanel *CreateViewPanel(wxWindow *parent); 00081 00082 //Maracas 00083 marInterface *_mar; 00084 wxSurfaceWidget *_maracasSurfaceWidget; 00085 00086 00087 00088 //--------------------- 00089 // STL SURFACES DHC 00090 //--------------------- 00091 char* workingDir; 00092 double stlDeltaGaussLevel; 00093 double stlMarchingCubesLevel; 00094 int stlSubdivisionLevel; 00095 00096 vtkImageData * stlImageData; 00097 vtkPolyData *stlInterna; 00098 vtkPolyData *stlExterna; 00099 00100 wxSlider *stlSliderDeltaGauss; 00101 wxSlider *stlSliderMarchingCubes; 00102 wxSlider *stlSliderSubdivision; 00103 00104 vtkPolyDataMapper *dsm1; 00105 vtkActor *actorInternal; 00106 wxSlider *stlSliderOpacityInternal; 00107 00108 vtkPolyDataMapper *dsm2; 00109 vtkActor *actorExternal; 00110 wxSlider *stlSliderOpacityExternal; 00111 00112 vtkSTLExtractor *stlExtractor; 00113 00114 00115 //------------------------ 00116 // MPR 00117 //------------------------ 00118 void ConfigureMPR(); 00119 int px, py, pz; 00120 vtkSphereSource *mprSphereSource; 00121 vtkPolyDataMapper *mprMapper; 00122 vtkActor *mprActor; 00123 00124 00125 00126 //-------------------------- 00127 // PATHOLOGY 00128 //-------------------------- 00129 void ConfigurePathologyExtraction(); 00130 00131 vtkSphereSource *p1SphereSource; 00132 vtkPolyDataMapper *p1Mapper; 00133 vtkActor *p1Actor; 00134 00135 vtkSphereSource *p2SphereSource; 00136 vtkPolyDataMapper *p2Mapper; 00137 vtkActor *p2Actor; 00138 00139 vtkSphereSource *patSphereSource; 00140 vtkPolyDataMapper *patMapper; 00141 vtkActor *patActor; 00142 00143 vtkOutlineFilter *outlineFilter; 00144 vtkPolyDataMapper *outlineMapper; 00145 vtkActor *outlineActor; 00146 00147 00148 vtkSphereSource *p3SphereSource; 00149 vtkPolyDataMapper *p3Mapper; 00150 vtkActor *p3Actor; 00151 00152 00153 wxFrame *pathologyFrame; 00154 00155 00156 double p1Center[3]; 00157 double p2Center[3]; 00158 00159 vtkImageData *patImageData; 00160 vtkImageData *segImageData; 00161 vtkExtractVOI *voiFilter; 00162 00163 vtkMarchingCubes *cubesFilter; 00164 vtkPolyDataMapper *dataMapper; 00165 vtkActor *dataActor; 00166 00167 vtkPolyDataMapper *caminoMapper; 00168 vtkActor *caminoActor; 00169 00170 wxSlider *patSliderOpacity; 00171 wxSlider *patSliderMarchingCubes; 00172 wxSlider *patSliderDeltaGauss; 00173 double patOpacityLevel; 00174 double patMCLevel; 00175 double patDeltaGauss; 00176 vtkImageGaussianSmooth *gaussFilter; 00177 vtkImageSeedConnectivity *connectivityFilter; 00178 vtkImageThreshold *thresholdFilter; 00179 vtkImageCast *castFilter; 00180 wxSlider *porcentajeSlider; 00181 double thresholdOTSU; 00182 00183 00184 vtkDijkstraImageData *dijkstraFilter; 00185 00186 00187 vtkImageContinuousDilate3D *dilateFilter; 00188 vtkStripper *stripper; 00189 vtkPolyDataConnectivityFilter *polyUnico; 00190 00191 00192 vtkImageData *isoBinaria; 00193 vtkImageEuclideanDistance *isoDistance; 00194 00195 }; 00196 00197 #endif // WX_PATHOLOGY_WIDGET_01 00198 00199 00200 00201