PixelizerI.C

00001 #include "Robots/SeaBeeIII/PixelizerI.H"
00002 
00003 #include "Component/ModelParam.H"
00004 #include "Component/ModelOptionDef.H"
00005 
00006 #define TILE_SIZE 17 // size, in pixels, for each square tile
00007 
00008 #ifndef PIXELIZERI_C
00009 #define PIXELIZERI_C
00010 
00011 // ######################################################################
00012 PixelizerI::PixelizerI(int id, OptionManager& mgr,
00013                        const std::string& descrName, const std::string& tagName) :
00014   VisionBrainComponentI(mgr, descrName, tagName)
00015 {
00016 }
00017 
00018 PixelizerI::~PixelizerI()
00019 {
00020 }
00021 
00022 void PixelizerI::registerTopics()
00023 {
00024 
00025 }
00026 
00027 void PixelizerI::updateFrame(Image<PixRGB<byte> > img, bool isFwdCamera)
00028 {
00029   if(img.initialized())
00030     {
00031       int cols,rows = 0;
00032       rows = img.getHeight() / TILE_SIZE;
00033       cols = img.getWidth() / TILE_SIZE;
00034 
00035       for(int i = 0; i < rows; i++)
00036         {
00037           for(int j = 0; j < cols; j++)
00038             {
00039               PixRGB<byte> avg = getAvgTileColor(j*TILE_SIZE, i*TILE_SIZE, img);
00040               for(int k = 0; k < TILE_SIZE * TILE_SIZE; k++)
00041                 {
00042                   img.setVal(j*TILE_SIZE+(k % TILE_SIZE), i*TILE_SIZE+(k / TILE_SIZE), avg);
00043                 }
00044             }
00045         }
00046 
00047       itsOfs->writeRGB(img, "Pixelizer Image",
00048                        FrameInfo("Pixelizer", SRC_POS));
00049     }
00050   else
00051     LINFO("Received uninitialized image.");
00052 }
00053 
00054 // ######################################################################
00055 
00056 PixRGB<byte> PixelizerI::getAvgTileColor(int colOffset,
00057                                          int rowOffset,
00058                                          const Image<PixRGB<byte> >& img)
00059 {
00060   int avgR = 0;
00061   int avgG = 0;
00062   int avgB = 0;
00063   unsigned char r,g,b;
00064 
00065   for(int i = 0; i < TILE_SIZE; i++)
00066     {
00067       for(int j = 0; j < TILE_SIZE; j++)
00068         {
00069           PixRGB<byte> pixel = img.getVal(colOffset + j,rowOffset + i);
00070           pixel.getRGB(r,g,b);
00071           avgR += r;
00072           avgG += g;
00073           avgB += b;
00074         }
00075     }
00076 
00077   int totalTileSize = TILE_SIZE * TILE_SIZE;
00078   avgR /= totalTileSize;
00079   avgG /= totalTileSize;
00080   avgB /= totalTileSize;
00081 
00082   return PixRGB<byte>(8*(avgR/8), 8*(avgG/8), 8*(avgB/8));
00083 }
00084 
00085 #endif
Generated on Sun May 8 08:05:58 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3