|
| MorphologicalOp (optype t, const utils::Size &maskSize=utils::Size(3, 3), const icl8u *mask=0) |
| Constructor that creates a Morphological object, with specified mask size. More...
|
|
| MorphologicalOp (const std::string &optype="erode", const utils::Size &maskSize=utils::Size(3, 3), const icl8u *mask=0) |
| constructor with given optype as string More...
|
|
| ~MorphologicalOp () |
| Destructor. More...
|
|
void | setMask (utils::Size size, const icl8u *pcMask=0) |
| Change mask. More...
|
|
const icl8u * | getMask () const |
| returns mask More...
|
|
utils::Size | getMaskSize () const |
| returns mask size More...
|
|
void | setOptype (optype type) |
|
optype | getOptype () const |
| returns the type of the selected morphological operation More...
|
|
void | apply (const core::ImgBase *poSrc, core::ImgBase **ppoDst) |
| Performs morph of an image with given optype and mask. More...
|
|
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...
|
|
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...
|
|
|
template<typename T , IppStatus(IPP_DECL *ippiFunc)(const T *, int, T *, int, IppiSize, const Ipp8u *, IppiSize, IppiPoint) > |
IppStatus | ippiMorphologicalCall (const core::Img< T > *src, core::Img< T > *dst) |
|
template<typename T , IppStatus(IPP_DECL *ippiFunc)(const T *, int, T *, int, IppiSize) > |
IppStatus | ippiMorphologicalCall3x3 (const core::Img< T > *src, core::Img< T > *dst) |
|
template<typename T , IppStatus(IPP_DECL *ippiFunc)(const T *, int, T *, int, IppiSize, _IppiBorderType, IppiMorphState *) > |
IppStatus | ippiMorphologicalBorderReplicateCall (const core::Img< T > *src, core::Img< T > *dst, IppiMorphState *state) |
|
template<typename T , IppStatus(IPP_DECL *ippiFunc)(const T *, int, T *, int, IppiSize, IppiBorderType, IppiMorphAdvState *) > |
IppStatus | ippiMorphologicalBorderCall (const core::Img< T > *src, core::Img< T > *dst, IppiMorphAdvState *advState) |
|
void | deleteMorphStates () |
|
void | checkMorphAdvState8u (const utils::Size roiSize) |
|
void | checkMorphAdvState32f (const utils::Size roiSize) |
|
void | checkMorphState8u (const utils::Size roiSize) |
|
void | checkMorphState32f (const utils::Size roiSize) |
|
|
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 Morphological operations .
(Only available for Img8u and Img32f, IPP and fallback implementation)
Destination Image Sizes
Destination image ROI size depends not only on given input ROI size and mask-size, but also on the used optype. In case of default operations (dilate, erode, ... destination ROI size is calculated as in the top level NeighborhoodOp class. But Note: for dilate and erode border, destination image roi size becomes equal to the source images one if using IPP support. The fallback C++ implementation uses internally other instaces of MorphologicalOp to apply e.g. an erosion operation, hence, destination roi size is adapted in that case as one might expect.
Operations
The basic operations dilatation and erosion are not implemented as hit-or-miss transformation, but as gray-level morphologic operators. Each operator works with a binary mask which is moved successively through the source images ROI. At each pixel location. All pixel values within the mask boundaries, where the corresponding mask-entry differs from zero are evaluated as follows:
- dilatation: destination image pixel becomes the the maximum pixel of all pixels within mask
- erosion: destination image pixel becomes the the minimum pixel of all pixels within mask
- erosion3x3 and dilatation3x3: this is just a shortcut for using a 3x3 mask where all entries are set to 1. IPP obviously does a lot of optimizations here, fallback doesn't
- dilate/erode border replicate: as standard operation, except copying border pixels from closes valid computed pixels (not tested well in fallback case)
- opening erosion followed by a dilatation-step
- closing dilatation followed by an erosion-step
- tophat source image minus opening result
- blackhat closing result - source image
- gradient closing result - opened result
Example (Image Convolution)
As a useful help, some example images are shown here:
left: binary image results, right: gray image results