Orfeo Toolbox  3.16
itkMetaLandmarkConverter.txx
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkMetaLandmarkConverter.txx,v $
5  Language: C++
6  Date: $Date: 2008-01-07 21:48:41 $
7  Version: $Revision: 1.7 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef __itkMetaLandmarkConverter_txx
18 #define __itkMetaLandmarkConverter_txx
19 
21 
22 namespace itk
23 {
24 
26 template <unsigned int NDimensions>
29 {
30 
31 }
32 
33 
35 template <unsigned int NDimensions>
38 ::MetaLandmarkToLandmarkSpatialObject(MetaLandmark * Landmark)
39 {
40 
41  typedef itk::LandmarkSpatialObject<NDimensions> LandmarkSpatialObjectType;
42  typename LandmarkSpatialObjectType::Pointer landmark =
43  LandmarkSpatialObjectType::New();
44 
45  //typedef LandmarkSpatialObjectType::VectorType VectorType;
47 
48  unsigned int ndims = Landmark->NDims();
49  double spacing[NDimensions];
50  for(unsigned int ii=0;ii<ndims;ii++)
51  {
52  spacing[ii]=Landmark->ElementSpacing()[ii];
53  }
54  landmark->GetIndexToObjectTransform()->SetScaleComponent(spacing);
55  landmark->GetProperty()->SetName(Landmark->Name());
56  landmark->SetId(Landmark->ID());
57  landmark->SetParentId(Landmark->ParentID());
58  landmark->GetProperty()->SetRed(Landmark->Color()[0]);
59  landmark->GetProperty()->SetGreen(Landmark->Color()[1]);
60  landmark->GetProperty()->SetBlue(Landmark->Color()[2]);
61  landmark->GetProperty()->SetAlpha(Landmark->Color()[3]);
62 
63  typedef itk::SpatialObjectPoint<NDimensions> LandmarkPointType;
64 
65  typedef MetaLandmark::PointListType ListType;
66  ListType::iterator it2 = Landmark->GetPoints().begin();
67 
68  vnl_vector<double> v(ndims);
69 
70  for(unsigned int identifier=0;identifier< Landmark->GetPoints().size();identifier++)
71  {
72  LandmarkPointType pnt;
73 
74  typedef typename LandmarkSpatialObjectType::PointType PointType;
75  PointType point;
76 
77  for(unsigned int ii=0;ii<ndims;ii++)
78  {
79  point[ii]=(*it2)->m_X[ii];
80  }
81 
82  pnt.SetPosition(point);
83 
84  pnt.SetRed((*it2)->m_Color[0]);
85  pnt.SetGreen((*it2)->m_Color[1]);
86  pnt.SetBlue((*it2)->m_Color[2]);
87  pnt.SetAlpha((*it2)->m_Color[3]);
88 
89  landmark->GetPoints().push_back(pnt);
90  it2++;
91  }
92 
93  return landmark;
94 }
95 
97 template <unsigned int NDimensions>
98 MetaLandmark*
101 {
102  MetaLandmark* Landmark = new MetaLandmark(NDimensions);
103 
104  // fill in the Landmark information
105 
106  typename SpatialObjectType::PointListType::const_iterator i;
107  for(i = dynamic_cast<SpatialObjectType*>(spatialObject)->GetPoints().begin();
108  i != dynamic_cast<SpatialObjectType*>(spatialObject)->GetPoints().end();
109  i++)
110  {
111  LandmarkPnt* pnt = new LandmarkPnt(NDimensions);
112 
113  for(unsigned int d=0;d<NDimensions;d++)
114  {
115  pnt->m_X[d]=(*i).GetPosition()[d];
116  }
117 
118  pnt->m_Color[0] = (*i).GetRed();
119  pnt->m_Color[1] = (*i).GetGreen();
120  pnt->m_Color[2] = (*i).GetBlue();
121  pnt->m_Color[3] = (*i).GetAlpha();
122  Landmark->GetPoints().push_back(pnt);
123  }
124 
125  if(NDimensions == 2)
126  {
127  Landmark->PointDim("x y red green blue alpha");
128  }
129  else
130  {
131  Landmark->PointDim("x y z red green blue alpha");
132  }
133 
134  float color[4];
135  for(unsigned int ii=0;ii<4;ii++)
136  {
137  color[ii]=spatialObject->GetProperty()->GetColor()[ii];
138  }
139 
140  Landmark->Color(color);
141  Landmark->ID( spatialObject->GetId());
142  if(spatialObject->GetParent())
143  {
144  Landmark->ParentID(spatialObject->GetParent()->GetId());
145  }
146  Landmark->NPoints(Landmark->GetPoints().size());
147 
148  return Landmark;
149 }
150 
151 
153 template <unsigned int NDimensions>
156 ::ReadMeta(const char* name)
157 {
158  SpatialObjectPointer spatialObject;
159  MetaLandmark* Landmark = new MetaLandmark();
160  Landmark->Read(name);
161  spatialObject = MetaLandmarkToLandmarkSpatialObject(Landmark);
162 
163  return spatialObject;
164 }
165 
166 
168 template <unsigned int NDimensions>
169 bool
171 ::WriteMeta(SpatialObjectType* spatialObject,const char* name)
172 {
173  MetaLandmark* Landmark = LandmarkSpatialObjectToMetaLandmark(spatialObject);
174  Landmark->BinaryData(true);
175  Landmark->Write(name);
176  return true;
177 }
178 
179 } // end namespace itk
180 
181 
182 #endif

Generated at Sat Feb 2 2013 23:52:45 for Orfeo Toolbox with doxygen 1.8.1.1