opencv SVD算法
发布日期:2021-11-07 18:53:22 浏览次数:1 分类:技术文章

本文共 898 字,大约阅读时间需要 2 分钟。

参照: 

#include 
#include
using namespace std;using namespace cv;//SVD算法int main(){ string filename = "C:/Users/Administrator/Desktop/标准测试图片/Fig0646(a)(lenna_original_RGB).tif"; Mat img = imread(filename, IMREAD_GRAYSCALE); img.convertTo(img, CV_32FC1);//转换为float类型 string tile = "压缩比率"; Mat U, W, VT; SVD svd; svd.compute(img, W, U, VT); //将矩阵进行压缩 //原始数据进行压缩之后是 m*m m*n n*n //由于特征值在前几行中占有的比率是比较大的,所以,仅仅选择前几行(r)作为好的特征值 //那么分解的结果就变为 m*r r*r r*n 这样的形式 double radio = 0.2;//压缩比率 int rows = radio*img.rows; Mat WROI = Mat::zeros(rows, rows, CV_32FC1);//W矩阵的大小 //填充举着WROI; for (int i = 0; i < rows;++i) { WROI.at
(i, i) = W.at
(i); } Mat UROI = U.colRange(0, rows);//主要注意的是,colrange中不包含End Mat VTROI = VT.rowRange(0, rows); Mat Result = UROI*WROI*VTROI; //将结果转换为灰度影像 Result.convertTo(Result, CV_8UC1); namedWindow(tile); imshow(tile, Result); waitKey(0); return 0;}

 

转载地址:https://blog.csdn.net/zhanggusheng/article/details/70161085 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:opencv PCA算法
下一篇:模拟相机捕捉影像 将影像进行保存

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月10日 17时23分34秒