![]() |
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 |
投影前減去並在反投影后新增的平均值