2012-03-02 13 views
-1

私は2つの画像のpsnr(ピーク信号対ノイズ比)を計算するプログラムを構築しています。以下のコードをコンパイルするとき、私は次のエラーを取得しています:シンボル変数が見つかりませんArrayIO

Psnr.java:35: cannot find symbol 
symbol : variable ArrayIO 
location: class Psnr 
ArrayIO.readByteArray(args[2], img1, nrows, ncols); 

Psnr.java

私はプログラムを修正するために何をする必要がありますどのような
import java.io.*; 

public class Psnr { 

    public static double log10(double x) { 
    return Math.log(x)/Math.log(10); 
    } 

    public static void main (String[] args) { 
    int  nrows, ncols; 
    int  img1[][], img2[][]; 
    double peak, signal, noise, mse; 

if (args.length != 4) { 
    System.out.println("Usage: Psnr <nrows> <ncols> <img1> <img2>"); 
    return; 
} 
nrows = Integer.parseInt(args[0]); 
ncols = Integer.parseInt(args[1]); 
img1 = new int[nrows][ncols]; 
img2 = new int[nrows][ncols]; 
ArrayIO.readByteArray(args[2], img1, nrows, ncols); 
ArrayIO.readByteArray(args[3], img2, nrows, ncols); 

signal = noise = peak = 0; 
for (int i=0; i<nrows; i++) { 
    for (int j=0; j<ncols; j++) { 
    signal += img1[i][j] * img1[i][j]; 
    noise += (img1[i][j] - img2[i][j]) * (img1[i][j] - img2[i][j]); 
    if (peak < img1[i][j]) 
     peak = img1[i][j]; 
    } 
} 

mse = noise/(nrows*ncols); // Mean square error 
System.out.println("MSE: " + mse); 
System.out.println("SNR: " + 10*log10(signal/noise)); 
System.out.println("PSNR(max=255): " + (10*log10(255*255/mse))); 
System.out.println("PSNR(max=" + peak + "): " + 10*log10((peak*peak)/mse)); 
    } 
} 

答えて

1

ArrayIOはjava.ioパッケージのクラスではありません。あなたは正しいパッケージ(import書)をインポートし、

+0

何であろうと(ArrayIOは、Java APIの一部ではありません)あなたのクラスパスにライブラリを追加する必要がありますあれ?私はそれを見つけるように見えない。 –

+0

それも見つかりません - Javaの 'ArrayIO'というクラスについて聞いたことはありません。 Googleはあまり助けませんでした...別のソースからコードを取得/修正したかもしれません。多分それは別のプログラミング言語でしたか? –

+0

私はそれがCだと思います。 –

0

It's here

あなたが他の誰かを取った」Javaコード

+0

これは理論的に質問に答えるかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう(http://meta.stackexchange.com/q/8259)。 –

関連する問題