IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Segmentation à plusieurs niveaux


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 95
    Par défaut Segmentation à plusieurs niveaux
    Bonjour à tous,

    Je sais que le sujet a déjà été traité, mais ma question est un peu différente. Est-ce que quelqu'un possède une implémentation en C/C++ ou OpenCV du seuillage d'Otsu multi-classes (avec calcul du critère de séparation interclasse) ?

    J'ai vraiment besoin de cette fonction, que j'ai en Matlab, mais maintenant, il me la faut en C/C++ ou OpenCV

    Je vous remercie par avance

  2. #2
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Par défaut
    bonjour,

    je ne sais pas exactement comment faire (OpenCV du seuillage d'Otsu multi-classes (avec calcul du critère de séparation interclasse) ) Je me rappelle vaguement avoir lu quelque chose la dessus.Pas retrouve dans ma DB le doc correspondant.
    J'avais deja implemente Otsu de cette facon en utilisant deux classes de separation. c'est un debut. Si ca peut vous aider.

    Attention il ya ici une autre classe oImgBinStat qui me calcule toutes les stats de mon image puis une methode qui binarize une fois le seuil trouver par OTSU.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
     
    void TImgBinarization:: Otsu_Threshold()
        {
     
        // We need for that method the weighted histogram of the image
        // We will also calculate the following statistcal elemetns of the histo
        // mean value and variance, we have also to sum the histo
        // The idea from Otsu is  to  compare 2 class by it's intervariance maximization
     
        // The folowing var represents here the inter-variance we have to calculate for each k
        double Sum_1k ,Sum_kl ;
        double Mean_Val_Low;
        double Mean_Val_High;
     
        double intervar=0;
        double myval=0;
     
        ThresholdLevel = 0;
     
    	for( int k = 0; k< 256; k++)	//We scan all the possible levels
    	    {
     
           //  Background calculation ( below treshold )  
     
    		  Sum_1k =oImgBinStat-> Histo_Sum_Calc(pMat1ImgHistoWeight, 0, k);
              Mean_Val_Low = oImgBinStat->Histo_MeanVal_Calc(pMat1ImgHistoWeight,  0, k);
     
           //  Forreground calculation ( above treshold )  
     
              Sum_kl       =  oImgBinStat-> Histo_Sum_Calc( pMat1ImgHistoWeight, k, 256);
              Mean_Val_High = oImgBinStat-> Histo_MeanVal_Calc(pMat1ImgHistoWeight,  k, 256);
     
              intervar =  Sum_1k *  Sum_kl *pow((Mean_Val_Low- Mean_Val_High),2);
     
          // If equivalent to maximize the intervariance
     
           if (myval <= intervar) 
    		     {
    			 myval=  intervar;
                 ThresholdLevel = k;
    		     }
    	    }
     
    	printf( " ThresholdLevel pour Otsu: %f  \n ", ThresholdLevel);
     
    	// image binarization 
        Image_Binarization(ThresholdLevel);
     
       }
    Si jamais vous faites evoluer le code pour justement segmenter en plusieurs regions donc plus de facon binaire, je serai ravi que vous faites partager votre code.

    NB: je fais de la segementation multi regions en utilisant une pyramide avec des seuils reglables. Ca marche plutot bien pour des images d'entrees ou la luminosite ne change pas trop.

    Cdt
    D:

Discussions similaires

  1. Création JPopupMenu avec plusieurs niveaux
    Par gpcanto dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/06/2006, 08h50
  2. [Hibernate] Héritage sur plusieurs niveaux
    Par srvremi dans le forum Hibernate
    Réponses: 2
    Dernier message: 31/05/2006, 18h39
  3. Apache 1.3 VirtualDocumentRoot à plusieurs niveaux
    Par marcha dans le forum Apache
    Réponses: 1
    Dernier message: 25/05/2006, 20h30
  4. Plusieurs niveaux de colonnes dans TDBGrid
    Par TicTacToe dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/01/2006, 10h44
  5. Création de plusieurs niveaux de sous formulaires
    Par Farbin dans le forum Access
    Réponses: 2
    Dernier message: 25/10/2005, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo