00001 /*!@file Channels/ChannelOpts.C */ 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: 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Channels/ChannelOpts.C $ 00035 // $Id: ChannelOpts.C 14309 2010-12-11 02:23:48Z siagian $ 00036 // 00037 00038 #ifndef CHANNELS_CHANNELOPTS_C_DEFINED 00039 #define CHANNELS_CHANNELOPTS_C_DEFINED 00040 00041 #include "Channels/ChannelOpts.H" 00042 00043 #include "Channels/ColorComputeTypes.H" 00044 #include "Channels/IntegerDecodeType.H" 00045 #include "Channels/MapCombineType.H" 00046 #include "Channels/OrientComputeTypes.H" 00047 #include "Component/ModelOptionDef.H" 00048 #include "Component/OptionManager.H" 00049 #include "Image/LevelSpec.H" 00050 #include "Image/fancynorm.H" 00051 00052 const ModelOptionCateg MOC_CHANNEL = { 00053 MOC_SORTPRI_3, "Channel-Related Options" }; 00054 00055 // Format here is: 00056 // 00057 // { MODOPT_TYPE, "name", &MOC_CATEG, OPTEXP_CORE, 00058 // "description of what option does", 00059 // "long option name", 'short option name', "valid values", "default value" } 00060 // 00061 00062 // alternatively, for MODOPT_ALIAS option types, format is: 00063 // 00064 // { MODOPT_ALIAS, "", &MOC_ALIAS, OPTEXP_CORE, 00065 // "description of what alias does", 00066 // "long option name", 'short option name', "", "list of options" } 00067 // 00068 00069 // NOTE: do not change the default value of any existing option unless 00070 // you really know what you are doing! Many components will determine 00071 // their default behavior from that default value, so you may break 00072 // lots of executables if you change it. 00073 00074 // #################### Channel options: 00075 // Used by: VisualCortex, ComplexChannel, SingleChannel (and derivatives) 00076 const ModelOptionDef OPT_UseOlderVersion = 00077 { MODOPT_FLAG, "UseOlderVersion", &MOC_CHANNEL, OPTEXP_CORE, 00078 "Use the older version where we normalize responses within all feature " 00079 "types", 00080 "use-older-version", '\0', "", "true" }; 00081 00082 // Used by: ChannelBase (and derivatives) 00083 const ModelOptionDef OPT_ChannelOutputRangeMax = 00084 { MODOPT_ARG(float), "ChannelOutputRangeMax", &MOC_CHANNEL, OPTEXP_CORE, 00085 "Max of the channel's output range", 00086 "chanout-max", '\0', "<float>", "10.0" }; 00087 00088 // Used by: ChannelBase (and derivatives) 00089 const ModelOptionDef OPT_ChannelOutputRangeMin = 00090 { MODOPT_ARG(float), "ChannelOutputRangeMin", &MOC_CHANNEL, OPTEXP_CORE, 00091 "Min of the channel's output range", 00092 "chanout-min", '\0', "<float>", "0.0" }; 00093 00094 // Used by: DirectFeedChannel 00095 const ModelOptionDef OPT_MapLevel = 00096 { MODOPT_ARG(unsigned int), "MapLevel", &MOC_CHANNEL, OPTEXP_CORE, 00097 "The level of the saliency map in Channels that don't need LevelSpec", 00098 "maplevel", '\0', "<uint>", "4" }; 00099 00100 // Used by: SingleChannel (and derivatives) 00101 const ModelOptionDef OPT_LevelSpec = 00102 { MODOPT_ARG(LevelSpec), "LevelSpec", &MOC_CHANNEL, OPTEXP_CORE, 00103 "LevelSpec to use in channels. This controls the range of " 00104 "spatial scales used in constructing center-surround maps, and " 00105 "also controls the scale of the channel output maps. cmin and " 00106 "cmax are the lowest (largest) and highest (largest) pyramid " 00107 "levels to be used for the center scale in center-surround " 00108 "operations. A level of 0 is the bottom pyramid level at the " 00109 "original dimensions of the input image; each level above 0 " 00110 "is reduced by a factor of 2 in the x and y dimensions, so e.g. " 00111 "level 4 is 16-fold reduced in x and y. delmin and delmax " 00112 "represent the range of differences at which the surround level " 00113 "is offset from the center level. maplev is the scale at which " 00114 "channel output should be generated. For example, the default " 00115 "setting of 2,4,3,4,4 will use center scales 2-4 with deltas " 00116 "of 3 and 4, for six center/surround pairs of 2/5, 2/6, 3/6, 3/7, " 00117 "4/7 and 4/8, and the channel output will be at scale 4.", 00118 "levelspec", '\0', "<cmin,cmax,delmin,delmax,maplev>", "2,4,3,4,4" }; 00119 00120 // Used by: SingleChannel, ComplexChannel (and derivatives), VisualCortex 00121 const ModelOptionDef OPT_MaxNormType = 00122 { MODOPT_ARG(MaxNormType), "MaxNormType", &MOC_CHANNEL, OPTEXP_CORE, 00123 "Type of MaxNormalization to use", 00124 "maxnorm-type", '\0', "<None|Maxnorm|Fancy|FancyFast|FancyOne|" 00125 "FancyLandmark|Landmark|FancyWeak|Ignore|Surprise>", "Fancy" }; 00126 00127 // Used by: SingleChannel (and derivatives) 00128 const ModelOptionDef OPT_SingleChannelQueueLen = 00129 { MODOPT_ARG(int), "SingleChannelQueueLen", &MOC_CHANNEL, OPTEXP_CORE, 00130 "Queue length for channels", 00131 "qlen", '\0', "<int>", "1" }; 00132 00133 // Used by: SingleChannel (and derivatives) 00134 const ModelOptionDef OPT_SingleChannelTimeDecay = 00135 { MODOPT_ARG(double), "SingleChannelTimeDecay", &MOC_CHANNEL, OPTEXP_CORE, 00136 "Time decay for channel queues", 00137 "qtime-decay", '\0', "<float>", "20.0" }; 00138 00139 // Used by: OrientationChannel 00140 const ModelOptionDef OPT_NumOrientations = 00141 { MODOPT_ARG(unsigned int), "NumOrientations", &MOC_CHANNEL, OPTEXP_CORE, 00142 "Number of oriented channels", 00143 "num-orient", '\0', "<int>", "4" }; 00144 00145 // Used by: OrientationChannel 00146 const ModelOptionDef OPT_OriInteraction = 00147 { MODOPT_ARG_STRING, "OriInteraction", &MOC_CHANNEL, OPTEXP_CORE, 00148 "This describes the way in which the different orientations " 00149 "within the OrientationChannel interact with each other. " 00150 "'None' is for no interaction (default); for 'SubtractMean', " 00151 "the mean of all orientation pyramids is subtracted from each " 00152 "orientation pyramid. You can determine your own interaction by " 00153 "specifying a vector with interaction coefficients: 'c1,...,cn'" 00154 " where n is the number of orientations. c1 is the coeffiecient " 00155 "for an orientation itself, c2 for the one with the next higher " 00156 "angle and so on. For instance, for n=4, 'None' is the same as " 00157 "'1,0,0,0', and 'SubtractMean' is the same as " 00158 "'0.75,-0.25,-0.25,-0.25'", 00159 "ori-interaction", '\0', "<None|SubtractMean|c1,...,cn>", 00160 "None" }; 00161 00162 // Used by: GaborChannel 00163 const ModelOptionDef OPT_OrientComputeType = 00164 { MODOPT_ARG(OrientComputeType), "OrientComputeType", &MOC_CHANNEL, OPTEXP_CORE, 00165 "Type of computation used to compute orientations", 00166 "oricomp-type", '\0', "<Steerable|Gabor|GaborEnergyNorm>", 00167 "Steerable" }; 00168 00169 // Used by: GaborChannel 00170 const ModelOptionDef OPT_GaborChannelIntensity = 00171 { MODOPT_ARG(double), "GaborChannelIntensity", &MOC_CHANNEL, OPTEXP_CORE, 00172 "Intensity coefficient for Gabor channel", 00173 "gabor-intens", '\0', "<double>", "10.0" }; 00174 00175 // Used by: GaborChannel 00176 const ModelOptionDef OPT_UseTrigTab = 00177 { MODOPT_FLAG, "UseTrigTab", &MOC_CHANNEL, OPTEXP_CORE, 00178 "Whether to accelerate trig operations by using table lookup, at the " 00179 "expense of some loss of numerical precision", 00180 "use-trig-tab", '\0', "", "false" }; 00181 00182 // Used by: DirectionChannel 00183 const ModelOptionDef OPT_DirectionChannelTakeSqrt = 00184 { MODOPT_FLAG, "DirectionChannelTakeSqrt", &MOC_CHANNEL, OPTEXP_CORE, 00185 "Take square root of our Reichardt output if true", 00186 "direction-sqrt", '\0', "", "false" }; 00187 00188 // Used by: DirectionChannel 00189 const ModelOptionDef OPT_DirectionChannelLowThresh = 00190 { MODOPT_ARG(float), "DirectionChannelLowThresh", &MOC_CHANNEL, OPTEXP_CORE, 00191 "Low threshold to allpy to eliminate small motion responses", 00192 "direction-lowthresh", '\0', "<float>", "3.0" }; 00193 00194 // Used by: MultiColorBandChannel 00195 const ModelOptionDef OPT_NumColorBands = 00196 { MODOPT_ARG(unsigned int), "NumColorBands", &MOC_CHANNEL, OPTEXP_CORE, 00197 "Number of hue-band channels", 00198 "num-colorband", '\0', "<int>", "3" }; 00199 00200 // Used by: MultiColorBandChannel 00201 const ModelOptionDef OPT_NumSatBands = 00202 { MODOPT_ARG(unsigned int), "NumSatBands", &MOC_CHANNEL, OPTEXP_CORE, 00203 "Number of saturation-band channels", 00204 "num-satband", '\0', "<int>", "3" }; 00205 00206 // Used by: MultiColorBandChannel 00207 const ModelOptionDef OPT_HueBandWidth = 00208 { MODOPT_ARG(float), "HueBandWidth", &MOC_CHANNEL, OPTEXP_CORE, 00209 "Width of each hue band", 00210 "sigma-hueband", '\0', "<float>", "30" }; 00211 00212 // Used by: MultiColorBandChannel 00213 const ModelOptionDef OPT_SatBandWidth = 00214 { MODOPT_ARG(float), "SatBandWidth", &MOC_CHANNEL, OPTEXP_CORE, 00215 "Width of each saturation band", 00216 "sigma-satband", '\0', "<float>", "0.3" }; 00217 00218 // Used by: IntensityBandChannel 00219 const ModelOptionDef OPT_NumIntensityBands = 00220 { MODOPT_ARG(unsigned int), "NumIntensityBands", &MOC_CHANNEL, OPTEXP_CORE, 00221 "Number of intensity-band channels", 00222 "num-intensityband", '\0', "<int>", "3" }; 00223 00224 // Used by:IntensityBandChannel 00225 const ModelOptionDef OPT_IntensityBandWidth = 00226 { MODOPT_ARG(float), "IntensityBandWidth", &MOC_CHANNEL, OPTEXP_CORE, 00227 "Width of each intensity band", 00228 "sigma-intband", '\0', "<float>", "22" }; 00229 00230 // Used by: MotionChannel 00231 const ModelOptionDef OPT_NumDirections = 00232 { MODOPT_ARG(unsigned int), "NumDirections", &MOC_CHANNEL, OPTEXP_CORE, 00233 "Number of direction-selective motion channels", 00234 "num-directions", '\0', "<int>", "4" }; 00235 00236 // Used by: MotionSpatioTemporalChannel 00237 const ModelOptionDef OPT_NumSpatioTemporalDirections = 00238 { MODOPT_ARG(unsigned int), "NumSpatioTemporalDirections", &MOC_CHANNEL, OPTEXP_CORE, 00239 "Number of directions for spatiotemporal motion channels", 00240 "num-spatiotemporaldirections", '\0', "<int>", "8" }; 00241 00242 // Used by: MotionSpatioTemporalChannel 00243 const ModelOptionDef OPT_NumSpatioTemporalSpeeds = 00244 { MODOPT_ARG(unsigned int), "NumSpatioTemporalSpeeds", &MOC_CHANNEL, OPTEXP_CORE, 00245 "Number of optimal speeds for spatiotemporal motion channels", 00246 "num-spatiotemporalspeeds", '\0', "<int>", "3" }; 00247 00248 // Used by: MotionOpticalFlowChannel 00249 const ModelOptionDef OPT_NumOpticalFlowDirections = 00250 { MODOPT_ARG(unsigned int), "NumOpticalFlowDirections", &MOC_CHANNEL, OPTEXP_CORE, 00251 "Number of directions for optical flow motion channels", 00252 "num-opticalflowdirections", '\0', "<int>", "8" }; 00253 00254 // Used by: FOEChannel 00255 const ModelOptionDef OPT_NumDirectionsFOE = 00256 { MODOPT_ARG(unsigned int), "NumDirections", &MOC_CHANNEL, OPTEXP_CORE, 00257 "Number of direction-selective foe channels", 00258 "num-foedirections", '\0', "<int>", "4" }; 00259 00260 00261 // Used by: FOEMstChannel 00262 const ModelOptionDef OPT_FoeMSTChannelDelta = 00263 { MODOPT_ARG(uint), "FoeMSTChannelDelta", &MOC_CHANNEL, OPTEXP_CORE, 00264 "Distance from current pixel at which the presence or absence of " 00265 "features should be checked for, when computing junction filter " 00266 "outputs in foeMstChannel (--vc-chans=B).", 00267 "foeMst-delta", '\0', "<uint>", "6" }; 00268 00269 00270 // Used by: StereoChannel 00271 const ModelOptionDef OPT_NumTheta = 00272 { MODOPT_ARG(unsigned int), "NumTheta", &MOC_CHANNEL, OPTEXP_CORE, 00273 "Number of oriented disparity channels", 00274 "num-theta", '\0', "<int>", "1" }; 00275 00276 // Used by: LJunctionChannel 00277 const ModelOptionDef OPT_LJunctionChannelDelta = 00278 { MODOPT_ARG(uint), "LJunctionChannelDelta", &MOC_CHANNEL, OPTEXP_CORE, 00279 "Distance from current pixel at which the presence or absence of " 00280 "features should be checked for, when computing junction filter " 00281 "outputs in LJunctionChannel (--vc-chans=L).", 00282 "l-junction-delta", '\0', "<uint>", "6" }; 00283 00284 // Used by: TJunctionChannel 00285 const ModelOptionDef OPT_TJunctionChannelDelta = 00286 { MODOPT_ARG(uint), "TJunctionChannelDelta", &MOC_CHANNEL, OPTEXP_CORE, 00287 "Distance from current pixel at which the presence or absence of " 00288 "features should be checked for, when computing junction filter " 00289 "outputs in TJunctionChannel (--vc-chans=T).", 00290 "t-junction-delta", '\0', "<uint>", "6" }; 00291 00292 // Used by: XJunctionChannel 00293 const ModelOptionDef OPT_XJunctionChannelDelta = 00294 { MODOPT_ARG(uint), "XJunctionChannelDelta", &MOC_CHANNEL, OPTEXP_CORE, 00295 "Distance from current pixel at which the presence or absence of " 00296 "features should be checked for, when computing junction filter " 00297 "outputs in XJunctionChannel (--vc-chans=X).", 00298 "x-junction-delta", '\0', "<uint>", "6" }; 00299 00300 // Used by: EndPointChannel (and derivatives) 00301 const ModelOptionDef OPT_EndPointChannelDelta = 00302 { MODOPT_ARG(uint), "EndPointChannelDelta", &MOC_CHANNEL, OPTEXP_CORE, 00303 "Distance from current pixel at which the presence or absence of " 00304 "features should be checked for, when computing junction filter " 00305 "outputs in EndPointChannel (--vc-chans=E).", 00306 "end-point-delta", '\0', "<uint>", "6" }; 00307 00308 // Used by: LJunctionChannel 00309 const ModelOptionDef OPT_NumLOrients = 00310 { MODOPT_ARG(unsigned int), "NumLOrients", &MOC_CHANNEL, OPTEXP_CORE, 00311 "Number of oriented l-junction channels", 00312 "num-l-orients", '\0', "<int>", "4" }; 00313 00314 // Used by: TJunctionChannel 00315 const ModelOptionDef OPT_NumTOrients = 00316 { MODOPT_ARG(unsigned int), "NumTOrients", &MOC_CHANNEL, OPTEXP_CORE, 00317 "Number of oriented t-junction channels", 00318 "num-t-orients", '\0', "<int>", "4" }; 00319 00320 // Used by: XJunctionChannel 00321 const ModelOptionDef OPT_NumXOrients = 00322 { MODOPT_ARG(unsigned int), "NumXOrients", &MOC_CHANNEL, OPTEXP_CORE, 00323 "Number of oriented x-junction channels", 00324 "num-x-orients", '\0', "<int>", "2" }; 00325 00326 // Used by: EndPointChannel 00327 const ModelOptionDef OPT_NumEOrients = 00328 { MODOPT_ARG(unsigned int), "NumEOrients", &MOC_CHANNEL, OPTEXP_CORE, 00329 "Number of oriented end-point channels", 00330 "num-e-orients", '\0', "<int>", "4" }; 00331 00332 // Used by: LJunctionChannel 00333 const ModelOptionDef OPT_LFullImplementation = 00334 { MODOPT_FLAG, "LFullImplementation", &MOC_CHANNEL, OPTEXP_CORE, 00335 "Use full implementation of the l-junction channel", 00336 "use-full-l", '\0', "", "false" }; 00337 00338 // Used by: TJunctionChannel 00339 const ModelOptionDef OPT_TFullImplementation = 00340 { MODOPT_FLAG, "TFullImplementation", &MOC_CHANNEL, OPTEXP_CORE, 00341 "Use full implementation of the t-junction channel", 00342 "use-full-t", '\0', "", "false" }; 00343 00344 // Used by: XJunctionChannel 00345 const ModelOptionDef OPT_XFullImplementation = 00346 { MODOPT_FLAG, "XFullImplementation", &MOC_CHANNEL, OPTEXP_CORE, 00347 "Use full implementation of the x-junction channel", 00348 "use-full-x", '\0', "", "false" }; 00349 00350 // Used by: EndPointChannel 00351 const ModelOptionDef OPT_EFullImplementation = 00352 { MODOPT_FLAG, "EFullImplementation", &MOC_CHANNEL, OPTEXP_CORE, 00353 "Use full implementation of the end-point channel", 00354 "use-full-e", '\0', "", "false" }; 00355 00356 // Used by: SingleChannel (and derivatives) 00357 const ModelOptionDef OPT_SingleChannelUseSplitCS = 00358 { MODOPT_FLAG, "SingleChannelUseSplitCS", &MOC_CHANNEL, OPTEXP_CORE, 00359 "Use split positive/negative center-surround computations", 00360 "use-split-cs", '\0', "", "false" }; 00361 00362 // Used by: SingleChannel (and derivatives) 00363 const ModelOptionDef OPT_SingleChannelSaveRawMaps = 00364 { MODOPT_FLAG, "SingleChannelSaveRawMaps", &MOC_CHANNEL, OPTEXP_SAVE, 00365 "Save raw input maps (pyramid levels) from all single channels (\"SR\")", 00366 "save-raw-maps", '\0', "", "false" }; 00367 00368 // Used by: SingleChannel (and derivatives) 00369 const ModelOptionDef OPT_SingleChannelComputeFullPyramidForGist = 00370 { MODOPT_FLAG, "SingleChannelComputeFullPyramidForGist", &MOC_CHANNEL, OPTEXP_SAVE, 00371 "Save raw input maps (pyramid levels) from all single channels for gist" 00372 "computation (\"SR\")", 00373 "save-raw-maps-gist", '\0', "", "false" }; 00374 00375 // Used by: SingleChannel (and derivatives) 00376 const ModelOptionDef OPT_SingleChannelSaveFeatureMaps = 00377 { MODOPT_FLAG, "SingleChannelSaveFeatureMaps", &MOC_CHANNEL, OPTEXP_SAVE, 00378 "Save center-surround feature maps from all single channels (\"SF\")", 00379 "save-feature-maps", '\0', "", "false" }; 00380 00381 // Used by: SingleChannel (and derivatives) 00382 const ModelOptionDef OPT_SingleChannelSaveOutputMap = 00383 { MODOPT_FLAG, "SingleChannelSaveOutputMap", &MOC_CHANNEL, OPTEXP_SAVE, 00384 "Save combined center-surround output maps from all single channels (\"SO\")", 00385 "save-featurecomb-maps", '\0', "", "false" }; 00386 00387 // Used by: ComplexChannel (and derivatives) 00388 const ModelOptionDef OPT_ComplexChannelSaveOutputMap = 00389 { MODOPT_FLAG, "ComplexChannelSaveOutputMap", &MOC_CHANNEL, OPTEXP_SAVE, 00390 "Save conspicuity maps from all complex channels (\"CO\")", 00391 "save-conspic-maps", '\0', "", "false" }; 00392 00393 // Used by: ComplexChannel 00394 const ModelOptionDef OPT_ComplexChannelMapCombineType = 00395 { MODOPT_ARG(MapCombineType), "ComplexChannelMapCombineType", &MOC_CHANNEL, OPTEXP_CORE, 00396 "Strategy used by ComplexChannel for combining output maps from " 00397 "subchannels. Default strategy is summation; alternatives include " 00398 "pixel-wise max.", 00399 "map-combine-type", '\0', "<Sum|Max>", "Sum" }; 00400 00401 // Used by: ColorChannel 00402 const ModelOptionDef OPT_ColorComputeType = 00403 { MODOPT_ARG(ColorComputeType), "ColorComputeType", &MOC_CHANNEL, OPTEXP_CORE, 00404 "Type of computation used to compute RG and BY color opponencies", 00405 "color-comp-type", '\0', "<Standard|Simple|StandardFull>", 00406 "Standard" }; 00407 00408 // Used by: DummyChannel 00409 const ModelOptionDef OPT_DummyChannelFactor = 00410 { MODOPT_ARG(float), "DummyChannelFactor", &MOC_CHANNEL, OPTEXP_CORE, 00411 "Factor to multiply the input by, or 0.0 for nothing", 00412 "dummychannel-factor", '\0', "<float>", "0.0" }; 00413 00414 00415 // Used by: TcorrChannel 00416 const ModelOptionDef OPT_TcorrChannelFrameLag = 00417 { MODOPT_ARG(int), "TcorrChannelFrameLag", &MOC_CHANNEL, OPTEXP_CORE, 00418 "Frame lag with which to compute the temporal correlations", 00419 "tcorrchannel-framelag", '\0', "<int>", "1" }; 00420 00421 00422 // Used by: ScorrChannel 00423 const ModelOptionDef OPT_ScorrChannelRadius = 00424 { MODOPT_ARG(int), "ScorrChannelRadius", &MOC_CHANNEL, OPTEXP_CORE, 00425 "Radius (in saliency map pixels) to compute the spatial correlations", 00426 "scorrchannel-radius", '\0', "<int>", "1" }; 00427 00428 // Used by: SingleChannel 00429 const ModelOptionDef OPT_SubmapAlgoType = 00430 { MODOPT_ARG_STRING, "SubmapAlgoType", &MOC_CHANNEL, OPTEXP_CORE, 00431 "Name of the SubmapAlgorithm type to use in SingleChannel", 00432 "submap-algo", '\0', "<Std|List>", "Std" }; 00433 00434 // Used by: SingleChannel 00435 const ModelOptionDef OPT_GetSingleChannelStats = 00436 { MODOPT_FLAG, "GetSingleChannelStats", &MOC_CHANNEL, OPTEXP_SAVE, 00437 "Save (append) several types of statistics for each single channel to sc_stats.txt", 00438 "save-channel-stats", '\0', "", "false" }; 00439 00440 // Used by: SingleChannel 00441 const ModelOptionDef OPT_SaveStatsPerChannel = 00442 { MODOPT_FLAG, "SaveStatsPerChannel", &MOC_CHANNEL, OPTEXP_SAVE, 00443 "When saving channel stats, should we put the data for each channel into its own file?", 00444 "save-stats-per-channel", '\0', "", "false" }; 00445 00446 // Used by: SingleChannel 00447 const ModelOptionDef OPT_SaveStatsPerChannelFreq = 00448 { MODOPT_FLAG, "SaveStatsPerChannelFreq", &MOC_CHANNEL, OPTEXP_SAVE, 00449 "When saving channel stats, should we also save frequency data?", 00450 "save-stats-per-channel-freq", '\0', "", "false" }; 00451 00452 // Used by: SingleChannel 00453 const ModelOptionDef OPT_GetSingleChannelStatsFile = 00454 { MODOPT_ARG(std::string), "GetSingleChannelStatsFile", &MOC_CHANNEL, 00455 OPTEXP_SAVE, 00456 "File name to use for single channel stats file", 00457 "save-channel-stats-name", '\0', "<string>", "sc_stats.txt" }; 00458 00459 // Used by: SingleChannel 00460 const ModelOptionDef OPT_GetSingleChannelStatsTag = 00461 { MODOPT_ARG(std::string), "GetSingleChannelStatsTag", &MOC_CHANNEL, 00462 OPTEXP_SAVE, 00463 "Tag name to use for single channel stats file", 00464 "save-channel-stats-tag", '\0', "<string>", "NULL" }; 00465 00466 // Used by: H2SVChannel 00467 const ModelOptionDef OPT_UseH2SV1 = 00468 { MODOPT_FLAG, "UseH2SV1", &MOC_CHANNEL, OPTEXP_CORE, 00469 "Use H2SV1 color type in H2SV rather than H2SV2", 00470 "use-h2sv1", '\0', "", "false" }; 00471 00472 // Used by: CompositeColorChannel 00473 const ModelOptionDef OPT_CompColorDoubleOppWeight = 00474 { MODOPT_ARG(double), "CompColorDoubleOppWeight", &MOC_CHANNEL, OPTEXP_CORE, 00475 "Weight to assign to double-opponent channels in CompositeColorChannel", 00476 "compcolor-double-weight", '\0', "<double>", "1.0" }; 00477 00478 // Used by: CompositeColorChannel 00479 const ModelOptionDef OPT_CompColorSingleOppWeight = 00480 { MODOPT_ARG(double), "CompColorSingleOppWeight", &MOC_CHANNEL, OPTEXP_CORE, 00481 "Weight to assign to single-opponent channels in CompositeColorChannel", 00482 "compcolor-single-weight", '\0', "<double>", "1.0" }; 00483 00484 const ModelOptionCateg MOC_INTCHANNEL = { 00485 MOC_SORTPRI_3, "Channel-Related Integer Math Options" }; 00486 00487 // Used by: IntegerSimpleChannel, IntegerComplexChannel 00488 const ModelOptionDef OPT_IntChannelScaleBits = 00489 { MODOPT_ARG(uint), "IntChannelScaleBits", &MOC_INTCHANNEL, OPTEXP_CORE, 00490 "Number of working bits to use in integer channels", 00491 "int-chan-scale-bits", '\0', "<uint>", "30" }; 00492 00493 // Used by: IntegerSimpleChannel, IntegerComplexChannel 00494 const ModelOptionDef OPT_IntChannelOutputRangeMax = 00495 { MODOPT_ARG(int), "IntChannelOutputRangeMax", &MOC_INTCHANNEL, OPTEXP_CORE, 00496 "Max of the integer channel's output range", 00497 "int-chanout-max", '\0', "<int>", "32768" }; 00498 00499 // Used by: IntegerSimpleChannel, IntegerComplexChannel 00500 const ModelOptionDef OPT_IntChannelOutputRangeMin = 00501 { MODOPT_ARG(int), "IntChannelOutputRangeMin", &MOC_INTCHANNEL, OPTEXP_CORE, 00502 "Min of the integer channel's output range", 00503 "int-chanout-min", '\0', "<int>", "0" }; 00504 00505 // Used by: IntegerMathEngine 00506 const ModelOptionDef OPT_IntMathLowPass5 = 00507 { MODOPT_ARG(std::string), "IntMathLowPass5", &MOC_INTCHANNEL, OPTEXP_CORE, 00508 "Which integer lowpass5 implementation to use", 00509 "int-math-lowpass5", '\0', "<lp5std|lp5optim>", "lp5optim" }; 00510 00511 // Used by: IntegerMathEngine 00512 const ModelOptionDef OPT_IntMathLowPass9 = 00513 { MODOPT_ARG(std::string), "IntMathLowPass9", &MOC_INTCHANNEL, OPTEXP_CORE, 00514 "Which integer lowpass9 implementation to use", 00515 "int-math-lowpass9", '\0', "<lp9std|lp9optim>", "lp9optim" }; 00516 00517 const ModelOptionDef OPT_IntInputDecode = 00518 { MODOPT_ARG(IntegerDecodeType), "IntDecodeType", 00519 &MOC_INTCHANNEL, OPTEXP_CORE, 00520 "Which type of integer decoding to apply to input frames to " 00521 "extract the luminance and chrominance components. The 'rgb' " 00522 "decoding strategy is used by default, in which the input frame " 00523 "is converted to 8-bit RGB, and from there the luminance and " 00524 "chrominance are computed separately. The 'video' decoding " 00525 "strategy may be more efficient if the input frames are natively " 00526 "in some YUV format, since the luminance and chrominance are " 00527 "computed in a single pass over the YUV data, with the Y component " 00528 "used for the luminance and Y-normalized U/Y and V/Y components " 00529 "used for chrominance; note that 'video' decoding strategy will " 00530 "give somewhat different results from the 'rgb' decoding.", 00531 "int-input-decode", '\0', "<rgb|video>", "rgb" }; 00532 00533 const ModelOptionDef OPT_ALIASsaveChannelOutputs = 00534 { MODOPT_ALIAS, "ALIASsaveChannelOutputs", &MOC_CHANNEL, OPTEXP_SAVE, 00535 "Save all channel outputs", 00536 "save-channel-outputs", '\0', "", 00537 "--save-featurecomb-maps --save-conspic-maps" }; 00538 00539 const ModelOptionDef OPT_ALIASsaveChannelInternals = 00540 { MODOPT_ALIAS, "ALIASsaveChannelInternals", &MOC_CHANNEL, OPTEXP_SAVE, 00541 "Save all available channel internal maps", 00542 "save-channel-internals", '\0', "", 00543 "--save-raw-maps --save-feature-maps" }; 00544 00545 // ###################################################################### 00546 const ModelOptionCateg MOC_VCX = { 00547 MOC_SORTPRI_3, "VisualCortex-Related Options" }; 00548 00549 // Used by: VisualCortex (and derivatives) 00550 const ModelOptionDef OPT_RawVisualCortexOutputFactor = 00551 { MODOPT_ARG(float), "RawVisualCortexOutputFactor", &MOC_VCX, OPTEXP_CORE, 00552 "Factor applied to outputs of VisualCortex to scale them to Amps of " 00553 "synaptic input currents to saliency map", 00554 "vcx-outfac", '\0', "<float>", "1.0e-9" }; 00555 00556 // Used by: VisualCortex (and derivatives) 00557 const ModelOptionDef OPT_RawVisualCortexNoise = 00558 { MODOPT_ARG(float), "RawVisualCortexNoise", &MOC_VCX, OPTEXP_CORE, 00559 "Noise applied to outputs of VisualCortex after --vcx-outfac has been applied", 00560 "vcx-noise", '\0', "<float>", "1.0e-12" }; 00561 00562 // Used by: VisualCortex and derivatives 00563 const ModelOptionDef OPT_VCXsaveOutTo = 00564 { MODOPT_ARG_STRING, "VCXsaveOutTo", &MOC_VCX, OPTEXP_CORE, 00565 "Save the raw VisualCortex output map to the designated MGZ file if " 00566 "a filename is specified. The saved outputs can later be re-read using " 00567 "the --vcx-load-out-from option.", 00568 "vcx-save-out-to", '\0', "<filename.mgz>", "" }; 00569 00570 // Used by: VisualCortex and derivatives 00571 const ModelOptionDef OPT_VCXloadOutFrom = 00572 { MODOPT_ARG_STRING, "VCXloadOutFrom", &MOC_VCX, OPTEXP_CORE, 00573 "Load the raw VisualCortex output map from the designated MGZ file if " 00574 "a filename is specified. Typically, the MGZ file should contain maps " 00575 "which have been previously saved using the --vcx-save-out-to option. " 00576 "CAUTION: When this option is in use, we will not compute much in " 00577 "the VisualCortex, instead reading the precomputed results off the disk. " 00578 "This means in particular that whichever channels you may have in your " 00579 "VisualCortex will not affect its output.", 00580 "vcx-load-out-from", '\0', "<filename.mgz>", "" }; 00581 00582 // Used by: RawVisualCortex 00583 const ModelOptionDef OPT_RawVisualCortexChans = 00584 { MODOPT_ARG_STRING, "RawVisualCortexChans", &MOC_VCX, OPTEXP_CORE, 00585 "Configure which channels to use in your VisualCortex by " 00586 "specifying a series of letters from:\n" 00587 " C: double-opponent color center-surround\n" 00588 " D: dummy channel\n" 00589 " E: end-stop detector\n" 00590 " F: flicker center-surround\n" 00591 " G: multi-color band channel\n" 00592 " H: H2SV channel\n" 00593 " Y: Use a Depth Channel with spatial depth information\n" 00594 " I: intensity center-surround\n" 00595 " K: skin hue detector\n" 00596 " L: L-junction detector\n" 00597 " M: motion energy center-surround\n" 00598 " U: foe\n" 00599 " B: FoeMST\n" 00600 " N: intensity-band channel\n" 00601 " O: orientation contrast\n" 00602 " P: SIFT channel\n" 00603 " Q: CIELab Color channel\n" 00604 " R: Pedestrian channel\n" 00605 " S: composite single-opponent color center-surround\n" 00606 " T: T-junction detector\n" 00607 " V: short-range orientation interactions (\"sox\") channel\n" 00608 " W: contour channel\n" 00609 " X: X-junction detector\n" 00610 " Z: dummy zero channel\n" 00611 " A: Object Detection channel\n" 00612 " J: DKL Color channel\n" 00613 " U: Foreground Detection Channel\n" 00614 " i: Imagize 3-chanel Silicon Retina Channel\n" 00615 " s: Motion SpatioTemporal Energy Channel\n" 00616 " o: Motion Optical Flow Channel\n" 00617 "with possible optional weights (given just after the channel letter, " 00618 "with a ':' in between). EXAMPLE: 'IO:5.0M' will use intensity (weight 1.0), orientation " 00619 "(weight 5.0) and motion (weight 1.0) channels", 00620 "vc-chans", '\0', 00621 "<CIOFM...>", 00622 "CFIOM" }; 00623 00624 // Used by: IntegerRawVisualCortex 00625 const ModelOptionDef OPT_IntegerRawVisualCortexChans = 00626 { MODOPT_ARG_STRING, "IntegerRawVisualCortexChans", &MOC_VCX, OPTEXP_CORE, 00627 "The string specifies a list of channels to use in your IntegerVisualCortex as a series of " 00628 "letters from:\n" 00629 " C: double-opponent color center-surround\n" 00630 " I: intensity center-surround\n" 00631 " O: orientation contrast\n" 00632 " F: flicker center-surround\n" 00633 " M: motion energy center-surround\n" 00634 " U: foe\n" 00635 " B: FoeMST\n" 00636 "with possible optional weights (given just after the channel letter, " 00637 "with a ':' in between). Note that this is a subset of what is " 00638 "supported by --vc-chans for the standard (float) VisualCortex.\n" 00639 "EXAMPLE: 'IO:5.0M' will use intensity (weight 1.0), orientation " 00640 "(weight 5.0) and motion (weight 1.0) channels", 00641 "ivc-chans", '\0', "<CIOFM>", "CFIOM" }; 00642 00643 // Used by: VisualCortex (and derivatives) 00644 const ModelOptionDef OPT_RawVisualCortexSaveOutput = 00645 { MODOPT_FLAG, "RawVisualCortexSaveOutput", &MOC_VCX, OPTEXP_SAVE, 00646 "Save output of visual cortex (=input to the saliency map) as a float " 00647 "image in PFM format with absolute saliency values. This is good " 00648 "for comparing several saliency maps obtained for different images. " 00649 "See saliency/matlab/pfmreadmatlab.m for a program that reads PFM " 00650 "images into Matlab.", 00651 "save-vcx-output", '\0', "", "false" }; 00652 00653 // Used by: RawVisualCortex (and derivatives) 00654 const ModelOptionDef OPT_VCXuseMax = 00655 { MODOPT_FLAG, "VCXuseMax", &MOC_VCX, OPTEXP_SAVE, 00656 "Use max across features instead of sum to yield the combined saliency map.", 00657 "vcx-usemax", '\0', "", "false" }; 00658 00659 // Used by: RawVisualCortex (and derivatives) 00660 const ModelOptionDef OPT_VCXweightThresh = 00661 { MODOPT_ARG(float), "VCXweightThresh", &MOC_VCX, OPTEXP_SAVE, 00662 "Lower threshold on total channel weight when counting the number of non-zero " 00663 "weight channels to decide whether or not to apply one last round of maxnorm " 00664 "to the VisualCortex output, if the number of non-zero-weight channels is 2 or more.", 00665 "vcx-weight-thresh", '\0', "<float>", "0.0" }; 00666 00667 00668 //! request all of the above-named OPT_ALIAS options 00669 void REQUEST_OPTIONALIAS_CHANNEL(OptionManager& m) 00670 { 00671 m.requestOptionAlias(&OPT_ALIASsaveChannelOutputs); 00672 m.requestOptionAlias(&OPT_ALIASsaveChannelInternals); 00673 } 00674 00675 // ###################################################################### 00676 /* So things look consistent in everyone's emacs... */ 00677 /* Local Variables: */ 00678 /* indent-tabs-mode: nil */ 00679 /* End: */ 00680 00681 #endif // CHANNELS_CHANNELOPTS_C_DEFINED