我使用opencv 2.4.9命令SVDecomp在图像上应用SVD。在返回替换时它会询问rhs数组。那个数组是什么?
命令:
1. cv::SVDecomp(im_enc1,w,u,vt);
其中w,u,vt是SVD组件,而im_enc1是inputimage。
2. cv::SVBackSubst(w,u,vt,rhs,im_enc2);
其中w,u,vt是SVD组件,im_enc2是输出图像。
答案 0 :(得分:0)
SVD是矩阵的分解:
[ u, w, vt ] = svd( mx );
所以反过来应该是一个组合(矩阵产品):
mx = u * w * vt;
代表w可能会遇到困难。考虑以下: Matlab SVD output in opencv
答案 1 :(得分:0)
如果您通过{p>产生u
w
vt
cv::SVD::compute(img,w,u,vt);
那么,保留SVD来获取img的方式就是
img = u*cv::Mat::diag(w)*vt;
请注意,由w
计算出的cv::SVD::compute
是n*1
向量,而不是n*n
矩阵。