From 52396e2d4f1d48b55613aadaca83ad18b90f130a Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Mon, 18 Dec 2017 12:45:29 +0100 Subject: [PATCH] #3161 creaContours Bug New Normal - Interpolate Image - Color and Threshold Layer - Save Results good formt - Viewer Results Frame --- .../interfImageToolsMenu.cxx | 2 +- .../interfMainPanel.cxx | 9 +- .../interfToolsPanels.cxx | 14 +- .../wxContourMainFrame.cxx | 170 ++++++++++++------ .../wxContourMainFrame.h | 4 + .../wxContourViewPanel.cxx | 13 +- 6 files changed, 135 insertions(+), 77 deletions(-) diff --git a/lib/Interface_Icons_NDimensions/interfImageToolsMenu.cxx b/lib/Interface_Icons_NDimensions/interfImageToolsMenu.cxx index 8a9d563..c4a5e58 100644 --- a/lib/Interface_Icons_NDimensions/interfImageToolsMenu.cxx +++ b/lib/Interface_Icons_NDimensions/interfImageToolsMenu.cxx @@ -141,7 +141,7 @@ void interfImageToolsMenu::onColorLayerImage(wxCommandEvent& event) void interfImageToolsMenu::onHelpPressed(wxCommandEvent& event) { - wxLaunchDefaultBrowser(_T("http://www.creatis.insa-lyon.fr/site/fr/EndUserGuide"), 0); + wxLaunchDefaultBrowser(_T("http://www.creatis.insa-lyon.fr/site7/fr/EndUserGuide"), 0); } //------------------------------------------------------------------------------------------------------------ diff --git a/lib/Interface_Icons_NDimensions/interfMainPanel.cxx b/lib/Interface_Icons_NDimensions/interfMainPanel.cxx index 7d77c93..d1dd922 100644 --- a/lib/Interface_Icons_NDimensions/interfMainPanel.cxx +++ b/lib/Interface_Icons_NDimensions/interfMainPanel.cxx @@ -146,7 +146,7 @@ interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtH splitterwindow->SetSashGravity(1); //EED splitterwindow->SetSashPosition(600); splitterwindow->SetSashSize(5); - splitterwindow->SplitHorizontally(toolpanel, infoPanel,8*73); + splitterwindow->SplitHorizontally(toolpanel, infoPanel,9*73); Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); @@ -696,7 +696,6 @@ void interfMainPanel::setStringSpread(std::string stringtemp) void interfMainPanel::onInformationPressed() { - // Statistics frame if(infoWin ==NULL){ infoWin = new wxFrame (this, -1,_T(" Statistics "), wxDefaultPosition, wxDefaultSize, wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT | wxRESIZE_BORDER ); @@ -705,11 +704,13 @@ void interfMainPanel::onInformationPressed() wxSize sizepanel(825,675); informationPanel = new interfInformationPanel(infoWin);//contourevent->getInformationPanel(infoWin); - wxBoxSizer * sizerPanel = new wxBoxSizer(wxHORIZONTAL); +// Borrame wxBoxSizer * sizerPanel = new wxBoxSizer(wxHORIZONTAL); + wxFlexGridSizer * sizerPanel = new wxFlexGridSizer(1); + sizerPanel -> Add( informationPanel, 1, wxEXPAND ,0); infoWin->SetSizer( sizerPanel ); - infoWin->SetAutoLayout( true ); +// infoWin->SetAutoLayout( true ); infoWin->Layout(); infoWin->Show(); }else { diff --git a/lib/Interface_Icons_NDimensions/interfToolsPanels.cxx b/lib/Interface_Icons_NDimensions/interfToolsPanels.cxx index baa8cd8..32284ec 100644 --- a/lib/Interface_Icons_NDimensions/interfToolsPanels.cxx +++ b/lib/Interface_Icons_NDimensions/interfToolsPanels.cxx @@ -107,7 +107,6 @@ void interfConfigurationPanel::onBrigthnessColorWindowLevel(wxScrollEvent& event void interfConfigurationPanel::OnInterpolation(wxCommandEvent& event) { - interfMainPanel::getInstance()->onInterpolation(_interpolationCheckBox->GetValue()); @@ -213,7 +212,8 @@ void interfSpreadPanel::setStringSpread(std::string stringtemp){ ** Begin of information panel **/ interfInformationPanel::interfInformationPanel(wxWindow * parent) -: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN) +//: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN) +: wxPanel(parent, -1) { //wxPanel *panel = new wxPanel(parent,-1,wxDefaultPosition, wxDefaultSize,wxTAB_TRAVERSAL); wxString lstOptions[4]; @@ -310,7 +310,7 @@ interfInformationPanel::interfInformationPanel(wxWindow * parent) _grid = new wxGrid( this, wxID_ANY, wxPoint( 0, 0 ), - wxSize( 200, 500 ) ); + wxSize( 200, 250 ) ); int i,gridCol=10,gridRow=sizeZ+2; _grid->CreateGrid( 0, 0 ); @@ -350,13 +350,13 @@ interfInformationPanel::interfInformationPanel(wxWindow * parent) sizer->Add( _mbarrangeSliceInformation , 1, wxALL|wxGROW , 2 ); sizer->Add( new wxStaticText(this ,-1,_T("Gray Range")) , 1, wxALL , 0 ); sizer->Add( _mbarrangeRangeInformation , 1, wxALL|wxGROW , 2 ); - sizer->Add( sizerB , 1, wxEXPAND , 0 ); - sizer->Add( _staticTextInformation , 1, wxEXPAND , 0 ); + sizer->Add( sizerB , 1, wxALL|wxGROW , 0 ); + sizer->Add( _staticTextInformation , 1, wxALL|wxGROW , 0 ); sizer->Add( _grid , 1, wxEXPAND , 0 ); this->SetSizer( sizer ); - this->SetSize( wxSize(1500,1500) ); - //this->SetBackgroundColour( wxColour(100,100,100) ); +// this->SetSize( wxSize(1500,1500) ); +// this->SetBackgroundColour( wxColour(100,100,100) ); this->SetAutoLayout( true ); this->Layout(); //return panel; diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index 3d4413b..14359a9 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -92,8 +92,9 @@ char wxContourMainFrame::COPY = 'C'; _viewMaskImage = NULL; _viewMaskImagePanel = NULL; _viewThresholdImage = NULL; - _viewThresholdImagePanel = NULL; - _viewColorLayerImagePanel = NULL; + _viewThresholdImagePanel = NULL; + _viewColorLayerImagePanel = NULL; + _frameShowResultImages = NULL; } wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style,std::string datadir) @@ -103,7 +104,6 @@ char wxContourMainFrame::COPY = 'C'; _contourGroup = 1; _creatingContoursActive = false; _theViewPanel = NULL; - _instantPanel = NULL; _refLineControl = NULL; _refLineModel = NULL; @@ -112,29 +112,22 @@ char wxContourMainFrame::COPY = 'C'; _viewMaskImage = NULL; _viewMaskImagePanel = NULL; _viewThresholdImage = NULL; - _viewThresholdImagePanel = NULL; - _viewColorLayerImagePanel = NULL; - + _viewThresholdImagePanel = NULL; + _viewColorLayerImagePanel = NULL; // set up default notebook style - m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; - m_notebook_theme = 0; + m_notebook_style = wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; + m_notebook_theme = 0; //wxContour_ActionCommandsID a; - _numberOfVariablesStatistics = 7; - - _datadir = datadir; - - - inredo = 0; - inundo = 0; - + _numberOfVariablesStatistics= 7; + _datadir = datadir; + inredo = 0; + inundo = 0; _pannew = interfMainPanel::getInstance(this,datadir+"/data/Icons");//, eventHandler); _performingOperation = new PerformingOperation(); - if(images.size() > 0) { this->setVectImages(images); } - _contourextractdata = NULL; } @@ -650,21 +643,27 @@ void wxContourMainFrame::ShowResultImages(int typeContourGroup, int selection, i nTypeView.push_back(2); nTypeView.push_back(0); - wxFrame *frame = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), wxDEFAULT_FRAME_STYLE|wxSTAY_ON_TOP); - wxAuiManager *m_mgr_noteBookViewerResult = new wxAuiManager(); - m_mgr_noteBookViewerResult->SetManagedWindow(frame); + if (_frameShowResultImages==NULL) + { +// wxFrame *_frameShowResultImages = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), wxDEFAULT_FRAME_STYLE|wxSTAY_ON_TOP); + _frameShowResultImages = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), + wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT | wxRESIZE_BORDER ); + + wxAuiManager *m_mgr_noteBookViewerResult = new wxAuiManager(); + m_mgr_noteBookViewerResult->SetManagedWindow(_frameShowResultImages); - wxAuiNotebook* noteBookViewerResult = new wxAuiNotebook(frame, -1, wxPoint(600, 600), wxSize(430,200), m_notebook_style); - m_mgr_noteBookViewerResult->AddPane(noteBookViewerResult, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false)); + wxAuiNotebook* noteBookViewerResult = new wxAuiNotebook(_frameShowResultImages, -1, wxPoint(600, 600), wxSize(430,200), m_notebook_style); + m_mgr_noteBookViewerResult->AddPane(noteBookViewerResult, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false)); - wxPanel *panelViewer1 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, value,&nTypeView); - wxPanel *panelViewer2 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, mask,&nTypeView); + wxPanel *panelViewer1 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, value,&nTypeView); + wxPanel *panelViewer2 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, mask,&nTypeView); - noteBookViewerResult->AddPage( panelViewer1, wxT("Image result") ); - noteBookViewerResult->AddPage( panelViewer2, wxT("Mask result") ); - m_mgr_noteBookViewerResult->Update(); - frame->Show(); + noteBookViewerResult->AddPage( panelViewer1, wxT("Image result") ); + noteBookViewerResult->AddPage( panelViewer2, wxT("Mask result") ); + m_mgr_noteBookViewerResult->Update(); + _frameShowResultImages->Show(); + } // if _frameShowResultImages } @@ -974,7 +973,6 @@ void wxContourMainFrame::onLoad() void wxContourMainFrame::SetZForAllContours(int pz) { - printf("EED wxContourMainFrame::SetZForAllContours\n"); //-- Normal Contours @@ -1783,19 +1781,18 @@ printf("EED wxContourMainFrame::SegmentationOneSliceITK Skypping this code. No { vecXo.push_back(p[0]); vecYo.push_back(p[1]); - } - else - { - vecX.push_back( p[0] ); - myfile <GetScalarType()==VTK_CHAR ) + { + result="CHAR"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_CHAR ){ + result="UCHAR"; + } else if ( image->GetScalarType()==VTK_FLOAT ){ + result="FLOAT"; + } else if ( image->GetScalarType()==VTK_DOUBLE ){ + result="DOUBLE"; + } else if ( image->GetScalarType()==VTK_SHORT ){ + result="SHORT"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_SHORT ){ + result="USHORT"; + } + return result; +} +void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value) +{ + std::string stringType; double spc[3]; kernelManager->GetSpacing(spc,0); // returns the spacing of the first image - - std::string temp = directory + "/" + namefile + "-image-Value.mhd"; + stringType = GetStringTypeImage(value); + std::string temp = directory + "/" + namefile + "-image-Value-"+stringType+".mhd"; wxString filename = crea::std2wx(temp); @@ -3075,7 +3093,8 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef writerValueImage->Write( ); // Image Mask - temp = directory + "/" + namefile + "-image-Mask.mhd"; + stringType = GetStringTypeImage(mask); + temp = directory + "/" + namefile + "-image-Mask-"+stringType+".mhd"; // LG 14/01/09 : using crea filename = crea::std2wx(temp); @@ -3156,7 +3175,7 @@ void wxContourMainFrame::SetContourGroup(int contourGroup) wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) { - + if (_viewMaskImagePanel==NULL) { _contourextractdata = new ContourExtractData(true); @@ -3165,15 +3184,29 @@ wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) // _theViewPanel->getImageData()->GetScalarRange(range); //int min = (int)floor (range[0]); //int max = (int)ceil (range[1]); + +//EED 2017-12-17 int min = 254; int max = 256; - _viewMaskImagePanel = new ThresholdImageViewPanel( parent, -1, -1 , 0); + + _viewMaskImagePanel = new ThresholdImageViewPanel( parent, -1, -1 , -1,-1, 0); _viewMaskImage = new ThresholdImageView(); - _viewMaskImage->SetImage(_contourextractdata->GetVtkImageMaskResult() ); + _viewMaskImage->SetImage( _contourextractdata->GetVtkImageMaskResult() ); _viewMaskImage->SetminMaxValue( min, max); _viewMaskImage->SetBaseColor( 0,0,1 ); + + + std::vector colorbarposition; + colorbarposition.push_back( -999 ); + colorbarposition.push_back( -999 ); + _viewMaskImage->SetColorBarPosition( colorbarposition ); + double spc[3]; + _viewMaskImage->SetSpcBase( _theViewPanel->getImageData()->GetSpacing() ); + _viewMaskImage->SetNewSpacingLayer( _theViewPanel->getImageData()->GetSpacing() ); + _viewMaskImagePanel->SetThresholdImageView( _viewMaskImage ); _viewMaskImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + _viewMaskImage->onThresholdChangeOpacity( 25 ); } return _viewMaskImagePanel; } @@ -3189,6 +3222,21 @@ wxPanel *wxContourMainFrame::getColorLayerImageViewPanel(wxWindow *parent) int max = (int)ceil (range[1]); _viewColorLayerImagePanel = new ColorLayerImageViewPanel( parent, min, max, 100, 1); _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetwxVtkBaseView( 0 , _theViewPanel->getWxVtkBaseView() ); + // std::vector range = bbGetInputlstRangeForColorBar(); + // clivp->GetColorLayerImageViewManager()->SetRangeForColorBar( range ); + std::vector colorbarposition; + colorbarposition.push_back( 50 ); + colorbarposition.push_back( 105 ); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetColorBarPosition( colorbarposition ); + // std::vector base_color; + // _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetBaseColors( base_color ); + // std::vector grey_level_boundaries; + // clivp->GetColorLayerImageViewManager()->SetGreyLevelBoundaries( grey_level_boundaries ); + std::vector transparence_level_boundaries; + transparence_level_boundaries.push_back(0); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetBaseTransparence( transparence_level_boundaries ); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetPlainOrGradientColor( false ); +// _viewColorLayerImagePanel->SetFittingMode( 3 ); } return _viewColorLayerImagePanel; } @@ -3202,13 +3250,25 @@ wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) _theViewPanel->getImageData()->GetScalarRange(range); int min = (int)floor (range[0]); int max = (int)ceil (range[1]); - _viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max , 1); + int start= (max+min)/2 - (max-min)*0.25; + int end= (max+min)/2 + (max-min)*0.25; + _viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max, start, end , 1); _viewThresholdImage = new ThresholdImageView(); + _viewThresholdImage->SetminMaxValue(start,end); _viewThresholdImage->SetImage( _theViewPanel->getImageData() ); - _viewThresholdImage->SetminMaxValue( min, max); + std::vector colorbarposition; + colorbarposition.push_back( 10 ); + colorbarposition.push_back( 105 ); + _viewThresholdImage->SetColorBarPosition( colorbarposition ); + double spc[3]; + _viewThresholdImage->SetSpcBase( _theViewPanel->getImageData()->GetSpacing() ); + _viewThresholdImage->SetNewSpacingLayer( _theViewPanel->getImageData()->GetSpacing() ); + _viewThresholdImage->SetBaseColor( 1,0,0 ); _viewThresholdImagePanel->SetThresholdImageView( _viewThresholdImage ); _viewThresholdImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + _viewThresholdImage->onThresholdChangeOpacity( 25 ); + RefreshInterface(); } return _viewThresholdImagePanel; } diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h index 934238e..cd7d202 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h @@ -351,6 +351,8 @@ class wxContourMainFrame : public wxPanel { void SetScalarRange(int grayRangeMin, int grayRangeMax); + std::string GetStringTypeImage( vtkImageData* image); + //------------------------------------------------------------------------------------------------------------ private: @@ -436,6 +438,8 @@ private: std::string _fileLocation; //------------------------------------------------------------------------------------------------------------ + wxFrame *_frameShowResultImages; + }; #endif diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx index a7e8716..52b23e0 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourViewPanel.cxx @@ -817,21 +817,14 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHANGE ) void wxContourViewPanel::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel) { wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); - vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); - imageviewer->SetColorWindow(colorwindow); - imageviewer->SetColorLevel(windowlevel); + wxvtk2dbaseview->SetColorWindow( colorwindow ); + wxvtk2dbaseview->SetColorLevel( windowlevel ); } void wxContourViewPanel::onInterpolation(bool interpolate) { wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)getWxVtkBaseView(); - vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2(); - - if (interpolate){ - imageviewer->GetImageActor()->InterpolateOn(); - } else { - imageviewer->GetImageActor()->InterpolateOff(); - } + wxvtk2dbaseview->SetInterpolate( interpolate ); } void wxContourViewPanel::GetPointsOfActualContour( std::vector *vecX, std::vector *vecY, std::vector *vecZ ) -- 2.47.1