Svp aider moi en traitement d'image

cs_Amel3 Messages postés 9 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 21 juin 2008 - 9 avril 2008 à 21:36
cs_Amel3 Messages postés 9 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 21 juin 2008 - 3 mai 2008 à 21:24
bonjour
svp je cherche  le code source en c++ pour faire la direction d'une route 
mon projet est dans le traiterment d'image (la detection semi automatique d'une route )utilisant le filtre de sobel.
je vous informez mes amis que j'ai le code en matlab mais j'ai pas trouver les fonctions ou un logiciel qui trensforme du matlab au builder
je serais contante si vous me réponds
merci d'avance
                   Fatima 

5 réponses

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
10 avril 2008 à 09:22
Salut
Regarde dans mes sources, tu trouvera sans doute ton bonheur:
http://www.cppfrance.com/codes/DETECTION-OPTIMALE-CONTOURS-CANNY-DERICHE-SHENCASTAN_45999.aspx
Tu va detecter la route avec un unique filtre de Sobel?

Et autre chose transformer du code Matlab (m file )en C ou C++ c'est a toi de le faire. Mais bon c'est vraiment pas ce qui est le plus difficile

A+
Mon site internet : http://pistol.petesampras.free.fr
0
cs_Amel3 Messages postés 9 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 21 juin 2008
28 avril 2008 à 12:35
bonjour
j'ai besoin  d'un code source en c++ qui fait le calcule de la direction de chaque pixel dans une image satellitaire
la fonction pour le calcule    f=atan(y/x)
tel que    y:le gradient vertical   et x :le gradient horizontale
merci
0
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
28 avril 2008 à 23:03
Salut
Je t'assure que tu trouveras tout ce que tu cherches en cherchant bien dans mes sources.
(Regarde Canny et sobel optimisé)

A+
Mon site internet : http://pistol.petesampras.free.fr
0
cs_Amel3 Messages postés 9 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 21 juin 2008
1 mai 2008 à 13:04
bonjour
c'est bon j'ai trouver la solution que j'etais entrain de chercher
je vous donne cette solution pour tu me comprend
direction---------------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//for(i=0;i<x;i++)
//{
    //for(j=0;j<y;j++)
     // {
       // sx=(Image_originale->Canvas->Pixels[i-1][j-1]-Image_originale->Canvas->Pixels[i+1][j-1])+2*(Image_originale->Canvas->Pixels[i-1][j] - Image_originale->Canvas->Pixels[i+1][j])+(Image_originale->Canvas->Pixels[i-1][j+1]- Image_originale->Canvas->Pixels[i+1][j+1]);

       // sy=(Image_originale->Canvas->Pixels[i-1][j-1]- Image_originale->Canvas->Pixels[i-1][j+1])+2*(Image_originale->Canvas->Pixels[i][j-1] - Image_originale->Canvas->Pixels[i][j+1])+(Image_originale->Canvas->Pixels[i+1][j-1]- Image_originale->Canvas->Pixels[i+1][j+1]);

       // if(sx==0)
        //{
         //   s=90;
           // co[j][i]=s;
        //}
       // else
       // {
          //  s=atan((float)sy/(float)sx);
         //   co[j][i]=s*180./3.14;
        //}

       // ny->Cells[i][j]=co[j][i];
   // }
//}
//float sx,sy,ss;
//float ss;
 for(i=0;i<x;i++)
{
    for(j=0;j<y;j++)
      {
sx=(Image_traite->Canvas->Pixels[i-1][j-1]-Image_traite->Canvas->Pixels[i+1][j-1])+2*(Image_traite->Canvas->Pixels[i-1][j] - Image_traite->Canvas->Pixels[i+1][j])+(Image_traite->Canvas->Pixels[i-1][j+1]- Image_traite->Canvas->Pixels[i+1][j+1]);

sy=(Image_traite->Canvas->Pixels[i-1][j-1]- Image_traite->Canvas->Pixels[i-1][j+1])+2*(Image_traite->Canvas->Pixels[i][j-1] - Image_traite->Canvas->Pixels[i][j+1])+(Image_traite->Canvas->Pixels[i+1][j-1]- Image_traite->Canvas->Pixels[i+1][j+1]);

       if(sx==0 && sy>0 )
        {
            ss=90;
            co[j][i]=ss;
        }
       else if (sx==0 && sy<0 )
        {
            ss=-90;
            co[j][i]=ss;
        }

       //else if (sy<0 && sx<0 || sy>0 && sx>0)
       else
       {
        s=atan(sy/sx);

       if   ( sy>0 && sx<0)
                {

                ss= 180+(s*(180/3.14));
                co[j][i]=ss;
                }
     else  if ( sy<0 && sx>0)
                {

            ss= -(s*(180/3.14));
            co[j][i]=ss;
                }
      else  if (sy<0 && sx<0)
                {
        s=atan(sy/sx);
        ss= (s*(180/3.14))-180;
        co[j][i]=ss;
                }

        }
        //}
        ny->Cells[i][j]=co[j][i];
        }
        }
        }
c'est ca
en tout les cas merci   
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Amel3 Messages postés 9 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 21 juin 2008
3 mai 2008 à 21:24
bonjour
je cherche comment créer une fénaitre virtuelle da chaque pixel pour savoir toute les direction de ce pixel
c a d : moi j'ai fait la direction de chaque pixel  ,dans mon projet de detection de contours :
 le 0(zéro) veut dire que ce point n'appartien pas e a la route
le 1(un) veut dire que ce pixel appartien a la route
et la route a au minimum 5pixel et au maximmum 15pixel
veu dire: en cherche premierement  dans toute les direstions de chaque pixel si il ya 5pixel succssives ayant la valeur 1 donc en prend ce point et si il ya moins de 5pixel donc en prend pas ce pixel en recherche dans les autres direction de ce pixel
et ca et pour toute l'image
pour faire ca il faut créér une fenaitre virtuelle pour chaque pixel (une matice) qui a des x et des y  je connus pas crrér cette fenaitre
aide moiu svp  j'espére que vous m'avez compris cette fois
merci
0