correlation_tracking_tool.h

Go to the documentation of this file.
00001 #ifndef CORR_TRACKING_H
00002 #define CORR_TRACKING_H
00003 
00004 /* #pragma interface */
00005 
00006 #include <functional>
00007 #include <iostream>
00008 #include <list>
00009 #include <cstring>
00010 #include <cmath>
00011 #include <values.h>
00012 #include <vector>
00013 #include "cartesian.h"
00014 #include "corrcoef.h"
00015 #include "image.h"
00016 
00017 namespace mimas {
00018   
00028 template< typename T, class C = corrcoef< std::vector< double > > >
00029 class correlation_tracking_tool : public object
00030 {
00031   protected:
00032     int numPolyPoints; 
00033     int *xpoly, *ypoly; 
00034     std::list< Cartesian<int> > polyCoords, finalPolyCoords; 
00035     image<T> trackingTemplate; 
00036     image<T> trackingMask; 
00037     int templateRows, templateCols; 
00038     Cartesian<int> offsetForFirstCoord; 
00039 
00040   private:
00041     void findRectTemplate(Cartesian<int> &topLeft, Cartesian<int> &bottomRight);
00042     int pointInPolygon(int x, int y);
00043     void * thread(void * ptr); 
00044     double lastTrackingCorr;
00045     int templateArea;
00046     bool autoUpdateTemplate;
00047     double autoUpdateCorrVal;
00048     Cartesian<int> trackingRange, startPoint, trackingDispl;
00049     
00050   public:
00051     void pushPolyCoord(int xcoord, int ycoord); 
00052     const std::list< Cartesian<int> > &getPolyCoords(void) const; 
00053     void showPolyCoords(void); 
00054     void clearPolyCoords(void); 
00055     void sortPolyCoords(void); 
00056     void createTemplate(image<T> &trackingImage); 
00057     void writeTemplateToFilePGM(char *fn); 
00058     void writeMaskedTemplateToFilePGM(char *fn); 
00059     void showPolygonOnImage(image<T> &someImage); 
00060     void showPolygonOnImage(image<T> &someImage, int greylevel); 
00061     double getTrackingCorr(void); 
00062     int getTemplateArea(void); 
00063 #ifdef HAVE_XALAN
00064     void saveParameters( const char *fileName ); 
00065     void loadParameters( const char *fileName ); 
00066 #endif
00067     Cartesian<int> trackCorrelation(image<T> &trackingImage, Cartesian<int> &startCoord, Cartesian<int> &range, C &c ); 
00068     Cartesian<int> trackCorrelation(image<T> &trackingImage, Cartesian<int> &startCoord, C &c );  
00069     Cartesian<int> trackCorrelation(image<T> &trackingImage, C &c ); 
00070     std::list< Cartesian<int> > trackCorrelationList(image<T> &trackingImage, Cartesian<int> &startCoord, Cartesian<int> &range, C &c ); 
00071     void setAutoUpdateTemplate(bool val); 
00072     void setAutoUpdateCorrVal(double val); 
00073     void setTrackingRange(int range); 
00074     void setTrackingRange(int xrange, int yrange);  
00075     Cartesian<int> getTrackingPoint(void);  
00076     Cartesian<int> getTrackingDisplacement(void);  
00077     correlation_tracking_tool(void); 
00078     virtual ~correlation_tracking_tool(void); 
00079     void variableDiagnostics(void); 
00080     
00081     bool debug;
00082 };
00083 
00084 }
00085 
00086 #include "correlation_tracking_tool.tcc"
00087 
00088 #endif

[GNU/Linux] [Qt] [Mesa] [STL] [Lapack] [Boost] [Magick++] [Xalan-C and Xerces-C] [doxygen] [graphviz] [FFTW] [popt] [xine] [Gnuplot] [gnu-arch] [gcc] [gstreamer] [autoconf/automake/make] [freshmeat.net] [opensource.org] [sourceforge.net] [MMVL]
mimas 2.1 - Copyright Mon Oct 30 11:31:16 2006, Bala Amavasai, Stuart Meikle, Arul Selvan, Fabio Caparrelli, Jan Wedekind, Manuel Boissenin, ...