35 #ifndef AIMS_PRIMALSKETCH_SCALELEVEL_H 36 #define AIMS_PRIMALSKETCH_SCALELEVEL_H 57 template<
typename Geom,
typename Text>
class ScaleLevel {
68 float Scale() {
return _scale; }
69 std::map<int, GreyLevelBlob<Site> *>
BlobList() {
return blobs; }
75 if (blobs.find(label) != blobs.end())
79 std::cerr <<
"looking for GLB that does not exist..." << std::endl;
90 {_scale=other._scale; blobs=other.blobs;
91 saddlePoints=other.saddlePoints; maximumPoints=other.maximumPoints;
return *
this;}
97 std::map<int, GreyLevelBlob<Site> *> blobs;
98 std::list<SaddlePoint<Site> *> saddlePoints;
99 std::list<MaximumPoint<Site> *> maximumPoints;
114 { _scale=scale; _level = level.
clone(); _originallevel=originallevel; }
126 std::map<int, GreyLevelBlob<Site> *>
BlobList() {
return blobs; }
133 {std::cerr <<
"looking for GLB " << label <<
" that does not exist at scale " << _scale << std::endl;
134 exit(EXIT_FAILURE);}}
140 {_scale=other._scale; _level=other._level; blobs=other.blobs;
141 saddlePoints=other.saddlePoints; maximumPoints=other.maximumPoints;
return *
this;}
143 void WriteBlobImage(std::string fileBlob);
150 std::map<int, GreyLevelBlob<Site> *> blobs;
151 std::list<SaddlePoint<Site> *> saddlePoints;
152 std::list<MaximumPoint<Site> *> maximumPoints;
166 _scale=scale; _level=level; _mesh=mesh; _coordinates=NULL; _originallevel=NULL;
170 _scale=scale; _level=level; _mesh=mesh; _coordinates=coords; _originallevel=NULL;
174 (*this)._scale=other._scale; (*this)._level=other._level; (*this)._mesh=other._mesh; (*this)._coordinates=_coordinates; _originallevel=NULL;
178 _scale=scale; _level=level; _mesh=mesh; _coordinates=NULL; _originallevel=originallevel;
182 _scale=scale; _level=level; _mesh=mesh; _coordinates=coords; _originallevel=originallevel;
186 (*this)._scale=other._scale; (*this)._level=other._level; (*this)._mesh=other._mesh; (*this)._coordinates=_coordinates; _originallevel=originallevel;
199 std::map<int, GreyLevelBlob<Site> *> &
BlobList() {
return blobs; }
201 {
return saddlePoints; }
203 {
return maximumPoints; }
206 if (blobs.find(label) != blobs.end())
210 std::cerr <<
"looking for GLB " << label <<
" that does not exist..." << std::endl;
224 (*this)._scale=other._scale;(*this)._level=other._level;(*this)._mesh=other._mesh; (*this).blobs=other.blobs;
225 (*this).saddlePoints=other.saddlePoints; (*this).maximumPoints=other.maximumPoints;
return *
this;
234 std::vector<Point3df> *_coordinates;
236 std::map<int, GreyLevelBlob<Site> *> blobs;
237 std::list<SaddlePoint<Site> *> saddlePoints;
238 std::list<MaximumPoint<Site> *> maximumPoints;
253 typename std::map<int, GreyLevelBlob<Site> *>
::iterator itBlob;
256 if (blobs.size() == 0)
264 itBlob=blobs.begin();
265 for ( ; itBlob != blobs.end(); ++itBlob)
266 ((*itBlob).second)->SetScale(_scale);
273 template<
int D,
typename T>
282 typename std::map<int, GreyLevelBlob<Site> *>
::iterator itBlob;
283 if (blobs.size() == 0){
288 itBlob=blobs.begin();
289 for ( ; itBlob != blobs.end(); ++itBlob)
290 ((*itBlob).second)->SetScale(_scale);
298 void ScaleLevel<AimsData<T>,
AimsData<T> >::WriteBlobImage(std::string fileBlob)
301 int sx=_level.
dimX(), sy=_level.dimY(), sz=_level.dimZ();
302 float dx=_level.sizeX(), dy=_level.sizeY(), dz=_level.sizeZ();
304 typename std::map<int, GreyLevelBlob<Site> *>
::iterator itBlob=blobs.begin();;
305 typename std::list<SaddlePoint<Site> *>
::iterator itSaddle=saddlePoints.begin();
306 typename std::list<MaximumPoint<Site> *>
::iterator itMax=maximumPoints.begin();
307 typename std::set<Site,ltstr_p3d<Site> >
::iterator itPoints;
317 for (; itBlob!=blobs.end(); ++itBlob)
319 blobby=(*itBlob).second;
323 x=int((*itPoints)[0]); y=int((*itPoints)[1]); z=int((*itPoints)[2]);
324 imaBlob(x,y,z)=255.0;
328 for (; itSaddle!=saddlePoints.end(); ++itSaddle)
330 x=int((*itSaddle)->_node[0]); y=int((*itSaddle)->_node[1]); z=int((*itSaddle)->_node[2]);
331 imaBlob(x,y,z)=128.0;
334 for (; itMax!=maximumPoints.end(); ++itMax)
336 x=int((*itMax)->_node[0]); y=int((*itMax)->_node[1]); z=int((*itMax)->_node[2]);
337 imaBlob(x,y,z)=128.0;
340 dataW.
write(imaBlob);
AimsSurface< D, Void > * Mesh()
TexturedData< AimsData< T >, AimsData< T > > OriginalData()
SiteType< Geom >::type Site
std::map< int, GreyLevelBlob< Site > * > BlobList()
ScaleLevel(float scale, AimsData< T > level)
TexturedData< Geom, Text > Data()
BucketMap< Void > * mask(const BucketMap< Void > &src, const BucketMap< Void > &m, bool intersect=true)
std::list< SaddlePoint< Site > * > & SaddlePointList()
std::set< T, ltstr_p3d< T > > & GetListePoints()
ScaleLevel(const ScaleLevel< AimsSurface< D, Void >, Texture< T > > &other)
GreyLevelBlob< Site > * Blob(int label)
std::list< MaximumPoint< Site > * > & MaximumPointList()
std::list< MaximumPoint< Site > * > MaximumPointList()
std::map< int, GreyLevelBlob< Site > * > & BlobList()
std::list< SaddlePoint< Site > * > SaddlePointList()
ScaleLevel(float scale, Texture< T > level, AimsSurface< D, Void > *mesh)
SiteType< AimsSurface< D, Void > >::type Site
std::map< int, GreyLevelBlob< Site > * > BlobList()
ScaleLevel(float scale, Texture< T > level, AimsSurface< D, Void > *mesh, Texture< T > *originallevel)
TexturedData< AimsSurface< D, Void >, Texture< T > > OriginalData()
ScaleLevel(const ScaleLevel< AimsSurface< D, Void >, Texture< T > > &other, Texture< T > *originallevel)
SiteType< AimsData< T > >::type Site
GreyLevelBlob< Site > * Blob(int label)
ScaleLevel(float scale, AimsData< T > level, AimsData< T > *originallevel)
void PutCoordinates(std::vector< Point3df > *coord)
ScaleLevel< Geom, Text > & operator=(const ScaleLevel< Geom, Text > &other)
virtual bool write(const T &obj, bool ascii=false, const std::string *format=0)
TexturedData< AimsSurface< D, Void >, Texture< T > > Data()
AimsData< T > clone() const
TexType< Text >::type Val
TexturedData< AimsData< T >, AimsData< T > > Data()
std::list< SaddlePoint< Site > * > SaddlePointList()
ScaleLevel(float scale, Texture< T > level, AimsSurface< D, Void > *mesh, std::vector< Point3df > *coords)
void setSizeXYZT(float sizex=1.0f, float sizey=1.0f, float sizez=1.0f, float sizet=1.0f)
GreyLevelBlob< Site > * Blob(int label)
ScaleLevel(float scale, Texture< T > level, AimsSurface< D, Void > *mesh, std::vector< Point3df > *coords, Texture< T > *originallevel)
void DetectBlobs(TexturedData< Geom, Text > *mask, char *stats=0)
std::list< MaximumPoint< Site > * > MaximumPointList()