Algorithme Unsharp Mask (HELP) - Java - Programmation
Marsh Posté le 11-12-2014 à 12:28:08
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.
Marsh Posté le 11-12-2014 à 21:31:07
Bonjour,
Le lien de l'extrait du code :
Code :
|
se trouve ici : http://rsb.info.nih.gov/ij/develop [...] .java.html
et avec notamment ce commentaire en en-tête :
Citation :
|
Marsh Posté le 12-12-2014 à 14:42:56
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.
Marsh Posté le 11-12-2014 à 09:35:34
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 !