nargy | je te donne la même chose en language algo:
Code :
- type Couleur:=Entier 0..255
- type Image:=tableau [][] de Couleur
- type Coordonnee:=Structure( Entiers x,y )
- type Zone:=Liste de Coordonnee
- fonction rogner(Image i) retourne Image
- debut
- /* on fait une moyenne de la couleur des pixels des
- coins, que l on prends comme couleur de référence. */
- Couleur reference:=moyenne(i[0][0],
- i[0][hauteur(i)],
- i[largeur(i)][0],
- i[largeur(i)][hauteur(i)]);
- /* on définit une zone de pixels à retirer, qui ne
- contient au début que les quatre pixels de coin */
- Zone zone:=( (0,0),
- (0,hauteur(i)),
- (largeur(i),0),
- (largeur(i),hauteur(i)) );
- Image rognage[largeur(i)][hauteur(i)]:=Couleur(0);
- /* quand la zone ne s aggrandit plus on a fini. */
- tant que taille(zone)>0
- faire
- /* on aggrandit successivement la zone en y ajoutant
- pour tous les pixels déjà présents les pixels
- adjacents dont la couleur est suffisamment proche
- de la couleur de référence. */
- Zone nouvelleZone:=()
- pout tout element p de zone
- faire
- pour toutes les coordonnée adj adjacentes à p
- si rognage[adj.x][adj.y]==0
- et couleurIdentique(i[adj.x][adj.y], reference)
- alors
- nouvelleZone.ajouter( (adj.x, adj.y) )
- rognage[adj.x][adj.y]:=255
- fait
- zone:=nouvelleZone
- fait
- retourne rognage;
- fin
- /* par suffisamment proche, on entends
- abs(gris1-gris2)<delta. */
- Entier delta:=32 // changer ici le seuil selon image
- fonction couleurIdentique(Couleur c1, Couleur c2) retourne Booleen
- debut
- retourne abs(c1-c2)<delta;
- fin
|
Message édité par nargy le 04-04-2006 à 13:50:24
|