Signal, sons, images
Translation, rotation, zoom, interpolation bilinéaire
Rappel
Un pixel est codé de la manière suivante : Couleur = b + 256(g+256*r)
Translation (Java)
Il existe deux possibilités pour effectuer une translation d’image :
bout = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
for( int i = 0; i < w; i++ )
for( int j = 0 ; j < h; j++ ){
}
Rotation (Java)
bout = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
double tetaRadian = (Math.PI*angle)/180; //Conversion en radian
for( int i = 0; i < w; i++ )
for( int j = 0 ; j < h; j++ ){ //cx et cy sont les coordonnées du
center de l’image
int x = (int) ((Math.cos(tetaRadian)*(i-
cx)+Math.sin(tetaRadian)*(j-cy))+cx);
int y = (int) ((-Math.sin(tetaRadian)*(i-
cx)+Math.cos(tetaRadian)*(j-cy))+cy);
bout.setRGB(i,j,getPixel(bin,x,y));
}
Zoom (Java)
bout = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
for( int i = 0; i < w; i++ )
for( int j = 0 ; j < h; j++ ){ //scale = indice du zoom (x2, x4,…)
double x = ((i-cx)/scale)+cx;
double y = ((j-cy)/scale)+cy;
bout.setRGB(i,j,getPixel(bin,(int)x,(int)y));
}
Scale (Java)
bout = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
for( int i = 0; i < w; i++ )
for( int j = 0 ; j < h; j++ ){
double x = ((i-cx)/scale)+cx;
double y = ((j-cy)/scale)+cy;
bout.setRGB(i,j,getPixel(bin,(int)x,(int)y));
}
Interpolation bilinéaire
Interpolation : Permet d’estimer la couleur du pixel en fonction des pixels voisins.
Dans le cas d’une interpolation bilinéaire on va prendre la distance avec tous les pixels proches
et faire la moyenne de leur distance (on choisira alors l’arrondit le plus proche).