Image Component Library (ICL)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
LeastSquareModelFitting2D.h
Go to the documentation of this file.
00001 /********************************************************************
00002 **                Image Component Library (ICL)                    **
00003 **                                                                 **
00004 ** Copyright (C) 2006-2013 CITEC, University of Bielefeld          **
00005 **                         Neuroinformatics Group                  **
00006 ** Website: www.iclcv.org and                                      **
00007 **          http://opensource.cit-ec.de/projects/icl               **
00008 **                                                                 **
00009 ** File   : ICLMath/src/ICLMath/LeastSquareModelFitting2D.h        **
00010 ** Module : ICLMath                                                **
00011 ** Authors: Christof Elbrechter                                    **
00012 **                                                                 **
00013 **                                                                 **
00014 ** GNU LESSER GENERAL PUBLIC LICENSE                               **
00015 ** This file may be used under the terms of the GNU Lesser General **
00016 ** Public License version 3.0 as published by the                  **
00017 **                                                                 **
00018 ** Free Software Foundation and appearing in the file LICENSE.LGPL **
00019 ** included in the packaging of this file.  Please review the      **
00020 ** following information to ensure the license requirements will   **
00021 ** be met: http://www.gnu.org/licenses/lgpl-3.0.txt                **
00022 **                                                                 **
00023 ** The development of this software was supported by the           **
00024 ** Excellence Cluster EXC 277 Cognitive Interaction Technology.    **
00025 ** The Excellence Cluster EXC 277 is a grant of the Deutsche       **
00026 ** Forschungsgemeinschaft (DFG) in the context of the German       **
00027 ** Excellence Initiative.                                          **
00028 **                                                                 **
00029 ********************************************************************/
00030 
00031 #pragma once
00032 
00033 #include <ICLUtils/CompatMacros.h>
00034 #include <ICLMath/LeastSquareModelFitting.h>
00035 #include <ICLUtils/Point32f.h>
00036 
00037 namespace icl{
00038   namespace math{
00039   
00041 
00043     class LeastSquareModelFitting2D : public LeastSquareModelFitting<double,utils::Point32f>{
00045       typedef LeastSquareModelFitting<double, utils::Point32f> Super;
00046       public:
00048       LeastSquareModelFitting2D(){}
00049       
00051       LeastSquareModelFitting2D(int modelDim, DesignMatrixGen gen, 
00052                            DynMatrix<double> *constraintMatrix = 0):
00053       Super(modelDim,gen,constraintMatrix){}
00054       
00056 
00057       static inline void line_gen(const utils::Point32f &p, double *d){
00058         d[0] = p.x; 
00059         d[1] = p.y; 
00060         d[2] = 1;
00061       }
00062       
00064 
00065       static inline void circle_gen(const utils::Point32f &p, double *d){
00066         d[0] = utils::sqr(p.x) + utils::sqr(p.y);
00067         d[1] = p.x;
00068         d[2] = p.y;
00069         d[3] = 1;
00070       }
00071   
00073 
00074       static inline void restr_ellipse_gen(const utils::Point32f &p, double *d){
00075         d[0] = utils::sqr(p.x);
00076         d[1] = utils::sqr(p.y);
00077         d[2] = p.x;
00078         d[3] = p.y;
00079         d[4] = 1;
00080       }
00081   
00083 
00084       static inline void ellipse_gen(const utils::Point32f &p, double *d){
00085         d[0] = utils::sqr(p.x);
00086         d[1] = p.x * p.y;
00087         d[2] = utils::sqr(p.y);
00088         d[3] = p.x;
00089         d[4] = p.y;
00090         d[5] = 1;
00091       }
00092       
00093       inline std::vector<double> fit(const std::vector<utils::Point32f> &points){
00094         return Super::fit(points);
00095       }
00096       inline icl64f getError(const std::vector<double> &model, const utils::Point32f &p) {
00097         return Super::getError(model,p);
00098       }
00099     };
00100   
00101   
00102   } // namespace math
00103 }
00104 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines