在攝影測量和計算機視覺中,考慮最優解問題時,經常要用到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...