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

unary operators that work on each pixels neighborhood \ More...

#include <NeighborhoodOp.h>

Inheritance diagram for icl::filter::NeighborhoodOp:
icl::filter::UnaryOp icl::utils::Configurable icl::filter::ConvolutionOp icl::filter::MedianOp icl::filter::MorphologicalOp icl::filter::WienerOp icl::filter::DynamicConvolutionOp

Public Member Functions

virtual ~NeighborhoodOp ()
 Destructor. More...
 
bool computeROI (const core::ImgBase *poSrc, utils::Point &oROIoffset, utils::Size &oROIsize)
 compute neccessary ROI offset and size More...
 
virtual void applyMT (const core::ImgBase *operand1, core::ImgBase **dst, unsigned int nThreads)
 NEW apply function for multithreaded filtering (reimplemented here for special roi handling!) More...
 
const utils::SizegetMaskSize () const
 
const utils::PointgetAnchor () const
 
const utils::PointgetROIOffset () const
 
- 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 void apply (const core::ImgBase *operand1, core::ImgBase **dst)=0
 pure virtual apply function, that must be implemented in all derived classes More...
 
virtual const core::ImgBaseapply (const core::ImgBase *src)
 applys the filter usign an internal buffer as output image 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) throw (utils::ICLException)
 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) throw (ICLException)
 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) throw (ICLException)
 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...
 

Protected Member Functions

 NeighborhoodOp ()
 
 NeighborhoodOp (const utils::Size &size)
 
void setMask (const utils::Size &size)
 
void setMask (const utils::Size &size, const utils::Point &anchor)
 
void setROIOffset (const utils::Point &offs)
 
virtual bool prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc)
 prepare filter operation: ensure compatible image format and size More...
 
virtual bool prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc, core::depth eDepht)
 prepare filter operation: as above, but with depth parameter More...
 
virtual utils::Size adaptSize (const utils::Size &size)
 this function can be reimplemented e.g to enshure an odd mask width and height 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)
 
- 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()) throw (ICLException)
 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) throw (ICLException)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (const std::string &propertyName) const throw (ICLException)
 this CAN be used e.g. to store a property value in internal property-list More...
 
 Configurable (const std::string &ID="", bool ordered=true) throw (ICLException)
 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

utils::Size m_oMaskSize
 TODO: later private with getter and setter functions. More...
 
utils::Point m_oAnchor
 anchor of filter mask More...
 
utils::Point m_oROIOffset
 to-be-used ROI offset for source image 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...
 

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) throw (utils::ICLException)
 Creates a UnaryOp instance from given string definition. More...
 
static std::string getFromStringSyntax (const std::string &opSpecifier) throw (utils::ICLException)
 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) throw (utils::ICLException)
 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) throw (ICLException)
 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) throw (ICLException)
 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...
 

Detailed Description

unary operators that work on each pixels neighborhood \

TODO:: check!! The NeighborhoodOp class builds a base class for unary operations employing a filter mask which is moved over the ROI of the source image(s), e.g. convolution filters use some convolution masks. To this end the class provides members to store the size and anchor of the filter mask.

Special care has to be taken, when applying a filter mask to the border of an image, e.g. in case of full-image ROI. In this case the filter might access undefined pixel values outside the image, actually causing a segfault in most cases.

Hence, the used ROI size of the source image is shrinked if neccessary, such that the filter mask always fits into the image, when moved over the ROI. For this purpose the method adaptROI is provided, which computes the to-be-used ROI. The ROI of the source image is not actually changed, which makes the filter operation thread safe, because simultaneous operations running on the source image within different threads do not interfere.

Constructor & Destructor Documentation

virtual icl::filter::NeighborhoodOp::~NeighborhoodOp ( )
inlinevirtual

Destructor.

icl::filter::NeighborhoodOp::NeighborhoodOp ( )
inlineprotected
icl::filter::NeighborhoodOp::NeighborhoodOp ( const utils::Size size)
inlineprotected

Member Function Documentation

virtual utils::Size icl::filter::NeighborhoodOp::adaptSize ( const utils::Size size)
inlineprotectedvirtual

this function can be reimplemented e.g to enshure an odd mask width and height

E.g. some implementations of Neighborhood-operation could demand odd or even mask size parameters. In this case, this function can be implemented in another way. (Example: MedianOp)

Parameters
sizesize to ajust
Returns
the given size in this base implementation

Reimplemented in icl::filter::MedianOp.

virtual void icl::filter::NeighborhoodOp::applyMT ( const core::ImgBase operand1,
core::ImgBase **  dst,
unsigned int  nThreads 
)
virtual

NEW apply function for multithreaded filtering (reimplemented here for special roi handling!)

Reimplemented from icl::filter::UnaryOp.

bool icl::filter::NeighborhoodOp::computeROI ( const core::ImgBase poSrc,
utils::Point oROIoffset,
utils::Size oROIsize 
)

compute neccessary ROI offset and size

This functions computes the to-be-used ROI for the source image, such that the filter mask of given size (oMaskSize) fits everywhere into the image if placed arbitrarily within the ROI. The original ROI of the source image is not changed, instead the adapted ROI is returned in parameters oROIsize and oROIoffset.

Parameters
poSrcimage whose ROI is adapted
oROIoffsetnew ROI offset
oROIsizenew ROI size
Returns
whether a valid ROI remains
const utils::Point& icl::filter::NeighborhoodOp::getAnchor ( ) const
inline
const utils::Size& icl::filter::NeighborhoodOp::getMaskSize ( ) const
inline
const utils::Point& icl::filter::NeighborhoodOp::getROIOffset ( ) const
inline
virtual bool icl::filter::NeighborhoodOp::prepare ( core::ImgBase **  ppoDst,
const core::ImgBase poSrc 
)
protectedvirtual

prepare filter operation: ensure compatible image format and size

Reimplemented from icl::filter::UnaryOp.

virtual bool icl::filter::NeighborhoodOp::prepare ( core::ImgBase **  ppoDst,
const core::ImgBase poSrc,
core::depth  eDepht 
)
protectedvirtual

prepare filter operation: as above, but with depth parameter

Reimplemented from icl::filter::UnaryOp.

void icl::filter::NeighborhoodOp::setMask ( const utils::Size size)
inlineprotected
void icl::filter::NeighborhoodOp::setMask ( const utils::Size size,
const utils::Point anchor 
)
inlineprotected
void icl::filter::NeighborhoodOp::setROIOffset ( const utils::Point offs)
inlineprotected

Member Data Documentation

utils::Point icl::filter::NeighborhoodOp::m_oAnchor
protected

anchor of filter mask

utils::Size icl::filter::NeighborhoodOp::m_oMaskSize
protected

TODO: later private with getter and setter functions.

size of filter mask

utils::Point icl::filter::NeighborhoodOp::m_oROIOffset
protected

to-be-used ROI offset for source image


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