blob: f3bc92d557e20a21130e01a2b60211e073f0abd7 [file] [log] [blame]
//-------------------------------------------------------------
// ____ _ _
// / ___|____ _ _ ____ ____| |__ | |
// | | / ___| | | | _ \/ ___| _ \| |
// | |___| | | |_| | | | | |___| | | ||_|
// \____|_| \_____|_| |_|\____|_| |_|(_) Media benchmarks
//
// 2006, Intel Corporation, licensed under Apache 2.0
//
// file : TrackingModelTBB.h
// author :
// description : Observation model for kinematic tree body
// tracking threaded with TBB.
//
// modified :
//--------------------------------------------------------------
#ifndef TRACKINGMODELTBB_H
#define TRACKINGMODELTBB_H
#if defined(HAVE_CONFIG_H)
# include "config.h"
#endif
#include "TrackingModel.h"
#include "tbb/task_scheduler_init.h"
#include "tbb/parallel_for.h"
#include "tbb/parallel_reduce.h"
#include "tbb/blocked_range.h"
#include "tbb/pipeline.h"
#include "TBBtypes.h"
#include <iostream>
#include <iomanip>
#include <sstream>
class TrackingModelTBB : public TrackingModel, public tbb::filter {
protected:
unsigned int mCurFrame; //current frame to process
unsigned int mNumFrames; //total frames to be processed
//Generate an edge map from the original camera image - threaded
virtual void CreateEdgeMap(FlexImage8u &src, FlexImage8u &dst);
public:
TrackingModelTBB() : tbb::filter(serial), mCurFrame(0), mNumFrames(0) {};
virtual ~TrackingModelTBB() {}
//sets
void SetNumFrames(unsigned int frames) {mNumFrames = frames; };
//load and process images - overloaded for future threading
bool GetObservation(float timeval);
//give the model object the processed images
void SetObservation(ImageSetToken &token) {mEdgeMaps = token.edgeMaps; mFGMaps = token.FGmaps; };
//generate processed images for pipeline stage - these get passed to the next pipe stage defined by ParticleFilterTBB.h
void *operator()(void *inToken);
};
#endif //TRACKINGMODELTBB_H