`import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageQualityEvaluation {
//
public static double calculateMSE(BufferedImage original, BufferedImage compressed) {
int width = original.getWidth();
int height = original.getHeight();
double mse = 0.0;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int originalPixel = original.getRGB(i, j);
int compressedPixel = compressed.getRGB(i, j);
//
int originalRed = (originalPixel >> 16) & 0xff;
int originalGreen = (originalPixel >> 8) & 0xff;
int originalBlue = originalPixel & 0xff;
int compressedRed = (compressedPixel >> 16) & 0xff;
int compressedGreen = (compressedPixel >> 8) & 0xff;
int compressedBlue = compressedPixel & 0xff;
//
mse += Math.pow(originalRed - compressedRed, 2);
mse += Math.pow(originalGreen - compressedGreen, 2);
mse += Math.pow(originalBlue - compressedBlue, 2);
}
}
//
mse /= (width * height * 3); //
return mse;
}
//
public static double calculatePSNR(double mse) {
int MAX_PIXEL_VALUE = 255; //
return 10 * Math.log10(Math.pow(MAX_PIXEL_VALUE, 2) / mse);
}
public static void main(String[] args) throws IOException {
//
BufferedImage originalImage = ImageIO.read(new File("original_image.png"));
BufferedImage compressedImage = ImageIO.read(new File("compressed_image.png"));
//
double mse = calculateMSE(originalImage, compressedImage);
System.out.println("MSE: " + mse);
//
double psnr = calculatePSNR(mse);
System.out.println("PSNR: " + psnr + " dB");
}
}`
Do your career a big favor. Join DEV. (The website you're on right now)
It takes one minute, it's free, and is worth it for your career.
Community matters
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)