// segmTable.cc - Classe Segmentation // nono - Programme du robot Efrei Robotique I1-I2 2004 // Copyright (C) 2004 Olivier Gaillard /// @file segmTable.cc Segmente l'image et cree un tableau contenant des valeurs segmentees, creation du reseau de neurones #include "segmTable.h" #include "convertImg.h" #include #include static const int COLOR_TAB_SIZE = 256; static const int COLOR_TAB_SIZE_2 = COLOR_TAB_SIZE*COLOR_TAB_SIZE; static const int COLOR_TAB_SIZE_TOTAL = COLOR_TAB_SIZE_2*COLOR_TAB_SIZE; /// Constructor SegmTable /// @param img classe img permettant d'acceder au donnees de l'image a traiter /// @param oconfig classe oconfig permettant d'acceder aux variables de oconfiguration SegmTable::SegmTable (Img *img, bool loadFromFile) : SegmNN (img) { if (loadFromFile) LoadColorTableFile (); else colorTable = NULL; } /// Destructor SegmTable SegmTable::~SegmTable () { delete [] colorTable; } /// Cree un tableau des couleurs segmentées pour ne plus faire de calcul /// et augmenter la rapidité /// @param testOutputMax choix de l'utilisation d'un sueil maxi pour la sortie pour éviter qu'une couleur trop différente soit attribuer à une autre couleur void SegmTable::DoColorTable (bool testOutputMax, char colorMode) { std::cout << "SegmTable:: Creation de la table" << std::endl; unsigned char x[3]; delete [] colorTable; colorTable = new unsigned char[COLOR_TAB_SIZE_TOTAL]; ConvertImg conv; if (colorMode == YUV) conv.RGBtoYUV (*img); if (colorMode == HSI) conv.RGBtoHSI (*img); // Parcours de toutes les valeurs possibles for (int i=0; i