1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
// VolumeData.h

#ifndef _VolumeData_h
#define _VolumeData_h

#include <stdio.h>


#include "CImg.h"
////#include <map>
////#include"tv.h"
////
using namespace cimg_library;
////
////namespace cl = cimg_library;
////#define cimg_use_tiff
////typedef float				real;
////typedef geom::vec3<real>	real3;
////typedef vec2<real>	real2;
////typedef cl::CImg<float>		image;
////typedef cl::CImg<int>		table;
////typedef CImgList<float>  imagelist;

class VolumeData
{
public:
	//struct Voxel
	//{

	//};
	
//	static const DataType dtFloat32,dtInt8,dtUint8,dtInt16,dtUint16,dtInt32,dtUint32;
	//GetSliceIndex
	//GetVoxelIndex
	VolumeData();
	VolumeData(int d1,int d2, int d3, float sp1,float sp2,float sp3,float *data);
	virtual ~VolumeData();

	void Clean();

	//DataType GetDataType() const;
	//void SetDataType(DataType type);

	void GetDimensions(int *dims) const;
	void SetDimensions(const int *dims);

	void GetSpacings(float *spacings) const;
	void SetSpacings(const float *spacings) ;
	
	void SetProjectionMode(bool mode)
	{
		m_IsBackProjectMode=mode;

	}
	bool GetProjectionMode(){return m_IsBackProjectMode;}
	//void* GetData() const;
	//float * GetData(int iframe) const;

	//float * GetData(int iframe) const;

	CImg<float>  GetData(int iframe) ;
	//CImg<float> GetData();
	//float * GetData()const;
	//void SetData(float *_data) ;
	void SetData(CImgList<float> _vol_list);
	void setParas(int *vols,double vs, int nframes);
	//float *GetTotalWeight() const;
	//float *GetContributions() const;
	//float * GetCorrection() const;
	//bool SetCorrection(float * corr); 
	
	//void GetMinMaxValue(double &minVal, double &maxVal);

	//void WriteRawFile(FILE *fp) const;
	//void ReadRawFile(FILE *fp);
	//void ReadRawFile( );

	
	//void WriteStructuredFile(const char* filename) const;
	void ReadStructuredFile();
	//void ReadStructuredFile(const char* filename);
	void _allocate();
	bool m_IsBackProjectMode;
	//float *m_EachVoxel_TotalWeight;
	//float *m_Voxel_Contributions;
	//float *m_correction;

	int m_Dims[3];
	float m_Spacings[3];

	//void *m_Data;
	//float *m_Data;
	int m_volX;
	int m_volY;
	int m_volZ;
	double Vol_Spacing;
	CImgList<float>  m_Volumelist;
	CImgList<float>  m_Flowlist;
	int m_nframes;
};

#endif