VisualCortexEyeMvt.H

Go to the documentation of this file.
00001 /*!@file Neuro/VisualCortexEyeMvt.H a fake VisualCortex whose saliency map
00002   is built from human eye movement traces */
00003 
00004 // //////////////////////////////////////////////////////////////////// //
00005 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the //
00006 // University of Southern California (USC) and the iLab at USC.         //
00007 // See http://iLab.usc.edu for information about this project.          //
00008 // //////////////////////////////////////////////////////////////////// //
00009 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00010 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00011 // in Visual Environments, and Applications'' by Christof Koch and      //
00012 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00013 // pending; application number 09/912,225 filed July 23, 2001; see      //
00014 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00015 // //////////////////////////////////////////////////////////////////// //
00016 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00017 //                                                                      //
00018 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00019 // redistribute it and/or modify it under the terms of the GNU General  //
00020 // Public License as published by the Free Software Foundation; either  //
00021 // version 2 of the License, or (at your option) any later version.     //
00022 //                                                                      //
00023 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00024 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00025 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00026 // PURPOSE.  See the GNU General Public License for more details.       //
00027 //                                                                      //
00028 // You should have received a copy of the GNU General Public License    //
00029 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00030 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00031 // Boston, MA 02111-1307 USA.                                           //
00032 // //////////////////////////////////////////////////////////////////// //
00033 //
00034 // Primary maintainer for this file: Laurent Itti <itti@usc.edu>
00035 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Neuro/VisualCortexEyeMvt.H $
00036 // $Id: VisualCortexEyeMvt.H 11647 2009-09-03 01:18:22Z itti $
00037 //
00038 
00039 #ifndef VISUALCORTEXEYEMVT_H_DEFINED
00040 #define VISUALCORTEXEYEMVT_H_DEFINED
00041 
00042 #include "Image/ImageSet.H"
00043 #include "Image/LevelSpec.H"
00044 #include "Neuro/VisualCortex.H"
00045 #include "Simulation/SimEvents.H"
00046 #include <vector>
00047 
00048 class SimTime;
00049 class EyeTrace;
00050 
00051 // ######################################################################
00052 //! The VisualCortexEyeMvt Class
00053 /*! This is a fake VisualCortex that outputs a saliency map built from
00054   a number of human eye movement traces. It contains an
00055   EyeTrackerEyeHeadController object that will provide eye position
00056   of the various humans, and it builds some sort of heat map from
00057   those. */
00058 class VisualCortexEyeMvt : public VisualCortex
00059 {
00060 public:
00061   //! Construct with no channel; channels are ignored anyways
00062   VisualCortexEyeMvt(OptionManager& mgr,
00063                      const std::string& descrName = "Visual Cortex Eye Mvt",
00064                      const std::string& tagName = "VisualCortexEyeMvt");
00065 
00066   //! Virtual destructor for safe inheritance.
00067   virtual ~VisualCortexEyeMvt();
00068 
00069   //! Get the output from visual cortex.
00070   virtual Image<float> getOutput();
00071 
00072 protected:
00073   //! Callback for every clock tick, to run our plotting
00074   SIMCALLBACK_DECLARE(VisualCortexEyeMvt, SimEventClockTick);
00075 
00076   //! Callback for every input frame
00077   SIMCALLBACK_DECLARE(VisualCortexEyeMvt, SimEventRetinaImage);
00078 
00079   //! Callback for every time we should save our outputs
00080   SIMCALLBACK_DECLARE(VisualCortexEyeMvt, SimEventSaveOutput);
00081 
00082   //! Callback for every time someone wants our features
00083   SIMREQHANDLER_DECLARE(VisualCortexEyeMvt, SimReqVCXfeatures);
00084 
00085   //! Callback for every time someone wants our maps
00086   SIMREQHANDLER_DECLARE(VisualCortexEyeMvt, SimReqVCXmaps);
00087 
00088   OModelParam<std::string> itsFnames; //!< names of eye movement files
00089   OModelParam<float> itsSigma; //!< sigma of gaussian blobs in pix at sml
00090   OModelParam<float> itsForgetFac; //!< forgetting factor
00091   OModelParam<uint> itsDelay; //!< human-to-human delay, in eye samples
00092   OModelParam<bool> itsUseMax; //!< use max to combine instead of sum
00093   OModelParam<bool> itsSaccadeOnly; //!< plot only when a saccade
00094   OModelParam<LevelSpec> itsLevelSpec; //!< our levelspec
00095   OModelParam<bool> itsSaveOutput;      //!< save our output?
00096   OModelParam<float> itsOutputFactor;   //!< output range factor
00097 
00098   // get started
00099   virtual void start1();
00100 
00101 private:
00102   ImageSet<float> itsMaps;                               // one map per human
00103   std::vector<rutz::shared_ptr<EyeTrace> > itsEyeTrace;  // one per human
00104   std::vector<size_t> itsEyeSample;                      // one per human
00105   Image<float> itsOutputCache;                           // cached output map
00106 };
00107 
00108 #endif
00109 
00110 /* So things look consistent in everyone's emacs... */
00111 /* Local Variables: */
00112 /* indent-tabs-mode: nil */
00113 /* End: */
Generated on Sun May 8 08:41:07 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3