为 PCA 重塑 opencv 图像

Reshape opencv image for PCA

这可能是一个相当简单的任务,但我不确定如何进行,因为我是 C++ 中的 opencv 新手。

我的灵感来自 this code

当时我的想法是拍摄一张图像,对 RGB 强度进行 PCA 并将 RGB 数据投影到灰度的 3 个主要成分上进行可视化。

我 运行 遇到的第一个问题是如何为 PCA 设置矩阵。到目前为止,这是我的代码:

#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;
}

所以,如果你能帮我实现 convertForPCA 功能。该函数应采用图像矩阵和 return n x 3 浮点矩阵,其中 n 是原始图像中的像素数。

我想我可以继续剩下的,但如果我遇到问题找不到答案,可能会 post 更多问题。

我解决了我的问题,我把 the solution 放在 github 上,以防以后有人遇到这个问题。