begin process at 2012 05 30 12:17:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

suivi des contours en c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

suivi des contours en c++

samedi 23 mai 2009 à 23:07:41 | suivi des contours en c++

salma2011



Salam tt le monde..
je veux obtenir la matrice des suivi des contours d'une image apres la segmentation mais je sais pas comment la faire.
Pour mieux expliquer je dois obtenir a la fin, un fichier qui contient  les coordonnées des pixels du contour..j'ai arriveé à faire la segmentation avec differents methodes mais je sais pas comment continuer pour atteindre mon but.

pouvez vs m'aider??

Remarque : je travaille avec c++
dimanche 24 mai 2009 à 10:14:57 | Re : suivi des contours en c++

Pistol_Pete

Salut
Pour faire cela, il faut utiliser l'algorithme de Freeman. Cet algo te stokera dans un vecteur tous les pixels de ton contour. Il suffira alors de tous écrire dans un fichier.

A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

dimanche 24 mai 2009 à 16:47:28 | Re : suivi des contours en c++

salma2011

Slt.
merci pour ta reponse....j'ai fait des recherches sur internet concernant cet algorithme de Freeman mais j'ai rien trouvé...

lundi 25 mai 2009 à 08:33:41 | Re : suivi des contours en c++

Pistol_Pete

Voici un exemple d'implémentation de l'algorithme de freeman:

//Next : fonction permettant de selectionner le prochain pixel à traiter dans
//l'algorithme de Freeman.
void Next(int *i,int *j,int *Dir,UCHAR *ucBits,int Width)
{
  int Dir_Recherche;
  int k;
  for(k=0;k<8;k++)
  {
    Dir_Recherche=(*Dir-k-1)%8+1;
    if(Dir_Recherche<=0)
    Dir_Recherche=8+Dir_Recherche;
   
    switch(Dir_Recherche)
    {
     case 1:if(ucBits[((*i+1)+(*j-1)*Width)*4]==255){*i+=1;*j-=1;*Dir=Dir_Recherche; return;}
           break;
     case 2:if(ucBits[((*i)+(*j-1)*Width)*4]==255){*j-=1;*Dir=Dir_Recherche; return;}
           break;   
     case 3:if(ucBits[((*i-1)+(*j-1)*Width)*4]==255){*i-=1;*j-=1;*Dir=Dir_Recherche; return;}
       break;          
     case 4:if(ucBits[((*i-1)+(*j)*Width)*4]==255){*i-=1;*Dir=Dir_Recherche; return;}
       break;
     case 5:if(ucBits[((*i-1)+(*j+1)*Width)*4]==255){*i-=1;*j+=1;*Dir=Dir_Recherche; return;}
       break;
     case 6:if(ucBits[((*i)+(*j+1)*Width)*4]==255){*j+=1;*Dir=Dir_Recherche; return;}
       break;
     case 7:if(ucBits[((*i+1)+(*j+1)*Width)*4]==255){*i+=1;*j+=1;*Dir=Dir_Recherche; return;}
       break;
     case 8:if(ucBits[((*i+1)+(*j)*Width)*4]==255){*i+=1;*Dir=Dir_Recherche; return;}
       break;
    }
  }
  *Dir=-1;

}

//************************************************************************************
//Algorithme de Freeman pour calculer le périmètre de la région.
//On retourne la valeur en µm du perimetre
//************************************************************************************
double CImage::PerimetreFreeman(double ScaleX,double ScaleY)
{
  double Diag,P;
  int i,j,Xini,Yini,Dir;
  BOOL Skip=FALSE;
  queue<int> Fifo;
  for(j=1;j<Height && !Skip;j++)        //placement sur le premier pixel de la région
    for(i=1;i<Width && !Skip;i++)
      if(ucBits[(i+j*Width)*4]==255)
        Skip=TRUE;
   
  P=0.0;
  i--;
  j--;
  if(Skip)
  {
    Xini=i;
    Yini=j;
    Dir=8;
    Next(&i,&j,&Dir,ucBits,Width);
    Fifo.push(Dir);
   
    while(Xini!=i || Yini!=j)
    {
      Dir=(Dir+3-1)%8+1;
      Next(&i,&j,&Dir,ucBits,Width);
      Fifo.push(Dir);
    }
   
    Diag=sqrt(ScaleX*ScaleX+ScaleY*ScaleY);
    do
    {
        Dir=Fifo.front();
        Fifo.pop();
    
      if(Dir==4 ||  Dir==8)        //si paire, on a avancé horizontalement
        P+=ScaleX;
      else if(Dir==2 ||Dir==6)
        P+=ScaleY;            //si paire, on a avancé verticalement
      else
        P+=Diag;            //si impaire, on a avancé en diagonale.
    }
    while(!Fifo.empty());
  }
  return P;   
 
}


A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

dimanche 31 mai 2009 à 02:59:06 | Re : suivi des contours en c++

primarykey

salut tout le monde
en fait jé le meme probleme ke salma2011  et je voulais utiliser votre programme mais le probleme cété dans la declaration" queue<int> fifo" et ces fonctions
moi je veux enregitrer les coordonnées dans un fihcier texte
je demande si vous pouvez m'aider
et merci en tt cas
cordialement
mercredi 3 juin 2009 à 09:12:35 | Re : suivi des contours en c++

Pistol_Pete

Ben dans le dernier do...while(), à chaque fois que tu pop un élement, tu écris ses coordonnées dans un fichier.
A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]



Cette discussion est classée dans : obtenir, segmentation, suivi, contours


Répondre à ce message

Sujets en rapport avec ce message

segmentation d'une image (OpenCv) [ par alichem8 ] Salut , dans mon projet je dois récupérer les segments importants d'une image pour faire la reconstruction 3D, j'ai utilisé cvFindContours (OpenCv)mai methodes k-means et la recherche tabou [ par bhakimm ] bonjour J'ai un problème avec la segmentation des images avec la recherche tabou bon.mon sujet porte sur la segmentation des images et ceci en utilisa Erreur de segmentation [ par cool2source ] Bon je dois encore avoir du mal avec les pointeurs ( visiblement)... Je compile le code ci-dessous avec gcc et le seul résultat que j'obtiens est : "E Segmentation d'un texte en lignes [ par haning ] Bonsoir, Je suis débutante en c++ et j'ai vraiment besoin de votre aide. J'ai un texte enregistré sous forme d'image en niveau de gris. Je veux se Segmentation d'une image avec OpenCV [ par nostalgieing ] Je suis débutante en [b]C++[/b] et j'ai un projet qui consite à segmenter une [b]image text[/b]e en utilisant [b]OpenCV[/b] par[b] projection horizon Segmentation d'une image par région en C [ par Minou09 ] Bonjour, J'espère que j'ai créé mon sujet dans la bonne catégorie. Voila mon problème, je cherche à créer un programme en C permettant de segmenter u Obtenir focus clavier sur un contrôle static [ par Albanderuaz ] Bonjour à tous! Je dispose d'un contrôle static muni du style SS_BITMAP pour y afficher une image. Je voudrais pouvoir le sélectionner pour y utilise Segmentation d'une image par la méthode de seuillage avec Matlab [ par melina91 ] Bonjour, je cherche à segmenter une image par la méthode de seuillage sur matlab. En fait, l'image c'est une coupe d'IRM et il y a un artéfact dedans, détéction de contours par la méthode de freeman sous matlab [ par lgeb ] Bonjour ! est-ce-que quelqu'un pourrais m'aider pour mon projet qui est le suivant : " détéction de contours par la méthode de freeman sous matlab " j segmentation d'image niveau gris en région [ par joud07 ] Bonjour à tous je veux connaitre comment segmenter une image en niveau de gris en région? plutot, espérant de m'envoyer un code source m'explique co


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,730 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales