Précédent Forum FS Generation > Futura-Techno : les forums de l'informatique et des technologies > Informatique > Logiciel - Software - Open Source
Mot de passe oublié ? Inscrivez-vous !




Réponse
Outils de la discussion Modes d'affichage
Vieux 04/07/2008, 15h48 Message #1 de cette discussion

Date d'inscription: juillet 2008
Âge: 23
Messages: 6
traitement d'image sur le langage C

salut,

je fais une implémentation des outils morphologiques de traitement d'images, et je voudrais que quelqu'un m'aide avec le code de la dilatation.

merci pour vos aides.
dali_sfax est déconnecté Bookmark and Share Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

__________________
Inscrivez-vous au forum gratuitement pour poser votre question.

Poursuivez votre recherche
Recherche personnalisée
Vieux 05/07/2008, 03h12 Message #2 de cette discussion

Date d'inscription: septembre 2007
Âge: 22
Messages: 484
Re : traitement d'image sur le langage C

En noir&blanc ou rgb ?
SuperTux est déconnecté Bookmark and Share Réponse avec citation
Vieux 06/07/2008, 01h40 Message #3 de cette discussion

Date d'inscription: juillet 2008
Âge: 23
Messages: 6
Re : traitement d'image sur le langage C

salut,
en rgb.
dali_sfax est déconnecté Bookmark and Share Réponse avec citation
Vieux 06/07/2008, 04h44 Message #4 de cette discussion

Date d'inscription: septembre 2007
Âge: 22
Messages: 484
Re : traitement d'image sur le langage C

Je ne peux pas t'aider alors, désolé...
SuperTux est déconnecté Bookmark and Share Réponse avec citation
Vieux 06/07/2008, 16h08 Message #5 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

salut,
je fais un programme de reconnaissances de formes(chiffres) et j'aimerai convertir une image rgb(ppm) en noir et blanc threshold et avoir une representation de cette image sous forme de matrices.Peux-tu m'aider?
Merci d'avance.
agent933 est déconnecté Bookmark and Share Réponse avec citation
Vieux 07/07/2008, 03h49 Message #6 de cette discussion

Date d'inscription: septembre 2007
Âge: 22
Messages: 484
Re : traitement d'image sur le langage C

dali_sfax : J'ai trouvé une doc pour la dilatation en rgb
Voir : http://francoislouislaillier.develop...uto1/#LIII-B-2

Après implémentation de l'algo, cela semble donner le même résultat qu'avec le filtre de dilatation de Gimp (voir fichiers attachés), donc ca doit être le bon à prioris.

Une routine vite fait en C (ne gère pas les bords) :

Code:
  for(i = 1; i < (image->height - 1); i++)
  {
    for(j = 1; j < (image->width - 1); j++)
    {
      red_max = 0;
      green_max = 0;
      blue_max = 0;

      for(a = -1; a <= 1; a++)
      {
        for(b = -1; b <= 1; b++)
        {
          if((a == 0) && (b == 0))
          {
            continue;
          }

          tga_get_pixel(image, j + b, i + a, &red, &green, &blue);

          if((red + green + blue) > (red_max + green_max + blue_max))
          {
            red_max = red;
            green_max = green;
            blue_max = blue;
          }
        }
      }

      tga_set_pixel(result, j, i, red_max, green_max, blue_max);
    }
  }

Si tous ca te dépannes, tant mieux


agent933 : C'est quoi que tu appels "noir et blanc threshold" ? Un simple seuillage ?
Miniatures attachées
traitement-dimage-langage-c-tux-algo.jpg traitement-dimage-langage-c-tux-gimp.jpg
SuperTux est déconnecté Bookmark and Share Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

Vieux 07/07/2008, 09h47 Message #7 de cette discussion

Date d'inscription: juillet 2006
Localisation: Toulouse
Âge: 31
Messages: 620
Envoyer un message via MSN à argusazure Envoyer un message via Yahoo à argusazure
Re : traitement d'image sur le langage C

Citation:
Envoyé par agent933 Voir le message
salut,
je fais un programme de reconnaissances de formes(chiffres) et j'aimerai convertir une image rgb(ppm) en noir et blanc threshold et avoir une representation de cette image sous forme de matrices.Peux-tu m'aider?
Merci d'avance.

Code:
int RGBToNg(int _nW,int _nH,unsigned char *_aucImgRgb,unsigned char **_paucImg)
{
	int i,nSize=_nW*_nH;
	if (*_paucImg==NULL) 
		(*_paucImg)=new unsigned char[nSize];
	if ((*_paucImg)==NULL) return 1;
	int i3=0;
	int nSum;
	for (i=0;i<nSize;i++)
	{
		nSum =_aucImgRgb[i3];
		i3++;
		nSum+=_aucImgRgb[i3]+_aucImgRgb[i3];
		i3++;
		nSum+=_aucImgRgb[i3];
		i3++;
		(*_paucImg)[i]=nSum/4;
	}
	return 0;
}

int getint(FILE *fp)
{
	int c, i;//, garbage;
	// note:  if it sees a '#' character, all characters from there to end of
	// line are appended to the comment string
	// skip forward to start of next number
	c = getc(fp);
	while (true)
	{
		// eat comments
		if (c=='#')
			while (((c=getc(fp))!='\n') && (c!=EOF)) {};
			if (c==EOF) return 0;
			if (c>='0' && c<='9') break;
			// see if we are getting garbage (non-whitespace)
			//if (c!=' ' && c!='\t' && c!='\r' && c!='\n' && c!=',') garbage=1;
			c = getc(fp);
    }
	// we're at the start of a number, continue until we hit a non-number
	i = 0;
	while (true)
    {
		i = (i*10) + (c - '0');
		c = getc(fp);
		if (c==EOF) return i;
		if (c<'0' || c>'9') break;
	}
	return i;
}

int ReadFileColor(char *fname,unsigned char ** data, int *width, int *height)
{
	FILE          		*fp;
	// Ouvrir le fichier
	if (!(fp = fopen(fname, "rb")))
		return 1;
	
	// Vérifier son format
	char c  = (char)getc(fp);
	char c1 = (char)getc(fp);
	if (c!='P' || c1!='6')
		return 1;
	
	// Lire les dimensions de l'image
	*width  = getint(fp);
	*height = getint(fp);
	long size = 3*(*width)*(*height);
	/*int GrayLevelNb =*/getint(fp); // inutilisé mais fait avancer le fichier au début des données
	
	// On crée l'espace pour accueillir les données en mémoire
    
	(*data) = new unsigned char[size];
	// On y met effectivement le contenu du fichier, après le header
	
	long numgot = fread(*data, 1, size, fp);
	
	if (numgot != size)
		return 2;
	
	// On peut abandonner l'accés disque
	fclose(fp);
	return 0;	
}
Du code, du code, qui n'en veut, pour les jeunes qui n'en veulent.
argusazure est déconnecté Bookmark and Share Réponse avec citation
Vieux 07/07/2008, 18h16 Message #8 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

Par threshold je parle d'image noir et blanc.En fait je veux binariser l'image.
Merci
agent933 est déconnecté Bookmark and Share Réponse avec citation
Vieux 07/07/2008, 18h17 Message #9 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

Merci argusazure,
je vais de ce pas essayer.
agent933 est déconnecté Bookmark and Share Réponse avec citation
Vieux 07/07/2008, 18h30 Message #10 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

Tu peux m'expliquer la fonction RGBtong, parametres et variables utilisees.
agent933 est déconnecté Bookmark and Share Réponse avec citation
Vieux 07/07/2008, 22h46 Message #11 de cette discussion

Date d'inscription: septembre 2007
Âge: 22
Messages: 484
Re : traitement d'image sur le langage C

Citation:
Tu peux m'expliquer la fonction RGBtong, parametres et variables utilisees.
Sa fonction convertie en niveau de gris. Elle ajoute les trois composantes RGB (deux fois le G d'ailleur, je ne comprend pas pourquoi) et divise par 4 donc pour en faire un niveau de gris.

Si tu veux faire un seuillage binaire il faut alors que tu fasse quelque chose comme :

Code:
#define THRESHOLD 100 // Definie le seuil

if((red + green + blue) >= THRESHOLD)
{
  image_bin[x][y] = 1;
}
else
{
  image_bin[x][y] = 0;
}

Si ton pixels est inférieur à ton seuil de luminosité c'est du noir, si il est supérieur alors c'est du blanc.
SuperTux est déconnecté Bookmark and Share Réponse avec citation
Vieux 08/07/2008, 11h25 Message #12 de cette discussion

Date d'inscription: juillet 2006
Localisation: Toulouse
Âge: 31
Messages: 620
Envoyer un message via MSN à argusazure Envoyer un message via Yahoo à argusazure
Re : traitement d'image sur le langage C

Citation:
Envoyé par SuperTux Voir le message
deux fois le G d'ailleur, je ne comprend pas pourquoi
La sensibilité de l'oeil humain aux intensités lumineuses relatives aux trois couleurs primaire est inégale. On peut ajouter R+G+B mais le résultat est meilleur si on fait R+2*G+B et une division par 4 est moins couteuse qu'une division par 3.
On peut aussi fait (30*R+59*G+11*B)/100 si on veut un meilleur résultat.

(RGBToNg = RedGreenBlue To NiveauDeGris)
argusazure est déconnecté Bookmark and Share Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

Vieux 08/07/2008, 12h44 Message #13 de cette discussion

Date d'inscription: juillet 2008
Âge: 23
Messages: 6
Re : traitement d'image sur le langage C

Salut a tous,

désolé AGENT933, je ne peux pas vous aider.
dali_sfax est déconnecté Bookmark and Share Réponse avec citation
Vieux 08/07/2008, 12h46 Message #14 de cette discussion

Date d'inscription: juillet 2008
Âge: 23
Messages: 6
Re : traitement d'image sur le langage C

Salut à tous,

Est ce quelqu'un a une idée sur les élements structurants configurables en taille et en forme?

Merci.
dali_sfax est déconnecté Bookmark and Share Réponse avec citation
Vieux 08/07/2008, 12h54 Message #15 de cette discussion

Date d'inscription: juillet 2006
Localisation: Fontainebleau
Messages: 249
Re : traitement d'image sur le langage C

Bonjour à tous,

J'aimerais préciser que les oprérateurs que vous avez implémenté ne correspondent pas à des dilatations et des érosions au sens de la morphologie mathématique. Les dilatations vectoriel sous entendent que l'espace vectoriel sous jacent soit totalement ordoné, ce qui n'est pas le cas pour l'espace des couleurs RGB.

En ce qui concerne les éléments structurant configurables, vous cherchez une implémentation ou bien des références ? si ce sont des références, je vous conseille de regarder vers ce qu'on appelle les amibes morphologiques.
skydancer est déconnecté Bookmark and Share Réponse avec citation
Vieux 09/07/2008, 11h08 Message #16 de cette discussion

Date d'inscription: juillet 2008
Âge: 23
Messages: 6
Re : traitement d'image sur le langage C

Salut à tous,

je veux bien une documentation des élements structurants. Mais j'ai pas trouvé un lien vers les "amibes morphologiques". Est ce que vous pouvez me procurer un lien qui peux m'aider.

Cordialement.
dali_sfax est déconnecté Bookmark and Share Réponse avec citation
Vieux 09/07/2008, 18h56 Message #17 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

Salut merci a tous pour votre aide j'ai finalement reussi a avoir ce que je voulais.
Au cas ou ca pourrai servir a d'autre, j'ai utilise une structure au lieu de tableau :

Code:
void rgbtobw(IMAGE *imrgb)
{	int i;
	for (i=0;i<(640*480*3);i+=3){
		if (((imrgb->data[i]+imrgb->data[i+1]+imrgb->data[i+2])/4) >= 50){
				imrgb->data[i]=255;
				imrgb->data[i+1]=255;
				imrgb->data[i+2]=255;
		}
		else{
				imrgb->data[i]=0;
				imrgb->data[i+1]=0;
				imrgb->data[i+2]=0;
		}
	}
}
Merci encore a tous

Dernière modification par yoda1234 ; 10/07/2008 à 06h31.
agent933 est déconnecté Bookmark and Share Réponse avec citation
Vieux 10/07/2008, 04h26 Message #18 de cette discussion

Date d'inscription: juillet 2008
Messages: 8
Re : traitement d'image sur le langage C

Salut la plupart de mes amis ont divise par 3 pour avoir le niveau de gris.
Tu voulais dire quoi par une division par 4 est moins couteuse qu'une division par 3.
Merci d'avance
agent933 est déconnecté Bookmark and Share Réponse avec citation

Poursuivez votre recherche :


Sur le même thème :















Annonces publicitaires (Futura Sciences n'est pas responsable du contenu de ces publicités)
Réponse


Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Les dernières actualités
04/07 13:15 - Thème du mois : Vacances en France
04/07 11:33 - Nouvelle Liste rouge des espèces menacées : la biodiversité mal en point
03/07 15:47 - Cancers et pollution : l'Afsset en appelle au principe de précaution
03/07 13:35 - Les dinosaures étaient moins massifs qu'on ne le pensait
03/07 11:38 - Oui, les trous noirs de masse intermédiaire existent !
03/07 09:32 - Hadopi : pas d'inscription au casier judiciaire
02/07 15:35 - Echolocation : les hommes peuvent eux aussi voir avec les oreilles !


Fuseau horaire GMT +2. Il est actuellement 15h31.


Édité par : vBulletin®
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Tous droits réservés.