博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9. KNN和Sparse构图
阅读量:5325 次
发布时间:2019-06-14

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

一、前言

图是一种重要的数据结构,本文主要表示图像的无向图。所谓无向图是指,图的节点间通过没有方向的边连接。

无向图的表示:

无向图G=<V,E>,其中:
1.V是非空集合,称为顶点集。
2.E是V中元素构成的无序二元组的集合,称为边集。
对于图像来说,每一个像素都可以看做是一个节点,根据具体节点连接选择方式的不同,可以分为KNN构图和Sparse构图等等。
所谓KNN构图是指,每个像素的节点都与图像中与改点距离最小的K个点连接,连接的值可以通过最小二乘重构计算。
Sparse构图也是一样,主要是将每个像素在其余像素构成的字典中位置原子连接。具体算法可以参考相关文献。
 
二、实现
本节主要实现单个点的图连接情况。稀疏构图采用的是OMP算法解算的。
主要代码函数如下:
1 void SparseGraphic::KNNSparseGraphics(const QString fileName, const QPoint curPos, 2                                       const int K, QVector
&resPoint, const int flag) 3 { 4 if(curPos.x()<0 || curPos.y()<0) 5 return; 6 cv::Mat Img = GDALOpenCV::GDAL2Mat(fileName); 7 int row = Img.rows; 8 int col = Img.cols; 9 if(curPos.x()>=col || curPos.y() >= row)10 return;11 if(flag != 0 && flag != 1)12 return;13 cv::Mat imgVec = Img.reshape(1,row*col);14 cv::transpose(imgVec,imgVec);15 int curPosVec = curPos.y()*col + curPos.x();16 cv::Mat Dict;17 if(curPosVec != 0)18 {19 cv::Mat Dict1 = imgVec.colRange(0,curPosVec-1);20 cv::Mat Dict1_T = Dict1.t();21 cv::Mat Dict2 = imgVec.colRange(curPosVec,imgVec.cols);22 cv::Mat Dict2_T = Dict2.t();23 Dict1_T.push_back(Dict2_T);24 cv::Mat Dict_T = Dict1_T.clone();25 Dict = Dict_T.t();26 Dict = Dict.clone();27 Dict1.release();28 Dict2.release();29 Dict_T.release();30 Dict1_T.release();31 Dict2_T.release();32 }else33 {34 cv::Mat Dict1 = imgVec.colRange(1,imgVec.cols);35 Dict = Dict1.clone();36 Dict1.release();37 }38 cv::Mat curPosImgVec = imgVec.colRange(curPosVec-1,curPosVec);39 QVector
index;40 for(int i = 0;i
tmpIndex;64 cv::Mat A = ormpSparseRepresentation::ompSparseL2(Dict,curPosImgVec,tmpIndex,K);65 for(int i = 0;i

其中:排序与omp算法的代码见文档和文档

三、显示

posted on
2015-09-01 20:55  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/zyore2013/p/4776867.html

你可能感兴趣的文章
Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现
查看>>
hdu 4771 求一点遍历全部给定点的最短路(bfs+dfs)
查看>>
UML 序列图
查看>>
[JS 分析] 有_道_翻_译 MD5 加盐
查看>>
WPF控件深拷贝:序列化/反序列化
查看>>
JAVA_SE基础——32.this关键字调用本类的构造方法
查看>>
winform中datagridview选中行索引获取
查看>>
243. Shortest Word Distance
查看>>
查看被锁的数据[Z]
查看>>
SSM的例子-参考
查看>>
《构建之法》1
查看>>
【菜鸟学Python】案例一:汇率换算
查看>>
文献综述随笔(一)
查看>>
android bindService()
查看>>
JVM 参数设置
查看>>
Volley的基本使用(转)
查看>>
C++ Cookbook 中文版 + 英文原版下载
查看>>
OSError: [WinError 126] 找不到指定的模块 —— 解决办法
查看>>
python记录_day10 动态传参 命名空间 作用域
查看>>
linux基础命令
查看>>