Gumeo
Gumeo

Reputation: 901

Reshape opencv image for PCA

This is probably a rather simple task, but I am uncertain on how to proceed, since I am new to opencv in C++.

I was inspired by this code.

The idea I had was then to take a single image, do PCA on the RGB intensities and visualize the projection of the RGB data onto the 3 principal components in grayscale.

The first problem I run into, is how to setup the matrix for PCA. Here is my code so far:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( )
{
    // Open another image
    Mat image, imageMat;
    image= imread("images/0.jpg");

    imageMat = convertForPCA(image);

    // Do pca and visualize channels in grayscale.
    // ...
    return 0;
}

So if you could help me implement convertForPCA function. That function should take in an image matrix and return an n by 3 float matrix, where n is the number of pixels in the original image.

I think I can proceed with the rest, but will maybe post more questions if I get stuck and can't find an answer.

Upvotes: 0

Views: 943

Answers (1)

Gumeo
Gumeo

Reputation: 901

I solved my problem, and I put the solution on github in case anyone runs into this later.

Upvotes: 1

Related Questions