JetFiller.H

Go to the documentation of this file.
00001 /*!@file Channels/JetFiller.H */
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005   //
00005 // by the University of Southern California (USC) and the iLab at USC.  //
00006 // See http://iLab.usc.edu for information about this project.          //
00007 // //////////////////////////////////////////////////////////////////// //
00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00010 // in Visual Environments, and Applications'' by Christof Koch and      //
00011 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00012 // pending; application number 09/912,225 filed July 23, 2001; see      //
00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00014 // //////////////////////////////////////////////////////////////////// //
00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00016 //                                                                      //
00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00018 // redistribute it and/or modify it under the terms of the GNU General  //
00019 // Public License as published by the Free Software Foundation; either  //
00020 // version 2 of the License, or (at your option) any later version.     //
00021 //                                                                      //
00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00025 // PURPOSE.  See the GNU General Public License for more details.       //
00026 //                                                                      //
00027 // You should have received a copy of the GNU General Public License    //
00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00030 // Boston, MA 02111-1307 USA.                                           //
00031 // //////////////////////////////////////////////////////////////////// //
00032 //
00033 // Primary maintainer for this file: Rob Peters <rjpeters at usc dot edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Channels/JetFiller.H $
00035 // $Id: JetFiller.H 9412 2008-03-10 23:10:15Z farhan $
00036 //
00037 
00038 #ifndef CHANNELS_JETFILLER_H_DEFINED
00039 #define CHANNELS_JETFILLER_H_DEFINED
00040 
00041 #include "Channels/ChannelVisitor.H"
00042 #include "Channels/Jet.H"
00043 #include "Image/Point2D.H"
00044 
00045 #include <vector>
00046 
00047 /// Fill the components of the given Jet that relate to the called channel
00048 /** All relevant components of the Jet are set to the channel's values
00049     at the specified location across all pyramid levels. The channel
00050     will store its data starting at the given index in the jet, and
00051     will return the number of entries filled. The index vector will be
00052     modified as the various Jet components are explored, but will be
00053     restored to its original state upon completion. */
00054 class JetFiller : public ChannelVisitor
00055 {
00056 public:
00057   /// Construct
00058   JetFiller(const Point2D<int>& loc, Jet<float>& j, bool do_interp);
00059 
00060   /// Virtual destructor
00061   virtual ~JetFiller();
00062 
00063   /// Visit the given ChannelBase node.
00064   virtual void visitChannelBase(ChannelBase& chan);
00065 
00066   /// Visit the given SingleChannel node.
00067   virtual void visitSingleChannel(SingleChannel& chan);
00068 
00069   /// Visit the given ComplexChannel node.
00070   virtual void visitComplexChannel(ComplexChannel& chan);
00071 
00072 private:
00073   Point2D<int> itsLoc;
00074   Jet<float>& itsJet;
00075   bool itsDoInterp;
00076   std::vector<int> itsIndex;
00077 };
00078 
00079 /// Fill the specification of a Jet with data that relate to the called channel
00080 class JetSpecFiller : public ChannelVisitor
00081 {
00082 public:
00083   /// Construct
00084   JetSpecFiller();
00085 
00086   /// Virtual destructor
00087   virtual ~JetSpecFiller();
00088 
00089   /// Visit the given ChannelBase node.
00090   virtual void visitChannelBase(ChannelBase& chan);
00091 
00092   /// Visit the given SingleChannel node.
00093   virtual void visitSingleChannel(SingleChannel& chan);
00094 
00095   /// Visit the given ComplexChannel node.
00096   virtual void visitComplexChannel(ComplexChannel& chan);
00097 
00098   /// Get the resulting JetSpec
00099   rutz::shared_ptr<JetSpec> getJetSpec() const
00100   { return itsJetSpec; }
00101 
00102 private:
00103   rutz::shared_ptr<JetSpec> itsJetSpec;
00104 };
00105 
00106 // ######################################################################
00107 /* So things look consistent in everyone's emacs... */
00108 /* Local Variables: */
00109 /* mode: c++ */
00110 /* indent-tabs-mode: nil */
00111 /* End: */
00112 
00113 #endif // CHANNELS_JETFILLER_H_DEFINED
Generated on Sun May 8 08:40:22 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3