app-gamma-correction.C

Go to the documentation of this file.
00001 /*!@file AppMedia/app-gamma-correction.C do the gamma correction in the HSV space*/
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the //
00005 // 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: Laurent Itti <itti@usc.edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/AppMedia/app-gamma-correction.C $
00035 // $Id: app-gamma-correction.C 12962 2010-03-06 02:13:53Z irock $
00036 //
00037 
00038 /*! This app is mainly useful to do the gamma correction to the debayered image.
00039   the reason is that the captured image from XC HD camera is not looks good enough
00040 */
00041 
00042 
00043 #include "Image/Image.H"
00044 #include "Image/Pixels.H"
00045 #include "Image/MathOps.H"
00046 #include "Raster/Raster.H"
00047 #include "Util/log.H"
00048 #include "Util/StringConversions.H"
00049 #include <string>
00050 #include <cstdio>
00051 
00052 using namespace std;
00053 
00054 int main(int argc, char** argv)
00055 {
00056   if (argc != 4)
00057     {
00058       fprintf(stderr, "USAGE: app-gamma-correction <input color image> "
00059               "<output corrected color image> <gamma value>");
00060       return -1;
00061     }
00062 
00063   string filename = argv[1];
00064   string outname = argv[2];
00065   float gamma;
00066   convertFromString(string(argv[3]), gamma);
00067 
00068 
00069   Image<PixRGB<float> > input = Raster::ReadRGB(filename);
00070 
00071   Image<PixHSV<float> > hsvRes = static_cast< Image<PixHSV<float> > > (input/255);
00072 
00073   Image<PixHSV<float> >::iterator itr = hsvRes.beginw();
00074   while(itr != hsvRes.endw())
00075     {
00076       itr->p[2] = pow(itr->p[2], gamma);
00077       ++itr;
00078     }
00079 
00080   Image<PixRGB<float> > foutput = static_cast< Image<PixRGB<float> > > (hsvRes);
00081   foutput = foutput * 255.0F;
00082   Image<PixRGB<byte> > output = foutput;
00083   Raster::WriteRGB(output, outname);
00084 
00085   return 0;
00086 }
Generated on Sun May 8 08:04:10 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3