+/*# ---------------------------------------------------------------------
+#
+# 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.
+# ------------------------------------------------------------------------ */
#include "ContourExtractData.h"
void ContourExtractData::SetImage( vtkImageData* imagedata)
{
this->imagedata = imagedata;
+ this->imagedata->GetScalarRange(scalarRange);
// RaC 20-11-09 Changes in InitLstContoursLinesYPoints
int ext[6];
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
this->imagedata->GetWholeExtent(ext);
+#else
+ this->imagedata->GetExtent(ext);
+#endif
+
_sizeImageY = ext[3]-ext[2]+1;
// init vtk image result : valuesImage maskImage
int result = 0;
int i;
- //cout<<"RaC ContourExtractData::AnalisisContourInsideV2-iContour:"<<iContour<<" y:"<<y<<endl;
-
int nps=_lstlstlstVecX1[iContour][y].size();
double x1,y1,x2,y2;
{
unsigned short *pValue;
unsigned short *pMask;
- pValue = (unsigned short *)imagedataValueResult->GetScalarPointer(x,y,z);
- pMask = (unsigned short *)imagedataMaskResult->GetScalarPointer(x,y,z);
- *pMask = 255;
- *pValue = (unsigned short)value;
+//EED 2017-12-18
+ imagedataValueResult->SetScalarComponentFromDouble(x,y,z,0,value);
+ imagedataMaskResult->SetScalarComponentFromDouble(x,y,z,0,255);
+// pValue = (unsigned short *)imagedataValueResult->GetScalarPointer(x,y,z);
+// *pValue = (unsigned short)value;
+// pMask = (unsigned char *)imagedataMaskResult->GetScalarPointer(x,y,z);
+// *pMask = 255;
}
//------------------------------------------------------------------------
imagedataValueResult->GetExtent(ext);
int size = (ext[1]-ext[0]+1) * (ext[3]-ext[2]+1);
- memset(pValue,0,size*2);
- memset(pMask,0,size*2);
+ memset(pValue,0, size*imagedataValueResult->GetScalarSize() );
+ memset(pMask,0, size*imagedataMaskResult->GetScalarSize() );
} // if
}
if ((i>=0) && (i<=ext[1]) && (j>=0) && (j<=ext[3]))
{
- if (isInside(i,j,_typeOperation)==true)
+ if (isInside(i,j,_typeOperation)==true)
{
- value = GetDataValue(i,j,zImage);
+ value = GetDataValue(i,j,zImage);
+ if ( (value>=scalarRange[0]) && (value<=scalarRange[1]) )
+ {
PutVtkImageDataResultValue(i,j,zImage, value );
- } // if
-
- }//if
+ } // scalarRange
+ } // if isInside
+ } // if ext
} // for i
} // for j
imagedataValueResult->Modified();
imagedataMaskResult->Modified();
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
imagedataValueResult->Update();
imagedataMaskResult->Update();
+#else
+ //...
+#endif
+
} // if
}
//------------------------------------------------------------------------
-void ContourExtractData::GetValuesInsideCrown(std::vector<double> *pLstValue,
- std::vector<double> *pLstValuePosX,
- std::vector<double> *pLstValuePosY,
- std::vector<double> *pLstValuePosZ)
+void ContourExtractData::GetValuesInsideCrown( int *numberOfPixels,
+ std::vector<double> *pLstValue,
+ std::vector<double> *pLstValuePosX,
+ std::vector<double> *pLstValuePosY,
+ std::vector<double> *pLstValuePosZ)
{
pLstValue->clear();
pLstValuePosX->clear();
int maxPoint[2];
int i,j;
double value;
-
+ int acum=0;
minPoint[0] = 999999;
minPoint[1] = 999999;
if ((i>=0) && (i<=ext[1]) && (j>=0) && (j<=ext[3]))
{
-
- if (isInside(i,j,_typeOperation)==true)
+ if (isInside(i,j,_typeOperation)==true)
{
- value = GetDataValue(i,j,zImage);
-
- // Borrame
- // if (okImagesResults==true){
- // PutVtkImageDataResultValue(i,j,zImage, value );
- // }
-
- pLstValue -> push_back( value );
- pLstValuePosX -> push_back( i );
- pLstValuePosY -> push_back( j );
- pLstValuePosZ -> push_back( -1 );
- } // if
-
- } //if
+ acum++;
+ value = GetDataValue(i,j,zImage);
+ if ( (value>=scalarRange[0]) && (value<=scalarRange[1]) )
+ {
+ pLstValue -> push_back( value );
+ pLstValuePosX -> push_back( i );
+ pLstValuePosY -> push_back( j );
+ pLstValuePosZ -> push_back( -1 );
+ } // scalarRange
+ } // if isInside
+ } // if ext
} // for
} // for
- // Borrame
- // if (this->okImagesResults==true){
- // imagedataValueResult->Modified();
- // imagedataMaskResult->Modified();
- // }
-
-
+ *numberOfPixels = acum;
}
//------------------------------------------------------------------------
imagedataValueResult->Delete();
}
imagedataValueResult = vtkImageData::New();
- // imagedataValueResult->SetScalarType(scalartype);
- imagedataValueResult->SetScalarTypeToUnsignedShort();
imagedataValueResult->SetSpacing(spc);
imagedataValueResult->SetDimensions( newDim );
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+
+//EED 2017-12-18
+ imagedataValueResult->SetScalarType(scalartype);
+ //imagedataValueResult->SetScalarTypeToUnsignedShort();
imagedataValueResult->AllocateScalars();
+#else
+ imagedataValueResult->AllocateScalars(scalartype,1);
+#endif
+
if (imagedataMaskResult!=NULL)
{
imagedataMaskResult->Delete();
}
imagedataMaskResult = vtkImageData::New();
- // imagedataMaskResult->SetScalarType(scalartype);
- imagedataMaskResult->SetScalarTypeToUnsignedShort();
+
+
imagedataMaskResult->SetSpacing(spc);
imagedataMaskResult->SetDimensions( newDim );
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+ //EED 2017-12-18
+ //imagedataMaskResult->SetScalarTypeToUnsignedShort();
+ imagedataMaskResult->SetScalarTypeToUnsignedChar();
imagedataMaskResult->AllocateScalars();
+#else
+ imagedataMaskResult->AllocateScalars(VTK_UNSIGNED_CHAR,1);
+#endif
+
}
acum_standardeviation = acum_standardeviation + tmp*tmp;
} // for standar deviation
standardeviation = sqrt(acum_standardeviation/size);
- SetVolumeStatistics(countRange, size,
- min,max,
- acum_average,acum_standardeviation);
+ SetVolumeStatistics(countRange, (*rsize),
+ min,max,
+ acum_average,acum_standardeviation);
} // if size
} // if NULL
}
+void ContourExtractData::SetScalarRange(double min, double max)
+{
+ scalarRange[0]=min;
+ scalarRange[1]=max;
+}
+
void ContourExtractData::SetSizeImageY(int pSizeImageY)
{
_sizeImageY=pSizeImageY;