Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | List of all members
icl::filter::WarpOp Class Reference

Operator that remaps an image with given look-up map. More...

#include <WarpOp.h>

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

Public Member Functions

 WarpOp (const core::Img32f &warpMap=core::Img32f(), core::scalemode mode=core::interpolateLIN, bool allowWarpMapScaling=true)
 create a new WarpOp instance More...
 ~WarpOp ()
 Destructor. More...
void setScaleMode (core::scalemode scaleMode)
 Sets a new scalemode (either interpolateLIN or interpolateNN) More...
void setWarpMap (const core::Img32f &warpMap)
 Sets a new warp map. More...
void setAllowWarpMapScaling (bool allow)
 Sets the allow warp-map-scaling features. More...
void setTryUseOpenCL (bool enabled)
 sets wheter to use openCL internally More...
core::scalemode getScaleMode () const
 returns the current scalemode More...
const core::Img32fgetWarpMap () const
 returns the current warp map More...
bool getAllowWarpMapScaling () const
 returns whether warp map scaling is allowed More...
virtual void apply (const core::ImgBase *src, core::ImgBase **dst)
 virtual apply function 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...
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...

Private Attributes

bool m_allowWarpMapScaling
core::Img32f m_warpMap
core::Img32f m_scaledWarpMap
core::scalemode m_scaleMode
bool m_tryUseOpenCL
CLWarp * m_clWarp

Additional Inherited Members

- Public Types inherited from icl::utils::Configurable
typedef Function< void, const
Property & > 
 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 > 
 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()) 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 inherited from icl::filter::UnaryOp
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callbackcallbacks
 internally managed list of callbacks More...

Detailed Description

Operator that remaps an image with given look-up map.


A 'Warping' operation on images is any operation, that works on the local domain of the image i.e. it moves the images pixel locations. Special warping routines like affine operations (see AffineOp) can be performed using a functional rule that is applied on each destination pixel to determine it's corresponding source pixels (using the AffineOp example again, this function might be e.g. an affine matrix multiplication). If the mapping function gets more complex (e.g. in case of camera lens distortion), computation might become too slow, however computational performance even for most complex mappings can be limited by pre-calculating a so-called warp-table (a 2-channel 2D-look-up-table, that contains the result of the mapping for each pixel). Once having obtained such a LUT, a WarpOp will help to apply the table lookup operation conveniently and safely.

ROI Support

Currently this Op does not provide ROI handling (although used IPP-functions do)


Support is purely optional and only defined in case of depth8u or depth32f input images


As already mentioned, the operation performance does not depend on the mapping function at all. Hence there're only few parameters, that influence the apply time of a WarpOp instance:

Here's a short list of benchmarks. For benchmarking your system, you can use the icl-warp-op-test application.

System: 2.0 GHz Core2Duo
Size:   640x480 (VGA)
Build-flags: -O4 -march=native -funroll-loops

interpolation: NN LINEAR

  • depth8u: 8ms(IPP) 13ms(IPP)
  • depth16s: 42ms 79ms
  • depth32s: 46ms 79ms
  • depth32f: 13ms(IPP) 20ms(IPP)
  • depth64f: 54ms 92ms

Constructor & Destructor Documentation

icl::filter::WarpOp::WarpOp ( const core::Img32f warpMap = core::Img32f(),
core::scalemode  mode = core::interpolateLIN,
bool  allowWarpMapScaling = true 

create a new WarpOp instance

This constructor has been made explicit to avoid ambiguity in case of calling WarpOp(ImgQ()) or something like that.

warpMapmap that contains new x-coortinates in the first channel and new y-coordinates in the 2nd one
modeinterpolation mode either interpolateLIN or interpolateNN
allowWarpMapScalingif set to true, the WarpOp instance will internally create a scaled warp map in case of differing warp map and image size
icl::filter::WarpOp::~WarpOp ( )


Member Function Documentation

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

virtual apply function

Implements icl::filter::UnaryOp.

bool icl::filter::WarpOp::getAllowWarpMapScaling ( ) const

returns whether warp map scaling is allowed

core::scalemode icl::filter::WarpOp::getScaleMode ( ) const

returns the current scalemode

const core::Img32f& icl::filter::WarpOp::getWarpMap ( ) const

returns the current warp map

void icl::filter::WarpOp::setAllowWarpMapScaling ( bool  allow)

Sets the allow warp-map-scaling features.

See Also
WarpOp(const Img32f&,scalemode,bool)
void icl::filter::WarpOp::setScaleMode ( core::scalemode  scaleMode)

Sets a new scalemode (either interpolateLIN or interpolateNN)

void icl::filter::WarpOp::setTryUseOpenCL ( bool  enabled)

sets wheter to use openCL internally

OpenCL is only used if ICL is compiled with OpenCL support and for special image-depth and interpolation mode combinations. This function is disregarded quietly if not available

void icl::filter::WarpOp::setWarpMap ( const core::Img32f warpMap)

Sets a new warp map.

Member Data Documentation

bool icl::filter::WarpOp::m_allowWarpMapScaling
CLWarp* icl::filter::WarpOp::m_clWarp
core::Img32f icl::filter::WarpOp::m_scaledWarpMap
core::scalemode icl::filter::WarpOp::m_scaleMode
bool icl::filter::WarpOp::m_tryUseOpenCL
core::Img32f icl::filter::WarpOp::m_warpMap

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