9. KNN和Sparse构图
一、前言
图是一种重要的数据结构,本文主要表示图像的无向图。所谓无向图是指,图的节点间通过没有方向的边连接。
无向图的表示:
- void SparseGraphic::KNNSparseGraphics(const QString fileName, const QPoint curPos,
- const int K, QVector<QPoint> &resPoint, const int flag)
- {
- if(curPos.x()< || curPos.y()<)
- return;
- cv::Mat Img = GDALOpenCV::GDAL2Mat(fileName);
- int row = Img.rows;
- int col = Img.cols;
- if(curPos.x()>=col || curPos.y() >= row)
- return;
- if(flag != && flag != )
- return;
- cv::Mat imgVec = Img.reshape(,row*col);
- cv::transpose(imgVec,imgVec);
- int curPosVec = curPos.y()*col + curPos.x();
- cv::Mat Dict;
- if(curPosVec != )
- {
- cv::Mat Dict1 = imgVec.colRange(,curPosVec-);
- cv::Mat Dict1_T = Dict1.t();
- cv::Mat Dict2 = imgVec.colRange(curPosVec,imgVec.cols);
- cv::Mat Dict2_T = Dict2.t();
- Dict1_T.push_back(Dict2_T);
- cv::Mat Dict_T = Dict1_T.clone();
- Dict = Dict_T.t();
- Dict = Dict.clone();
- Dict1.release();
- Dict2.release();
- Dict_T.release();
- Dict1_T.release();
- Dict2_T.release();
- }else
- {
- cv::Mat Dict1 = imgVec.colRange(,imgVec.cols);
- Dict = Dict1.clone();
- Dict1.release();
- }
- cv::Mat curPosImgVec = imgVec.colRange(curPosVec-,curPosVec);
- QVector<int> index;
- for(int i = ;i<row*col;i++)
- index.push_back(i);
- index.removeAt(curPosVec);
- if(flag == )
- {
- cv::Mat tmpCurPosImgVec = cv::repeat(curPosImgVec,,Dict.cols);
- cv::Mat subMat = Dict - tmpCurPosImgVec;
- subMat = subMat.mul(subMat);
- cv::sqrt(subMat,subMat);
- cv::reduce(subMat,subMat,,CV_REDUCE_SUM);
- QuickSort(subMat,index,,row*col-);
- for(int i = ;i<K;i++)
- {
- int r = index[i]/col;
- int c = index[i]%col;
- QPoint mPos;
- mPos.setX(c);
- mPos.setY(r);
- resPoint.push_back(mPos);
- }
- }else
- {
- QVector<int> tmpIndex;
- cv::Mat A = ormpSparseRepresentation::ompSparseL2(Dict,curPosImgVec,tmpIndex,K);
- for(int i = ;i<K;i++)
- {
- int r = index[tmpIndex[i]]/col;
- int c = index[tmpIndex[i]]%col;
- QPoint mPos;
- mPos.setX(c);
- mPos.setY(r);
- resPoint.push_back(mPos);
- }
- }
- }
三、显示
9. KNN和Sparse构图的更多相关文章
- PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)
主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:59:22 大家好,今天一起交流下PRML第7章.第六章核函数里提到,有一类机器学习算法,不是对参数做点估计或求其分 ...
- 深度学习与计算机视觉系列(2)_图像分类与KNN
作者: 寒小阳 &&龙心尘 时间:2015年11月. 出处: http://blog.csdn.net/han_xiaoyang/article/details/49949535 ht ...
- 机器学习笔记(5) KNN算法
这篇其实应该作为机器学习的第一篇笔记的,但是在刚开始学习的时候,我还没有用博客记录笔记的打算.所以也就想到哪写到哪了. 你在网上搜索机器学习系列文章的话,大部分都是以KNN(k nearest nei ...
- 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)
第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 支持向量机分类 支持向量机 网格搜索 临近法 决策树 随机森林 bagging方法 import pandas as pd ...
- ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
A 28nm SoC with a 1.2GHz 568nJ/Prediction Sparse Deep-Neural-Network Engine with >0.1 Timing Erro ...
- 用KNN实现iris的4分类问题&测试精度
import matplotlib.pyplot as plt from scipy import sparse import numpy as np import matplotlib as mt ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- K近邻法(KNN)原理小结
K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...
- kd树和knn算法的c语言实现
基于kd树的knn的实现原理可以参考文末的链接,都是一些好文章. 这里参考了别人的代码.用c语言写的包括kd树的构建与查找k近邻的程序. code: #include<stdio.h> # ...
随机推荐
- line-hight-(行高)解析
行高定义:line-height属性是指文本行基线之间的距离. 顶线.中线.基线.底线概念 从上到下四条线分别是顶线.中线.基线.底线,很像才学英语字母时的四线三格,我们知道vertical-alig ...
- (转)怎样查看局域网中自己的IP地址和其他电脑的IP地址?
开始菜单->运行->打cmd,回车->再弹出的黑框里打ipconfig -all,回车显示的IP Address就是你的ip地址看局域网的电脑的ip用软件比较方便,比如p2p终结者, ...
- 常用SQL语句学习整理
增 insert into table_name (column_name1,column_name2) values (value1,value2) 删 delete from table_name ...
- TelerikUI_RadGrid_Filter 自定义方法
要设置 EnableLinqExpressions="false",搞了3,4个小时没反应,就是没有设置这个 Protected Sub btnSearch_Click(sende ...
- VC++ try catch (转)
VC++ try catch (转) 以前都是用try{} catch(-){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代 ...
- 分布式Session共享(二):tomcat+memcached实现session共享
一.前言 本文主要测试memcached实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port To ...
- Jquery 中 $('obj').attr('checked',true)失效的几种解决方案
转载自:搜狐博客 大拙无为 1.$('obj').prop('checked',true) 2. $(':checkbox').each(function(){ this.checked=true; ...
- 基于zigbee与tiny4412开发板的环境监测系统
一.开发板环境搭建 1.tiny4412 linux系统的布置 参考博客:http://www.cnblogs.com/luoxiang/p/4186391.html 二.boa服务器的搭建 下载 ...
- Java compiler level does not match the version of the installed Java project facet.解决办法
问题原因: 出现这个问题的原因是因为,eclipse/myeclipse的jdk编译版本与出现问题的项目JDK编译版本不一致所导致! 解决办法: 工程名---->右键properties-- ...
- CloudStack API访问权限控制
在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置 ...