opencv2 4中SVD分解的幾種呼叫方法

2021-09-06 12:56:41 字數 881 閱讀 4304

在攝影測量和計算機視覺中,考慮最優解問題時,經常要用到svd分解。

奇異值分解 (singular value decomposition,svd) 是一種可靠地正交矩陣分解法,但它比qr分解法要花上近十倍的計算時間。在matlab中,[u,s,v]=svd(a),其中u和v代表二個相互正交矩陣,而s代表一對角矩陣。 和qr分解法相同者, 原矩陣a不必為正方矩陣。使用svd分解法的用途是解最小平方誤差法和資料壓縮。

下面是最近在使用opencv2.4.2中的svd分解法解方程時總結的幾點:

// svd分解的四種呼叫方法:

//cout<<"a=\n"<

//=mat(2*num,2*num,cv_64f);

mat s=mat(12,1,cv_64f);

mat vt=mat(12,12,cv_64f); // 注意:opencv中解得的是v的轉置,matlab得到的直接是v

// 方式1

// svd thissvd;

// thissvd.compute(a,s,u,vt,svd::full_uv); // full_uv表示把u和vt補充稱單位正交方陣,實際不是;

// 方式2

// svd thissvd(a,svd::full_uv);

// u=thissvd.u;

// s=thissvd.w;

// vt=thissvd.vt;

// 方式3

//svd::compute(a,s,u,vt,svd::full_uv);

// 方式4

cv::svdecomp(a,s,u,vt,svd::full_uv);  //後面的full_uv表示把u和vt補充稱單位正交方陣;

分解分解

奇異值分解

Opencv2 4學習 HOG特徵

一 什麼是hog特徵 二 如何提取hog特徵 三 視窗 win 塊 block 細胞 cell 與畫素的關係 四 特徵向量維度數目的計算 五 關於梯度直方圖的計算 重點 1 影象卷積 影象梯度一般利用影象與梯度運算元卷積實現,關於這部分內容,可以參考opencv2.4學習 影象卷積 2 梯度運算元 ...

Opencv2 4學習 Mat矩陣的建立

類詳細解釋參見 1 mat mat 無引數構造方法 2 mat mat int rows,int cols,int type 建立行數為 rows,列數為 col,型別為 type 的影象 3 mat mat size size,int type 建立大小為 size,型別為 type 的影象 4 ...

OpenCV中使用SVD分解與重構

原文 opencv中svd分解函式compute c static void svd compute inputarray src,outputarray w,outputarray u,outputarray vt,int flags 0 src decomposed matrix w compu...