1 /**************************************************************************** 2 * 3 * ViSP, open source Visual Servoing Platform software. 4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved. 5 * 6 * This software is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * See the file LICENSE.txt at the root directory of this source 11 * distribution for additional information about the GNU GPL. 12 * 13 * For using ViSP with software that can not be combined with the GNU 14 * GPL, please contact Inria about acquiring a ViSP Professional 15 * Edition License. 16 * 17 * See http://visp.inria.fr for more information. 18 * 19 * This software was developed at: 20 * Inria Rennes - Bretagne Atlantique 21 * Campus Universitaire de Beaulieu 22 * 35042 Rennes Cedex 23 * France 24 * 25 * If you have questions regarding the use of this file, please contact 26 * Inria at visp@inria.fr 27 * 28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 30 * 31 * Description: 32 * Implementation for all supported moment features. 33 * 34 * Authors: 35 * Filip Novotny 36 * 37 *****************************************************************************/ 38 /*! 39 \file vpFeatureMomentBasic.h 40 \brief Implementation of the interaction matrix computation for 41 vpMomentBasic. 42 */ 43 44 #ifndef _vpFeatureMomentBasic_h_ 45 #define _vpFeatureMomentBasic_h_ 46 47 #include <visp3/core/vpMomentCommon.h> 48 #include <visp3/core/vpMomentObject.h> 49 #include <visp3/visual_features/vpFeatureMoment.h> 50 51 class vpMomentDatabase; 52 /*! 53 \class vpFeatureMomentBasic 54 55 \ingroup group_visual_features 56 57 \brief Functionality computation for basic moment feature. Computes the 58 interaction matrix associated with vpMomentBasic. 59 60 The interaction matrix for the basic moment feature is defined in 61 \cite Tahri05z, equation (13). This vpFeatureMoment, as well as it's 62 corresponding moment primitive is double-indexed. The interaction matrix \f$ 63 L_{m_{ij}} \f$ is obtained by calling vpFeatureMomentBasic::interaction 64 (i,j) and is associated to \f$ m_{ij} \f$ obtained by vpMomentBasic::get 65 (i,j). vpFeatureMomentBasic computes interaction matrices all interaction 66 matrices up to vpMomentObject::getOrder()-1. \attention The maximum order 67 reached by vpFeatureMomentBasic is NOT the maximum order of the 68 vpMomentObject, it is one unit smaller. For example if you define your 69 vpMomentObject up to order n then vpFeatureMomentBasic will be able to 70 compute interaction matrices up to order n-1 that is \f$ L_{m_{ij}} \f$ with 71 \f$ i+j<=n-1 \f$. 72 73 You can see an example of vpFeatureMomentBasic by looking at the 74 documentation of the vpFeatureMoment class. 75 76 This feature depends on: 77 - vpMomentBasic 78 79 */ 80 class VISP_EXPORT vpFeatureMomentBasic : public vpFeatureMoment 81 { 82 protected: 83 unsigned int order; 84 85 public: 86 vpFeatureMomentBasic(vpMomentDatabase &moments, double A, double B, double C, 87 vpFeatureMomentDatabase *featureMoments = NULL); 88 void compute_interaction(); 89 90 #ifndef DOXYGEN_SHOULD_SKIP_THIS 91 /* Add function due to pure virtual definition in vpBasicFeature.h */ interaction(unsigned int)92 vpMatrix interaction(unsigned int /* select = FEATURE_ALL */) 93 { 94 throw vpException(vpException::functionNotImplementedError, "Not implemented!"); 95 } 96 #endif 97 98 vpMatrix interaction(unsigned int select_one, unsigned int select_two) const; 99 /*! 100 Associated moment name. 101 */ momentName()102 const char *momentName() const { return "vpMomentBasic"; } 103 /*! 104 Feature name. 105 */ name()106 const char *name() const { return "vpFeatureMomentBasic"; } 107 }; 108 #endif 109