Image Component Library (ICL)
Public Member Functions | Private Attributes | List of all members
icl::filter::UnaryOpPipe Class Reference

Utility class that helps applying UnaryOps one after another. More...

#include <UnaryOpPipe.h>

Inheritance diagram for icl::filter::UnaryOpPipe:
icl::filter::UnaryOp icl::utils::Configurable

Public Member Functions

 UnaryOpPipe ()
 create an empty pipe More...
 
 ~UnaryOpPipe ()
 Destructor. More...
 
void add (UnaryOp *op, core::ImgBase *im=0)
 appends a new op on the end of this pipe (ownership of op and im is passed to the pipe) More...
 
UnaryOpPipeoperator<< (UnaryOp *op)
 stream based wrapper for the add function (calls add(op,0)) More...
 
virtual void apply (const core::ImgBase *src, core::ImgBase **dst)
 applies all ops sequentially More...
 
virtual const core::ImgBaseapply (const core::ImgBase *src)
 This function is reimplemented here; it uses getLastImage() as destination image. More...
 
int getLength () const
 returns the number of contained ops More...
 
UnaryOp *& getOp (int i)
 returns the op at given index More...
 
core::ImgBase *& getImage (int i)
 returns the result buffer image at given index More...
 
core::ImgBase *& getLastImage ()
 returns the last image (which is not used by default) More...
 
- Public Member Functions inherited from icl::filter::UnaryOp
 UnaryOp ()
 Explicit empty constructor. More...
 
 UnaryOp (const UnaryOp &other)
 Explicit copy constructor. More...
 
UnaryOpoperator= (const UnaryOp &other)
 Explicit declaration of the assignment operator. More...
 
virtual ~UnaryOp ()
 Destructor. More...
 
virtual ICL_DEPRECATED void applyMT (const core::ImgBase *operand1, core::ImgBase **dst, unsigned int nThreads)
 apply function for multithreaded filtering (currently even slower than using one thread) More...
 
void operator() (const core::ImgBase *src, core::ImgBase **dst)
 function operator (alternative for apply(src,dst) More...
 
const core::ImgBaseoperator() (const core::ImgBase *src)
 function operator for the implicit destination apply(src) call More...
 
const core::ImgBaseoperator() (const core::ImgBase &src)
 reference based function operator More...
 
void setClipToROI (bool bClipToROI)
 sets if the image should be clip to ROI or not More...
 
void setCheckOnly (bool bCheckOnly)
 sets if the destination image should be adapted to the source, or if it is only checked if it can be adapted. More...
 
bool getClipToROI () const
 returns the ClipToROI status More...
 
bool getCheckOnly () const
 returns the CheckOnly status More...
 
virtual void setPropertyValue (const std::string &propertyName, const utils::Any &value)
 sets value of a property (always call call_callbacks(propertyName) or Configurable::setPropertyValue) More...
 
- Public Member Functions inherited from icl::utils::Configurable
virtual ~Configurable ()
 virtual destructor More...
 
 Configurable (const Configurable &other)
 Copy constructor. More...
 
Configurableoperator= (const Configurable &other)
 Assignment operator. More...
 
void setConfigurableID (const std::string &ID)
 sets the ID of this configurable More...
 
const std::string & getConfigurableID () const
 returns the configurables static ID More...
 
bool isOrderedFlagSet () const
 returns whether the ordered flag is set More...
 
void deactivateProperty (const std::string &pattern)
 adds an additional deativation pattern More...
 
void deleteDeactivationPattern (const std::string &pattern)
 removed a formerly added deactivation pattern More...
 
std::vector< std::string > getPropertyListWithoutDeactivated () const
 this returns a filtered list of properties (using all filters added by deactivateProperty) More...
 
virtual void adaptProperty (const std::string &name, const std::string &newType, const std::string &newInfo, const std::string &newToolTip)
 this function can be used to adapt a specific property afterwards More...
 
void registerCallback (const Callback &cb)
 add a callback for changed properties More...
 
void removedCallback (const Callback &cb)
 removes a callback that was registered before More...
 
void syncChangesTo (Configurable *others, int num=1)
 this can be used to let this instance also apply property changes to others More...
 
virtual std::vector< std::string > getPropertyList () const
 returns a list of All properties, that can be set using setProperty More...
 
virtual bool supportsProperty (const std::string &propertyName) const
 base implementation for property check (seaches in the property list) More...
 
virtual void saveProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) const
 writes all available properties into a file More...
 
virtual void loadProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC)
 reads a camera config file from disc More...
 
virtual std::string getPropertyType (const std::string &propertyName) const
 get type of property More...
 
virtual std::string getPropertyInfo (const std::string &propertyName) const
 get information of a properties valid values More...
 
virtual Any getPropertyValue (const std::string &propertyName) const
 returns the current value of a property or a parameter More...
 
virtual std::string getPropertyToolTip (const std::string &propertyName) const
 returns the tooltip description for a given property More...
 
virtual int getPropertyVolatileness (const std::string &propertyName) const
 Returns whether this property may be changed internally. More...
 

Private Attributes

std::vector< UnaryOp * > ops
 Internal buffer of ops. More...
 
std::vector< core::ImgBase * > ims
 Internal buffer of result images. More...
 

Additional Inherited Members

- Public Types inherited from icl::utils::Configurable
typedef Function< void, const Property & > Callback
 Function type for changed properties. More...
 
- Static Public Member Functions inherited from icl::filter::UnaryOp
static UnaryOpfromString (const std::string &definition)
 Creates a UnaryOp instance from given string definition. More...
 
static std::string getFromStringSyntax (const std::string &opSpecifier)
 gives a string syntax description for given opSpecifier More...
 
static std::vector< std::string > listFromStringOps ()
 returns a list of all supported OP_SPEC values for the fromString function More...
 
static void applyFromString (const std::string &definition, const core::ImgBase *src, core::ImgBase **dst)
 creates, applies and releases a UnaryOp defined by given definition string More...
 
- Static Public Member Functions inherited from icl::utils::Configurable
static std::string create_default_ID (const std::string &prefix)
 this function can be used in subclasses to create a default ID More...
 
static Configurableget (const std::string &id)
 returns configurable by given ID More...
 
static void register_configurable_type (const std::string &classname, Function< Configurable * > creator)
 registers a configurable type More...
 
static std::vector< std::string > get_registered_configurables ()
 returns a list of all registered configurable classnames More...
 
static Configurablecreate_configurable (const std::string &classname)
 creates a configurable by given name More...
 
- Static Public Attributes inherited from icl::utils::Configurable
static const std::vector< std::string > EMPTY_VEC
 used as shortcut – just an empty vector of std::strings More...
 
- Protected Member Functions inherited from icl::filter::UnaryOp
bool prepare (core::ImgBase **ppoDst, core::depth eDepth, const utils::Size &imgSize, core::format eFormat, int nChannels, const utils::Rect &roi, utils::Time timestamp=utils::Time::null)
 
virtual bool prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc)
 check+adapt destination image to properties of given source image More...
 
virtual bool prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc, core::depth eDepth)
 
- Protected Member Functions inherited from icl::utils::Configurable
void addProperty (const std::string &name, const std::string &type, const std::string &info, const Any &value=Any(), const int volatileness=0, const std::string &tooltip=std::string())
 This can be used by derived classes to store supported properties in the internal list. More...
 
void addChildConfigurable (Configurable *configurable, const std::string &childPrefix="")
 This adds another configurable as child. More...
 
void removeChildConfigurable (Configurable *configurable)
 removes the given child configurable More...
 
Propertyprop (const std::string &propertyName)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (const std::string &propertyName) const
 this CAN be used e.g. to store a property value in internal property-list More...
 
 Configurable (const std::string &ID="", bool ordered=true)
 create this configurable with given ID More...
 
void call_callbacks (const std::string &propertyName, const Configurable *caller) const
 calls all registered callbacks More...
 
- Protected Attributes inherited from icl::filter::UnaryOp
utils::MultiThreaderm_poMT
 
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callbackcallbacks
 internally managed list of callbacks More...
 

Detailed Description

Utility class that helps applying UnaryOps one after another.

Consider a default computer vision system, which has some preprocessing steps in the following operation order:

  1. resize the image to a given size
  2. calculate a feature map (e.g. a weighted sum of the color channels)
  3. binarize the feature map
  4. apply some morphological operation on this feature map

To facilitate this, you can easily use a UnaryOpPipe, which internally creates a queue of UnaryOp instances and their individual result images (as ImgBase*). Once you have created this Pipe under a certain name (e.g. "MyProprocessor") you can easily add or remove specific preprocessing steps, without having to consider fall-outs elsewhere in your code.

Take a look on the following example:

#include <ICLQt/Quick.h>
int main(){
// create an input image (the nice parrot here!)
ImgQ inputImage = create("parrot");
// create a weight vector (used later on by an instance of the WeightedSumOp class)
vector<icl64f> weights(3); weights[0] = 0.2; weights[1] = 0.5; weights[0] = 0.3;
// create the empty pipe
// add the UnaryOp's in the correct order
pipe << new ScaleOp(0.25,0.25)
<< new WeightedSumOp(weights)
<< new UnaryCompareOp(UnaryCompareOp::gt,110)
<< new MorphologicalOp(MorphologicalOp::erode3x3);
// apply this pipe on the source image (use the last image as destination)
const ImgBase *res = pipe.apply(&inputImage);
// show the result using ICLQuick
show(cvt(res));
}

Constructor & Destructor Documentation

◆ UnaryOpPipe()

icl::filter::UnaryOpPipe::UnaryOpPipe ( )

create an empty pipe

◆ ~UnaryOpPipe()

icl::filter::UnaryOpPipe::~UnaryOpPipe ( )

Destructor.

Member Function Documentation

◆ add()

void icl::filter::UnaryOpPipe::add ( UnaryOp op,
core::ImgBase im = 0 
)

appends a new op on the end of this pipe (ownership of op and im is passed to the pipe)

◆ apply() [1/2]

virtual void icl::filter::UnaryOpPipe::apply ( const core::ImgBase src,
core::ImgBase **  dst 
)
virtual

applies all ops sequentially

Implements icl::filter::UnaryOp.

◆ apply() [2/2]

virtual const core::ImgBase* icl::filter::UnaryOpPipe::apply ( const core::ImgBase src)
virtual

This function is reimplemented here; it uses getLastImage() as destination image.

Reimplemented from icl::filter::UnaryOp.

◆ getImage()

core::ImgBase*& icl::filter::UnaryOpPipe::getImage ( int  i)

returns the result buffer image at given index

◆ getLastImage()

core::ImgBase*& icl::filter::UnaryOpPipe::getLastImage ( )

returns the last image (which is not used by default)

This image is only used, if it is given a 2nd parameter to the apply function

MyPipe.apply(mySourceImagePtr,&(MyPipe.getLastImage());

◆ getLength()

int icl::filter::UnaryOpPipe::getLength ( ) const

returns the number of contained ops

◆ getOp()

UnaryOp*& icl::filter::UnaryOpPipe::getOp ( int  i)

returns the op at given index

◆ operator<<()

UnaryOpPipe& icl::filter::UnaryOpPipe::operator<< ( UnaryOp op)
inline

stream based wrapper for the add function (calls add(op,0))

ownership of op is passed to the pipe

Member Data Documentation

◆ ims

std::vector<core::ImgBase*> icl::filter::UnaryOpPipe::ims
private

Internal buffer of result images.

◆ ops

std::vector<UnaryOp*> icl::filter::UnaryOpPipe::ops
private

Internal buffer of ops.


The documentation for this class was generated from the following file: