#ifndef __ContourExtractData_h_INCLUDED_H__ #define __ContourExtractData_h_INCLUDED_H__ #include "manualContourModel.h" #include "marTypes.h" //-------------------------------------------------------------------------- class creaMaracasVisu_EXPORT ContourExtractData { public: ContourExtractData(bool imagesResults=false); ~ContourExtractData(); //---------------------------------------------------------------------- void SetImage( vtkImageData* imagedata); void SetZtoBeAnalys( int z ); void SetLstManualContourModel( std::vector lstManConMod); void GetValuesInsideCrown( int *numberOfPixels, std::vector *pLstValue, std::vector *pLstValuePosX, std::vector *pLstValuePosY, std::vector *pLstValuePosZ); void CalculateImageResult(); vtkImageData *GetVtkImageValueResult(); vtkImageData *GetVtkImageMaskResult(); void Statistics( std::vector *inputLstValue, int grayRangeMin, int grayRangeMax, int *rCountRange, int *rsize, double *rmin, double *rmax, double *raverage, double *rstandardeviation); void SetTypeOperation(int type); //--Volume Statistics-- void InitVolumeStatistics(); void GetVolumeStatistics(int *vol_rCountRange, int *vol_rsize, double *vol_minValue, double *vol_maxValue, double *vol_average, double *vol_standardeviation); void ResetImageResult(int z); void SetScalarRange(double min, double max); void InitLstContoursLinesYPoints(); bool isInside(int x, int y, int typeOperation ); // // Asigns the sizeImageY. // @param pSizeImageY - int void SetSizeImageY(int pSizeImageY); private: double scalarRange[2]; bool okImagesResults; // // List of contours to obtain the respective statistics. // std::vector lstManConMod; // // Operation Type (AND,OR,XOR...) // int _typeOperation; int zImage; vtkImageData *imagedata; vtkImageData *imagedataValueResult; vtkImageData *imagedataMaskResult; //Size Y int _sizeImageY; // // Asigns the minimum and maximum points of the contour model in parameter. // @param *minPoint - int // @param *maxPoint - int // @param *manualcontourmodel - manualBaseModel // void GetMinMaxPoint(int *minPoint, int *maxPoint, manualBaseModel *manualcontourmodel ); // // Obtain the minimum and maximum point among the contours. The value is saved in the parameter // pointers // @param *minPoint - int pointer to the minPoint // @param *maxPoint - int pointer to the maxPoint // void GetMinMaxPoint_Of_LstManConMod( int *minPoint, int *maxPoint); int AnalisisContourInsideV2(int x, int y, int iContour ); double GetDataValue(int x, int y, int z); void PutVtkImageDataResultValue( int x, int y,int z, double value ); void InitVtkImagesResult(); //--Volume Statistics-- int vol_rCountRange; int vol_rsize; double vol_minValue; double vol_maxValue; double vol_acum_average; double vol_acum_standardeviation; void SetVolumeStatistics(int rCountRange, int rsize, double minValue,double maxValue, double acum_average, double acum_standardeviation); // Optimize IsInside // List of contours , list of linesY, list of points over the line std::vector< std::vector< std::vector > > _lstlstlstVecX1; std::vector< std::vector< std::vector > > _lstlstlstVecY1; std::vector< std::vector< std::vector > > _lstlstlstVecX2; std::vector< std::vector< std::vector > > _lstlstlstVecY2; void Fill_lstlstlstVecXY(int iContour, int sizeY); }; #endif // __ContourExtractData_h_INCLUDED_H__