2013-06-30 5 views
1

치수를 줄이기 위해 PCA를 사용하고 매트릭스를 사용하여 자마를 사용합니다. 하지만 자마와 eigenvalue 얻을 때 문제가있어. 예를 들어, 2 hava 2 이미지 dimention 100x100, 그럼 내가 하나의 매트릭스 2 이미지 x (100x100)를 만듭니다. 20.000 픽셀이 있습니다. 및 eigenvalue 감소 방법자바로 eigenval pca를 얻으십시오

PCA pca = new PCA(matrix); 
    pca.getEigenvalue(6); 
    String n = pca.toString(); 
    System.err.println("nilai n "+n); 

결과는 다음과 같습니다 :

nilai N PCA @ 수

c3e9e9이 코드에 고유 올라올 때

public static void main(String[] args) { 
    BufferedImage bi; 
    int[] rgb; 
    int R, G, B; 
    // int[] jum; 
    double[][] gray = new double[500][500] ; 
    String[] baris = new String[1000]; 
    try { 
     //bi = ImageIO.read(new File("D:\\c.jpg")); 
     int[][] pixelData = new int[bi.getHeight() * bi.getWidth()][3]; 

     int counter = 0; 
     for (int i = 0; i < bi.getHeight(); i++) { 
      for (int j = 0; j < bi.getWidth(); j++) { 
       gray[i][j] = getPixelData(bi, i, j); 
       // R = getR(bi, i, j); 
       //G = getG(bi, i, j); 
       //B = getB(bi, i, j); 
       //jum = R + G + B; 
       // gray[counter] = Double.toString(R + G + B/3); 
       // System.out.println("Gray " +gray); 
       //for (int k = 0; k < rgb.length; k++) { 
       // pixelData[counter][k] = rgb[k]; 
       // } 

       counter++; 
      } 
     } 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Matrix matrix = new Matrix(gray); 
    PCA pca = new PCA(matrix); 
    pca.getEigenvalue(6); 
    String n = pca.toString(); 
    System.err.println("nilai n "+n); 
    //double dete = pcadete(matrix,3600); 
} 

private static int getPixelData(BufferedImage bi, int x, int y) { 
    int argb = bi.getRGB(y, x); 
    int r, g, b; 
    int gray; 
    int rgb[] = new int[]{ 
     (argb >> 16) & 0xff, //red 
     (argb >> 8) & 0xff, //green 
     (argb) & 0xff //blue 
    }; 
    r = rgb[0]; 
    g = rgb[1]; 
    b = rgb[2]; 

    gray = (r + g + b)/3; 
    System.out.println("gray: " + gray); 
    return gray; 
} 

: 이 내 코드 샘플입니다 , u는 고유 값과 감소 차원을 얻는 방법을 알려줍니다.

답변

1

PCA 클래스에 toString 암시가 없기 때문에 개체 출력이 아름답게 출력됩니다.

PCA 클래스를 소유하고있는 경우에는 toString 메서드를 재정 의하여 원하는 방식으로 인쇄 할 수 있습니다. Eclipse를 사용하는 경우, PCA 클래스 -> 소스 -> 생성을 마우스 오른쪽 단추로 클릭하여 해당 메소드를 생성 할 수 있습니다.

System.err.println("nilai n "+ n.getEigenvalue());. 

이 Btw는 더 많은 도움이됩니다 PCA 클래스를 공유 :

하거나 같은 게터를 사용하여 인쇄 해 봅니다.