summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/segmLearn.cc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/see/segmLearn.cc')
-rw-r--r--2005/i/robert/src/ovision/see/segmLearn.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/2005/i/robert/src/ovision/see/segmLearn.cc b/2005/i/robert/src/ovision/see/segmLearn.cc
index e13abd2..627f656 100644
--- a/2005/i/robert/src/ovision/see/segmLearn.cc
+++ b/2005/i/robert/src/ovision/see/segmLearn.cc
@@ -43,9 +43,9 @@ SegmLearn::weightsGen (const int numNode)
/// @param nbOutput_ nombre de noeuds de la couche de sortie du NN
/// @param loadFromFile (GENERATE ou LOADFROMFILE) indique si les poids sont charges d'un fichier ou generes aleatoirement
void
-SegmLearn::buildNN (const int nbOutput_, const bool loadFromFile)
+SegmLearn::buildNN (const int nbOutput, const bool loadFromFile)
{
- this->nbOutput_ = nbOutput_;
+ nbOutput_ = nbOutput;
// Initialisation des noeuds du NN
delete [] node_;
node_ = new unsigned char[nbOutput_*3];
@@ -101,8 +101,16 @@ SegmLearn::trainNN (Img *img)
// Mis a jour des poids
for(int k=0; k<3; k++)
{
- node_[numOutputMax*3+k] =
- (unsigned char)((node_[numOutputMax*3+k] + oconfig_->nnSl*tabData_[pixelNum*3+k])/(1+oconfig_->nnSl));
+ // Si on est en yuv ou hsi et que c'est la composante de lum_inosite, on ajoute un poids pour affecter son influence
+ if (k == lumPos_)
+ node_[numOutputMax*3+k] =
+ (unsigned char)(oconfig_->nnSl*(node_[numOutputMax*3+k]
+ + oconfig_->nnSl*tabData_[pixelNum*3+k])/(1+oconfig_->nnSl));
+ // Sinon calcul normal
+ else
+ node_[numOutputMax*3+k] =
+ (unsigned char)((node_[numOutputMax*3+k]
+ + oconfig_->nnSl*tabData_[pixelNum*3+k])/(1+oconfig_->nnSl));
// Recompense pour la sortie qui travaille
freq_[numOutputMax]++;
}