1
私はjavacv/opencvで画像圧縮を行うつもりです。JavaCV/OpenCVでのPCA画像圧縮の方法
Firtsコード:PCA中に
CanvasFrame canvasOrig = new CanvasFrame("Original");
canvasOrig.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
CanvasFrame canvasOrig = new CanvasFrame("Original");
canvasOrig.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
CanvasFrame canvasGray = new CanvasFrame("Gray");
canvasGray.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
CanvasFrame canvasPCA = new CanvasFrame("PCA");
canvasPCA.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
OpenCVFrameConverter.ToIplImage t = new OpenCVFrameConverter.ToIplImage();
IplImage image = cvLoadImage("640x480.jpg");
Mat imageOriginal = t.convertToMat(t.convert(image));
Mat imageGray = new Mat();
cvtColor(imageOriginal, imageGray, CV_RGB2GRAY);
System.out.println("ArraySize-Original-Mat: "+imageGray.arraySize());
PCA pca = new PCA(imageGray,new Mat(), CV_PCA_DATA_AS_ROW, 48);
Mat eigValues = pca.eigenvalues().clone();
Mat eigVectors = pca.eigenvectors().clone();
Mat projectedMat = new Mat();
pca.project(imageGray, projectedMat);
がプロセスを計算し、私が期待するような方法がbahavingています。
、私の質問は:
私はPCAの結果から、元の画像を圧縮することができますか?
投影後、与えられたコンポーネントの数と画像の高さでMat(projectedMat)を取得します。バックプロジェクション後、ArraySizeは元のImageよりもはるかに高いです。それは私が期待したことではありません。
おかげ