|
| ConvolutionOp (const ConvolutionKernel &kernel=ConvolutionKernel()) |
| Default constructor (force unsigned is set to false) More...
|
|
| ConvolutionOp (const ConvolutionKernel &kernel, bool forceUnsignedOutput) |
| create with optional force unsigned output flag More...
|
|
void | apply (const core::ImgBase *src, core::ImgBase **dst) |
| performs the convolution operation on the image More...
|
|
void | setKernel (const ConvolutionKernel &kernel) |
| change kernel More...
|
|
const ConvolutionKernel & | getKernel () const |
| returns currently used kernel (const) More...
|
|
ConvolutionKernel & | getKernel () |
| returns currently used kernel (const) More...
|
|
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::Size & | getMaskSize () const |
|
const utils::Point & | getAnchor () const |
|
const utils::Point & | getROIOffset () const |
|
virtual void | apply (const core::ImgBase *operand1, core::ImgBase **dst)=0 |
| Import unaryOps apply function without destination image. More...
|
|
virtual const core::ImgBase * | apply (const core::ImgBase *src) |
| Import unaryOps apply function without destination image. More...
|
|
| UnaryOp () |
| Explicit empty constructor. More...
|
|
| UnaryOp (const UnaryOp &other) |
| Explicit copy constructor. More...
|
|
UnaryOp & | operator= (const UnaryOp &other) |
| Explicit declaration of the assignment operator. More...
|
|
virtual | ~UnaryOp () |
| Destructor. More...
|
|
virtual const core::ImgBase * | apply (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::ImgBase * | operator() (const core::ImgBase *src) |
| function operator for the implicit destination apply(src) call More...
|
|
const core::ImgBase & | operator() (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...
|
|
virtual | ~Configurable () |
| virtual destructor More...
|
|
| Configurable (const Configurable &other) |
| Copy constructor. More...
|
|
Configurable & | operator= (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...
|
|
|
typedef Function< void, const Property & > | Callback |
| Function type for changed properties. More...
|
|
static UnaryOp * | fromString (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 std::string | create_default_ID (const std::string &prefix) |
| this function can be used in subclasses to create a default ID More...
|
|
static Configurable * | get (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 Configurable * | create_configurable (const std::string &classname) |
| creates a configurable by given name More...
|
|
static const std::vector< std::string > | EMPTY_VEC |
| used as shortcut – just an empty vector of std::strings More...
|
|
| 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...
|
|
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) |
|
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...
|
|
Property & | prop (const std::string &propertyName) |
| this CAN be used e.g. to store a property value in internal property-list More...
|
|
const Property & | prop (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...
|
|
| Uncopyable () |
| Empty base constructor. More...
|
|
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...
|
|
utils::MultiThreader * | m_poMT |
|
std::vector< Callback > | callbacks |
| internally managed list of callbacks More...
|
|
Class for Image convolutions.
(Img8u, Img32f: IPP + Fallback, all other Types: Fallback only!) \ The ConvolutionOp class provides functionality for any kind of convolution filters. As most other filter operations, it operates on the source images ROI only. Because the filter mask has to fit into the image at every point of the ROI, the ROI is eventually shrinked as described in base class Filter.
Performance (IPP-Optimized)
All possible filter operations can be divided in 4 cases, depending on the source and destination images depths and the depth of the used filter kernel. While all image depths are supported, the only available kernel depths are depth32f (floating point) and depth32s (32-bit signed integer) Note the differences of the following cases:
case images: depth8u, depth16s, depth32s
In this case, an integer kernel is preferred. That means, that an integer kernel will be used, if available. Using a float kernel causes a marginal decline in performance.
case images: depth32f, depth64f
In this case, a float kernel is preferred. If it is not available, the fallback integer-kernel must be used. As convolution operations of float images with integer kernels are not supported by the IPP, the kernel is converted internally into a float-kernel.
Benchmarks
The IPP-optimized functions are VERY fast in comparison to the fallback C++ implementations. The optimized 3x3 convolution functions provided by the IPP are more then 20 times faster. Here are some benchmarks:
- arbitrary 3x3-convolution 1000x1000 single channel image (IPP-OPTIMIZED)
- icl8u images & int kernel ~11.6ms
- icl32f images & int kernel ~11.1ms
- icl8u images & icl32f kernel ~13.5ms
- icl32f-image & icl32f kernel ~11.3ms
- fixed 3x3 convolution 1000x1000 single channel sobelx (IPP-OPTIMIZED)
- icl8u images & int mask ~4ms (!!!)
- icl8u images & icl32f mask ~8ms (!!!)
- arbitrary 3x3-convolution 1000x1000 single channel image (C++-Fallback)
- icl8u images & int kernel ~56ms (further implem. ~81ms) ???
- icl32f images & int kernel ~76ms (further implem. ~370ms)
- icl8u images & icl32f kernel ~135ms (further implem. ~230ms)
- icl32f-image & icl32f kernel ~60ms (further implem. ~60ms)
Buffering Kernels
In some applications the ConvolutionOp object has to be created during runtime. If the filter-kernel is created elsewhere, and it is persistent over the lifetime of the ConvolutionOp object, it may not be necessary to deeply copy the kernel into an internal buffer of the ConvolutionOp object. To make the ConvolutionOp object just using a given kernel pointer, an additional flag iBufferData can be set in two Constructors.