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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月10日 17时23分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 8:只取年月日的java.util.Date(时分秒清零)对象
2019-05-01
Flink的一些核心概念与编程模型(3)
2019-05-01
Flink的一些核心概念与编程模型(4)
2019-05-01
Flink Runtime(5)
2019-05-01
Flink Runtime(6)
2019-05-01
Flink Runtime(7)--搭建非YARN的主从FLINK集群
2019-05-01
Flink Runtime(8)-- 创建Flink项目及依赖管理
2019-05-01
Flink Runtime(9)-- 自己编译Flink
2019-05-01
Flink Runtime(10)-- Flink编译报错集锦
2019-05-01
Flink API 通用基本概念(11)
2019-05-01
Flink DataStream API概述(12)
2019-05-01
Flink Operator概述(13)
2019-05-01
Flink Time概述(14)
2019-05-01
Flink Window概述(15)
2019-05-01
Flink Operators之CoGroup和Join概述(16)
2019-05-01
Flink Operators之Process Function(17)
2019-05-01
Flink 异步I/O访问外部数据(18)
2019-05-01