치수를 줄이기 위해 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);
결과는 다음과 같습니다 :
c3e9e9이 코드에 고유 올라올 때nilai N PCA @ 수
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는 고유 값과 감소 차원을 얻는 방법을 알려줍니다.