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

  FORUM HardWare.fr
  Programmation
  Java

  Algorithme Unsharp Mask (HELP)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme Unsharp Mask (HELP)

n°2245700
kasparou
Posté le 11-12-2014 à 09:35:34  profilanswer
 

Bonjour je suis actuellement étudiant du DUT Métier du Multimédia et de l'Internet et je dois faire un exposé sur le filtre d'imageJ Unsharp Mask (renforcement sur Photoshop). Je ne comprends pas comment il fonctionne. J’ai trouvé cet algorithme qui ne m'aide pas forcement :
 
public void sharpenFloat(FloatProcessor fp, double sigma, float weight) {
if (gb == null) gb = new GaussianBlur();
gb.blurGaussian(fp, sigma, sigma, 0.01);
if (Thread.currentThread().isInterrupted()) return;
float[] pixels = (float[])fp.getPixels();
float[] snapshotPixels = (float[])fp.getSnapshotPixels();
int width = fp.getWidth();
Rectangle roi = fp.getRoi();
for (int y=roi.y; y<roi.y+roi.height; y++)
for (int x=roi.x, p=width*y+x; x<roi.x+roi.width; x++,p++)
pixels[p] = (snapshotPixels[p] - weight*pixels[p])/(1f - weight);
}
 
 
Quelqu'un peut m'expliquer ?
 
Merci d'avance !

mood
Publicité
Posté le 11-12-2014 à 09:35:34  profilanswer
 

n°2245742
TotalRecal​l
Posté le 11-12-2014 à 12:28:08  profilanswer
 

Bonjour,

 

Peux tu éditer ton message pour mettre le code entre balises appropriées, en le formatant un peu, et citer la source initiale de l'algo ?
D'autant que s'il se trouve dans un tuto sur le traitement d'images, celui-ci décrit très probablement la logique retenue...

 

Et si ça n'est pas le cas, c'est un algo plutôt commun, donc je pense que plutôt qu'essayer d'en lire une implémentation existante, tu devrais essayer d'en trouver la théorie.
Parce que "il ne m'aide pas forcément" ça fait un peu léger pour savoir ce que tu as déjà assimilé.

 

PS : je viens de lire l'algo et il ne me parait pas spécialement dur à comprendre, pourtant je ne suis pas dans le traitement d'images et je ne connais pas imageJ. L'essentiel est dans la dernière ligne, j'ai juste un peu de mal à cerner le flou gaussien au début.


Message édité par TotalRecall le 11-12-2014 à 12:32:55

---------------
Topic .Net - C# @ Prog
n°2245819
honrisse
Posté le 11-12-2014 à 21:31:07  profilanswer
 

Bonjour,
Le lien de l'extrait du code :  

Code :
  1. /** Unsharp Mask filtering of a float image. 'fp' must have a valid snapshot. */
  2.     public void sharpenFloat(FloatProcessor fp, double sigma, float weight) {
  3.         if (gb == null) gb = new GaussianBlur();
  4.         gb.blurGaussian(fp, sigma, sigma, 0.01);
  5.         if (Thread.currentThread().isInterrupted()) return;
  6.         float[] pixels = (float[])fp.getPixels();
  7.         float[] snapshotPixels = (float[])fp.getSnapshotPixels();
  8.         int width = fp.getWidth();
  9.         Rectangle roi = fp.getRoi();
  10.         for (int y=roi.y; y<roi.y+roi.height; y++)
  11.             for (int x=roi.x, p=width*y+x; x<roi.x+roi.width; x++,p++)
  12.                 pixels[p] = (snapshotPixels[p] - weight*pixels[p])/(1f - weight);
  13.     }


 
se trouve ici : http://rsb.info.nih.gov/ij/develop [...] .java.html
et avec notamment ce commentaire en en-tête :

Citation :

Code :
  1. /** This plugin-filter implements ImageJ's Unsharp Mask command.
  2. * Unsharp masking subtracts a blurred copy of the image and rescales the image
  3. * to obtain the same contrast of large (low-frequency) structures as in the
  4. * input image. This is equivalent to adding a high-pass filtered image and
  5. * thus sharpens the image.
  6. * "Radius (Sigma)" is the standard deviation (blur radius) of the Gaussian blur that
  7. * is subtracted. "Mask Weight" determines the strength of filtering, where "Mask Weight"=1
  8. * would be an infinite weight of the high-pass filtered image that is added.
  9. */


n°2245892
kasparou
Posté le 12-12-2014 à 14:42:56  profilanswer
 

Bonjour,
 
J'ai compris que le principe de cet algorithme est d'accentuer les contraste entre les pixels clairs et sombre (en utilisant un flou gaussien ?).
Cependant, je n'arrive pas a bien saisir la significations des phrases, en particulier celui de la boucle for. En fait je n'arrive pas à comprendre le calcul qui permet le renforcement sur l'image.  
 
Par avance merci.


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

  Algorithme Unsharp Mask (HELP)

 

Sujets relatifs
HELP please : supprimer ligne excel si cellule = 2, 3,4 ou 5[MATLAB] Algorithme ressortissant les plus courts chemins
fille en détresse, html php intégration site ... HELP!!HELP pour comparaison de cellules VBA
HELP macro copie/colle valeurs entre 2 classeurs différentsHelp SVP "erreur d'exécution 13 incompatibilité de type, vba"
Help SVP "sous-répertoires VBA"help programmation perl
help igor[HELP ] Explication d'un Programme
Plus de sujets relatifs à : Algorithme Unsharp Mask (HELP)


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