Detection de contour d une image (j ai un probelem dans la partie du filtre)
najah01_3
Messages postés35Date d'inscriptiondimanche 24 septembre 2006StatutMembreDernière intervention17 juillet 2007
-
4 mai 2007 à 01:46
najah01_3
Messages postés35Date d'inscriptiondimanche 24 septembre 2006StatutMembreDernière intervention17 juillet 2007
-
3 juin 2007 à 05:17
Salam ;
je viens de faire detection de contour d une image noir et blanc . je devais faire la difference du pixel (i)(j)-(i-1)(j) =filter(-1f, 1f) .
j ai un probelem dans la partie du filtre
public class NegatifImage extends Applet
{
private Image image,
negatifImage;
public void init ()
{
// Création d'une image et de son négatif
image = getImage (getCodeBase (), "image1.jpg");
negatifImage = createImage (new FilteredImageSource
(image.getSource (),
new FiltreNegatif ()));
}
class FiltreNegatif extends RGBImageFilter
{
public FiltreNegatif ()
{
}
public int filterRGB (int x, int y, int rgb)
{
float[] filter = { -1.0f, 1.0f };
Kernel kernel = new Kernel(2, 1, filter);
ConvolveOp op = new ConvolveOp(kernel);
return op.filter(image, null);
}
}
throw new RuntimeException ("Chargement interrompu ...");
}
}
public int filterRGB (int x, int y, int rgb) {
// Extrémités
if (y == 0) {
return rgb;
}
// Déterminer le pixel précédeur
int yPrevious = y - 1;
if (yPrevious < 0) {
yPrevious = this.width - 1;
}
int previousRGB = this.data [this.width * x + yPrevious];
// Calculer la différence entre le pixel courant le pixel précédant
// Personnellement je ne suis pas sûr que c'est la bonne formule
// Est ce que on rétranche les deux nuances?
// Ou
// De faire la différence pour chaque nuance
// (rouge - rouge, vert - vert, bleu - bleu)
return (rgb - previousRGB); // A VOIR
}
}
Comme je t'ai dit je ne suis pas pro en imagerie mais tu peux me dire quelle formule utilisée pour l'implémenter.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 4 mai 2007 à 21:39
Salut:
Petite correction:
public int filterRGB (int x, int y, int rgb) {
// Extrémités if (y == 0) {
return rgb;
}
int previousRGB = this.data [this.width * x + y - 1];
// Calculer la différence entre le pixel courant le pixel précédant
// Personnellement je ne suis pas sûr que c'est la bonne formule
// Est ce que on rétranche les deux nuances?
// Ou
// De faire la différence pour chaque nuance
// (rouge - rouge, vert - vert, bleu - bleu)
return (rgb - previousRGB); // A VOIR
}
najah01_3
Messages postés35Date d'inscriptiondimanche 24 septembre 2006StatutMembreDernière intervention17 juillet 2007 3 juin 2007 à 05:17
salam ,
je ai realisé le programme de detections de contour d une image blan/noir . lors de l execution un message d ereur dans la partie "public inter filterRGB (int x, int y, int rgb) " s affiche . voici mon programme .
public class NegatifImage extends Applet
{
private Image image,
negatifImage;
public void init ()
{
// Création d'une image et de son négatif
image = getImage (getCodeBase (), "image1.jpg");
negatifImage = createImage (new FilteredImageSource
(image.getSource (),
new FiltreNegatif ()));
}
class FiltreNegatif extends RGBImageFilter
{
private int [] data ;
private int width ;
private int hight ;
public FiltreNegatif (Image Image) {
this.width = Image.getWidth ();
this.height = Image.getHeight ();
this.data = new int [this.width * this.height];