`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");
}
}`
This site is built on Heroku
Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)