image - Java - What is the explanation of this code? -
i have following code:
for (int = 0; < height1; i++) { (int j = 0; j < width1; j++) { int rgb1 = img1.getrgb(i, j); int rgb2 = img2.getrgb(i, j); int r1 = (rgb1 >> 16) & 0xff; int g1 = (rgb1 >> 8) & 0xff; int b1 = (rgb1 ) & 0xff; int r2 = (rgb2 >> 16) & 0xff; int g2 = (rgb2 >> 8) & 0xff; int b2 = (rgb2 ) & 0xff; diff += math.abs(r1 - r2); diff += math.abs(g1 - g2); diff += math.abs(b1 - b2); } } double n = width1 * height1 * 3; double p = diff / n / 255.0; system.out.println("diff percent: " + (p * 100.0));
the code used find percentage of difference between images, don’t know why percentage divided “n” , “255.0”
thanks
each pixel consists of 3 color components:
- r - red color component
- g - green color component
- b - blue color component
each of these color components represented single byte - is, 8 bits. maximum value can represented byte 255.
so in order compute difference in percent, compute sum of differences of color components of pixels, , divide sum...
- by number of pixels, obtain average difference per pixel
- by 3, obtain average difference per color component
- by 255, obtain value between 0.0 , 1.0 can converted percent value
Comments
Post a Comment