opencv 實現
先貼上奇異值分解的物理意義:
再貼一下之前寫的筆記:
;//分離通道
std::vector src;
split
(img, src)
;for
(int i =
0; i < src.
size()
/*==channels*/
; i++
)//svd
std::vectorw, u, vt,s;
for(
int i =
0; i < channels; i++)//
mat s1 = mat::
zeros
(w[0
].rows, w[0]
.rows, cv_32f)
; mat s2 = mat::
zeros
(w[1
].rows, w[1]
.rows, cv_32f)
; mat s3 = mat::
zeros
(w[2
].rows, w[2]
.rows, cv_32f)
; s.
push_back
(s1)
; s.
push_back
(s2)
; s.
push_back
(s3)
;for
(int j =
0; j < img.rows; j++
)merge
(src, img)
;imshow
("img"
, img);//
if(j
0.05
)waitkey
(1000);
else
waitkey(1
);//}
getchar()
;//return0;
}
#include
#include
#include
#include
//using eigen::matrixxf;
using
namespace eigen;
using
namespace eigen::internal;
using
namespace eigen::architecture;
intmain()
執行結果:
// 利用eigen庫,採用svd分解的方法求解矩陣偽逆,預設誤差er為0
eigen::matrixxd pinv_eigen_based
(eigen::matrixxd & origin,
const
float er =0)
else
}// pinv_matrix = v * s * u^t
return v * s * u.
transpose()
;}intmain()
執行結果:
//發現沒啥用
void
printmat
(mat & m)
cout<
intmain()
**沒整理,見諒。執行結果:
奇異值分解
奇異值分解 singular value decomposition 是線性代數中一種重要的 矩陣分解,是矩陣分析中正規矩陣酉對角化的推廣。在訊號處理 統計學等領域有重要應用。1基本介紹 2理論描述 3幾何意義 4範數 5應用 求偽逆 平行奇異值模型 矩陣近似值 奇異值分解在某些方面與 對稱矩陣或 ...
奇異值分解
從幾何 的角度上來看奇異值分解 上圖表明任意的矩陣 a 是可以分解成三個矩陣相乘的形式。v表示了原始域的標準正交基,u表示經過a 變換後的co domain的標準正交基,表示了v 中的向量與u中相對應向量之間的關係。我們仔細觀察上圖發現,線性變換a可以分解為旋轉 縮放 旋轉這三種基本線性變換。接下來...
奇異值分解
本文 知乎 我們先舉乙個例子,假設現在我們拿到這樣一組資料,裡面有兩個屬性,既有以 千公尺 每小時 度量的最大速度特徵,也有 英里 小時 的最大速度特徵,顯然我們一眼就看出這兩個特徵有乙個多餘。怎麼直觀的判斷資料是否冗餘?上圖從左往右,我們可以發現資料之間的關聯性越來越強,也就是說兩組資料越來越 相...