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

Tool-class for detecting tilted quads in images. More...

#include <QuadDetector.h>

Inheritance diagram for icl::markers::QuadDetector:
icl::utils::Configurable icl::utils::Uncopyable

Public Types

enum  QuadColor { BlackOnly, WhiteOnly, BlackAndWhite }
 enum, that helps to specify what quads are searched in the threshold-result image More...
 
typedef std::vector< utils::Point32f > PVec
 internal typedef for vector of points More...
 
typedef std::vector< PVec > PVecVec
 internal typedef for vector of vector of points More...
 
- Public Types inherited from icl::utils::Configurable
typedef Function< void, const Property & > Callback
 Function type for changed properties. More...
 

Public Member Functions

 QuadDetector (QuadColor c=BlackOnly, bool dynamic=false, float minQRating=0.4)
 Base constructor. More...
 
 ~QuadDetector ()
 Destructor. More...
 
const std::vector< TiltedQuad > & detect (const core::ImgBase *image)
 apply-method, that extracts quad-like structures in the input image More...
 
const core::Img8u & getLastBinaryImage () const
 returns the last binary image that was produced internally More...
 
icl::cv::RegionDetector * getRegionDetector ()
 returns the internal region detector instance More...
 
const PVecVec & getAllCorners () const
 returns all corners (const) More...
 
PVecVec & getAllCorners ()
 returns all corners More...
 
const PVecVec & getLongestCorners () const
 returns longest corners (const) More...
 
PVecVec & getLongestCorners ()
 returns longest corners More...
 
const PVecVec & getSecLongestCorners () const
 returns 2nd longest corners (const) More...
 
PVecVec & getSecLongestCorners ()
 returns 2nd longest corners More...
 
const PVecVec & getInterCorners () const
 return inter? conrners (const) More...
 
PVecVec & getInterCorners ()
 return inter? conrners More...
 
const PVecVec & getPerpCorners () const
 returns perpendicular corners (const) More...
 
PVecVec & getPerpCorners ()
 returns perpendicular corners More...
 
const PVecVec & getMirrorCorners () const
 returns mirror corners (const) More...
 
PVecVec & getMirrorCorners ()
 returns mirror corners (const) More...
 
std::vector< utils::Point32f > computeCorners (const cv::ImageRegion &r) const
 computes corners for the given image region More...
 
- Public Member Functions inherited from icl::utils::Configurable
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 void setPropertyValue (const std::string &propertyName, const Any &value)
 sets a property value 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

Data * data
 Internal data pointer (hidden) More...
 

Additional Inherited Members

- 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 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 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::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...
 
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...
 
- Protected Member Functions inherited from icl::utils::Uncopyable
 Uncopyable ()
 Empty base constructor. More...
 
- Protected Attributes inherited from icl::utils::Configurable
std::vector< Callback > callbacks
 internally managed list of callbacks More...
 

Detailed Description

Tool-class for detecting tilted quads in images.

The quad detector combines usual steps that are used to find quad-like structures in input images.

General Information

The QuadDetector combines a local threshold preprocessor, optional further preprocessing steps such as median or morphological operations with an icl::cv::RegionDetector based search for regions with 4 corners.

utils::Configurable interface

The QuadDetector forwards the local-threshold and the RegionDetector options. It also adds some extra properties for the post-processing the local-threshold result image before it's passed to the region detector internally

Member Typedef Documentation

◆ PVec

internal typedef for vector of points

◆ PVecVec

internal typedef for vector of vector of points

Member Enumeration Documentation

◆ QuadColor

enum, that helps to specify what quads are searched in the threshold-result image

Enumerator
BlackOnly 

only quads that are black (default, value 0)

WhiteOnly 

only quads that are white (value 255)

BlackAndWhite 

white and black quads

Constructor & Destructor Documentation

◆ QuadDetector()

icl::markers::QuadDetector::QuadDetector ( QuadColor  c = BlackOnly,
bool  dynamic = false,
float  minQRating = 0.4 
)

Base constructor.

Parameters
cthe detected quads binary value
dynamicif this is set to true, there will be a changable property for the quad color, otherwise, the initial value will remain fixed

◆ ~QuadDetector()

icl::markers::QuadDetector::~QuadDetector ( )

Destructor.

Member Function Documentation

◆ computeCorners()

std::vector<utils::Point32f> icl::markers::QuadDetector::computeCorners ( const cv::ImageRegion &  r) const

computes corners for the given image region

◆ detect()

const std::vector<TiltedQuad>& icl::markers::QuadDetector::detect ( const core::ImgBase *  image)

apply-method, that extracts quad-like structures in the input image

This method first applys a local threshold to the given input image, which results in a binary icl8u-image. This image is then optionally processed by a median and/or by some morphological operations

◆ getAllCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getAllCorners ( ) const

returns all corners (const)

◆ getAllCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getAllCorners ( )

returns all corners

◆ getInterCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getInterCorners ( ) const

return inter? conrners (const)

◆ getInterCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getInterCorners ( )

return inter? conrners

◆ getLastBinaryImage()

const core::Img8u& icl::markers::QuadDetector::getLastBinaryImage ( ) const

returns the last binary image that was produced internally

◆ getLongestCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getLongestCorners ( ) const

returns longest corners (const)

◆ getLongestCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getLongestCorners ( )

returns longest corners

◆ getMirrorCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getMirrorCorners ( ) const

returns mirror corners (const)

◆ getMirrorCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getMirrorCorners ( )

returns mirror corners (const)

◆ getPerpCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getPerpCorners ( ) const

returns perpendicular corners (const)

◆ getPerpCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getPerpCorners ( )

returns perpendicular corners

◆ getRegionDetector()

icl::cv::RegionDetector* icl::markers::QuadDetector::getRegionDetector ( )

returns the internal region detector instance

◆ getSecLongestCorners() [1/2]

const PVecVec& icl::markers::QuadDetector::getSecLongestCorners ( ) const

returns 2nd longest corners (const)

◆ getSecLongestCorners() [2/2]

PVecVec& icl::markers::QuadDetector::getSecLongestCorners ( )

returns 2nd longest corners

Member Data Documentation

◆ data

Data* icl::markers::QuadDetector::data
private

Internal data pointer (hidden)


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