34 #ifndef AIMS_PRIMALSKETCH_PRIMALSKETCH2GRAPH_H
35 #define AIMS_PRIMALSKETCH_PRIMALSKETCH2GRAPH_H
59 const std::pair<int,float> p2)
const
61 if (p1.second>p2.second)
63 else if (p1.second == p2.second)
65 if (p1.first < p2.first)
126 template<
typename Geom,
typename Text>
129 std::list<ScaleSpaceBlob<Site>*> blobList=_primalSketch->BlobSet();
130 std::set<std::pair<int, float>,
ltstr_blob > labelSet;
131 typename std::list<ScaleSpaceBlob<Site>*>
::iterator blobIt;
135 std::cout <<
"Creating blob labels by decreasing maximum intensity" << std::endl;
136 for (blobIt=blobList.begin(); blobIt!=blobList.end(); ++blobIt)
138 labelSet.insert(std::pair<int,float>((*blobIt)->Label(), (*blobIt)->GetMeasurements().t));
140 for (labelIt=labelSet.begin(); labelIt!=labelSet.end(); ++labelIt)
143 sortedLabels[(*labelIt).first]=label;
148 template<
typename Geom,
typename Text>
150 std::list<Bifurcation<Site>*> bifList = _primalSketch->BifurcationList();
151 std::list<ScaleSpaceBlob<Site>*> blobList = _primalSketch->BlobSet();
153 typename std::list<ScaleSpaceBlob<Site>*>
::iterator blobIt;
154 typename std::list<Bifurcation<Site> *>
::iterator bifIt;
156 std::map<int, Vertex *> vertMap;
158 std::list<ScaleSpaceBlob<Site>*> top, bottom;
159 typename std::list<ScaleSpaceBlob<Site>*>
::iterator topIt, bottomIt;
165 std::string nameBase =
"*";
168 _graph->setProperty(
"filename_base",
"*");
169 _graph->setProperty(
"subject", _primalSketch->Subject() );
172 std::string textType;
173 if (_primalSketch->Type()==
IMAGE)
175 else if (_primalSketch->Type()==
SURFACE)
176 textType =
"surface";
178 textType =
"unknown";
179 _graph->setProperty(
"type", textType );
182 blobIt = blobList.begin();
184 for ( ; blobIt != blobList.end() ; ++blobIt ) {
186 vert =_graph->addVertex(
"ssblob" );
187 rank = sortedLabels[(*blobIt)->Label()];
188 sprintf( conv,
"%4i", rank );
190 vert->setProperty(
"label", 0 );
191 vert->setProperty(
"name", rank+10000 );
192 vert->setProperty(
"rank", rank );
193 vert->setProperty(
"index",(*blobIt)->Label() );
194 vert->setProperty(
"tmin",(*blobIt)->ScaleMin() );
195 vert->setProperty(
"tmax",(*blobIt)->ScaleMax() );
196 vert->setProperty(
"trep", (*blobIt)->ScaleRep() );
197 vert->setProperty(
"lifeTime", (*blobIt)->LifeTime() );
198 vert->setProperty(
"maxIntensity",(*blobIt)->GetMeasurements().maxIntensity );
199 vert->setProperty(
"meanIntensity",(*blobIt)->GetMeasurements().meanIntensity );
200 vert->setProperty(
"maxContrast",(*blobIt)->GetMeasurements().maxContrast );
201 vert->setProperty(
"meanContrast",(*blobIt)->GetMeasurements().meanContrast );
202 vert->setProperty(
"area",(*blobIt)->GetMeasurements().area );
203 vert->setProperty(
"tValue",(*blobIt)->GetMeasurements().tValue );
204 vert->setProperty(
"t",(*blobIt)->GetMeasurements().t );
205 std::cout << (*blobIt)->GetMeasurements().tValue <<
";";
210 float x1, x2, y1, y2, z1, z2, gx, gy, gz;
211 std::vector<float> vectF;
212 std::vector<float> triplet(3),
ref( 3 );
215 x1 = vectF[0]; y1 = vectF[1]; z1 = vectF[2];
216 x2 = vectF[3]; y2 = vectF[4]; z2 = vectF[5];
217 gx = ( x1 + x2 ) / 2.0;
218 gy = ( y1 + y2 ) / 2.0;
219 gz = ( z1 + z2 ) / 2.0;
224 vert->setProperty(
"gravity_center", triplet);
228 = _motion->transform(
Point3df( triplet[0], triplet[1], triplet[2] ) );
232 vert->setProperty(
"refgravity_center",
ref );
238 vert->setProperty(
"boundingbox_min", triplet );
242 vert->setProperty(
"boundingbox_max", triplet );
244 vertMap[(*blobIt)->Label()] = vert;
249 bifIt = bifList.
begin();
std::list< Bifurcation< Site > * > BifurcationList()
SiteType< Geom >::type Site
void setMotion(const Motion &m)
TexType< Text >::type Val
Primalsketch2graph(PrimalSketch< Geom, Text > *primalSketch)
PrimalSketch< Geom, Text > * _primalSketch
std::map< int, int > sortedLabels
void AddBlobsToPSGraph(PrimalSketch< Geom, Text > *sketch, Graph *graph)
reference_wrapper< T > ref(T &ref)
bool operator()(const std::pair< int, float > p1, const std::pair< int, float > p2) const