Traitement d'images

aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009 - 5 nov. 2009 à 13:33
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 16 nov. 2009 à 08:56
Bonjour tout le monde, je veux appliquer des traitements sur une image avec le language C (non pas le C++) à l'aide d'un programme et je sais pas comment la lire, plus précisément, je l'ai sous forme de matrice dans un fichier et je veux utiliser cette matrice dans mon programme?

11 réponses

aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
6 nov. 2009 à 04:36
Elle est si difficile ma question?!!!
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 nov. 2009 à 09:06
Relie bien ton poste et tu verras que tu ne donnes aucune informations utiles pour qu'on puisse t'aider.

Déjà tu veux lire une image, quel est le format, la compression, la résolution, le nombre de bit par pixel!!! Ya des bibliothèque pour ca!
Après, "je VEUX un code tout fait en C mais pas en C++"!!! Ça veux dire quoi ça. Tu n'est pas capable de faire toi même le transfert de C++ en C!!!

Regarde quand même sur sur mon site internet, y a un soft en traitement de l'image en C++ (C like), ca pourrait t'intéresser pour voir comment on met en place des algorithmes en traitement de l'image.

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
6 nov. 2009 à 17:42
Bonsoir,
Pour le format c'est pas important du fait que j'ai enregistré l'image sous forme de matrice dans un fichier .txt, donc je veux juste lire cette matrice à partir de ce fichier.
mon pb se pose à ce niveau " lire des données enregistrées dans un fichier externe"
Si vous pouvez m'aider je vous envoie le programme.
Merci d'avance
Remarque, je suis débutante je me débrouille à peine avec le C donc je connais pas les bibléothèques du C++, c'est pour cela je prefere tout faire en C.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 nov. 2009 à 17:59
Regarde les fonctions fopen, fread, fclose...
Une fois que tu as lu tout ton fichier et que tu as placé tout dans un buffer, il faut que tu découpes ton buffer pour convertir chaque pixel en int
Tu vas faire cela grâce aux séparateurs que tu as placé (espace, virgule, tabulation, retour à la ligne...)

Montre ton code que tu utilises, on pourra t'aider mais pas faire ton travail à ta place.
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0

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

Posez votre question
aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
6 nov. 2009 à 20:05
Bonsoir,
Voilà mon code en C, mon problème est comment appeler la fonction load_values dans le main.
Précision: Le fichier "orig.txt" contient une matrice 256*256 que je veux remplir dans le main dans la matrice "f[256][256]".




****************************************
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MY_FILE "orig.txt"
#define BUFF_SIZE 1024


int load_values(float m[256][256])
{
char tmp[BUFF_SIZE];
FILE *f;
int i, j;

if (m == NULL)
return -1;
i = 0;
j = 0;
f = fopen(MY_FILE, "r");
if (f == NULL)
return -1;
while (fgets(tmp, sizeof(tmp), f) != NULL)
{
m[i][j] = atof(tmp);
i i 255 ? 0 : i++;
if (i == 0)
j++;
}
return 0;
}

int main()
{

int i,j;
int n=256;
float g1[n][n],g2[n][n];
float d1[n][n],d2[n][n],d[n][n];
float p1[256][256];
float p2[256][256];
float f[256][256];
// f c'est une matrice 256*256 elle est enregistree dans le fichier "orig.txt"
float norm[n][n];
float S[n][n];
float m [n][n];
float P1[n][n];
float P2[n][n];
float lambda = 0.8;
float tau = 3;
int z;

for (z=0; z<100; z++)
{

/*Calcul de la matrice divergence en direction de X*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
d1[i][j]=p1[i][j];

for(i=1;i<n-1;i++)
for(j=0;j<n;j++)
d1[i][j]= d1[i][j]-p1[i-1][j];

if(i=n-1)
for(j=0;j<n;j++)
d1[i][j]= - p1[i-1][j];

/*Calcul de la matrice divergence en direction de Y*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
d2[i][j]=p2[i][j];

for(i=0;i<n;i++)
for(j=1;j<n-1;j++)
d2[i][j]=d2[i][j]-p2[i][j-1];

if(j=n-1)
for(i=0;i<n;i++)
d2[i][j]= - p2[i][j-1];

for(i=0; i<n;i++)
{
for(j=0;j<n;j++)
d[i][j]= d1[i][j]+d2[i][j];
}


for(i=0; i<n; i++)
{
for(j=0;j<n;j++)
{
S[i][j] = d[i][j] - f[i][j];
m[i][j] = S[i][j] / lambda;
}
}


/*Calcul de la matrice gradient en direction de X*/
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g1[i][j]= m[i+1][j]-m[i][j];

for(j=0;j<n;j++)
g1[n-1][j]=0;

/*Calcul de la matrice gradient en direction de Y*/
for(j=0;j<n;j++)
for(i=0;i<n;i++)
g2[i][j]= m[i][j+1]-m[i][j];

for(i=0;i<n;i++)
g2[i][n-1]=0;

// Calcul de la norme

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
norm[i][j]= sqrt(g1[i][j]*g1[i][j]+g2[i][j]*g2[i][j]);
}

// Calcul final

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)

P1[i][j] = (p1[i][j] + tau * g1[i][j])/(1 + tau * norm[i][j]);
P2[i][j] = (p2[i][j] + tau * g2[i][j])/(1 + tau * norm[i][j]);
}


// Reconstruction de p1 et p2

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)

p1[i][j] = P1[i][j];
p2[i][j] = P2[i][j];
}
}


return 0;
}
0
Aly05 Messages postés 8 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 30 mars 2010
6 nov. 2009 à 21:24
Salut,

Peux-tu me dire quelle méthode utilises-tu pour traiter ton image, comment tu fais pour passer d'une image à une matrice?

Merci!
0
aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
6 nov. 2009 à 21:28
bonsoir,
J'ai utilisé Matlab pour lire l'image, j'ai récupéré la matrice que j'ai enregistré dans le fichier "orig.txt"
0
aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
6 nov. 2009 à 21:31
Re,
J'ai utilisé cette méthode car je connais pas une méthode directe pour lire mon image avec le C,
0
vintrouj Messages postés 14 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 18 novembre 2009
15 nov. 2009 à 08:39
Bonjour,

As-tu exploré libjpeg (http://www.ijg.org/)?

Si tu n'avais pas été réfractaire au C++ tu aurais probablement trouvé ton bonheur avec Boost GIL (http://www.boost.org/doc/libs/1_40_0/libs/gil/doc/index.html).

jules
0
aideplz Messages postés 8 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 15 novembre 2009
15 nov. 2009 à 09:49
Bonjour,
Je dois faire ce travail en C pas C++
merci, j'ai perdu espoir personne ne pourra le faire j'en suis sûre...
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 nov. 2009 à 08:56
j'ai perdu espoir personne ne pourra le faire j'en suis sûre...


Nous on sait le faire, mais on va pas faire ton travail à ta place. Encore une fois regarde mes sources et tu trouveras plein d'exemple pour lire une image bmp jpeg et gif...
Pour les autres formats, j'utilise la lib gratuite FreeImage.
A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
Rejoignez-nous