Image Component Library (ICL)
ColorDistanceOp.h
Go to the documentation of this file.
1 /********************************************************************
2 ** Image Component Library (ICL) **
3 ** **
4 ** Copyright (C) 2006-2013 CITEC, University of Bielefeld **
5 ** Neuroinformatics Group **
6 ** Website: www.iclcv.org and **
7 ** http://opensource.cit-ec.de/projects/icl **
8 ** **
9 ** File : ICLFilter/src/ICLFilter/ColorDistanceOp.h **
10 ** Module : ICLFilter **
11 ** Authors: Christof Elbrechter **
12 ** **
13 ** **
14 ** GNU LESSER GENERAL PUBLIC LICENSE **
15 ** This file may be used under the terms of the GNU Lesser General **
16 ** Public License version 3.0 as published by the **
17 ** **
18 ** Free Software Foundation and appearing in the file LICENSE.LGPL **
19 ** included in the packaging of this file. Please review the **
20 ** following information to ensure the license requirements will **
21 ** be met: http://www.gnu.org/licenses/lgpl-3.0.txt **
22 ** **
23 ** The development of this software was supported by the **
24 ** Excellence Cluster EXC 277 Cognitive Interaction Technology. **
25 ** The Excellence Cluster EXC 277 is a grant of the Deutsche **
26 ** Forschungsgemeinschaft (DFG) in the context of the German **
27 ** Excellence Initiative. **
28 ** **
29 ********************************************************************/
30 
31 #pragma once
32 
33 #include <ICLUtils/CompatMacros.h>
34 #include <ICLFilter/UnaryOp.h>
35 
36 namespace icl {
37  namespace filter{
38 
41  public:
42 
45 
47 
50  template<class Container>
51  ColorDistanceOp(const Container &vec, double threshold=-1){
52  init(vec,threshold);
53  }
54 
56  template<class ForewardIterator>
57  ColorDistanceOp(ForewardIterator begin, ForewardIterator end, double threshold=-1){
58  init(std::vector<double>(begin,end), threshold);
59  }
60 
62 
68  void apply(const core::ImgBase *src, core::ImgBase **dst);
69 
71  using UnaryOp::apply;
72 
74  inline void setThreshold(double threshold){
75  m_threshold = threshold;
76  }
77 
79  inline void setReferenceColor(const std::vector<double> &refColor){
80  init(refColor,m_threshold);
81  }
82 
84  template<class Container>
85  inline void init(const Container &refColor, double threshold=-1){
86  m_refColor.assign(refColor.begin(),refColor.end());
87  m_threshold = threshold;
88  ICLASSERT_THROW(m_refColor.size() >= 3,
89  utils::ICLException("ColorDistanceOp::setReferenceColor: ref color needs at least 3 entries"));
90  }
91 
92  private:
94  std::vector<double> m_refColor;
95 
97  double m_threshold;
98  };
99 
100  } // namespace filter
101 }
undocument this line if you encounter any issues!
Definition: Any.h:37
std::vector< double > m_refColor
internal reference color
Definition: ColorDistanceOp.h:94
double m_threshold
internal threshold
Definition: ColorDistanceOp.h:97
ColorDistanceOp(ForewardIterator begin, ForewardIterator end, double threshold=-1)
create with given iterator range for the reference color initialization
Definition: ColorDistanceOp.h:57
void init(const Container &refColor, double threshold=-1)
sets both reference color and threshold at once
Definition: ColorDistanceOp.h:85
Class for creating a color distance map.
Definition: ColorDistanceOp.h:40
ColorDistanceOp(const Container &vec, double threshold=-1)
create a new instance with given reference color and optional threshold
Definition: ColorDistanceOp.h:51
Abstract Base class for Unary Operators.
Definition: UnaryOp.h:51
ColorDistanceOp()
Dummy constructor (creates an uninitialized instance)
Definition: ColorDistanceOp.h:44
ICLQt_API core::Img< T > filter(const core::Img< T > &image, const std::string &filter)
applies a filter operation on the source image (affinity for float)
Base class for Exception handling in the ICL.
Definition: Exception.h:42
#define ICLFilter_API
Definition: CompatMacros.h:175
void setReferenceColor(const std::vector< double > &refColor)
sets the current reference color
Definition: ColorDistanceOp.h:79
virtual void apply(const core::ImgBase *operand1, core::ImgBase **dst)=0
pure virtual apply function, that must be implemented in all derived classes
ImgBase is the Image-Interface class that provides save access to underlying Img-template .
Definition: ImgBase.h:131
#define ICLASSERT_THROW(X, OBJ)
Definition: Macros.h:155
void setThreshold(double threshold)
sets the threshold value
Definition: ColorDistanceOp.h:74