import fr.jussieu.script.Deug; public class images_gris{ public static void dessine_gris(short[][] image) { short n=image[0][0]; Deug.setGray(n); for(int i = 0; i < image.length; i++) for(int j = 0; j < image[i].length; j++) { if (image[i][j] != n){ n = image[i][j]; Deug.setGray(n); } Deug.drawPoint(i, j); } } public static short[][] colourExpand(boolean[][] im){ short[][] im_gris = new short [im.length][im[0].length]; for(int i = 0; i < im_gris.length; i++) for(int j = 0; j < im_gris[i].length; j++) { if (im[i][j]) im_gris[i][j]=0; else im_gris[i][j]=255; } return im_gris; } public static short[][] antiAlias(short[][] im){ short[][] im_flou = new short [im.length][im[0].length]; for(int i = 0; i < im_flou.length-1; i++){ //pour les bords on recopie juste im_flou[i][0] = im[i][0]; im_flou[i][im[0].length-1] = im[i][im[0].length-1]; } for(int j = 0; j < im_flou[0].length-1; j++){ //pour les bords on recopie juste im_flou[0][j] = im[0][j]; im_flou[im.length-1][j] = im[im.length-1][j]; } for(int i = 1; i < im_flou.length-1; i++) for(int j = 1; j < im_flou[i].length-1; j++) { double moyenne_voisin = im[i-1][j-1] + im[i-1][j] + im[i-1][j+1] + im[i][j-1] + im[i][j+1] + im[i+1][j-1] + im[i+1][j] + im[i+1][j+1]; moyenne_voisin = moyenne_voisin/8; im_flou[i][j] = (short)((3/4.)*im[i][j] + (1/4.)*moyenne_voisin); } return im_flou; } public static void main(String[] args){ int longueur = 200, hauteur = 200; Deug.startDrawings(longueur, hauteur); boolean[][] img_croix = images_NB.croix(longueur, hauteur); boolean[][] img_croix_diag = images_NB.croixDiagonale(longueur); boolean[][] img_superpose = images_NB.superpose(img_croix, img_croix_diag); short[][] img_superpose_gris_flou = antiAlias(antiAlias(antiAlias(colourExpand(img_superpose)))); dessine_gris(img_superpose_gris_flou); } }