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

  FORUM HardWare.fr
  Programmation
  C

  verification code erosion

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

verification code erosion

n°2182934
icemake
Posté le 28-03-2013 à 11:55:49  profilanswer
 

bonjour,
je voudrais savoir si pour vous ce code fait bien une érosion

Code :
  1. for(i=1;i<bmp.width-1;i++) //deplacement sur le pixel en largeur
  2. {
  3.  for(j=1;j<bmp.height-1;j++)// deplacement sur les pixel en hauteur
  4.  {
  5.   if(bmp.data[j][i].moy==255 && bmp.data[j-1][i].moy==255 && bmp.data[j][i-1].moy==255 && bmp.data[j+1][i].moy==255 && bmp.data[j][i+1].moy==255)
  6.   {
  7.     bmp1.data[j][i].moy=255;bmp1.data[j][i].r=255;bmp1.data[j][i].g=255;bmp1.data[j][i].b=255;
  8.   }
  9.   else if(bmp.data[j][i].moy==0 || bmp.data[j-1][i].moy==0 || bmp.data[j][i-1].moy==0 || bmp.data[j+1][i].moy==0 || bmp.data[j][i+1].moy==0)
  10.   {
  11.    bmp1.data[j][i].moy=0;bmp1.data[j][i].r=0;bmp1.data[j][i].g=0;bmp1.data[j][i].b=0;
  12.   }
  13.  }
  14. }

mood
Publicité
Posté le 28-03-2013 à 11:55:49  profilanswer
 

n°2182962
theshockwa​ve
I work at a firm named Koslow
Posté le 28-03-2013 à 13:47:36  profilanswer
 

Je ne sais pas ce que tu appelles une érosion, mais je trouve surprenant que tu ne modifies tes données que dans des conditions aussi strictes.
 
C'est probablement assez peu important dans ton cas ... Mais tu devrais prendre l'habitude d'avoir ta boucle intérieure sur width et ta boucle extérieure sur height. Sauf cas particulier, c'est ce qui te donnera les meilleures performances et ca ne change rien à ton algo.


---------------
last.fm
n°2182994
icemake
Posté le 28-03-2013 à 15:39:10  profilanswer
 

une érosion est un "calcul" morphologique sur image binaire
qui diminue le contour de tout objet à 1 de 1 pixel expliqué brièvement c'est sa
j'ai oublier de précisé pour ceux qui connaisse j'utilise un élément structurant carré en 4 connexité
 
et pourquoi le fait d'avoir la boucle width à l'intérieur augmenterai les performance ?

Message cité 1 fois
Message édité par icemake le 28-03-2013 à 16:07:11
n°2183003
theshockwa​ve
I work at a firm named Koslow
Posté le 28-03-2013 à 16:34:48  profilanswer
 

icemake a écrit :

une érosion est un "calcul" morphologique sur image binaire
qui diminue le contour de tout objet à 1 de 1 pixel expliqué brièvement c'est sa
j'ai oublier de précisé pour ceux qui connaisse j'utilise un élément structurant carré en 4 connexité


 
C'est toujours génial ce jargon pour dire que tes pixels sont carrés ( [:orly2] ) et que tu ne t'occupes pas des diagonales.
Pour ce qui est de te donner une réponse quand à la qualité de ton algo, j'imagine que ca va dépendre comment tu remplis ton .moy dans ta structure de données, vu qu'au final, c'est ce moy qui sert de marqueur pour savoir si tu dois mettre en blanc, en noir, ou laisser tel quel.
Accessoirement, vu ce que tu décris, tu voudras sans doute aussi un seuil plus large que 1, mais j'imagine que pour l'exemple ca importe peu.
 

icemake a écrit :

et pourquoi le fait d'avoir la boucle width à l'intérieur augmenterai les performance ?


C'est plus sympa pour le cache de ton processeur de traiter ligne par ligne que colonne par colonne parce qu'apparamment, tes pixels sont organisés par ligne. Ca évite à ton processeur de faire trop d'allers et retours en mémoire.


---------------
last.fm
n°2183010
icemake
Posté le 28-03-2013 à 16:54:35  profilanswer
 

ok d'accord
oui je le reduit pour la ragrandir apres ce qui normalement me permettra de separer les objet collés

Citation :

C'est plus sympa pour le cache de ton processeur de traiter ligne par ligne que colonne par colonne parce qu'apparamment, tes pixels sont organisés par ligne. Ca évite à ton processeur de faire trop d'allers et retours en mémoire.


a ok je me coucherai mais bete ce soir ^.^

n°2183018
theshockwa​ve
I work at a firm named Koslow
Posté le 28-03-2013 à 17:27:34  profilanswer
 

Aussi, tu feras attention : ta méthode ne gère pas les bordures de ce qu'on en voit. Après, tu as peut-être pré-élargi ton image de deux pixels pour gérer ca de manière transparente pour l'algo.

 


Edit : au passage, c'est typiquement le genre d'algo que tu dois pouvoir tester facilement sur tous tes cas critiques, c'est probablement mieux que de ne reposer que sur une relecture de code :)


Message édité par theshockwave le 28-03-2013 à 17:28:32

---------------
last.fm
n°2183102
icemake
Posté le 29-03-2013 à 08:54:45  profilanswer
 

oui j'ai déjà quelque chose une autre fonction qui traite les bordure avant de faire sa


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

  verification code erosion

 

Sujets relatifs
Dépôt/Protéger son code sourcebenchmark de code
Passer un code flash sur une classe externe ASExploit dans mon code
Petit soucis avec code checkbox sur VBClasser communes sur une grille depuis Code Postal
[C] Aide pour comprendre un petit codeMacros C++ - Remplacement de la macro par le code final
Code Html pour une fonction multiplication (débutant)Mon petit bout de code est-il vulnérable aux injections ?
Plus de sujets relatifs à : verification code erosion


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