Faire le gradient d'une image en C

Fermé
MekRyme Messages postés 4 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 12 avril 2010 - 8 mars 2010 à 22:31
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 mars 2010 à 08:51
Bonjour,
Je veux faire un traitement d'image en langage C, j'ai commencé avec la fonction gradient mais ça n'a pas marché voici le code:

int** gradientMatrix(FILE* lpFile, int **lpMatrix, int nLines, int nColumns)
{
  int nI, nJ,fx=0,fy=0;
  int** GMatrix;
  GMatrix = AllocMatrix(nLines, nColumns);
  LoadMatrix(lpFile, GMatrix, nLines, nColumns);//chargement de l'image
  printf("\nGRADIENT :\n");
     for (nI = 0; nI < nLines; nI++)
     {
        for (nJ = 0; nJ < nColumns; nJ++)
          {
            fy = abs(lpMatrix[nI][nJ+1] -  lpMatrix[nI][nJ]);
            GMatrix[nI][nJ]= fy;
          }
          printf("\n");
     }
   DisplayMatrix(GMatrix, nLines, nColumns);// fonction d'affichage 
return GMatrix;
}


s'il vous plait aidez moi c'est urgent!!!!
A voir également:

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 mars 2010 à 08:51
pas clair ton histoire.
déjà tes bornes ne sont pas bonnes, tu risque le débordement de tableaux et donc l'erreur de segmentation.
Ensuite, le gradient, c'est un vecteur. Je suppose que tu veux afficher sa norme, mais pour ça il faut calculer ces deux composantes, là tu n'en calcul qu'une. Ensuite, tu fait le choix de dériver en aval, plutôt qu'une dérivée centrée, pourquoi pas, mais pourquoi ?
Ensuite, comme il s'agit d'image, il faut bien faire attention aux valeurs retournées, qu'elles restent dans le bon domaine (mais ça doit être bon).
0