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 * Template tracker. 33 * 34 * Authors: 35 * Amaury Dame 36 * Aurelien Yol 37 * Fabien Spindler 38 * 39 *****************************************************************************/ 40 /*! 41 \file vpTemplateTrackerZNCC.h 42 \brief 43 */ 44 45 #ifndef vpTemplateTrackerZNCC_hh 46 #define vpTemplateTrackerZNCC_hh 47 48 #include <math.h> 49 50 #include <visp3/core/vpDisplay.h> 51 #include <visp3/core/vpImage.h> 52 #include <visp3/core/vpImageFilter.h> 53 #include <visp3/core/vpImageTools.h> 54 #include <visp3/core/vpIoTools.h> 55 #include <visp3/core/vpMath.h> 56 #include <visp3/tt/vpTemplateTracker.h> 57 #include <visp3/vision/vpHomography.h> 58 59 #define APPROX_NCC 60 61 /*! 62 \class vpTemplateTrackerZNCC 63 \ingroup group_tt_tracker 64 */ 65 class VISP_EXPORT vpTemplateTrackerZNCC : public vpTemplateTracker 66 { 67 protected: 68 vpRowVector DI; 69 vpRowVector temp; 70 71 protected: 72 double getCost(const vpImage<unsigned char> &I, const vpColVector &tp); getCost(const vpImage<unsigned char> & I)73 double getCost(const vpImage<unsigned char> &I) 74 { 75 vpColVector tp; 76 return getCost(I, tp); 77 } 78 virtual void initHessienDesired(const vpImage<unsigned char> &I) = 0; 79 virtual void trackNoPyr(const vpImage<unsigned char> &I) = 0; 80 81 public: 82 explicit vpTemplateTrackerZNCC(vpTemplateTrackerWarp *warp); 83 setGain(double _gain)84 void setGain(double _gain) { gain = _gain; } 85 }; 86 #endif 87