wxContourMainFrame* wxContourMainFrame:: instance = NULL;
char wxContourMainFrame::COPY = 'C';
-
+
wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,long style)
//: wxPanel(parent, id, title, pos, size, style)
//: wxWindow(parent, id, pos, size, style)
// _modelManager = NULL;
_instantPanel = NULL;
// _buttonsBar = NULL;
-// _gridPanel = NULL;
+// _gridPanel = NULL;
// _drawToolsPanel = NULL;
// _operationsToolsPanel = NULL;
- //_autoFormsPanel = NULL;
+ //_autoFormsPanel = NULL;
// _standardToolsPanel = NULL;
// _editionToolsPanel = NULL;
// _listViewPanel = 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_theme = 0;
//wxContour_ActionCommandsID a;
-
+
_contourextractdata = NULL;
_viewMaskImage = NULL;
_viewMaskImagePanel = NULL;
_viewColorLayerImagePanel = NULL;
}
- wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector<vtkImageData*> images, long style,std::string datadir)
+ wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector<vtkImageData*> images, long style,std::string datadir)
: wxPanel(parent, id, pos, size, style)
{
m_mgr.SetManagedWindow(this);
// 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_theme = 0;
//wxContour_ActionCommandsID a;
_numberOfVariablesStatistics = 7;
_datadir = datadir;
-
+
inredo = 0;
inundo = 0;
{
this->setVectImages(images);
}
-
+
_contourextractdata = NULL;
}
std::vector<std::string> conceptNameVect;
std::vector<int> conceptSizeVect;
- notebook = this->createNotebook();
+ notebook = this->createNotebook();
kernelManager = new KernelManagerContour( imgs , _datadir+"/data/" , strCreaContourDataTmp );
_instantPanel = new wxInstantChooserPanel( notebook, "Instant Chooser", true, false, "c" );
- _theViewPanel = new wxContourViewPanel( kernelManager->getSourceImage(), notebook );
-
+ _theViewPanel = new wxContourViewPanel( kernelManager->getSourceImage(), notebook );
+
//-------------------------------------------------------------
kernelManager->getConceptsInformation(conceptNameVect, conceptSizeVect);
_instantPanel->addConcepts(conceptNameVect, conceptSizeVect);
-
+
double val = _theViewPanel->getCurrentDeep();
_instantPanel->setConceptValue( "Axe Depth", (int)val );
wxContourMainFrame* wxContourMainFrame :: getInstance()
{
- return instance;
+ return instance;
}
void wxContourMainFrame :: resetInstance()
m_mgr.UnInit();
//delete m_mgr;
- //El problema al cerrar la aplicacion puede estar asociado
- //a que wxAUINotebook esta en la aplicacion
+ //El problema al cerrar la aplicacion puede estar asociado
+ //a que wxAUINotebook esta en la aplicacion
//principal (wxContourGUIExample)tambien
- //EED???? delete _theViewPanel;
+ //EED???? delete _theViewPanel;
//EED???? delete _instantPanel;
//EED???? delete _buttonsBar;
- //EED???? delete _actualInstant;
+ //EED???? delete _actualInstant;
//EED???? delete _sceneManager;
}
wxBitmap page_bmp = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, wxSize(16,16));
return noteBook;
}
-
+
//------------------------------------------------------------------------------------------------------------
- // Creational and initialization methods
+ // Creational and initialization methods
//------------------------------------------------------------------------------------------------------------
bool wxContourMainFrame :: configurePanels( )
{
bool configured = _theViewPanel!=NULL;
-
+
configured &= _theViewPanel!=NULL;
if( _theViewPanel!=NULL )
{
- notebook->AddPage( _theViewPanel, wxT(" View ") );
+ notebook->AddPage( _theViewPanel, wxT(" View ") );
m_mgr.Update();
}
m_mgr.AddPane(notebook, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false));
m_mgr.Update();
-
+
SetMinSize(wxSize(300,300));
m_mgr.Update();
return configured;
{
bool configured = panel!=NULL;
configured &= panel!=NULL;
-
+
if( configured )
{
notebook->AddPage( panel, wxT(" Viewer "), true );
//------------------------------------------------------------------------------------------------------------
// Attributes getters and setters
//------------------------------------------------------------------------------------------------------------
-
-
+
+
void wxContourMainFrame :: setInstantChooserPanel( wxInstantChooserPanel * theInstantChooserPanel )
{
- _instantPanel = theInstantChooserPanel;
+ _instantPanel = theInstantChooserPanel;
}
// void wxContourMainFrame :: setButtonsBar( wxContour_ButtonsBar * theButtonsBar )
// }
// void wxContourMainFrame :: setOperationsToolsPanel( wxContour_OperationsToolsPanel * theOperationsToolsPanel )
-// {
+// {
// _operationsToolsPanel = theOperationsToolsPanel;
// }
void wxContourMainFrame::onCreateContourSpline( ){
-
+
//JCP 20-10-08 Undo redo implementation
saveState();
//JCP 20-10-08 Undo redo implementation
createContour( 1 );
-
+
}
void wxContourMainFrame::onCreateContourRectangle( ){
//JCP 20-10-08 Undo redo implementation
saveState();
- //JCP 20-10-08 Undo redo implementation
+ //JCP 20-10-08 Undo redo implementation
createContour( 2 );
}
void wxContourMainFrame::onCreateContourCircle( ){
//JCP 20-10-08 Undo redo implementation
saveState();
- //JCP 20-10-08 Undo redo implementation
+ //JCP 20-10-08 Undo redo implementation
createContour( 3 );
}
void wxContourMainFrame::onCreateContourLine( ){
//JCP 20-10-08 Undo redo implementation
saveState();
- //JCP 20-10-08 Undo redo implementation
+ //JCP 20-10-08 Undo redo implementation
createContour( 6 );
}
void wxContourMainFrame::onCreateContourPoints( ){
//JCP 20-10-08 Undo redo implementation
saveState();
- //JCP 20-10-08 Undo redo implementation
+ //JCP 20-10-08 Undo redo implementation
createContour( 7 );
}
// RaC 09-09 --------------------------------------
void wxContourMainFrame::onCreateContourPolygon( ){
//JCP 20-10-08 Undo redo implementation
saveState();
- //JCP 20-10-08 Undo redo implementation
+ //JCP 20-10-08 Undo redo implementation
createContour( 10 );
}
// RaC 10-09 --------------------------------------
std::vector<int> instantVector;
_instantPanel->getInstant( instantVector );
std::string theName = kernelManager->createOutline(manModelContour, instantVector);
-
+
/*std::vector<int> instantVector;
_instantPanel->getInstant( instantVector );
std::string theName;
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , 4) ;
}
std::vector<int> instantVector;
_instantPanel->getInstant( instantVector );
std::string theName = kernelManager->createOutline(manModelContour, instantVector);
-
+
/*std::vector<int> instantVector;
_instantPanel->getInstant( instantVector );
std::string theName;
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_sceneManager->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeContour) ;
- }
+ }
}
manualBaseModel * wxContourMainFrame::factoryManualContourModel(wxPanel* panel){
for ( iSector=0 ; iSector<sizeSectors ; iSector++ )
{
ang = ((PanelBullEyeOptions*)panel)->GetAngOfCrownSection(iCrown,iSector);
- angDelta= ((PanelBullEyeOptions*)panel)->GetAngDeltaOfCrownSection(iCrown);
+ angDelta= ((PanelBullEyeOptions*)panel)->GetAngDeltaOfCrownSection(iCrown);
manModelContourBullEye->AddSector(radioA,radioB,ang,angDelta);
} // for iSector
} // for iCrown
} // if _panelBullEyeOptions
-
+
return manModelContour;
}
-void wxContourMainFrame :: saveState(){
-
+void wxContourMainFrame :: saveState(){
+
std::string temp = kernelManager->saveState();
- saveFileWithContours(temp);
+ saveFileWithContours(temp);
}
void wxContourMainFrame::onDeleteContour(){
for (j=0;j<jSize; j++)
{
if (lstKeyNameToBeErase[k]==lstKeyNameActualSlice[j])
- {
+ {
ok=true;
}
} // for j
_theViewPanel->removeFromScene(theKeyName);
kernelManager->deleteCModel(theKeyName);
- //_theViewPanel->getSceneManager()->removeFromScene( theKeyName );
+ //_theViewPanel->getSceneManager()->removeFromScene( theKeyName );
//cViewer = conwrapviewControl->getViewer();
//_theViewPanel->getSceneManager()->removeWrap( theKeyName );
- //cControler* conwrapviewControl->getControler();
+ //cControler* conwrapviewControl->getControler();
// delete cModel;
// delete cViewer;
// delete cControler;
//int minZ = _mbarrangeDeleteAll->GetStart();
//int maxZ = _mbarrangeDeleteAll->GetEnd();
int minZ, maxZ;
-
+
minZ = 0;
maxZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ();
-
+
//JCP --08-09-2008
-
- _theViewPanel->getSceneManager()->removeSceneContours( );
+
+ _theViewPanel->getSceneManager()->removeSceneContours( );
_theViewPanel->getSceneManager()->removeAllOutlines();
- kernelManager->removeAllOutlines();
+ kernelManager->removeAllOutlines();
//JCP --08-09-2008
/*
if ( (minZ==0) && (maxZ==_mbarrangeDeleteAll->GetMax() ))
deleteContour( (*contourthing)->getName() );
} //for ii
}// for z
- } // if
+ } // if
JCP --08-09-2008 */
}
vtkImageData * mask;
vtkImageData * value;
this->getMaskValue(&mask, &value, typeContourGroup, selection, minZ, maxZ);
-
+
std::vector<int> nTypeView;
nTypeView.push_back(5);
nTypeView.push_back(1);
nTypeView.push_back(2);
- nTypeView.push_back(0);
-
+ 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);
-
+
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));
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") );
int actualSlice = instantVect[1];
kernelManager->setInstant(instantVect);
-
+
// Refresh Mask image
if(_viewMaskImage!=NULL){
- _viewMaskImage->SetZ(actualSlice);
+ _viewMaskImage->SetZ(actualSlice);
if (_viewMaskImagePanel->IsVisible()==true)
{
vtkImageData *mask, *value;
_viewMaskImage->onThreshold();
}
}
-
+
// Refresh Threshold image
if(_viewThresholdImage!=NULL){
- _viewThresholdImage->SetZ(actualSlice);
+ _viewThresholdImage->SetZ(actualSlice);
if (_viewThresholdImagePanel->IsVisible()==true){
_viewThresholdImage->onThreshold();
}
// Refresh Threshold image
if(_viewColorLayerImage!=NULL){
- _viewColorLayerImage->SetZ(actualSlice);
+ _viewColorLayerImage->SetZ(actualSlice);
if (_viewColorLayerImagePanel->IsVisible()==true){
_viewColorLayerImage->onThreshold();
}
_theViewPanel->addNameWrapperToScene();
//for( int i=0; i<size; i++)
- //{
+ //{
// _theViewPanel->getSceneManager()->addToScene(namesWrapping[i]->getKeyName(), true, true, true, false, false );
//}
}
void wxContourMainFrame::onChangeDeep(int val){
- _instantPanel->setConceptValue( "Axe Depth", (int)val );
+ _instantPanel->setConceptValue( "Axe Depth", (int)val );
changeInstant();
}
_instantPanel->getInstant( tempVector );
_performingOperation->setEndOperationInstantVector ( tempVector );
std::vector<std::string> elems = _performingOperation->getKeyNamesOperationElems();
- int i,size = elems.size();
+ int i,size = elems.size();
for( i=0; i<size; i++ )
- {
+ {
createCopyContourOf( elems[i], tempVector, i>0 );
- }
+ }
}
}
void wxContourMainFrame::onUndo(){
if(kernelManager->onRedo(filename)){
loadState(filename);
}
-
+
}
void wxContourMainFrame :: createCopyContourOf ( std::string anExistingKName, std::vector<int> &instantNoTouchData, bool append )
{
deleteAllContours();
loadContours(pFile, false);
- loadContours(pFile, true);
+ loadContours(pFile, true);
fclose(pFile);
}
fscanf(pFile,"%s",tmp); // X
fscanf(pFile,"%s",tmp); // Y
fscanf(pFile,"%s",tmp); // Z
-
- fscanf(pFile,"%s",tmp); // NumberOfContours
+
+ fscanf(pFile,"%s",tmp); // NumberOfContours
fscanf(pFile,"%s",tmp); // ##
- int numberOfContours = atoi(tmp);
+ int numberOfContours = atoi(tmp);
std::vector<int> instantVector;
int typeContourModel;
fscanf(pFile,"%s",tmp); // TypeView
fscanf(pFile,"%s",tmp); // ##
- typeView = atoi(tmp);
+ typeView = atoi(tmp);
std::string theName;
theName = kernelManager->createOutline( manModelContour, instantVector );
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
- }
-
+ }
+
if (staticContour==true)
{
Instant instant(&instantVector);
}
void wxContourMainFrame::onLoad()
-{
+{
std::string fileNameContourROI = GetFileLocation();
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
if(GetFileLocation().empty())
onLoadContours(fileNameContourROI);
}
-void wxContourMainFrame::onLoadContours(std::string fileNameContourROI){
+
+
+void wxContourMainFrame::onLoadContours(std::string fileNameContourROI)
+{
+printf("EED2 wxContourMainFrame::onLoadContours 01 \n");
char tmp[255];
char tmpD[255];
if(pFile != NULL)
{
//------------------------------------------------------------------------------------------------------------
- fileNameContourROI.append("data");
+ fileNameContourROI.append("data");
FILE *pFileData=fopen(fileNameContourROI.c_str(),"r+");
if(pFileData != NULL)
{
fscanf(pFileData,"%s",tmpD); // --CreaContour--
fscanf(pFileData,"%s",tmpD); // Version
fscanf(pFileData,"%s",tmpD); // 1.0.2 || 1.0.1 || 1.0.0
-
+
fscanf(pFileData,"%s",tmpD); // onePixelSize
fscanf(pFileData,"%s",tmpD); // #
- _onePixelSize = atof(tmpD);
- fscanf(pFileData,"%s",tmpD); // NumberOfContours
+ _onePixelSize = atof(tmpD);
+ fscanf(pFileData,"%s",tmpD); // NumberOfContours
fscanf(pFileData,"%s",tmpD); // #
}
fscanf(pFile,"%s",tmp); // Version
fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0
std::string version(tmp);
-
+
//AD:02-06-09
+ _tmpReadFileTypeOfTransformation=-1;
if (version=="1.0.2")
{
- openContours(pFile,pFileData,2,false);
- openContours(pFile,pFileData,2,true); //Load StaticContours
+ readDimSpc(pFile);
+ openContours(pFile,pFileData,false);
+ openContours(pFile,pFileData,true); //Load StaticContours
}
-
+
//AD:02-06-09
else if (version=="1.0.1")
{
- openContours(pFile,pFileData,1,false); //Skips ImageDimensions and ImageSpacing
- openContours(pFile,pFileData,1,true); //Load StaticContours, skips ImageDimensions and ImageSpacing
+ openContours(pFile,pFileData,false); //Skips ImageDimensions and ImageSpacing
+ openContours(pFile,pFileData,true); //Load StaticContours, skips ImageDimensions and ImageSpacing
}
-
+
//AD:02-06-09
else if (version=="1.0.0")
{
- openContours(pFile,pFileData,1,false); //Skips ImageDimensions and ImageSpacing
+ openContours(pFile,pFileData,false); //Skips ImageDimensions and ImageSpacing
}
fclose(pFile);
}
+
+
void wxContourMainFrame::onImport(){
std::string filename, filenamecontours;
wxFileDialog dialog(NULL, _T("Choose a XML Osirix File"), _T(""), _T(""), _T("*.xml"), wxOPEN );
if (dialog.ShowModal() == wxID_OK)
{
- filename = dialog.GetPath().mb_str();
+ filename = dialog.GetPath().mb_str();
filenamecontours = kernelManager->parseOsirixFile(filename);
if(filenamecontours.compare("") != 0){
if (dialog.ShowModal() == wxID_OK)
{
- filename = dialog.GetPath().mb_str();
+ filename = dialog.GetPath().mb_str();
std::cout << "This is the filename: " << filename << std::endl;
}
}
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
else
{
- std::cout<<"Nombre del archivo: "<<GetFileLocation()<<std::endl;
+ std::cout<<"Nombre del archivo: "<<GetFileLocation()<<std::endl;
std::string fileNameContourROI = GetFileLocation();
- std::cout<<"Nombre del archivo: "<<fileNameContourROI<<std::endl;
+ std::cout<<"Nombre del archivo: "<<fileNameContourROI<<std::endl;
kernelManager->setCurrentFileName(fileNameContourROI);
saveFileWithContours( fileNameContourROI);
}
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
filename.append("data");
- std::cout<<"Nombre del archivo: "<<filename<<std::endl;
+ std::cout<<"Nombre del archivo: "<<filename<<std::endl;
FILE *pFileData=fopen(filename.c_str(),"w+");
//------------------------------------------------------------------------------------------------------------
std::vector< std::string > lstNameThings;
- int i,sizeLstNameThings;
+ int i,sizeLstNameThings;
fprintf(pFile,"--CreaContour--\n");
fprintf(pFile,"Version %s\n", "1.0.2" );
fprintf(pFileData,"--CreaContour--\n");
fprintf(pFileData,"Version %s\n", "1.0.2" );
fprintf(pFileData,"OnePixelSize %f\n", _onePixelSize);
-
+
//------------------------------------------------------------------------------------------------------------
-
+
vtkImageData *image = _images[0];
int dimRange[3];
fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
// Normal Contours
-
+
lstNameThings = kernelManager->GetLstNameThings();
- sizeLstNameThings = lstNameThings.size();
+ sizeLstNameThings = lstNameThings.size();
fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings );
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
fprintf(pFileData,"NumberOfContours %d\n", sizeLstNameThings );
//------------------------------------------------------------------------------------------------------------
- for (i=0 ; i<sizeLstNameThings ; i++)
+ for (i=0 ; i<sizeLstNameThings ; i++)
{
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
//-- Static Contours
fprintf(pFile,"ImageDimensions %d %d %d\n", dimRange[0], dimRange[1], dimRange[2] );
-
+
fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
-
+
lstNameThings = kernelManager->GetLstNameThingsStatic();
- sizeLstNameThings = lstNameThings.size();
+ sizeLstNameThings = lstNameThings.size();
fprintf(pFile,"NumberOfContoursStatic %d\n", sizeLstNameThings );
//CMRU 03-09-09-----------------------------------------------------------------------------------------------
fprintf(pFileData,"NumberOfContoursStatic %d\n", sizeLstNameThings );
//------------------------------------------------------------------------------------------------------------
- for (i=0 ; i<sizeLstNameThings ; i++)
+ for (i=0 ; i<sizeLstNameThings ; i++)
{
kernelManager->SaveThingName( pFile, pFileData, lstNameThings[i] );
_theViewPanel->getSceneManager()->SaveThingName( pFile, lstNameThings[i] );
fclose(pFileData);
}
-//AD:04-06-09
-void wxContourMainFrame::openContours( FILE *pFile, FILE *pFileData, int version, bool staticContour )
+
+
+void wxContourMainFrame::readDimSpc(FILE *pFile)
{
char tmp[255];
-
- vtkImageData *image = _images[0];
- int imageDim[3];
- double imageSpac[3];
- int tempDim[3];
- double tempSpac[3];
-
- bool compatible = true;
-
- //Version==2
- if (version==2)
- {
- image->GetDimensions(imageDim);
- image->GetSpacing(imageSpac);
-
- fscanf(pFile,"%s",tmp); // ImageDimensions
- fscanf(pFile,"%s",tmp); // X
- tempDim[0] = atoi(tmp);
- fscanf(pFile,"%s",tmp); // Y
- tempDim[1] = atoi(tmp);
- fscanf(pFile,"%s",tmp); // Z
- tempDim[2] = atoi(tmp);
-
- fscanf(pFile,"%s",tmp); // ImageSpacing
- fscanf(pFile,"%s",tmp); // X
- tempSpac[0] = atof(tmp);
- fscanf(pFile,"%s",tmp); // Y
- tempSpac[1] = atof(tmp);
- fscanf(pFile,"%s",tmp); // Z
- tempSpac[2] = atof(tmp);
-
- //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
- if (imageDim[0]!=tempDim[0] || imageDim[1]!=tempDim[1] || imageSpac[0]!=tempSpac[0] || imageSpac[1]!=tempSpac[1])
+ int imageDim[3];
+ double imageSpac[3];
+ vtkImageData *image = _images[0];
+ image->GetDimensions(imageDim);
+ image->GetSpacing(imageSpac);
+
+ fscanf(pFile,"%s",tmp); // ImageDimensions
+ fscanf(pFile,"%s",tmp); // X
+ _tmpReadFileImageDim[0] = atoi(tmp);
+ fscanf(pFile,"%s",tmp); // Y
+ _tmpReadFileImageDim[1] = atoi(tmp);
+ fscanf(pFile,"%s",tmp); // Z
+ _tmpReadFileImageDim[2] = atoi(tmp);
+
+ fscanf(pFile,"%s",tmp); // ImageSpacing
+ fscanf(pFile,"%s",tmp); // X
+ _tmpReadFileImageSpac[0] = atof(tmp);
+ fscanf(pFile,"%s",tmp); // Y
+ _tmpReadFileImageSpac[1] = atof(tmp);
+ fscanf(pFile,"%s",tmp); // Z
+ _tmpReadFileImageSpac[2] = atof(tmp);
+
+
+ //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
+ if (imageDim[0]!=_tmpReadFileImageDim[0] || imageDim[1]!=_tmpReadFileImageDim[1] || imageSpac[0]!=_tmpReadFileImageSpac[0] || imageSpac[1]!=_tmpReadFileImageSpac[1])
+ {
+ wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
+ wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
+ wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
+
+ wxString lstOptOperation[2];
+ lstOptOperation[0]=_T("By Dimension");
+ lstOptOperation[1]=_T("By Spacing");
+ wxRadioBox * radioOpts = new wxRadioBox(dial, -1, _T("Type of Transformation"), wxDefaultPosition, wxSize(270,45), 2 , lstOptOperation, 2, wxRA_SPECIFY_COLS);
+
+ dialSizer->Add( new wxStaticText(dial,-1,_T("The image resolution is not compatible with the ")) , 0, wxGROW );
+ dialSizer->Add( new wxStaticText(dial,-1,_T("selected Roi file. Do you want to tranform it?")) , 0, wxGROW );
+ dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW );
+ dialSizer->Add(radioOpts,0,wxGROW);
+ dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW );
+ dialSizer->Add(buttonsSizer,0,wxGROW);
+ dial->SetSizer(dialSizer, true);
+ dial->Layout();
+ dial->ShowModal();
+
+ int _tmpReadFileTypeOfTransformation = -1;
+ bool transform = false;
+
+ if (dial->GetReturnCode() == wxID_OK)
{
- compatible = false;
- }
- }
-
- fscanf(pFile,"%s",tmp); // NumberOfContours
+ _tmpReadFileTypeOfTransformation = radioOpts->GetSelection();
+ }// if wxOK
+
+ } // if dim spc
+
+}
+
+
+
+//AD:04-06-09
+void wxContourMainFrame::openContours( FILE *pFile, FILE *pFileData, bool staticContour )
+{
+
+printf("EED1 wxContourMainFrame::openContours 01 \n");
+ char tmp[255];
+
+ vtkImageData *image = _images[0];
+
+ int imageDim[3];
+ double imageSpac[3];
+ image->GetDimensions(imageDim);
+ image->GetSpacing(imageSpac);
+
+
+ fscanf(pFile,"%s",tmp); // NumberOfContours
fscanf(pFile,"%s",tmp); // ##
- int numberOfContours = atoi(tmp);
+ int numberOfContours = atoi(tmp);
std::vector<int> instantVector;
int typeContourModel;
manualBaseModel *manModelContour;
int typeView;
+/*
if (compatible==true)
{
int i;
fscanf(pFile,"%s",tmp); // TypeView
fscanf(pFile,"%s",tmp); // ##
- typeView = atoi(tmp);
+ typeView = atoi(tmp);
std::string theName;
theName = kernelManager->createOutline( manModelContour, instantVector );
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
- }
+ }
if (staticContour) //StaticContours (will appear in all slices)
{
kernelManager->changeContourOfManager( theName , &instant );
}
- }// for numberOfContours
+ }// for numberOfContours
}
else if (compatible==false)
{
- wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
- wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
- wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
-
- wxString lstOptOperation[2];
- lstOptOperation[0]=_T("By Dimension");
- lstOptOperation[1]=_T("By Spacing");
- wxRadioBox * radioOpts = new wxRadioBox(dial, -1, _T("Type of Transformation"), wxDefaultPosition, wxSize(270,45), 2 , lstOptOperation, 2, wxRA_SPECIFY_COLS);
-
- dialSizer->Add( new wxStaticText(dial,-1,_T("The image resolution is not compatible with the ")) , 0, wxGROW );
- dialSizer->Add( new wxStaticText(dial,-1,_T("selected Roi file. Do you want to tranform it?")) , 0, wxGROW );
- dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW );
- dialSizer->Add(radioOpts,0,wxGROW);
- dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW );
- dialSizer->Add(buttonsSizer,0,wxGROW);
- dial->SetSizer(dialSizer, true);
- dial->Layout();
- dial->ShowModal();
-
- int typeOfTransformation = -1;
- bool transform = false;
+*/
+printf("EED wxContourMainFrame::openContours 02 \n");
- if (dial->GetReturnCode() == wxID_OK)
- {
- typeOfTransformation = radioOpts->GetSelection();
- transform = true;
- }
-
int i;
for (i=0;i<numberOfContours;i++)
{
{
manModelContour->OpenData(pFileData);
}
- if (transform==true)
- {
- if (typeOfTransformation==0)
- {
- double transX, transY;
- transX = (double) imageDim[0]/tempDim[0];
- transY = (double) imageDim[1]/tempDim[1];
- manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
- }
- else if (typeOfTransformation==1)
- {
- double transX, transY;
- transX = (double) tempSpac[0]/imageSpac[0];
- transY = (double) tempSpac[1]/imageSpac[1];
- manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
- }
- }
+
+ if (_tmpReadFileTypeOfTransformation==-1){
+ //nothing to do..
+ } else if (_tmpReadFileTypeOfTransformation==0){
+ double transX, transY;
+ transX = (double) imageDim[0]/_tmpReadFileImageDim[0];
+ transY = (double) imageDim[1]/_tmpReadFileImageDim[1];
+ manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
+ } else if (_tmpReadFileTypeOfTransformation==1) {
+ double transX, transY;
+ transX = (double) _tmpReadFileImageSpac[0]/imageDim[0];
+ transY = (double) _tmpReadFileImageSpac[1]/imageDim[1];
+ manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
+ }
fscanf(pFile,"%s",tmp); // TypeView
fscanf(pFile,"%s",tmp); // ##
- typeView = atoi(tmp);
+ typeView = atoi(tmp);
std::string theName;
theName = kernelManager->createOutline( manModelContour, instantVector );
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
- }
+ }
if (staticContour) //StaticContours (will appear in all slices)
{
Instant instant(&instantVector);
kernelManager->changeContourOfManager( theName , &instant );
}
- }// for numberOfContours
- }
+ }// for numberOfContours
+
+/* } */
+
}
void wxContourMainFrame::RefreshInterface(){
//JCP 20-10-08 Undo redo implementation
saveState();
//JCP 20-10-08 Undo redo implementation
-
+
wxBusyCursor wait;
int x = _theViewPanel->GetX();
int y = _theViewPanel->GetY();
int typeofcontour = 1;
//Image Data
vtkImageData *imagedata = getImageData();
-
+
//Tipo de pixeles a utilizar internamente en ITK
typedef float InternalPixelType;
const unsigned int Dimension = 2;
typedef itk::Image< OutputPixelType2, Dimension > OutputImageType2;
//DefiniciÛn del thresholder
- typedef itk::BinaryThresholdImageFilter<
- InternalImageType,
+ typedef itk::BinaryThresholdImageFilter<
+ InternalImageType,
OutputImageType > ThresholdingFilterType;
-
+
//DefiniciÛn del primer filtro de conversiÛn de pixeles
typedef itk::CastImageFilter<
OutputImageType, OutputImageType2 > CastFilterType;
OutputImageType2, InternalImageType > CastFilterType2;
//Tercer tipo de conversiÛn
- typedef itk::RescaleIntensityImageFilter<
- InternalImageType,
+ typedef itk::RescaleIntensityImageFilter<
+ InternalImageType,
OutputImageType > CastFilterType3;
//Cuarto tipo de conversiÛn
- typedef itk::RescaleIntensityImageFilter<
- OutputImageType,
+ typedef itk::RescaleIntensityImageFilter<
+ OutputImageType,
OutputImageType > CastFilterType4;
ThresholdingFilterType::Pointer thresholder = ThresholdingFilterType::New();
-
+
thresholder->SetLowerThreshold( 0.0 );
thresholder->SetUpperThreshold( 128 );
ConnectorType::Pointer connector= ConnectorType::New();
ConnectorType2::Pointer connector2= ConnectorType2::New();
-
+
CastFilterType::Pointer filter=CastFilterType::New();
CastFilterType2::Pointer filter2=CastFilterType2::New();
connector->SetInput( imagedata );
filter2->SetInput(connector->GetOutput());
- typedef itk::CurvatureAnisotropicDiffusionImageFilter<
- InternalImageType,
+ typedef itk::CurvatureAnisotropicDiffusionImageFilter<
+ InternalImageType,
InternalImageType > SmoothingFilterType;
SmoothingFilterType::Pointer smoothing = SmoothingFilterType::New();
- typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<
- InternalImageType,
+ typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<
+ InternalImageType,
InternalImageType > GradientFilterType;
- typedef itk::SigmoidImageFilter<
- InternalImageType,
+ typedef itk::SigmoidImageFilter<
+ InternalImageType,
InternalImageType > SigmoidFilterType;
GradientFilterType::Pointer gradientMagnitude = GradientFilterType::New();
sigmoid->SetOutputMaximum( 255.0 );
- typedef itk::FastMarchingImageFilter<
- InternalImageType,
+ typedef itk::FastMarchingImageFilter<
+ InternalImageType,
InternalImageType > FastMarchingFilterType;
FastMarchingFilterType::Pointer fastMarching = FastMarchingFilterType::New();
- typedef itk::GeodesicActiveContourLevelSetImageFilter< InternalImageType,
+ typedef itk::GeodesicActiveContourLevelSetImageFilter< InternalImageType,
InternalImageType > GeodesicActiveContourFilterType;
- GeodesicActiveContourFilterType::Pointer geodesicActiveContour =
+ GeodesicActiveContourFilterType::Pointer geodesicActiveContour =
GeodesicActiveContourFilterType::New();
- typedef itk::ZeroCrossingImageFilter<
- InternalImageType,
+ typedef itk::ZeroCrossingImageFilter<
+ InternalImageType,
InternalImageType > ZeroCrossingFilterType;
ZeroCrossingFilterType::Pointer zeroCrossing =
ZeroCrossingFilterType::New();
fastMarching->SetInput( sigmoid->GetOutput() );
geodesicActiveContour->SetInput( fastMarching->GetOutput() );
geodesicActiveContour->SetFeatureImage( sigmoid->GetOutput() );
-
+
zeroCrossing->SetInput( geodesicActiveContour->GetOutput() );
//thresholder->SetInput( zeroCrossing->GetOutput() );
thresholder->SetInput( geodesicActiveContour->GetOutput() );
connector2->SetInput( thresholder->GetOutput() );
-
+
smoothing->SetTimeStep( 0.125 );
smoothing->SetNumberOfIterations( 5 );
sigmoid->SetAlpha( alpha );
sigmoid->SetBeta( beta );
-
+
typedef FastMarchingFilterType::NodeContainer NodeContainer;
typedef FastMarchingFilterType::NodeType NodeType;
node.SetValue( seedValue );
node.SetIndex( seedPosition );
-
+
seeds->Initialize();
seeds->InsertElement( 0, node );
fastMarching->SetTrialPoints( seeds );
fastMarching->SetSpeedConstant( 1.0 );
-
- fastMarching->SetOutputSize(
+
+ fastMarching->SetOutputSize(
connector->GetOutput()->GetBufferedRegion().GetSize() );
-
+
fastMarching->SetStoppingValue( 800 );
try
{
-
+
connector2->Update();
vtkImageData *idata = connector2->GetOutput();
vtkMarchingContourFilter* cntVTK = vtkMarchingContourFilter::New( );
-
+
cntVTK->SetInput( idata );
-
+
cntVTK->SetNumberOfContours( 1 );
cntVTK->SetValue( 0, 255 );
cntVTK->Update( );
cntVTK->UpdateInformation();
-
+
vtkCleanPolyData* cpd = vtkCleanPolyData::New( );
cpd->SetInput( cntVTK->GetOutput( ) );
cpd->Update( );
vecXo.push_back(p[0]);
vecYo.push_back(p[1]);
}
-
+
}
else*/ if(fabs(xAct-x)>11)
{
xAct=x;
yAct=y;
}
-
-
+
+
}
while(!vecXo.empty())
ExtractControlPoints2D *extractcontrolpoints2d = new ExtractControlPoints2D();
extractcontrolpoints2d->SetContour( &vecX , &vecY , &vecZ );
-
+
int method=2;
if (method==0){
extractcontrolpoints2d->GetInitialControlPoints( &vecCtrlPointX , &vecCtrlPointY , &vecCtrlPointZ );
actualInstantVector[1]=z;
int j,sizeCtrPt = vecCtrlPointX.size();
-
+
manualBaseModel *manModelContour = kernelManager->factoryManualContourModel( typeofcontour );
manModelContour->SetNumberOfPointsSpline( ((sizeCtrPt/100)+1)*100 );
if (sizeCtrPt>=3){
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->configureViewControlTo(theName, manModelContour, spc, typeofcontour);
//_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc, typeofcontour ) ;
} // if addedModel
} // if sizeCtrPt
-
-
+
+
WriterType::Pointer writer = WriterType::New();
CastFilterType3::Pointer caster = CastFilterType3::New();
-
+
caster->SetInput( gradientMagnitude->GetOutput() );
writer->SetInput( caster->GetOutput() );
writer->SetFileName("Gradient Magnitude.png");
caster->SetOutputMinimum( 0 );
caster->SetOutputMaximum( 255 );
writer->Update();
-
+
CastFilterType3::Pointer caster2 = CastFilterType3::New();
WriterType::Pointer writer2 = WriterType::New();
}
void wxContourMainFrame::onSegmentationOneSlice(int isovalue,int sampling,int method){
-
+
//JCP 20-10-08 Undo redo implementation
saveState();
//JCP 20-10-08 Undo redo implementation
-
+
wxBusyCursor wait;
int x = _theViewPanel->GetX();
int y = _theViewPanel->GetY();
void wxContourMainFrame::SegmentationOneSlice( int x, int y, int z, int isovalue, int sampling, int method )
-{
+{
int typeofcontour = 1;
//--Extracting Contour
//vtkImageData *imagedata = _theViewPanel->getSceneManager()->GetImageData();
vtkImageData *imagedata = getImageData();
-// double *range = imagedata->GetScalarRange();
+// double *range = imagedata->GetScalarRange();
// double thr = 1;
vtkImageReslice *imageReslice = vtkImageReslice::New();
// cntVTK->SetValue( 1, vmax );
cntVTK->Update( );
cntVTK->UpdateInformation();
-
+
vtkCleanPolyData* cpd = vtkCleanPolyData::New( );
cpd->SetInput( cntVTK->GetOutput( ) );
cpd->ConvertLinesToPointsOff( );
vtkPolyDataConnectivityFilter* conn = vtkPolyDataConnectivityFilter::New( );
conn->SetExtractionModeToClosestPointRegion( );
//conn->SetMaxRecursionDepth( 3000 );
-
+
conn->SetInput( cpd->GetOutput( ) );
-
+
conn->SetClosestPoint( x, y, 0 );
conn->Update( );
conn->UpdateInformation();
-
+
vtkCleanPolyData* cpd2 = vtkCleanPolyData::New( );
cpd2->SetInput( conn->GetOutput( ) );
cpd2->Update();
if( addedModel )
{
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- _theViewPanel->getSpacing(spc);
+ _theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->configureViewControlTo(theName, manModelContour, spc, typeofcontour);
//_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc, typeofcontour ) ;
//JCP 20-10-08 Undo redo implementation
saveState();
//JCP 20-10-08 Undo redo implementation
-
+
wxBusyCursor wait;
int x = _theViewPanel->GetX();
int y = _theViewPanel->GetY();
int z;
- double porcent;
- wxString tmpString;
+ double porcent;
+ wxString tmpString;
double totalZ = maxZ-minZ+1;
for( z=minZ ; z<=maxZ ; z++ )
{
_refLineModel->SetCloseContour(false);
_refLineControl->CreateNewManualContour();
-//AD: Inicializar el mirroring con una linea ya pintada
+//AD: Inicializar el mirroring con una linea ya pintada
/*
double z = _refLineControl->GetZ();
_instantPanel->getInstant( tempVector );
_performingOperation->setEndOperationInstantVector ( tempVector );
std::vector<std::string> elems = _performingOperation->getKeyNamesOperationElems();
- int i,size = elems.size();
+ int i,size = elems.size();
for( i=0; i<size; i++ )
- {
+ {
createMirrorContourOf( elems[i], tempVector, i>0 );
- }
+ }
}
//deleteContour( _refName );
_theViewPanel->removeSceneContours();
_theViewPanel->SetWidthContour(width);
-
+
//_theViewPanel->getSceneManager()->SetWidthContour( width );
RefreshInterface();
img->GetScalarRange(range);
std::cout<<"Val 1: "<<range[0]<<" Val 2: "<<range[1]<<std::endl;
-
+
return (int)range[1];
*/
return _theViewPanel->getColorWindow();
img->GetScalarRange(range);
std::cout<<"Val 1: "<<range[0]<<" Val 2: "<<range[1]<<std::endl;
-
+
return (int)range[1];
*/
return _theViewPanel->getWindowLevel();
}
void wxContourMainFrame::onInterpolation(bool interpolate){
- _theViewPanel->onInterpolation(interpolate);
+ _theViewPanel->onInterpolation(interpolate);
RefreshInterface();
}
void wxContourMainFrame::resetAppend(){
kernelManager->resetAppend();
-
+
}
void wxContourMainFrame::onSpreadAdd(){
- std::vector<double> vecX;
- std::vector<double> vecY;
- std::vector<double> vecZ;
+ std::vector<double> vecX;
+ std::vector<double> vecY;
+ std::vector<double> vecZ;
_theViewPanel->GetPointsOfActualContour(&vecX , &vecY , &vecZ );
-
+
std::vector<int> tempVector;
_instantPanel->getInstant( tempVector );
std::string val = kernelManager->onSpreadAdd(&vecX , &vecY , &vecZ, tempVector);
interfMainPanel::getInstance()->appendStringSpread(val);
-
+
}
void wxContourMainFrame::onSpreadGo(int type){
saveState();
//JCP 20-10-08 Undo redo implementation
- wxBusyCursor wait;
+ wxBusyCursor wait;
std::vector<double> vecCtrlPointX;
std::vector<double> vecCtrlPointY;
std::vector<double> vecCtrlPointZ;
porcent = 100.0* (z-minZ)/totalZ;
int numero = (int)(z-minZ+1)/(int)totalZ;
std::string stringtemp = " "+kernelManager->intToString(porcent)+"% "+kernelManager->intToString(numero)+" "+kernelManager->intToString(z);
-
- interfMainPanel::getInstance()->setStringSpread(stringtemp);
+
+ interfMainPanel::getInstance()->setStringSpread(stringtemp);
int typeofcontour = 1;
std::string theName;
if( manModelContour!=NULL ){
double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default
- this->_theViewPanel->getSpacing(spc);
+ this->_theViewPanel->getSpacing(spc);
//Adding the manualContourControler to interface objects structure
- //Adding the manualViewContour to interface objects structure
+ //Adding the manualViewContour to interface objects structure
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->configureViewControlTo( theName, manModelContour,spc,typeofcontour ) ;
} // if addedModel
- }
+ }
if(z > maxZ){
porcent = 100.0;
int numero = (int)(z-minZ+1)/(int)totalZ;
std::string stringtemp = " "+kernelManager->intToString(porcent)+"% "+kernelManager->intToString(numero)+" "+kernelManager->intToString(z);
-
+
interfMainPanel::getInstance()->setStringSpread(stringtemp);
}// for z
//RefreshInterface();
}
void wxContourMainFrame::getInstantVector(std::vector<int>& tempVector){
-
+
}
std::vector<std::string> wxContourMainFrame::getOutlinesName(int slide){
void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ,int grayRangeMin, int grayRangeMax)
{
//EED01Juillet2009 GenerateContourExtractData();
-
+
wxString tempString;
int maxContourGroup = 0;
-
+
_contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
std::vector<manualBaseModel*> lstManConMod;
std::vector<double> pLstValuePosY;
std::vector<double> pLstValuePosZ;
- int resultSize;
+ int resultSize;
int resultGrayRangeCount;
- double resultMin;
+ double resultMin;
double resultMax;
double resultAverage;
double resultStandardeviation;
int minZ,maxZ;
double totalZ;
- double porcent;
+ double porcent;
wxString tmpString;
minZ = minimumZ;
maxZ = maximumZ;
}
-
+
totalZ = maxZ-minZ+1;
//EED01Juillet2009 _contourextractdata->SetImage( imagedata);
_contourextractdata->InitVolumeStatistics();
-
+
// For each slice..
for ( z=minZ ; z<=maxZ ; z++ )
{
-
+
porcent = 100.0* (z-minZ)/totalZ;
tmpString.Printf(_T(" %d %c %d/%d %d"), (int)porcent , 37 , z-minZ+1, (int)totalZ ,z);
- interfMainPanel::getInstance()->setStringInfoPanel(tmpString);
+ interfMainPanel::getInstance()->setStringInfoPanel(tmpString);
//_staticTextInformation->SetLabel(tmpString);
//Extraction data from contours of each slice
if (typeContourGroup==3) // contour separete
{
sizeContourGroup=lstManConModExp.size();
- if ( maxContourGroup<sizeContourGroup )
+ if ( maxContourGroup<sizeContourGroup )
{
maxContourGroup=sizeContourGroup;
}
for( iContourGroup=0 ; iContourGroup<sizeContourGroup ; iContourGroup++ ){
lstManConModTmp.clear();
-
+
if (typeContourGroup==3) // contour separete
{
pLstValuePosY.clear();
pLstValuePosZ.clear();
-
+
int numberOfPixels;
_contourextractdata->GetValuesInsideCrown( &numberOfPixels,
&pLstValue,
_contourextractdata->Statistics( &pLstValue,
grayRangeMin,
grayRangeMax,
- &resultGrayRangeCount,
- &resultSize,
- &resultMin,
+ &resultGrayRangeCount,
+ &resultSize,
+ &resultMin,
&resultMax,
&resultAverage,
&resultStandardeviation);
tempString.Printf(_T("%d"),numberOfPixels);
- interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA, tempString);
+ interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA, tempString);
tempString.Printf(_T("%d"),resultGrayRangeCount);
interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA+1, tempString);
-
+
tempString.Printf(_T("%f"),resultMin);
interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA+2, tempString);
-
+
tempString.Printf(_T("%f"),resultMax);
interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA+3, tempString);
-
+
tempString.Printf(_T("%f"),resultAverage);
interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA+4, tempString);
-
+
tempString.Printf(_T("%f"),resultStandardeviation);
interfMainPanel::getInstance()->setCellValueInfoPanel(z, tmpIntA+5, tempString);
-
+
} // for iContourGroup
} // for z
// Print Volume Statistics
- int vol_rCountRange;
+ int vol_rCountRange;
int vol_rsize;
double vol_minValue;
double vol_maxValue;
double vol_average;
double vol_standardeviation;
-
+
if (selection!=0 ) // actual slice
{
&vol_average, &vol_standardeviation);
interfMainPanel::getInstance()->setRowLabelInfoPanel(maxZ+2, _T("Total:"));
-
+
tempString.Printf(_T("%d"),vol_rsize);
- interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 0, tempString);
-
+ interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 0, tempString);
+
tempString.Printf(_T("%d"),vol_rCountRange);
interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 1, tempString);
-
+
tempString.Printf(_T("%f"),vol_minValue);
interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 2, tempString);
-
+
tempString.Printf(_T("%f"),vol_maxValue);
interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 3, tempString);
-
+
tempString.Printf(_T("%f"),vol_average);
interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 4, tempString);
-
+
tempString.Printf(_T("%f"),vol_standardeviation);
interfMainPanel::getInstance()->setCellValueInfoPanel(maxZ+2, 5, tempString);
}
//-----------------------------------------
-
+
int iTitleGroup;
wxString tmpTitleString;
int tmpIntB;
}
//AD: 29-05-09
-void wxContourMainFrame::onSaveResults(std::string directory,std::string namefile, std::string filename,
+void wxContourMainFrame::onSaveResults(std::string directory,std::string namefile, std::string filename,
int typeContourGroup, int selection, int minZ, int maxZ, bool XYZValues, bool contourImage, bool statistics)
{
if (XYZValues)
this->getMaskValue(&mask, &value, typeContourGroup,selection,minZ,maxZ);
this->SaveImageResult( directory , namefile, mask, value);
}
-
+
if (statistics)
{
std::ostringstream name;
name << filename << ".xls";
-
+
FILE *pFile=fopen(name.str().c_str(),"w+");
wxString tmpString;
int i,j,maxX;
-
+
// int sizeZ = _theViewPanel->GetImageDataSizeZ();
// int maxY=sizeZ+2;
-
+
maxX= interfMainPanel::getInstance()->getNumberColsInformationPanel();//this->_grid->GetNumberCols();
// -- Title --
}
fprintf(pFile,"\n\n" );
-
-
+
+
if (selection==0 ) // actual slice
{
std::vector<int> tempVector;
minZ = actualSlice;
maxZ = actualSlice;
}
-
+
// Stadistics...
for ( j=minZ; j<=maxZ ; j++)
{
fprintf(pFile,"\n" );
} // for j
-
+
// Total of stadistics.....
if (selection!=0)
{
} // for i
fprintf(pFile,"\n" );
}
-
+
fclose(pFile);
}
}
{
wxBusyCursor wait;
//EED01Juillet2009 GenerateContourExtractData();
-
+
//int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
_contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
int minZ,maxZ;
double totalZ;
- double porcent;
+ double porcent;
wxString tmpString;
minZ = 0;// _mbarrange->GetStart();
maxZ = sizeZ;//_mbarrange->GetEnd();
{
porcent = 100.0* (z-minZ)/totalZ;
-
+
tmpString.Printf(_T("Saving Values"));
tmpString.Printf(_T(" %d %c %d/%d %d"), (int)porcent , 37 , z-minZ+1, (int)totalZ ,z);
interfMainPanel::getInstance()->setStringInfoPanel(tmpString);
filename.append(_T(".txt"));*/
// filename.Printf(temp.c_str());
-
+
FILE *pFile=fopen((const char *)filename.mb_str(),"w+");
fprintf(pFile,"value \t x \t y \t z\n" );
double totalZ;
- double porcent;
+ double porcent;
wxString tmpString;
-
-
+
+
if (selection==0 ) // actual slice
{
int actualSlice = tempVector[1];
minZ = actualSlice;
maxZ = actualSlice;
- }
-
+ }
+
totalZ = maxZ-minZ;
//EED01Juillet2009 _contourextractdata->SetImage( imagedata);
- // cleanning image before range
+ // cleanning image before range
for (z=0; z<minZ; z++){
_contourextractdata->ResetImageResult(z);
}
- // cleanning image after range
+ // cleanning image after range
for (z=maxZ+1; z<sizeZimage; z++){
_contourextractdata->ResetImageResult(z);
}
-
-
+
+
// For each slice..
for ( z=minZ ; z<=maxZ ; z++)
{
void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value)
{
-
+
std::string temp = directory + "/" + namefile + "-Value.mhd";
wxString filename = crea::std2wx(temp);
- // LG
+ // LG
// filename.Printf(_T(temp.c_str()));
//filename.Printf(_T("%s\\%s-Value.mhd",directory.c_str(),namefile.c_str(),z);
/*filename.Printf(_T("%s"),directory.c_str());
writerMaskImage->Write( );
interfMainPanel::getInstance()->setStringInfoPanel( _T("") );
-
+
}
}
void wxContourMainFrame::onSnakePressed(){
- std::vector<double> vecX;
- std::vector<double> vecY;
- std::vector<double> vecZ;
- _theViewPanel->GetPointsOfActualContour( &vecX , &vecY , &vecZ );
+ std::vector<double> vecX;
+ std::vector<double> vecY;
+ std::vector<double> vecZ;
+ _theViewPanel->GetPointsOfActualContour( &vecX , &vecY , &vecZ );
if (vecX.size()!=0){
std::vector<int> tempVector;
} // for
wxDialog* dialog = new wxDialog(this, -1, wxString(_T("Snake")));
- wxPanel* panel = new wxPanel(dialog,-1);
+ wxPanel* panel = new wxPanel(dialog,-1);
// wxStaticText* sttext = new wxStaticText(panel, -1, wxString(_T("Panel para snake")));
new wxStaticText(panel, -1, wxString(_T("Panel para snake")));
dialog->ShowModal();
- } // if
+ } // if
}
wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent)
{
-
+
if (_viewMaskImagePanel==NULL)
{
_contourextractdata = new ContourExtractData(true);
- _contourextractdata->SetImage( _theViewPanel->getImageData() );
+ _contourextractdata->SetImage( _theViewPanel->getImageData() );
// double range[2];
// _theViewPanel->getImageData()->GetScalarRange(range);
//int min = (int)floor (range[0]);
double range[2];
_theViewPanel->getImageData()->GetScalarRange(range);
int min = (int)floor (range[0]);
- int max = (int)ceil (range[1]);
+ int max = (int)ceil (range[1]);
_viewColorLayerImagePanel = new ColorLayerImageViewPanel( parent, min, max , 1);
_viewColorLayerImage = new ColorLayerImageView();
// _viewColorLayerImage->SetImage( _theViewPanel->getImageData() );
double range[2];
_theViewPanel->getImageData()->GetScalarRange(range);
int min = (int)floor (range[0]);
- int max = (int)ceil (range[1]);
+ int max = (int)ceil (range[1]);
_viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max , 1);
_viewThresholdImage = new ThresholdImageView();
_viewThresholdImage->SetImage( _theViewPanel->getImageData() );
{
std::string cloneName = currentSelection [0];
manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);
- tipo = manualModel-> GetTypeModel();
+ tipo = manualModel-> GetTypeModel();
}
return tipo;
}
double wxContourMainFrame::getContourSizeInPixels()
{
- double contourSize = 0;
+ double contourSize = 0;
std::vector<std::string> currentSelection = _theViewPanel->getSelectedObjects(); if(!currentSelection.empty())
if(!currentSelection.empty())
{
std::string cloneName = currentSelection [0];
-
+
manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel();
contourSize = manualModel-> GetPathSize();
- }
+ }
return contourSize;
}
manualBaseModel * wxContourMainFrame::getContour ()
{
std::string cloneName = currentSelection [0];
manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel();
- return manualModel;
+ return manualModel;
}
return NULL;
}
-void wxContourMainFrame::onPrintLabel (wxString label, manualBaseModel* manualModel)
+void wxContourMainFrame::onPrintLabel (wxString label, manualBaseModel* manualModel)
{
std::string labelAscii(label.ToAscii());
int pos = labelAscii.find(" ");
int j;
-
- for (j=0 ; pos != string::npos;j++)
+
+ for (j=0 ; pos != string::npos;j++)
{
labelAscii.replace( pos, 1, "_" );
pos= labelAscii.find(" ");
}
- manualModel -> SetLabel(labelAscii);
+ manualModel -> SetLabel(labelAscii);
}
void wxContourMainFrame::onInsertCalculation(manualBaseModel* manualModel)
{
double sizeInPixel = manualModel ->GetPathSize();
double onePixelRealSize = interfMainPanel::getInstance()->GetPixelValue();;
double realContourSize = sizeInPixel*onePixelRealSize;
- manualModel ->SetRealSize(realContourSize);
+ manualModel ->SetRealSize(realContourSize);
}
double wxContourMainFrame::onePixelSize( double value)
{
- return _onePixelSize = value;
+ return _onePixelSize = value;
}
std::string wxContourMainFrame::GetFileLocation()