+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# This software is governed by the CeCILL-B license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL-B
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+# or in the file LICENSE.txt.
+#
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+#
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
//----------------------------------------------------------------------------------------------------------------
// Class definition include
//----------------------------------------------------------------------------------------------------------------
}
+void wxContourMainFrame::SetZForAllContours(int pz)
+{
+ printf("EED wxContourMainFrame::SetZForAllContours\n");
+
+ //-- Normal Contours
+
+ std::vector< std::string > lstNameThings;
+ int i,sizeLstNameThings;
+ int ii,sizeLstPoints;
+
+ lstNameThings = kernelManager->GetLstNameThings();
+ sizeLstNameThings = lstNameThings.size();
+ for (i=0 ; i<sizeLstNameThings ; i++)
+ {
+printf("EED wxContourMainFrame::SetZForAllContours contour=%d \n", i );
+ manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+ sizeLstPoints = manualModel->GetSizeLstPoints();
+ for (ii=0 ; ii<sizeLstPoints ; ii++)
+ {
+ manualModel->GetManualPoint(ii)->SetPointZ(-900);
+ }// for ii list of points
+ }// for i list of Things
+
+ //-- Static Contours
+
+ lstNameThings = kernelManager->GetLstNameThingsStatic();
+ sizeLstNameThings = lstNameThings.size();
+ for (i=0 ; i<sizeLstNameThings ; i++)
+ {
+ manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+ sizeLstPoints = manualModel->GetSizeLstPoints();
+ for (ii=0 ; ii<sizeLstPoints ; ii++)
+ {
+ manualModel->GetManualPoint(ii)->SetPointZ(-900);
+ }// for ii list of points
+ }// for i list of static things
+}
+
+
+
void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool interactiveInterface)
{
char tmp[255];
fscanf(pFile,"%s",tmp); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
std::string version(tmp);
+
+printf("EED wxContourMainFrame::onLoadContours version%s \n", version.c_str() );
+
+
//AD:02-06-09
_tmpReadFileTypeOfTransformation=-1;
if (version=="1.0.3")
readDimSpc(pFile,interactiveInterface); // DimSpc interactive ON
openContours(pFile,pFileData,false);
openContours(pFile,pFileData,true); //Load StaticContours
- }
+ }
if (version=="1.0.2")
{
//EED001
- readDimSpc(pFile,interactiveInterface); // DimSpc interactive ON
+ readDimSpc(pFile,interactiveInterface); // DimSpc interactive ON
openContours(pFile,pFileData,false);
- readDimSpc(pFile,false); // DimSpc interactive OFF
- openContours(pFile,pFileData,true); //Load StaticContours
+ readDimSpc(pFile,false); // DimSpc interactive OFF
+ openContours(pFile,pFileData,true); // Load StaticContours
+ SetZForAllContours(-900);
}
//AD:02-06-09
}
_theViewPanel->getSceneManager()->removeSceneContours();
changeInstant();
-
}
//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));
+ wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(460,360));
wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
//DefinciÛn de conexiÛnes entre VTK e ITK y el writer
typedef itk::VTKImageToImageFilter<OutputImageType2> ConnectorType;
typedef itk::ImageToVTKImageFilter<OutputImageType> ConnectorType2;
- typedef itk::ImageFileWriter< OutputImageType > WriterType;
+//EED10JUIN2011 typedef itk::ImageFileWriter< OutputImageType > WriterType;
ConnectorType::Pointer connector= ConnectorType::New();
ConnectorType2::Pointer connector2= ConnectorType2::New();
FastMarchingFilterType::Pointer fastMarching = FastMarchingFilterType::New();
-
+
+printf("EED wxContourMainFrame::SegmentationOneSliceITK Skypping this code. Not compiling GeodesicActiveContourLevelSetImageFilter in fedora 17 with ITK 3.20.1 \n ");
+/*EED 17 sept 2010
+ > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - Not compiling GeodesicActiveContourLevelSetImageFilter in fedora 17 with ITK 3.20.1
+
+
typedef itk::GeodesicActiveContourLevelSetImageFilter< InternalImageType,
InternalImageType > GeodesicActiveContourFilterType;
GeodesicActiveContourFilterType::Pointer geodesicActiveContour =
//thresholder->SetInput( zeroCrossing->GetOutput() );
thresholder->SetInput( geodesicActiveContour->GetOutput() );
connector2->SetInput( thresholder->GetOutput() );
-
+
+< - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < -
+*/
+
+
+
smoothing->SetTimeStep( 0.125 );
smoothing->SetNumberOfIterations( 5 );
vtkstripper->Update();
vtkstripper->UpdateInformation();
-
vtkPolyData* polyDataResult = cntVTK->GetOutput();
//std::cout<<"Points "<<polyDataResult->GetNumberOfPoints()<<std::endl;
polyDataResult->Update( );
} // if sizeCtrPt
-
+/*
+//EED10JUIN2011
WriterType::Pointer writer = WriterType::New();
CastFilterType3::Pointer caster = CastFilterType3::New();
caster5->SetOutputMinimum( 0 );
caster5->SetOutputMaximum( 255 );
writer5->Update();
+*/
}
catch( itk::ExceptionObject & excep )
{
void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value)
{
+ double spc[3];
+ kernelManager->GetSpacing(spc,0); // returns the spacing of the first image
+
std::string temp = directory + "/" + namefile + "-image-Value.mhd";
wxString filename = crea::std2wx(temp);
- // 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());
- filename.append(_T("\\"));
- filename.append(_T("%s"),namefile.c_str());
- filename.append(_T("-Value.mhd"));*/
// Image Value
+
+ vtkImageChangeInformation *valueChInfo = vtkImageChangeInformation::New();
+ valueChInfo->SetInput(value);
+ valueChInfo->SetSpacingScale(spc);
vtkMetaImageWriter *writerValueImage = vtkMetaImageWriter::New( );
- writerValueImage->SetInput( value );
- writerValueImage->SetInput( value );
+ writerValueImage->SetInput( valueChInfo->GetOutput() );
writerValueImage->SetFileName( (const char *)filename.mb_str() );
writerValueImage->SetFileDimensionality( 3 );
writerValueImage->SetCompression(false);
writerValueImage->Write( );
// Image Mask
- // filename.Printf("%s\\%s-Mask.mhd",directory.c_str(),namefile.c_str(),z);
temp = directory + "/" + namefile + "-image-Mask.mhd";
// LG 14/01/09 : using crea
filename = crea::std2wx(temp);
// filename.Printf(_T(temp.c_str()));
- /*filename.Printf(_T("%s"),directory.c_str());
- filename.append(_T("\\"));
- filename.append(_T("%s"),namefile.c_str());
- filename.append(_T("-Mask.mhd"));*/
+ vtkImageChangeInformation *maskChInfo = vtkImageChangeInformation::New();
+ maskChInfo->SetInput(mask);
+ maskChInfo->SetSpacingScale(spc);
vtkMetaImageWriter *writerMaskImage = vtkMetaImageWriter::New( );
- writerMaskImage->SetInput( mask );
+ writerMaskImage->SetInput( maskChInfo->GetOutput() );
writerMaskImage->SetFileName( (const char *)filename.mb_str() );
writerMaskImage->SetFileDimensionality( 3 );
writerMaskImage->SetCompression(false);
std::cout<<"GETFILELOCATION:"<<_fileLocation<<std::endl;
}
//------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+void wxContourMainFrame::FlipSelectedContours(int flipDirection)
+{
+ printf("EED wxContourMainFrame::FlipSelectedContours flipDirection=%d \n", flipDirection );
+ FlipLstOfContours(
+ (std::vector<std::string>)_theViewPanel->getSceneManager()->getSelectedObjects() ,
+ flipDirection
+ );
+
+}
+
+void wxContourMainFrame::FlipActualSliceContours(int flipDirection)
+{
+ printf("EED wxContourMainFrame::FlipActualSliceContours flipDirection=%d \n", flipDirection );
+ FlipLstOfContours(
+ (std::vector<std::string>)_theViewPanel->getSceneManager()->GetlstContoursNameActualSlice() ,
+ flipDirection
+ );
+}
+
+void wxContourMainFrame::FlipAllContours(int flipDirection)
+{
+ printf("EED wxContourMainFrame::FlipAllContours flipDirection=%d \n", flipDirection );
+ FlipLstOfContours(
+ kernelManager->GetLstNameThings() ,
+ flipDirection
+ );
+}
+
+void wxContourMainFrame::FlipLstOfContours(std::vector<std::string> lstNameThings, int flipDirection)
+{
+ int ext[6];
+ getImageData()->GetExtent(ext);
+ int sizeX = ext[1]-ext[0];
+ int sizeY = ext[3]-ext[2];
+
+
+ int i,sizeLstNameThings;
+ int ii,sizeLstPoints;
+
+ sizeLstNameThings = lstNameThings.size();
+ for (i=0 ; i<sizeLstNameThings ; i++)
+ {
+ printf("EED wxContourMainFrame::FlipAllContours contour=%d \n", i );
+ manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+ if (flipDirection==0)
+ {
+ manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+ } else {
+ manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+ }
+ }// for i list of Things
+
+ //-- Static Contours
+
+ lstNameThings = kernelManager->GetLstNameThingsStatic();
+ sizeLstNameThings = lstNameThings.size();
+ for (i=0 ; i<sizeLstNameThings ; i++)
+ {
+ manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+ if (flipDirection==0)
+ {
+ manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+ } else {
+ manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+ }
+ }// for i list of static things
+}
+
+void wxContourMainFrame::FlipContours(int typeContourFlip, int flipDirection)
+{
+ printf("EED wxContourMainFrame::FlipContours( %d , %d ) \n",typeContourFlip, flipDirection );
+
+ saveState();
+
+ if (typeContourFlip==0) //
+ {
+ FlipSelectedContours(flipDirection);
+ }
+
+ if (typeContourFlip==1) //
+ {
+ FlipActualSliceContours(flipDirection);
+ }
+
+ if (typeContourFlip==2) //
+ {
+ FlipAllContours(flipDirection);
+ }
+ RefreshInterface();
+}
+
+
+
+
+