PCA降维(Opencv,C++)
来源:互联网 发布:mac充电器怎么拆开 编辑:程序博客网 时间:2024/06/05 17:47
//找工作好无趣,还是来写篇博客吧~
为了防止误导,先说一下,PCA降维的作用其实是确定一种从高维映射到低维的关系。PCA名儿叫主成分分析法,顾名思义就是通过加加减减各行得到少于之前的行数来达到计算量降低的效果。
例如在人脸识别中,确定了一个降维矩阵后,每张图片进来都乘以这个矩阵映射到低维的空间来进行计算,无论是分类还是其他啥都会减少很多计算量。
===================下面就开始不正经了=====================
先放一个效果图吧
没错,这个降维效果已经准确把握了降维的精髓了,一语中的找出了图片想表达的内容……
然后放上一波代码
#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main() {Mat frame = imread("test.jpg");cvtColor(frame, frame, CV_RGB2GRAY);//double 阈值 = 99.999999999999 / 100.0;//PCA pca(frame, Mat(), CV_PCA_DATA_AS_COL, 阈值);/*#define CV_PCA_DATA_AS_ROW 0#define CV_PCA_DATA_AS_COL 1#define CV_PCA_USE_AVG 2*/int 层数 = 120;PCA pca(frame, Mat(), CV_PCA_DATA_AS_COL, 层数);//图片大小为400*362//这里按COL的方式降维,保证列数不便,行数降低到120层//所以可以发现打印的均值的规格为1*362cout << "均值的规格:" << pca.mean.size() << endl;//均值 cout << "特征值的规格:"<<pca.eigenvalues.size() << endl;//特征值 cout <<"特征向量的规格:" <<pca.eigenvectors.size() << endl;//特征向量Mat dst = pca.project(frame);//映射新空间 //cout << dst;Mat src = pca.backProject(dst);//反映射回来 //cout << src;imshow("原图", frame);imshow("PCA降维后", dst);imshow("反映射", src);waitKey(-1);return 0;}
当然,一般来说,PCA降维也没我这么用的,而且一般也没这效果……
(某种程度上可能还有些误导作用,所有还是先看看降维步骤吧)
PCA降维的步骤:
设有m条n维数据。1)将原始数据按列组成n行m列矩阵X2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值3)求出协方差矩阵4)求出协方差矩阵的特征值及对应的特征向量5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P6)PX即为降维到k维后的数据
阅读全文
0 0
- PCA降维(Opencv,C++)
- OpenCV下PCA降维
- OpenCV下PCA降维
- opencv中的PCA降维
- OpenCV PCA
- Opencv之PCA篇
- OPENCV中的PCA使用
- opencv 中的pca
- PCA for opencv
- PCA(opencv)
- Opencv中的pca算法
- OpenCV中使用PCA
- opencv学习-算法-pca
- opencv 的pca
- opencv pca
- OpenCV中使用PCA
- PCA for opencv
- PCA opencv 源码
- 管道命令和xargs的区别
- C# .NET 0配置使用Wcf
- 数组
- SMbus Host Controller not enabled
- gitlab 提交操作
- PCA降维(Opencv,C++)
- Spring-AOP @AspectJ进阶之增强织入的顺序
- MYSQL常用操作记录(草稿,仅供备忘)
- Mac Android Studio报错installation failed with message failed to finalize session;unknown failure(erro
- 分布式架构 总结(一)
- Spring AOP
- vijos 国土继承 思维+dfs
- 聊聊mavenCenter和JCenter
- maven下的slf4j和logback简易整合