X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2FpHistogram.cxx;h=c14e9511348f57ac1bf39256258777ebdfbaf2d9;hb=dea0efc567d8332b2e7eb936e3ba4ac1c11b2542;hp=5a02215ca5eed0f5382924878d690c83aa31b020;hpb=10a3cb7324228b2717387215b80543a2433698f1;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx index 5a02215..c14e951 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pHistogram.cxx @@ -62,42 +62,34 @@ //---------------------------------------------------------------------------- pHistogram::pHistogram(std::string filePath) { - path=filePath; - points= vtkImageData::New(); - size=100; - sizeImage=0; + path = filePath; + points = vtkImageData::New(); + size = 100; + sizeImage = 0; buildHistogram(); } pHistogram::pHistogram(vtkImageData* imageData) { - points= vtkImageData::New(); - size=100; - sizeImage=0; - //cast - /* - vtkImageCast* cast= vtkImageCast::New(); - cast->SetInput(imageData); - cast->SetOutputScalarTypeToInt(); - cast->Update(); - */ - //build the histogram + points = vtkImageData::New(); + size = 100; + sizeImage = 0; buildHistogram(imageData); } +//---------------------------------------------------------------------------- pHistogram::~pHistogram() { if(points!=NULL)points->Delete(); } -//---------------------------------------------------------------------------- -// Methods -//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- void pHistogram::setImagePath(std::string filePath) { path=filePath; } +//---------------------------------------------------------------------------- void pHistogram::buildHistogram() { /* @@ -121,7 +113,6 @@ void pHistogram::buildHistogram() imageData->GetScalarRange(range); initializePoints(size); setPoints(imageData); - } /* @@ -144,7 +135,7 @@ void pHistogram::initializePoints(int xDimension) //setting image data of the points points->SetDimensions(xDimension,1,1); //EED points->SetScalarTypeToUnsignedShort(); - points->SetScalarTypeToShort(); + points->SetScalarTypeToDouble(); points->AllocateScalars(); points->Update(); } @@ -155,6 +146,8 @@ void pHistogram::initializePoints(int xDimension) void pHistogram::setPoints(vtkImageData* imageData) { +printf("EED pHistogram::setPoints Trinng new histogram ..\n"); +/* printf("EED pHistogram::setPoints Test: vtkPComputeHistogram2DOutliers\n"); vtkComputeHistogram2DOutliers *vtkhist = vtkComputeHistogram2DOutliers::New(); vtkhist->SetPreferredNumberOfOutliers(10); @@ -163,35 +156,36 @@ vtkTable *resulttable = vtkhist->GetOutputTable(); printf("EED pHistogram::setPoints rows:%d\n", (int)(resulttable->GetNumberOfRows()) ); printf("EED pHistogram::setPoints colums:%d\n", (int)(resulttable->GetNumberOfColumns()) ); +*/ /* Pointers */ - unsigned short* dataImagePointerUS = NULL; - short* dataImagePointerS = NULL; - double* dataImagePointerD = NULL; - - short* dataHistogramPointer = NULL; - dataImagePointerUS = (unsigned short*)imageData->GetScalarPointer(0,0,0); - dataImagePointerS = (short*)imageData->GetScalarPointer(0,0,0); - dataImagePointerD = (double*)imageData->GetScalarPointer(0,0,0); - - dataHistogramPointer = (short*)points->GetScalarPointer(0,0,0); + char* dataImagePointerC = (char*)imageData->GetScalarPointer(0,0,0); + unsigned char* dataImagePointerUC = (unsigned char*)imageData->GetScalarPointer(0,0,0); + short* dataImagePointerS = (short*)imageData->GetScalarPointer(0,0,0); + unsigned short* dataImagePointerUS = (unsigned short*)imageData->GetScalarPointer(0,0,0); + float* dataImagePointerF = (float*)imageData->GetScalarPointer(0,0,0); + double* dataImagePointerD = (double*)imageData->GetScalarPointer(0,0,0); + double* dataHistogramPointer = (double*)points->GetScalarPointer(0,0,0); /* Range of greys */ double range[2]; if(imageData==NULL) - range[1]=1; - else + { + range[1] = 1; + } else { imageData->GetScalarRange(range); + } // imageData + /* Setting the minimun and maximum levels of grey */ - maxLevelOfGrey=range[1]; - minLevelOfGrey=range[0]; + maxLevelOfGrey = range[1]; + minLevelOfGrey = range[0]; //std::cout<<"maxLevelOfGrey "<GetNumberOfCo int ext[6]; imageData->GetExtent(ext); int sx,sy,sz; - sx=ext[1]+1; - sy=ext[3]+1; - sz=ext[5]+1; + sx = ext[1]-ext[0]+1; + sy = ext[3]-ext[2]+1; + sz = ext[5]-ext[4]+1; sizeImage=sx*sy*sz; @@ -214,49 +208,75 @@ printf("EED pHistogram::setPoints colums:%d\n", (int)(resulttable->GetNumberOfCo dataHistogramPointer[i]=0; } - /* - Constructing the Histogram - */ - //int k=size/(maxLevelOfGrey-minLevelOfGrey); - int j=0; - for(i=0;iGetScalarType()==VTK_CHAR) { - /* - hashing the histogram - */ - //double p=((float)*dataImagePointer-minLevelOfGrey); - //j=p*k; - if (imageData->GetScalarType()==VTK_UNSIGNED_SHORT) - { - j=getIndex(*dataImagePointerUS); - dataImagePointerUS++; - } - if (imageData->GetScalarType()==VTK_SHORT) + for(i=0;iGetScalarType()==VTK_UNSIGNED_CHAR) + { + for(i=0;iGetScalarType()==VTK_SHORT) + { + for(i=0;iGetScalarType()==VTK_DOUBLE) + dataHistogramPointer[j]++; + } // for i + } // SHORT + + if (imageData->GetScalarType()==VTK_UNSIGNED_SHORT) + { + for(i=0;iGetScalarType()==VTK_FLOAT) + { + for(i=0;iGetScalarType()==VTK_DOUBLE) + { + for(i=0;iGetScalarPointer(0,0,0); - + double* dataHistogramPointer = dataHistogramPointer=(double*)points->GetScalarPointer(0,0,0); return dataHistogramPointer[gValue]; }