Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1471 connectés 

  FORUM HardWare.fr
  Programmation

  algo de retouche d'image en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

algo de retouche d'image en C

n°27698
juldjin
Posté le 26-04-2001 à 09:45:33  profilanswer
 

j'ai traité une image, et tous les pixels qui m'interraissaient, je les aient mis dans un tableau a 2 dimensions.
 
Maintenant, il faut que j'élimine les formes dont le nombre de pixel est inférieur a celui demandé par l'utilisateur.
( pour moi une forme est une suite de pixel consécutif )
 
Quelqu'un aurait une idée, ou saurait ou je dois me docummenter.
 
merci d'avance    :jap:  :jap:  :jap:  :jap:  
 
Rq: le tableau a deux dimmension est un tableau de char ou -1 signifie que le pixel n'est pas selectionné et 0 signifie le contraire.


---------------
"l'homme est un loup pour l'homme"
mood
Publicité
Posté le 26-04-2001 à 09:45:33  profilanswer
 

n°27747
juldjin
Posté le 26-04-2001 à 12:47:33  profilanswer
 

je vais tenter de faire une procedure reccurente a la oualeguene, mais si je me blaisse ou s'il m'arrive du mal je vous en tiendrez pour responsable... :cry:  
 
Sayanora  :jap:

n°27777
darkoli
Le Petit Dinosaure Bleu
Posté le 26-04-2001 à 14:21:07  profilanswer
 

ben la recusrivité est le plus simple mais donne un exemple stp

n°27785
juldjin
Posté le 26-04-2001 à 14:39:47  profilanswer
 

en faite ce que je fais, je balaye de gauche a droite et de bas en haut mon image, des que je tombe sur un caractere 0,je lance ma procedure recurrente.
Celle ci regarde les pixels autour de celui selectionné,si il y en a au moins un de selectionné alors elle se rappelle elle meme puis ajoute un au compteur, sinon elle retourne le compteur.
 
mais ca marche pas mon truc.
 
as tu compris ? (parce que moi des fois j'ai du mal a me comprendre)

n°27794
korben
Posté le 26-04-2001 à 15:15:54  profilanswer
 

Salut
Bossant actuellement pas mal dans le traitement d'image et le reconnaissance de forme, une chose que je peux te conseiller, c'est le filtre médian. Je l'emploie personnellement dans la forme 1 x n (supprime le n-1 pixels isolés) mais tu peux l'employer sous une forme m x n.
L'avantage, c'est que tu as une réponse impulsionnelle nulle mais sa réponse indicielle est un saut unité. Cela veut dire que tu supprimes les pics isolés sans déplacer ou modifier les bords (contrairement à un filtre de moyennage qui va rendre "flou" ton image).
Si tu travailles sous Matlab, tu peux l'essayer très facilement. Je bosse perso en C++
Si tu as d'autres questions, tu peux m'envoyer un mail.

n°27797
juldjin
Posté le 26-04-2001 à 15:26:05  profilanswer
 

en faite le but de ma procedure n'est pas de distinguer la forme, mais de compter combien la forme contient de pixel.
 
et ca c'est trop chaud.

n°27907
tfj57
Posté le 26-04-2001 à 21:44:58  profilanswer
 

Salut à tous,
 
J'avais fait quelque chose de similaire dans un précédant post.
Voici un copier/coller/adapter du petit programme C++ en espérant que j'ai bien compris le problème.
 
Salutations
--------------------------------------
#define MINPIX  10 // Nombre minimum de pixels de la forme
 
#define NBX     25 // Taille X du tableau
#define NBY     25 // Taille Y du tableau
 
char Tab[NBX][NBY];
 
// Compte (dans somme) le nombre de pixels (=valeur) de la forme à partir
// de la case de coordonnées x,y et la marque avec (marque)
void Recherche(const int x, const int y, const int &valeur, const int &marque, int &somme)
{
   if (x<0 || x>=NBX || y<0 || y>=NBY)
      return; // si les coordonnées de la case à tester ne sont pas valides
   else if (Tab[x][y]!=valeur)
      return; // si la case a déjà été marquée ou n'appartient pas à la forme
   else
   {
      Tab[x][y]=marque; // on marque la case
      somme++;  // on ajourte 1 au nombre de pixels de la forme
      Recherche(x-1,y,valeur,marque,somme); // on teste les 4 directions récursivement
      Recherche(x+1,y,valeur,marque,somme);
      Recherche(x,y-1,valeur,marque,somme);
      Recherche(x,y+1,valeur,marque,somme);
   }
}
 
main()
{
   int i,j,nbpix;
 
   // initailisation de Tab uniquement avec des 0 ou -1
 
   for (j=0;j<NBY;j++)
      for (i=0;i<NBX;i++)
         if (Tab[i][j]==0) // si pixel selectionné
         {
            nbpix=0;
            Recherche(i,j,0,1,nbpix); // recherche pixels consécutifs et marque avec 1
            if (nbpix<=MINPIX) // si le nombre de pixels < au minumum
                Recherche(i,j,1,-1,nbpix); // marquage (efface) avec -1 des pixels précédemment marqués avec 1
         }
 
   for (j=0;j<NBY;j++)
      for (i=0;i<NBX;i++)
         if (Tab[i][j]==1)
            Tab[i][j]=0; // tous les pixels que l'on garde sont marqués à 1, on les remet à 0.
 
   return 0;
}

n°27936
juldjin
Posté le 27-04-2001 à 08:46:57  profilanswer
 

j'en reviens pas c'est exactement le meme raisonnement que j'ai fait (sauf que moi mon prog y panique un peu) je vais tester tout de suite.
 
juste un truc encore, y marche pas que pour les formes creuses ton algorithme ?

n°27937
juldjin
Posté le 27-04-2001 à 08:58:24  profilanswer
 

dans tous ceux qui m'ont répondu, et tout ceux qui lisent en ce moment, j'aurais aimé savoir les différents domaines du traitement de l'image, et quelle formation y fallait faire et ou ?
 
je fini mon DUT info, et je sais pas ou m'orienter (ecole d'ingénieur, l'armée, le trottoire  :crazy: )
 
Si quelqu'un veut bien me faire partager sa passion du traitement de l'image, par email aussi, pas de probleme
 
merci :jap:

n°27940
juldjin
Posté le 27-04-2001 à 09:20:47  profilanswer
 

en tout cas merci tfj57, j'ai trouvé l'erreur dans mon algorithme, en faite ma fonction était bcp complixée, et tellement moins efficace. J'ai souvent tendance a me compliquer la vie...  :sweat:

mood
Publicité
Posté le 27-04-2001 à 09:20:47  profilanswer
 

n°27984
juldjin
Posté le 27-04-2001 à 11:05:33  profilanswer
 

un petit up avant de manger   :bounce:

n°28012
darkoli
Le Petit Dinosaure Bleu
Posté le 27-04-2001 à 11:54:10  profilanswer
 

juldjin a écrit a écrit :

je fini mon DUT info, et je sais pas ou m'orienter (ecole d'ingénieur, l'armée, le trottoire  :crazy: )



 
ben tu peux aller dans une ecole d'ingenieur specialisée en informatique avec une branche multimedia/traitement d'image par exemple, mais par contre je n'ai pas de nom a te donner.

n°28018
juldjin
Posté le 27-04-2001 à 12:42:01  profilanswer
 

ouaye C'est ce que je cherche en ce moment.. mais je trouve rien pres de lyon.  :??:

n°28021
nabab
I'm blogging this.
Posté le 27-04-2001 à 12:44:54  profilanswer
 

Traitement de l'image >>> ENST Paris. C à 2h de lyon en TGV  :D


---------------
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait
n°28024
juldjin
Posté le 27-04-2001 à 12:58:18  profilanswer
 

le probleme avec ENST de paris c'est qu'il prennent des DUT pas.
 
je crois que y'a 8place sur toutes la france et l'etranger
 
c'est cool pas

n°28125
juldjin
Posté le 27-04-2001 à 15:49:15  profilanswer
 

un petit up avant le week end

n°28300
tfj57
Posté le 28-04-2001 à 19:12:05  profilanswer
 

juldjin a écrit a écrit :

j'en reviens pas c'est exactement le meme raisonnement que j'ai fait (sauf que moi mon prog y panique un peu) je vais tester tout de suite.
 
juste un truc encore, y marche pas que pour les formes creuses ton algorithme ?




 
Cet algorithme fonctionne pour toutes les formes de formes.
 
Il faut juste faire attention à la taille de la pile, car les appels récursifs sont très friands d'espace mémoire dans la pile. Pour tester si tout se passe bien, il suffit de réaliser le cas le plus extrême en remplissant le tableau avec des 0.
 
En ce qui concerne mes études, j'ai aussi fait un DUT informatique. J'ai trouvé cela très bien car on nous enseigne de bonnes bases dans pleins de domaines et cela ne dure que 2 ans, si on en a marre en peut aller bosser avec un diplôme en main.
 
Pour la suite j'ai choisi la solution de facilité en faisant une licence et maîtrise, car on avait déjà vu pas mal de matières à l'IUT et en plus certains profs d'infos étaient les mêmes et faisaient le même programme qu'à l'IUT …
 
Salutations


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  algo de retouche d'image en C

 

Sujets relatifs
[HTML] formulaire et type="button"; changer le bouton en image ?Algo : Operation sur les heures
[PHP ou HTML] Image et clique?Frameset et image de fond
[PHP] Créer une image dans un fichier?[C/C++] Compression, quel algo?
[FLASH] comment changer la source d'une image[php] comment redimentionner une image ???
Insertion d'une image en SQL / OracleImage sous Oracle
Plus de sujets relatifs à : algo de retouche d'image en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR