SOFA plugin: image  master
Open source framework for multi-physics simuation
sofa::component::engine::ImageSampler< _ImageTypes > Class Template Reference

#include <ImageSampler.h>

forward declaration More...

Inheritance diagram for sofa::component::engine::ImageSampler< _ImageTypes >:

Detailed Description

template<class _ImageTypes>
class sofa::component::engine::ImageSampler< _ImageTypes >

forward declaration

This class samples an object represented by an image

Public Attributes

Data< bool > f_clearData
 clear distance image after computation More...
 
Data< float > showSamplesScale
 show samples More...
 
Data< int > drawMode
 0: points, 1: spheres More...
 
Data< bool > showEdges
 show edges More...
 
Data< bool > showGraph
 show graph More...
 
Data< bool > showFaces
 show the faces of cubes More...
 
- Public Attributes inherited from sofa::core::objectmodel::BaseObject
Data< bool > f_listening
 
- Public Attributes inherited from sofa::core::objectmodel::Base
std::vector< lifecycle::DeprecatedData * > m_oldAttributes
 
Data< int > d_messageLogCount
 
Data< std::string > name
 
Data< bool > f_printLog
 
Data< sofa::core::objectmodel::TagSetf_tags
 
Data< sofa::type::BoundingBoxf_bbox
 
Data< sofa::core::objectmodel::ComponentStated_componentState
 
std::string m_definitionSourceFileName
 
int m_definitionSourceFilePos
 
std::string m_instanciationSourceFileName
 
int m_instanciationSourceFilePos
 

Protected Attributes

unsigned int time
 
- Protected Attributes inherited from sofa::core::DataTrackerDDGNode
DataTracker m_dataTracker
 
- Protected Attributes inherited from sofa::core::objectmodel::DDGNode
DDGLinkContainer inputs
 
DDGLinkContainer outputs
 
- Protected Attributes inherited from sofa::core::objectmodel::BaseObject
SingleLink< BaseObject, BaseContext, BaseLink::FLAG_DOUBLELINK > l_context
 
LinkSlaves l_slaves
 
SingleLink< BaseObject, BaseObject, BaseLink::FLAG_DOUBLELINK > l_master
 
- Protected Attributes inherited from sofa::core::objectmodel::Base
std::map< std::string, sofa::core::DataTrackerCallbackm_internalEngine
 
VecData m_vecData
 
MapData m_aliasData
 
VecLink m_vecLink
 
MapLink m_aliasLink
 

Public Member Functions

 SOFA_CLASS (SOFA_TEMPLATE(ImageSampler, _ImageTypes), Inherited)
 
 ImageSampler ()
 
void init () override
 
void reinit () override
 
- Public Member Functions inherited from sofa::core::DataEngine
 SOFA_ABSTRACT_CLASS (DataEngine, core::objectmodel::BaseObject)
 
void update () final
 
void addInput (sofa::core::objectmodel::BaseData *data)
 
void addOutput (objectmodel::BaseData *n)
 
- Public Member Functions inherited from sofa::core::DataTrackerDDGNode
 DataTrackerDDGNode ()
 
void addInputs (std::initializer_list< sofa::core::objectmodel::BaseData * > datas)
 
void addOutputs (std::initializer_list< sofa::core::objectmodel::BaseData * > datas)
 
virtual void cleanDirty (const core::ExecParams *params=nullptr)
 
void updateAllInputsIfDirty ()
 
- Public Member Functions inherited from sofa::core::objectmodel::DDGNode
 DDGNode ()
 
virtual ~DDGNode ()
 
void addInput (DDGNode *n)
 
void delInput (DDGNode *n)
 
void addOutput (DDGNode *n)
 
void delOutput (DDGNode *n)
 
const DDGLinkContainer & getInputs ()
 
const DDGLinkContainer & getOutputs ()
 
bool isDirty () const
 
virtual void setDirtyValue ()
 
virtual void setDirtyOutputs ()
 
void cleanDirty ()
 
virtual void notifyEndEdit ()
 
void updateIfDirty () const
 
- Public Member Functions inherited from sofa::core::objectmodel::BaseObject
 SOFA_CLASS (BaseObject, Base)
 
virtual void computeBBox (const core::ExecParams *, bool=false)
 
void setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr)
 
void setSrc (const std::string &v, const BaseObject *loader, std::vector< std::string > *attributeList=nullptr)
 
BasefindLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override
 
virtual std::string getPathName () const override
 
virtual bool insertInNode (BaseNode *)
 
virtual bool removeInNode (BaseNode *)
 
SReal getTime () const
 
const BaseContextgetContext () const
 
BaseContextgetContext ()
 
const BaseObjectgetMaster () const
 
BaseObjectgetMaster ()
 
const VecSlavesgetSlaves () const
 
BaseObjectgetSlave (const std::string &name) const
 
virtual void addSlave (BaseObject::SPtr s)
 
virtual void removeSlave (BaseObject::SPtr s)
 
virtual void handleTopologyChange ()
 
virtual void handleTopologyChange (core::topology::Topology *t)
 
void parse (BaseObjectDescription *arg) override
 
virtual void bwdInit ()
 
void updateInternal ()
 
virtual void storeResetState ()
 
virtual void reset ()
 
virtual void cleanup ()
 
SReal getTime () const
 
- Public Member Functions inherited from sofa::core::objectmodel::Base
virtual const BaseClassgetClass () const
 
void addDeprecatedAttribute (lifecycle::DeprecatedData *attribute)
 
void addUpdateCallback (const std::string &name, std::initializer_list< BaseData * > inputs, std::function< sofa::core::objectmodel::ComponentState(const DataTracker &)> function, std::initializer_list< BaseData * > outputs)
 
void addOutputsToCallback (const std::string &name, std::initializer_list< BaseData * > outputs)
 
const std::string & getName () const
 
void setName (const std::string &n)
 
void setName (const std::string &n, int counter)
 
std::string getTypeName () const
 
virtual std::string getClassName () const
 
virtual std::string getTemplateName () const final
 
std::string getNameSpaceName () const
 
void setDefinitionSourceFileName (const std::string &sourceFileName)
 
const std::string & getDefinitionSourceFileName () const
 
void setDefinitionSourceFilePos (const int)
 
int getDefinitionSourceFilePos () const
 
void setInstanciationSourceFileName (const std::string &sourceFileName)
 
const std::string & getInstanciationSourceFileName () const
 
void setInstanciationSourceFilePos (const int)
 
int getInstanciationSourceFilePos () const
 
void addMessage (const sofa::helper::logging::Message &m) const
 
size_t countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
const std::deque< sofa::helper::logging::Message > & getLoggedMessages () const
 
const std::string getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
void clearLoggedMessages () const
 
bool notMuted () const
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
virtual bool parseField (const std::string &attribute, const std::string &value)
 
virtual bool hasField (const std::string &attribute) const
 
void parseFields (const std::list< std::string > &str)
 
virtual void parseFields (const std::map< std::string, std::string * > &str)
 
void writeDatas (std::map< std::string, std::string * > &str)=delete
 
void writeDatas (std::ostream &out, const std::string &separator=" ")
 
BaseDatafindData (const std::string &name) const
 
std::vector< BaseData * > findGlobalField (const std::string &name) const
 
BaseLinkfindLink (const std::string &name) const
 
std::vector< BaseLink * > findLinks (const std::string &name) const
 
virtual void updateLinks (bool logErrors=true)
 
BaseData::BaseInitData initData (::sofa::core::objectmodel::Data< T > *field, const char *name, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags)
 
BaseData::BaseInitData initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
Data< T >::InitData initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void addData (BaseData *f, const std::string &name)
 
void addData (BaseData *f)
 
void removeData (BaseData *f)
 
void addAlias (BaseData *field, const char *alias)
 
void addLink (BaseLink *l)
 
void addAlias (BaseLink *link, const char *alias)
 
const VecDatagetDataFields () const
 
const MapDatagetDataAliases () const
 
const VecLinkgetLinks () const
 
const MapLinkgetLinkAliases () const
 
virtual bool findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link)
 
bool findLinkDest (T *&ptr, const std::string &path, const BaseLink *link)
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 

Protected Member Functions

void doUpdate () override
 
void handleEvent (sofa::core::objectmodel::Event *event) override
 
void draw (const core::visual::VisualParams *vparams) override
 
void regularSampling (const bool atcorners=false, const bool recursive=false)
 
void subdivide (type::vector< unsigned int > &indices)
 subdivide positions indexed in indices in eight sub-lists, add new points in this->position and run recursively More...
 
unsigned int addPoint (const Coord &p, waPositions &pos, type::vector< unsigned int > &indices)
 
void addEdge (const Edge e, waEdges &edg)
 
void uniformSampling (const unsigned int nb=0, const bool bias=false, const unsigned int lloydIt=100, const unsigned int method=FASTMARCHING, const unsigned int pmmIter=std::numeric_limits< unsigned int >::max(), const SReal pmmTol=10)
 computes a uniform sample distribution (=point located at the center of their Voronoi cell) based on farthest point sampling + Lloyd (=kmeans) relaxation More...
 
void recursiveUniformSampling (const unsigned int nb=0, const bool bias=false, const unsigned int lloydIt=100, const unsigned int method=false, const unsigned int N=1, const unsigned int pmmIter=std::numeric_limits< unsigned int >::max(), const SReal pmmTol=10)
 
- Protected Member Functions inherited from sofa::core::DataEngine
 DataEngine ()
 
 ~DataEngine () override
 
virtual void doInternalUpdate () final
 
- Protected Member Functions inherited from sofa::core::objectmodel::DDGNode
virtual void doAddInput (DDGNode *n)
 
virtual void doDelInput (DDGNode *n)
 
virtual void doAddOutput (DDGNode *n)
 
virtual void doDelOutput (DDGNode *n)
 
void cleanDirtyOutputsOfInputs ()
 
- Protected Member Functions inherited from sofa::core::objectmodel::BaseObject
 BaseObject ()
 
 ~BaseObject () override
 
virtual void doUpdateInternal ()
 
void changeContextLink (BaseContext *before, BaseContext *&after)
 
void changeSlavesLink (BaseObject::SPtr ptr, std::size_t, bool add)
 
void trackInternalData (const BaseData &data)
 
void cleanTracker ()
 
bool hasDataChanged (const BaseData &data)
 
- Protected Member Functions inherited from sofa::core::objectmodel::Base
 Base ()
 
virtual ~Base ()
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags)
 
void initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
- Protected Member Functions inherited from sofa::core::IntrusiveObject
virtual ~IntrusiveObject ()=default
 

Friends

struct ImageSamplerSpecialization< _ImageTypes >
 
typedef _ImageTypes ImageTypes
 
typedef ImageTypes::T T
 
typedef ImageTypes::imCoord imCoord
 
typedef helper::ReadAccessor< Data< ImageTypes > > raImage
 
Data< ImageTypesimage
 
typedef defaulttype::ImageLPTransform< RealTransformType
 
typedef TransformType::Coord Coord
 
typedef helper::ReadAccessor< Data< TransformType > > raTransform
 
Data< TransformTypetransform
 
typedef type::vector< double > ParamTypes
 
typedef helper::ReadAccessor< Data< ParamTypes > > raParam
 
Data< helper::OptionsGroupmethod
 method (param) More...
 
Data< bool > computeRecursive
 if true: insert nodes recursively and build the graph More...
 
Data< ParamTypesparam
 Parameters. More...
 
typedef type::vector< type::Vec< 3, Real > > SeqPositions
 
typedef helper::ReadAccessor< Data< SeqPositions > > raPositions
 
typedef helper::WriteAccessor< Data< SeqPositions > > waPositions
 
typedef core::topology::BaseMeshTopology::Edge Edge
 
typedef core::topology::BaseMeshTopology::SeqEdges SeqEdges
 
typedef helper::ReadAccessor< Data< SeqEdges > > raEdges
 
typedef helper::WriteOnlyAccessor< Data< SeqEdges > > waEdges
 
typedef core::topology::BaseMeshTopology::Hexa Hexa
 
typedef core::topology::BaseMeshTopology::SeqHexahedra SeqHexahedra
 
typedef helper::WriteOnlyAccessor< Data< SeqHexahedra > > waHexa
 
Data< SeqPositionsposition
 output positions More...
 
Data< SeqPositionsfixedPosition
 user defined sample positions More...
 
Data< SeqEdgesedges
 edges connecting neighboring nodes More...
 
Data< SeqEdgesgraphEdges
 oriented graph connecting parent to child nodes More...
 
Data< SeqHexahedrahexahedra
 output hexahedra More...
 
typedef ImageSamplerSpecialization< ImageTypes >::DistTypes DistTypes
 
typedef helper::WriteOnlyAccessor< Data< DistTypes > > waDist
 
Data< DistTypesdistances
 
typedef ImageSamplerSpecialization< ImageTypes >::VorTypes VorTypes
 
typedef helper::WriteOnlyAccessor< Data< VorTypes > > waVor
 
Data< VorTypesvoronoi
 

Additional Inherited Members

- Static Public Member Functions inherited from sofa::core::objectmodel::BaseObject
static bool canCreate (T *, BaseContext *, BaseObjectDescription *)
 
static T::SPtr create (T *, BaseContext *context, BaseObjectDescription *arg)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::Base
static const BaseClassGetClass ()
 
static std::string shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr)
 

Attribute details

◆ computeRecursive

template<class _ImageTypes >
Data< bool > sofa::component::engine::ImageSampler< _ImageTypes >::computeRecursive

if true: insert nodes recursively and build the graph

◆ distances

template<class _ImageTypes >
Data< DistTypes > sofa::component::engine::ImageSampler< _ImageTypes >::distances

◆ drawMode

template<class _ImageTypes >
Data< int > sofa::component::engine::ImageSampler< _ImageTypes >::drawMode

0: points, 1: spheres

◆ edges

template<class _ImageTypes >
Data< SeqEdges > sofa::component::engine::ImageSampler< _ImageTypes >::edges

edges connecting neighboring nodes

◆ f_clearData

template<class _ImageTypes >
Data<bool> sofa::component::engine::ImageSampler< _ImageTypes >::f_clearData

clear distance image after computation

◆ fixedPosition

template<class _ImageTypes >
Data< SeqPositions > sofa::component::engine::ImageSampler< _ImageTypes >::fixedPosition

user defined sample positions

◆ graphEdges

template<class _ImageTypes >
Data< SeqEdges > sofa::component::engine::ImageSampler< _ImageTypes >::graphEdges

oriented graph connecting parent to child nodes

◆ hexahedra

template<class _ImageTypes >
Data< SeqHexahedra > sofa::component::engine::ImageSampler< _ImageTypes >::hexahedra

output hexahedra

◆ image

template<class _ImageTypes >
Data< ImageTypes > sofa::component::engine::ImageSampler< _ImageTypes >::image

◆ method

template<class _ImageTypes >
Data<helper::OptionsGroup> sofa::component::engine::ImageSampler< _ImageTypes >::method

method (param)

◆ param

template<class _ImageTypes >
Data< ParamTypes > sofa::component::engine::ImageSampler< _ImageTypes >::param

Parameters.

◆ position

template<class _ImageTypes >
Data< SeqPositions > sofa::component::engine::ImageSampler< _ImageTypes >::position

output positions

◆ showEdges

template<class _ImageTypes >
Data< bool > sofa::component::engine::ImageSampler< _ImageTypes >::showEdges

show edges

◆ showFaces

template<class _ImageTypes >
Data< bool > sofa::component::engine::ImageSampler< _ImageTypes >::showFaces

show the faces of cubes

◆ showGraph

template<class _ImageTypes >
Data< bool > sofa::component::engine::ImageSampler< _ImageTypes >::showGraph

show graph

◆ showSamplesScale

template<class _ImageTypes >
Data< float > sofa::component::engine::ImageSampler< _ImageTypes >::showSamplesScale

show samples

◆ time

template<class _ImageTypes >
unsigned int sofa::component::engine::ImageSampler< _ImageTypes >::time
protected

◆ transform

template<class _ImageTypes >
Data< TransformType > sofa::component::engine::ImageSampler< _ImageTypes >::transform

◆ voronoi

template<class _ImageTypes >
Data< VorTypes > sofa::component::engine::ImageSampler< _ImageTypes >::voronoi

Constructor details

◆ ImageSampler()

template<class _ImageTypes >
sofa::component::engine::ImageSampler< _ImageTypes >::ImageSampler ( )
inline

Function details

◆ addEdge()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::addEdge ( const Edge  e,
waEdges edg 
)
inlineprotected

◆ addPoint()

template<class _ImageTypes >
unsigned int sofa::component::engine::ImageSampler< _ImageTypes >::addPoint ( const Coord p,
waPositions pos,
type::vector< unsigned int > &  indices 
)
inlineprotected

◆ doUpdate()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::doUpdate ( )
inlineoverrideprotectedvirtual

◆ draw()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::draw ( const core::visual::VisualParams vparams)
inlineoverrideprotectedvirtual

◆ handleEvent()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::handleEvent ( sofa::core::objectmodel::Event event)
inlineoverrideprotectedvirtual

◆ init()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::init ( void  )
inlineoverridevirtual

◆ recursiveUniformSampling()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::recursiveUniformSampling ( const unsigned int  nb = 0,
const bool  bias = false,
const unsigned int  lloydIt = 100,
const unsigned int  method = false,
const unsigned int  N = 1,
const unsigned int  pmmIter = std::numeric_limits<unsigned int>::max(),
const SReal  pmmTol = 10 
)
inlineprotected

same as above except that relaxation is done at each insertion of N samples a graph is generated relating the new samples to its neighbors at the instant of insertion

◆ regularSampling()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::regularSampling ( const bool  atcorners = false,
const bool  recursive = false 
)
inlineprotected

put regularly spaced samples at each non empty voxel center or corners generated topology: edges + hexahedra

Parameters
atcorners: put samples at voxel corners instead of centers ? if
buildgraph= true, several resolutions are recursively built; a graph is generated relating each higher resolution node to its parent nodes

◆ reinit()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::reinit ( )
inlineoverridevirtual

◆ SOFA_CLASS()

template<class _ImageTypes >
sofa::component::engine::ImageSampler< _ImageTypes >::SOFA_CLASS ( SOFA_TEMPLATE(ImageSampler< _ImageTypes >, _ImageTypes)  ,
Inherited   
)

◆ subdivide()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::subdivide ( type::vector< unsigned int > &  indices)
inlineprotected

subdivide positions indexed in indices in eight sub-lists, add new points in this->position and run recursively

◆ uniformSampling()

template<class _ImageTypes >
void sofa::component::engine::ImageSampler< _ImageTypes >::uniformSampling ( const unsigned int  nb = 0,
const bool  bias = false,
const unsigned int  lloydIt = 100,
const unsigned int  method = FASTMARCHING,
const unsigned int  pmmIter = std::numeric_limits<unsigned int>::max(),
const SReal  pmmTol = 10 
)
inlineprotected

computes a uniform sample distribution (=point located at the center of their Voronoi cell) based on farthest point sampling + Lloyd (=kmeans) relaxation

Parameters
nb: target number of samples
bias: bias distances using the input image ?
lloydIt: maximum number of Lloyd iterations.

Related details

◆ ImageSamplerSpecialization< _ImageTypes >

template<class _ImageTypes >
friend struct ImageSamplerSpecialization< _ImageTypes >
friend