![]() |
OpenCV 4.12.0
开源计算机视觉
|
主成分分析。 更多...
#include <opencv2/core.hpp>
公共类型 | |
| 枚举 | 标志 { DATA_AS_ROW = 0 , DATA_AS_COL = 1 , USE_AVG = 2 } |
公共成员函数 | |
| PCA () | |
| 默认构造函数 | |
| PCA (InputArray data, InputArray mean, int flags, double retainedVariance) | |
| PCA (InputArray data, InputArray mean, int flags, int maxComponents=0) | |
| Mat | backProject (InputArray vec) const |
| 从其 PC 投影中重建向量。 | |
| void | backProject (InputArray vec, OutputArray result) const |
| PCA & | operator() (InputArray data, InputArray mean, int flags, double retainedVariance) |
| PCA & | operator() (InputArray data, InputArray mean, int flags, int maxComponents=0) |
| 执行 PCA | |
| Mat | project (InputArray vec) const |
| 将向量投影到主成分子空间。 | |
| void | project (InputArray vec, OutputArray result) const |
| void | read (const FileNode &fn) |
| 加载 PCA 对象 | |
| void | write (FileStorage &fs) const |
| 写入 PCA 对象 | |
公共属性 | |
| Mat | eigenvalues (特征值) |
| 协方差矩阵的特征值 | |
| Mat | eigenvectors (特征向量) |
| 协方差矩阵的特征向量 | |
| Mat | mean |
| 投影前减去并在反投影后添加的平均值 | |
主成分分析。
该类用于计算一组向量的特殊基。该基将由从输入向量集计算出的协方差矩阵的特征向量组成。PCA 类还可以将向量转换到/从由该基定义的新坐标空间。通常,在这个新坐标系中,原始集中的每个向量(以及这些向量的任何线性组合)可以通过取其前几个分量(对应于协方差矩阵最大特征值的特征向量)来相当准确地近似。几何上,这意味着您将向量投影到由协方差矩阵的主导特征值对应的几个特征向量形成的子空间。通常,这种投影非常接近原始向量。因此,您可以使用一个由投影向量在子空间中的坐标组成的短得多的向量来表示高维空间中的原始向量。这种变换也称为 Karhunen-Loeve 变换(或 KLT)。请参阅 http://en.wikipedia.org/wiki/Principal_component_analysis
下面的示例是一个接受两个矩阵的函数。第一个函数存储一组向量(每行一个向量),用于计算 PCA。第二个函数存储另一组“测试”向量(每行一个向量)。首先,这些向量通过 PCA 进行压缩,然后重建,接着计算并打印每个向量的重建误差范数。
| enum cv::PCA::Flags |
| cv::PCA::PCA | ( | ) |
默认构造函数
默认构造函数初始化一个空的 PCA 结构。其他构造函数初始化结构并调用 PCA::operator()()。
| cv::PCA::PCA | ( | InputArray | data, |
| InputArray | mean, | ||
| int | flags, | ||
| int | maxComponents = 0 ) |
这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。
| data | 输入样本以矩阵行或矩阵列的形式存储。 |
| mean | 可选的平均值;如果矩阵为空(noArray()),则平均值将从数据中计算。 |
| flags | 操作标志;目前该参数仅用于指定数据布局(PCA::Flags) |
| maxComponents | PCA 应保留的最大分量数;默认情况下,保留所有分量。 |
| cv::PCA::PCA | ( | InputArray | data, |
| InputArray | mean, | ||
| int | flags, | ||
| double | retainedVariance ) |
这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。
| data | 输入样本以矩阵行或矩阵列的形式存储。 |
| mean | 可选的平均值;如果矩阵为空(noArray()),则平均值将从数据中计算。 |
| flags | 操作标志;目前该参数仅用于指定数据布局(PCA::Flags) |
| retainedVariance | PCA 应保留的方差百分比。使用此参数将允许 PCA 决定保留多少分量,但它始终至少保留 2 个。 |
| Mat cv::PCA::backProject | ( | InputArray | vec | ) | const |
从其 PC 投影中重建向量。
这些方法是 PCA::project 的逆操作。它们接受投影向量的 PC 坐标并重建原始向量。除非所有主成分都已保留,否则重建的向量与原始向量不同。但通常,如果分量数量足够大(但仍远小于原始向量的维度),则差异很小。因此,使用 PCA。
| vec | 向量在主成分子空间中的坐标,布局和大小与 PCA::project 输出向量相同。 |
| void cv::PCA::backProject | ( | InputArray | vec, |
| OutputArray | result ) const |
这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。
| vec | 向量在主成分子空间中的坐标,布局和大小与 PCA::project 输出向量相同。 |
| result | 重建的向量;布局和大小与 PCA::project 输入向量相同。 |
| PCA & cv::PCA::operator() | ( | InputArray | data, |
| InputArray | mean, | ||
| int | flags, | ||
| double | retainedVariance ) |
这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。
| data | 输入样本以矩阵行或矩阵列的形式存储。 |
| mean | 可选的平均值;如果矩阵为空(noArray()),则平均值将从数据中计算。 |
| flags | 操作标志;目前该参数仅用于指定数据布局。(PCA::Flags) |
| retainedVariance | PCA 应保留的方差百分比。使用此参数将允许 PCA 决定保留多少分量,但它始终至少保留 2 个。 |
| PCA & cv::PCA::operator() | ( | InputArray | data, |
| InputArray | mean, | ||
| int | flags, | ||
| int | maxComponents = 0 ) |
| Mat cv::PCA::project | ( | InputArray | vec | ) | const |
将向量投影到主成分子空间。
这些方法将一个或多个向量投影到主成分子空间,其中每个向量投影都由主成分基中的系数表示。第一种形式的方法返回第二种形式写入结果的矩阵。因此,第一种形式可以用作表达式的一部分,而第二种形式在处理循环中可能更高效。
| vec | 输入向量;必须具有与 PCA 阶段使用的输入数据相同的维度和布局,即,如果指定了 DATA_AS_ROW,则 vec.cols==data.cols(向量维度)且 vec.rows 是要投影的向量数量,PCA::DATA_AS_COL 情况亦同。 |
| void cv::PCA::project | ( | InputArray | vec, |
| OutputArray | result ) const |
这是一个重载成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。
| vec | 输入向量;必须具有与 PCA 阶段使用的输入数据相同的维度和布局,即,如果指定了 DATA_AS_ROW,则 vec.cols==data.cols(向量维度)且 vec.rows 是要投影的向量数量,PCA::DATA_AS_COL 情况亦同。 |
| result | 输出向量;在 PCA::DATA_AS_COL 的情况下,输出矩阵的列数与输入向量的数量相同,这意味着 result.cols==vec.cols,并且行数与主成分的数量匹配(例如,传递给构造函数的 maxComponents 参数)。 |
| void cv::PCA::write | ( | FileStorage & | fs | ) | const |
写入 PCA 对象
将 特征值 特征向量和均值写入指定的 FileStorage
| Mat cv::PCA::eigenvalues |
协方差矩阵的特征值
| Mat cv::PCA::eigenvectors |
协方差矩阵的特征向量
| Mat cv::PCA::mean |
投影前减去并在反投影后添加的平均值