Projet gus05 de développement Java
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

Quelques effets esthétiques sur les images

Aller en bas

Quelques effets esthétiques sur les images Empty Quelques effets esthétiques sur les images

Message  Gus Ven 8 Juil - 21:47

Voici quelques entités de traitement pour obtenir des effets esthétiques sur les images. Il ne s'agit que de quelques exemples parmi les nombreuses possibilités qu'offre l'API JAI.

Image originale :
Quelques effets esthétiques sur les images Mononoke_original

gus.image.transform.rendered.kernel.convolve
Pour rendre une image floue. En augmentant la valeur de SIZE, l'image devient encore plus floue.

Code:
package gus05.entity.gus.image.transform.rendered.kernel.convolve;

import java.awt.image.RenderedImage;
import javax.media.jai.JAI;
import javax.media.jai.KernelJAI;
import gus05.framework.core.Entity;
import gus05.framework.features.Transform;

public class Convolve implements Entity, Transform {

    public String getName()            {return "gus.image.transform.rendered.kernel.convolve";}
    public String getCreationDate()      {return "2011.07.07";}

    public static final int SIZE = 10;

    public Object transform(Object obj) throws Exception
    {
       RenderedImage image = (RenderedImage) obj;
       
       float[] kernelMatrix = new float[SIZE*SIZE];
       for(int k=0;k<kernelMatrix.length;k++)
       kernelMatrix[k] = 1.0f/(SIZE*SIZE);
       KernelJAI kernel = new KernelJAI(SIZE,SIZE,kernelMatrix);
       
      return JAI.create("convolve",image,kernel);
    }
}
Quelques effets esthétiques sur les images Mononoke_convolve

gus.image.transform.rendered.kernel.errordiffusion
L'image devient irisée.

Code:
package gus05.entity.gus.image.transform.rendered.kernel.errordiffusion;

import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.ColorCube;
import javax.media.jai.JAI;
import javax.media.jai.KernelJAI;
import gus05.framework.core.Entity;
import gus05.framework.features.Transform;

public class ErrorDiffusion implements Entity, Transform {

    public String getName()            {return "gus.image.transform.rendered.kernel.errordiffusion";}
    public String getCreationDate()      {return "2011.07.07";}

    public Object transform(Object obj) throws Exception
    {
       RenderedImage image = (RenderedImage) obj;
       
       ParameterBlock pb = new ParameterBlock();
      pb.addSource(image);
      pb.add(ColorCube.BYTE_855);
      pb.add(KernelJAI.ERROR_FILTER_FLOYD_STEINBERG);
      
      return JAI.create("errordiffusion", pb, null);
    }
}
Quelques effets esthétiques sur les images Mononoke_errordiffusion

gus.image.transform.rendered.kernel.gradientmagnitude
On applique ici un traitement de détection des bords puis l'inversion des couleurs

Code:
package gus05.entity.gus.image.transform.rendered.kernel.gradientmagnitude;

import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.JAI;
import javax.media.jai.KernelJAI;
import gus05.framework.core.Entity;
import gus05.framework.features.Transform;

public class GradientMagnitude implements Entity, Transform {

    public String getName()            {return "gus.image.transform.rendered.kernel.gradientmagnitude";}
    public String getCreationDate()      {return "2011.07.08";}

    public Object transform(Object obj) throws Exception
    {
       RenderedImage image = (RenderedImage) obj;

       float data_h[] = new float[] {
             1.0F, 0.0F, -1.0F,
             1.414F, 0.0F, -1.414F,
             1.0F, 0.0F, -1.0F};
       
       float data_v[] = new float[] {
             -1.0F, -1.414F, -1.0F,
             0.0F, 0.0F, 0.0F,
             1.0F, 1.414F, 1.0F};

       KernelJAI kern_h = new KernelJAI(3,3,data_h);
       KernelJAI kern_v = new KernelJAI(3,3,data_v);

       image = JAI.create("gradientmagnitude",image,kern_h, kern_v);
       
       ParameterBlock pb = new ParameterBlock();
      pb.addSource(image);
      return JAI.create("invert",pb);
    }
}
Quelques effets esthétiques sur les images Mononoke_gradientmagnitude
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum