00001 /*!@file Transport/RandomInput.C A FrameIstream subclass for 00002 generating random images */ 00003 00004 // //////////////////////////////////////////////////////////////////// // 00005 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005 // 00006 // by the 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: Rob Peters <rjpeters at usc dot edu> 00035 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Transport/RandomInput.C $ 00036 // $Id: RandomInput.C 8602 2007-07-20 23:10:44Z rjpeters $ 00037 // 00038 00039 #ifndef TRANSPORT_RANDOMINPUT_C_DEFINED 00040 #define TRANSPORT_RANDOMINPUT_C_DEFINED 00041 00042 #include "Transport/RandomInput.H" 00043 00044 #include "Image/Image.H" 00045 #include "Image/Pixels.H" 00046 #include "Raster/GenericFrame.H" 00047 00048 // ###################################################################### 00049 RandomInput::RandomInput(OptionManager& mgr) 00050 : 00051 FrameIstream(mgr, "Random Input", "RandomInput"), 00052 itsDims(320,240), // if you change this default value, also update 00053 // the documentation of OPT_InputFrameSource in 00054 // Media/MediaOpts.C 00055 itsGenerator(0) 00056 {} 00057 00058 // ###################################################################### 00059 RandomInput::~RandomInput() 00060 {} 00061 00062 // ###################################################################### 00063 void RandomInput::setConfigInfo(const std::string& dimsstring) 00064 { 00065 // NOTE: if you modify any behavior here, then please update the 00066 // corresponding documentation for the global "--in" option inside 00067 // the OPT_InputFrameSource definition in Media/MediaOpts.C 00068 00069 if (dimsstring.size() == 0) 00070 return; 00071 00072 Dims d; convertFromString(dimsstring, d); 00073 this->setDims(d); 00074 } 00075 00076 // ###################################################################### 00077 GenericFrameSpec RandomInput::peekFrameSpec() 00078 { 00079 GenericFrameSpec result; 00080 00081 result.nativeType = GenericFrame::RGB_U8; 00082 result.videoFormat = VIDFMT_AUTO; 00083 result.videoByteSwap = false; 00084 result.dims = itsDims; 00085 result.floatFlags = 0; 00086 00087 return result; 00088 } 00089 00090 // ###################################################################### 00091 GenericFrame RandomInput::readFrame() 00092 { 00093 Image<PixRGB<byte> > result(itsDims, NO_INIT); 00094 00095 for (Image<PixRGB<byte> >::iterator 00096 itr = result.beginw(), stop = result.endw(); itr != stop; ++itr) 00097 { 00098 *itr = PixRGB<byte>(itsGenerator.idraw(256), 00099 itsGenerator.idraw(256), 00100 itsGenerator.idraw(256)); 00101 } 00102 00103 return GenericFrame(result); 00104 } 00105 00106 // ###################################################################### 00107 void RandomInput::setDims(const Dims& s) 00108 { 00109 itsDims = s; 00110 } 00111 00112 // ###################################################################### 00113 /* So things look consistent in everyone's emacs... */ 00114 /* Local Variables: */ 00115 /* indent-tabs-mode: nil */ 00116 /* End: */ 00117 00118 #endif // TRANSPORT_RANDOMINPUT_C_DEFINED