Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static String calculoEMQ(BufferedImage imagem,BufferedImage imagem2) {
- BufferedImage ResultImage = imagem2;
- imagem = new BufferedImage(imagem.getColorModel(), imagem.copyData(null), imagem.getColorModel().isAlphaPremultiplied(), null);
- //ResultImage = new BufferedImage(ResultImage.getColorModel(), ResultImage.copyData(null), ResultImage.getColorModel().isAlphaPremultiplied(), null);
- //pegar linha e coluna da imagem
- int coluna = imagem.getWidth();
- int linha = imagem.getHeight();
- int sinal = 0, ruido = 0, mse = 0;
- int sR = 0;
- int sG = 0;
- int sB = 0;
- int rR = 0;
- int rG = 0;
- int rB = 0;
- double peak = 0, snr = 0;
- for (int i = 0; i < coluna; i++) {
- for (int j = 0; j < linha; j++) {
- // pegar os valores de cada pixel da imagem original e da imagem resultante, respectivamente
- int rgb = imagem.getRGB(i, j);
- int r = (int) ((rgb & 0x00FF0000) >>> 16); //R
- int g = (int) ((rgb & 0x0000FF00) >>> 8); //G
- int b = (int) (rgb & 0x000000FF); //B
- int rgbResult = ResultImage.getRGB(i, j);
- //Caclulo do sinal e do ruido
- sR = sR + r * rgbResult;
- sG = sG + g * rgbResult;
- sB = sB + b * rgbResult;
- sinal = (sR + sG + sB)/3;
- rR = rR + (r - rgbResult) * (r - rgbResult);
- rG = rG + (g - rgbResult) * (g - rgbResult);
- rB = rB + (b - rgbResult) * (b - rgbResult);
- ruido = (rR + rG + rB)/3;
- //Calculo do pico da imagem
- if (peak < rgb) {
- peak = rgb;
- }
- }
- }
- //calculo do Erro Medio Quadratico
- mse = mse + (int) Math.pow(ruido, 2) / (linha * coluna);
- peak += 10 * log10((256 * 256) / mse);
- // System.out.println("MSE:" + mse);
- // System.out.println("PSNR(max=" + 256 + "): " + peak);
- String result = "MSE:" + mse + "\nPSNR(max=" + 256 + "): " + peak;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement