1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
private void openActionPerformed(java.awt.event.ActionEvent evt) {
LoadImage loadImage = new LoadImage(null);
int w = 0, h = 0;
BufferedImage image;
float somR = 0;
int somG = 0;
int somB = 0;
int valR[][];
int[][] valG;
int valB[][];
float meanR = 0;
float meanG = 0;
float meanB = 0;
int nbpixl = 0;
float square_Red = 0, square_Blue = 0, square_Green = 0;
//The sum of pixels for each color
int sum_Square_Red = 0, sum_Square_Blue = 0, sum_Square_Green = 0;
// The square sum of the pixels for each color
float varR = 0, varG = 0, varB = 0;//The variance of each color
try {
if (loadImage.loadImage(jScrollPane1)) {
int pixel = 0;
image = loadImage.getImage();
w = image.getWidth();
h = image.getHeight();
System.out.println("width, height: " + w + ", " + h);
nbpixl = w * h;
valR = new int[h][w];
valB = new int[h][w];
valG = new int[h][w];
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
pixel = image.getRGB(j, i);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
valR[i][j] = red;
somR += red;
square_Red = red * red;
sum_Square_Red += square_Red;
valG[i][j] = green;
somG += green;
square_Green = green * green;
sum_Square_Green += square_Green;
valB[i][j] = blue;
somB += blue;
square_Blue = blue * blue;
sum_Square_Blue += square_Blue;
}
}
//la moyenne de pixels dechaque couleurs
meanR = somR / nbpixl;
meanG = somG / nbpixl;
meanB = somB / nbpixl;
//meanB = somB / nbpixl * 255.0f;
//1 method of calculating the variance
System.out.println("1 method of calculating the variance\n");
float var[] = new float[3];
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
varR += (meanR - valR[i][j]) * (meanR - valR[i][j]);
varG += (meanG - valG[i][j]) * (meanG - valG[i][j]);
varB += (meanR - valB[i][j]) * (meanB - valB[i][j]);
}
}
var[0] = (varR / nbpixl);
var[1] = (varG / nbpixl);
var[2] = (varB / nbpixl);
float var_img = ((var[0] + var[1] + var[2]) / nbpixl);
System.out.println("var=\t"+var[0] + "\t"+ var[1] + "\t"+ var[2]);
System.out.println("var of image=\t" + var_img);
//2 method of calculating the variance
System.out.println("2 method of calculating the variance\n");
float varR1 = sum_Square_Red / nbpixl - (meanR * meanR);
float varG1 = sum_Square_Green / nbpixl - (meanG * meanG);
float varB1 = sum_Square_Blue / nbpixl - (meanB * meanB);
float mean_img1 = ((varR1 + varG1 + varB1) / nbpixl);
System.out.println("var=\t" + varR1 + "\t" + varG1 + "\t" + varB1);
System.out.println("var of image=\t" + mean_img1);
}
} catch (IOException ex) {
Logger.getLogger(var_img1.class.getName()).log(Level.SEVERE, null, ex);
}
} |
Partager