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::Point32fPVec
 internal typedef for vector of points More...
 
typedef std::vector< PVecPVecVec
 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::Img8ugetLastBinaryImage () const
 returns the last binary image that was produced internally More...
 
icl::cv::RegionDetectorgetRegionDetector ()
 returns the internal region detector instance More...
 
const PVecVecgetAllCorners () const
 returns all corners (const) More...
 
PVecVecgetAllCorners ()
 returns all corners More...
 
const PVecVecgetLongestCorners () const
 returns longest corners (const) More...
 
PVecVecgetLongestCorners ()
 returns longest corners More...
 
const PVecVecgetSecLongestCorners () const
 returns 2nd longest corners (const) More...
 
PVecVecgetSecLongestCorners ()
 returns 2nd longest corners More...
 
const PVecVecgetInterCorners () const
 return inter? conrners (const) More...
 
PVecVecgetInterCorners ()
 return inter? conrners More...
 
const PVecVecgetPerpCorners () const
 returns perpendicular corners (const) More...
 
PVecVecgetPerpCorners ()
 returns perpendicular corners More...
 
const PVecVecgetMirrorCorners () const
 returns mirror corners (const) More...
 
PVecVecgetMirrorCorners ()
 returns mirror corners (const) More...
 
std::vector< utils::Point32fcomputeCorners (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...
 
Configurableoperator= (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 Configurableget (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 Configurablecreate_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...
 
Propertyprop (const std::string &propertyName)
 this CAN be used e.g. to store a property value in internal property-list More...
 
const Propertyprop (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< Callbackcallbacks
 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: