summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/segm.hh
diff options
context:
space:
mode:
authorgaillaro2005-04-05 18:26:18 +0000
committergaillaro2005-04-05 18:26:18 +0000
commit97b69507c877a4644c0caac4f61e052e188f9d8e (patch)
tree1a81f341ab6577003fa60ca3fb135e7b4baeecba /2005/i/robert/src/ovision/see/segm.hh
parent0062520c9cc87eeeb8828361bbb33033a6f07b7e (diff)
Renaissance de la vision :
- code standard robot - presque du C++ - apprentissage du RN sur plusieurs images - tableau de données couleurs compressé - reconnaissance de plusieurs objets possibles
Diffstat (limited to '2005/i/robert/src/ovision/see/segm.hh')
-rw-r--r--2005/i/robert/src/ovision/see/segm.hh80
1 files changed, 80 insertions, 0 deletions
diff --git a/2005/i/robert/src/ovision/see/segm.hh b/2005/i/robert/src/ovision/see/segm.hh
new file mode 100644
index 0000000..290ecf1
--- /dev/null
+++ b/2005/i/robert/src/ovision/see/segm.hh
@@ -0,0 +1,80 @@
+// robert - programme du robot 2005
+//
+// Copyright (C) 2005 Olivier Gaillard
+//
+// Robot APB Team/Efrei 2005.
+// Web: http://assos.efrei.fr/robot/
+// Email: robot AT efrei DOT fr
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#ifndef segm_h
+#define segm_h
+
+#include "img.hh"
+#include "oconfig.hh"
+#include "image/image.hh"
+
+/// Segmente l'image et cree un tableau contenant des valeurs segmentees, creation du reseau de neurones et apprentissage
+class Segm
+{
+ friend class Comm;
+
+ public:
+ /// Constructeur
+ Segm ();
+ /// Destructeur
+ virtual ~Segm ();
+ /// Affiche la valeur des poids du NN
+ void showNodes () const;
+ /// Donne la couleur à partir du tableau
+ virtual unsigned char giveColor (const unsigned char *x, const bool testOutputMax = false, const bool indexProcess = false) = 0;
+ /// Segmentation de l'image
+ void segmImg (Img *img);
+ /// Segmentation de l'image permettant d'isoler une couleur
+ void segmImg (Img *img, const int numColor);
+ /// reset la luminosité
+ void clearLum () {lum_ = 0; nbLumData_ = 0;}
+ /// Renvoie la luminosité
+ unsigned long getLum () const {return nbLumData_?lum_/nbLumData_:0;}
+ /// Configure le mode de couleur utilisé
+ void setMode (const Image::PixelFormat color);
+ // Constantes
+ static const bool min = 0;
+ static const bool max = 1;
+ static const int undefined = 254;
+ /// Constantes pour la creation du NN
+ enum initModes {generate, loadFromFile};
+
+ protected:
+ /// Classe config
+ OConfig *oconfig_;
+ /// nb de couleurs a differencier
+ int nbOutput_;
+ /// index des couleurs pour melanger (merge) les couleurs
+ int *index_;
+ /// tableau de poids du NN
+ unsigned char *node_;
+ /// Position de la composante de luminosité
+ int lumPos_;
+ /// Sauvegarde de la luminosité
+ unsigned long lum_;
+ /// Sauvegarde du nombre de données sauvegardées concernant la luminosité
+ int nbLumData_;
+ /// Ajout de la luminosité
+ void addLum (int lumToAdd) {lum_ += lumToAdd; ++nbLumData_;}
+};
+
+#endif // segm_h