20 #include <yarp/os/BufferedPort.h>
21 #include <yarp/os/LogStream.h>
22 #include <yarp/os/Network.h>
23 #include <yarp/os/RFModule.h>
24 #include <yarp/os/Stamp.h>
25 #include <yarp/os/Time.h>
26 #include <yarp/sig/Image.h>
27 #include <yarp/sig/ImageDraw.h>
28 #include <yarp/sig/ImageFile.h>
29 #include <yarp/sig/Vector.h>
33 #pragma package <opencv>
36 #include <opencv2/opencv.hpp>
37 #include <opencv2/highgui/highgui.hpp>
38 #include <opencv2/core/types_c.h>
41 #include <iCub/pf3dTrackerSupport.hpp>
66 class PF3DTracker :
public yarp::os::RFModule
71 int _numParticlesReceived;
74 std::string _inputVideoPortName;
75 yarp::os::BufferedPort<yarp::sig::ImageOf<yarp::sig::PixelRgb> > _inputVideoPort;
76 std::string _outputVideoPortName;
77 yarp::os::BufferedPort<yarp::sig::ImageOf<yarp::sig::PixelRgb> > _outputVideoPort;
78 std::string _outputDataPortName;
79 yarp::os::BufferedPort<yarp::os::Bottle> _outputDataPort;
80 std::string _inputParticlePortName;
81 yarp::os::BufferedPort<yarp::os::Bottle> _inputParticlePort;
82 std::string _outputParticlePortName;
83 yarp::os::BufferedPort<yarp::os::Bottle> _outputParticlePort;
84 std::string _outputAttentionPortName;
85 yarp::os::BufferedPort<yarp::sig::Vector> _outputAttentionPort;
86 std::string _outputUVDataPortName;
87 yarp::os::BufferedPort<yarp::os::Bottle> _outputUVDataPort;
90 std::string _projectionModel;
95 int _calibrationImageWidth;
96 int _calibrationImageHeight;
97 float _likelihoodThreshold;
100 int _circleVisualizationMode;
101 std::string _initializationMethod;
102 std::string _trackedObjectType;
103 bool _saveImagesWithOpencv;
104 std::string _saveImagesWithOpencvDir;
108 double _attentionOutput;
109 double _attentionOutputMax;
110 double _attentionOutputDecrease;
112 bool _doneInitializing;
118 float _inside_outside_difference_weight;
119 int _colorTransfPolicy;
122 CvMatND* _modelHistogramMat;
123 CvMatND* _innerHistogramMat;
124 CvMatND* _outerHistogramMat;
126 CvMat* _model3dPointsMat;
127 CvMat* _visualization3dPointsMat;
140 CvMat* _projectionMat;
151 CvMat* _particles1to6;
152 CvMat* _newParticles1to6;
166 CvMat* _newParticles;
171 yarp::os::Stamp _yarpTimestamp;
172 yarp::sig::ImageOf<yarp::sig::PixelRgb> *_yarpImage;
174 IplImage* _transformedImage;
179 int _framesNotTracking;
189 bool readModelHistogram(CvMatND* histogram,
const char fileName[]);
190 bool readInitialmodel3dPoints(CvMat* points,std::string fileName);
191 bool readMotionModelMatrix(CvMat* points, std::string fileName);
192 bool computeTemplateHistogram(std::string imageFileName,std::string dataFileName);
193 bool computeHistogram(CvMat* uv, IplImage* transformedImage, CvMatND* innerHistogramMat,
float &usedInnerPoints, CvMatND* outerHistogramMat,
float &usedOuterPoints);
194 bool computeHistogramFromRgbImage(CvMat* uv, IplImage *image, CvMatND* innerHistogramMat,
float &usedInnerPoints, CvMatND* outerHistogramMat,
float &usedOuterPoints);
195 bool calculateLikelihood(CvMatND* templateHistogramMat, CvMatND* innerHistogramMat, CvMatND* outerHistogramMat,
float inside_outside,
float &likelihood);
196 bool place3dPointsPerspective(CvMat* points,
float x,
float y,
float z);
197 int perspective_projection(CvMat* xyz,
float fx,
float fy,
float cx,
float cy, CvMat* uv);
198 void drawContourPerspectiveYARP(CvMat* model3dPointsMat,
float x,
float y,
float z, yarp::sig::ImageOf<yarp::sig::PixelRgb> *image,
float _perspectiveFx,
float _perspectiveFy ,
float _perspectiveCx,
float _perspectiveCy ,
int R,
int G,
int B,
float &meanU,
float &meanV);
199 void drawSampledLinesPerspectiveYARP(CvMat* model3dPointsMat,
float x,
float y,
float z, yarp::sig::ImageOf<yarp::sig::PixelRgb> *image,
float _perspectiveFx,
float _perspectiveFy ,
float _perspectiveCx,
float _perspectiveCy ,
int R,
int G,
int B,
float &meanU,
float &meanV);
200 bool evaluateHypothesisPerspective(CvMat* model3dPointsMat,
float x,
float y,
float z, CvMatND* modelHistogramMat, IplImage* transformedImage,
float fx,
float fy,
float u0,
float v0,
float,
float &likelihood);
205 bool evaluateHypothesisPerspectiveFromRgbImage(CvMat* model3dPoints,
float x,
float y,
float z, CvMatND* modelHistogramMat, IplImage *image,
float fx,
float fy,
float u0,
float v0,
float inside_outside,
float &likelihood);
207 bool systematicR(CvMat* inState, CvMat* weights, CvMat* outState);
208 bool systematic_resampling(CvMat* oldParticlesState, CvMat* oldParticlesWeights, CvMat* newParticlesState, CvMat* cumWeight);
215 virtual bool configure(yarp::os::ResourceFinder &rf);
216 virtual bool close();
217 virtual bool interruptModule();
218 virtual bool updateModule();
219 virtual double getPeriod();
Copyright: (C) 2009 RobotCub Consortium Authors: Matteo Taiana, Ugo Pattacini CopyPolicy: Released un...