Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
- ======================================================================-====*/
+ ===========================================================================**/
#ifndef CLITKANATOMICALFEATUREDATABASE_H
#define CLITKANATOMICALFEATUREDATABASE_H
// clitk
#include "clitkCommon.h"
+#include "clitkImageCommon.h"
namespace clitk {
+
//--------------------------------------------------------------------
/*
Class to store and retreive anatomical feature such as 3D
class AnatomicalFeatureDatabase: public itk::Object
{
public:
- AnatomicalFeatureDatabase();
+ // typedef
+ typedef std::string TagType;
+
+ // New macro
+ typedef itk::Object Superclass;
+ typedef AnatomicalFeatureDatabase Self;
+ typedef itk::SmartPointer<Self> Pointer;
+ typedef itk::SmartPointer<const Self> ConstPointer;
+ itkNewMacro(Self);
+ static Pointer New(std::string filename);
// Set/Get filename
itkSetMacro(Filename, std::string);
// Read and write DB
void Write();
void Load();
+ itkGetConstMacro(Path, std::string);
+ itkSetMacro(Path, std::string);
- // Get landmarks
+ // Set Get landmarks
typedef itk::Point<double,3> PointType3D;
- void SetPoint3D(std::string tag, PointType3D & p);
- void GetPoint3D(std::string tag, PointType3D & p);
+ void SetPoint3D(TagType tag, PointType3D & p);
+ void GetPoint3D(TagType tag, PointType3D & p);
+ double GetPoint3D(std::string tag, int dim);
+ bool TagExist(std::string tag);
+ std::string GetTagValue(std::string tag);
+
+ // Set Get image
+ void SetImageFilename(TagType tag, std::string f);
+
+ template<class ImageType>
+ typename ImageType::Pointer GetImage(TagType tag, bool reload=false);
+
+ template<class ImageType>
+ bool CheckImage(TagType tag);
+
+ template<class ImageType>
+ void SetImage(TagType tag, std::string f, typename ImageType::Pointer image, bool write=false);
+ template<class ImageType>
+ void ReleaseImage(TagType tag);
+
+ // Set Get Double
+ void SetDouble(TagType tag, double d);
+ double GetDouble(TagType tag);
+
+ // Remove Tag
+ void RemoveTag(TagType tag);
+
protected:
+ AnatomicalFeatureDatabase();
+ ~AnatomicalFeatureDatabase() {}
+
std::string m_Filename;
- typedef std::map<std::string, std::string> MapTagType;
+ std::string m_Path;
+ typedef itk::ImageBase<3> ImageBaseType;
+ typedef std::map<TagType, std::string> MapTagType;
+ typedef std::map<TagType, ImageBaseType*> MapTagImageType;
MapTagType m_MapOfTag;
+ MapTagImageType m_MapOfImage;
}; // end class
//--------------------------------------------------------------------
+#define NewAFDB(NAME, FILE) \
+ clitk::AnatomicalFeatureDatabase::Pointer NAME = clitk::AnatomicalFeatureDatabase::New(FILE);
+
+ #include "clitkAnatomicalFeatureDatabase.txx"
+
} // end namespace clitk
//--------------------------------------------------------------------