我使用opencv 2.4.9命令SVDecomp对图像进行SVD操作,在进行反向替换时,它询问rhs数组,这个数组是什么?
命令。
1. cv::SVDecomp(im_enc1,w,u,vt);
其中w,u,vt是SVD组件,im_enc1是输入图像。
2. cv::SVBackSubst(w,u,vt,rhs,im_enc2);
其中w,u,vt为SVD组件,im_enc2为输出图像。
SVD是一个矩阵的分解。
[ u, w, vt ] = svd( mx );
所以反过来应该是一个组成(矩阵积)。
mx = u * w * vt;
困难可能出现在w的表示上. 考虑以下:Matlab SVD在opencv中的输出结果
如果你屈服 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
矩阵: