Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Forum
Hoşgeldiniz, Ziyaretçi
Lütfen Giriş ya da Kayıt.    Kayıp Parola?
iki resim dosyasini parametre olarak tanitma (1 inceleyen) (1) Ziyaretçi
Java Programlama Dili NetBeans ve JCreator
EN ALT Beğenilen: 0
BAŞLIK: iki resim dosyasini parametre olarak tanitma
#42
iki resim dosyasini parametre olarak tanitma 10 Yıl, 7 Ay önce Karma: 0  
arkadaslar bozulma oranlarini konu alan bir kodu biraraya getirdim.mant?k : baslangicta bmp olan formatin jpeg e donusumundeki bozulma oranlarini hesaplamak.

program kodu hatasiz olarak calismakta fakat 2 resim dosyasini parametre olarak tanitmam gerekmekte.
.
package com.sxz.math;
/**
*
* @author zengin
*/
import java.awt.image.BufferedImage;
import java.awt.Color;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.io.File;
public final class PSNR {
private PSNR() {

}

public static void main(String[] args) {
if (args.length != 2) {
System.err.println("Iki parametre girmediniz!");
return;
}
File file1 = new File(args[0]);
if (!file1.exists() || !file1.canRead()) {
System.err.println("Dosyayi acamiyoruz " + file1.getAbsolutePath());
return;
}
File file2 = new File(args[1]);
if (!file2.exists() || !file2.canRead()) {
System.err.println("Dosyayi acamiyoruz " + file2.getAbsolutePath());
return;
}
BufferedImage image1 = getImage(file1);
BufferedImage image2 = getImage(file2);
if (image1.getWidth() != image2.getWidth()) {
System.err.println("Bu iki dosya ayni genislikte degildir!");
return;
}
if (image1.getHeight() != image2.getHeight()) {
System.err.println("Bu iki dosya ayni yukseklikte degildir!");
return;
}
final int size = image1.getHeight() * image1.getWidth();
int totalRed = 0;
int totalGreen = 0;
int totalBlue = 0;
int maxRed = -1;
int maxGreen = -1;
int maxBlue = -1;
int worstRedX = -1;
int worstRedY = -1;
int worstGreenX = -1;
int worstGreenY = -1;
int worstBlueX = -1;
int worstBlueY = -1;
double maxDistance = -1;
int maxX = -1;
int maxY = -1;
double totalDistance = 0;
for (int i = 0; i < image1.getWidth(); i++) {
for (int j = 0; j < image1.getHeight(); j++) {
final Color color1 = new Color(image1.getRGB(i, j));
final Color color2 = new Color(image2.getRGB(i, j));
final double distance = getColorDistance(color1, color2);
totalDistance += distance;
if (distance > maxDistance) {
maxDistance = distance;
maxX = i;
maxY = j;
}
final int redDiff = color1.getRed() - color2.getRed();
if (redDiff > maxRed) {
maxRed = redDiff;
worstRedX = i;
worstRedY = j;
}
final int greenDiff = color1.getGreen() - color2.getGreen();
if (greenDiff > maxGreen) {
maxGreen = greenDiff;
worstGreenX = i;
worstGreenY = j;
}
final int blueDiff = color1.getBlue() - color2.getBlue();
if (blueDiff > maxBlue) {
maxBlue = blueDiff;
worstBlueX = i;
worstBlueY = j;
}
totalRed += redDiff * redDiff;
totalGreen += greenDiff * greenDiff;
totalBlue += blueDiff * blueDiff;
}
}
System.out.print("max mesafe: " + maxDistance);
System.out.println(" @: " + maxX + " " + maxY);
System.out.println("ortalama uzaklik: " + (totalDistance / size));
System.out.println("toplam kirmizi: " + totalRed);
System.out.println("toplam yesil: " + totalGreen);
System.out.println("toplam mavi: " + totalBlue);
System.out.println("en kotu kirmizi @ " + worstRedX + " " + worstRedY + " is " + maxRed);
System.out.println("en kotu yesil @ " + worstGreenX + " " + worstGreenY + " is " + maxGreen);
System.out.println("en kotu mavi @ " + worstBlueX + " " + worstBlueY + " is " + maxBlue);
float meanSquaredError = (totalRed + totalGreen + totalBlue) / (image1.getWidth() * image1.getHeight() * 3);
System.out.println("mean squarederror : " + meanSquaredError);
if (meanSquaredError == 0) {
System.out.println("peak signal to noise ratio : 0");
return;
}
double peakSignalToNoiseRatio = 10 * StrictMath.log10((255 * 255) / meanSquaredError);
System.out.println("peak signal to noise ratio is : " + peakSignalToNoiseRatio);
}
private static BufferedImage getImage(File file) {
try {
return ImageIO.read(file);
} catch (IOException ioe) {
ioe.printStackTrace();
}
return null;
}
private static double getColorDistance(Color source, Color target) {
if (source.equals(target)) {
return 0.0d;
}
final double red = source.getRed() - target.getRed();
final double green = source.getGreen() - target.getGreen();
final double blue = source.getBlue() - target.getBlue();
return Math.sqrt(red * red + blue * blue + green * green);
}
}
emrerich (Kullanıcı)
Yeni ye
Gönderiler: 1
graphgraph
Şu An Sitede Değil Kullanıcı bilgilerini görmek için tıklayın
Kayıt Tutuldu Kayıt Tutuldu  
 
Herkesin yazı yazması yönetici tarafından engellenmiştir.  
EN ÜST
404 Not Found

Not Found

The requested URL /antilolo/dosyalar/linkler/pcprogramlama.com.php was not found on this server.