opencv实现canopy算法
#include "stdafx.h"
using namespace cv; int main(int argc, char** argv)
{
Mat img=imread("d:/pic/lena.jpg");
imshow("src",img);
CV_Assert(!img.empty());
vector<Mat> planes;
split(img,planes);
int total=img.total();
Mat p(total,,CV_32F,Scalar::all());
int i;
for(i=;i<total;i++)
{
p.at<float>(i,)=planes[].data[i];
p.at<float>(i,)=planes[].data[i];
p.at<float>(i,)=planes[].data[i];
}
RNG rng();
int num=; //canopy个数
double t1=200.0,t2=100.0; //两个距离阈值
vector<Mat> canopy(total); //canopy矩阵组
while(!p.empty())
{ int r=p.rows; //余下的数据的行数
Mat temp;
int k=rng.uniform(,r); //在余下的数据中随机抽选一个作为canopy中心
cout<<"The rest of number of rows: "<<r<<", random:"<<k<<endl;
for(i=;i<r;i++)
{
double d=norm(p.row(k),p.row(i)); //计算选出点和其它点的距离
if(d<=t1)
canopy[num].push_back(p.row(i)); //将距离小于t1的所有点放入到一个新的canopy中
if(d>t2)
temp.push_back(p.row(i)); //更新数据
}
temp.copyTo(p);
num++;
}
cout<<"the total number of canopy:"<<num<<endl; //最终类别数
for(i=;i<num;i++)
cout<<"the number of "<<i+<<" class: "<<canopy[i].total()<<endl;
waitKey();
return ;
}
opencv实现canopy算法的更多相关文章
- Canopy算法聚类
Canopy一般用在Kmeans之前的粗聚类.考虑到Kmeans在使用上必须要确定K的大小,而往往数据集预先不能确定K的值大小的,这样如果 K取的不合理会带来K均值的误差很大(也就是说K均值对噪声的抗 ...
- mahout中kmeans算法和Canopy算法实现原理
本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...
- OpenCV实现KNN算法
原文 OpenCV实现KNN算法 K Nearest Neighbors 这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围K个最近邻以给出该样本的相应值.这种方 ...
- Mahout 系列之--canopy 算法
Canopy 算法,流程简单,容易实现,一下是算法 (1)设样本集合为S,确定两个阈值t1和t2,且t1>t2. (2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p. (3 ...
- mahout之canopy算法简单理解
canopy是聚类算法的一种实现 它是一种快速,简单,但是不太准确的聚类算法 canopy通过两个人为确定的阈值t1,t2来对数据进行计算,可以达到将一堆混乱的数据分类成有一定规则的n个数据堆 由于c ...
- java 在centos6.5+eclipse环境下调用opencv实现sift算法
java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core ...
- OPENCV下SIFT算法使用方法笔记
这几天继续在看Lowe大神的SIFT神作,看的眼花手脚抽筋.也是醉了!!!!实在看不下去,来点干货.我们知道opencv下自带SIFT特征检测以及MATCH匹配的库,这些库完全可以让我们进行傻瓜似的操 ...
- 用OpenCV实现Photoshop算法(三): 曲线调整
http://blog.csdn.net/c80486/article/details/52499919 系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Ph ...
- 数据挖掘算法之聚类分析(二)canopy算法
canopy是聚类算法的一种实现 它是一种快速,简单,但是不太准确的聚类算法 canopy通过两个人为确定的阈值t1,t2来对数据进行计算,可以达到将一堆混乱的数据分类成有一定规则的n个数据堆 由于c ...
随机推荐
- MongoDB-环境搭建
1.下载并安装MongoDB服务 下载地址:mongodb-win32-x86_64-2008plus-ssl-3.2.8-signed 可直接运行mongod命令启动MongoDB服务器,也可以将M ...
- shell字符串分割截取和转换总结
一:字符串的截取 假定有定义变量VAR=mm/aa/bb/dd 1.获取字符串长度:echo "${#VAR}",即输出11: 2.非贪婪模式删除左边的,保留右边的:echo &q ...
- cyclone IV中DDR的一个报错{Too many output and bidirectional pins per VCCIO and ground pair in I/O bank 8 }
Error (169224): Too many output and bidirectional pins per VCCIO and ground pair in I/O bank 8 when ...
- 上传文件夹+php
最近公司做工程项目,实现文件夹上传 网上找了很久,发现网上很多代码大都存在很多问题,不过还是让我找到了一个符合要求的项目. 对项目的文件夹上传功能做出分析,找出文件夹上传的原理,对文件夹的传输模式深入 ...
- 2.2.2synchronized同步代码块的使用
当两个并发线程访问同一个对象object中的synchronized(this)同步代码块时,一段时间内只能有一个线程执行,另一个线程必须等待期执行完才能执行. package com.cky.bea ...
- linux 配置阿里云yum库
备份当前yum库 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex 新建yum源配置目录 mkdir /etc/yum.repos.d 设置阿里yum ...
- android textview支持多种格式跳转
http://www.linuxidc.com/Linux/2011-08/40530p2.htm 1.android:autoLink属性,使TextView中链接手机号码/网页/邮件/地图 and ...
- 02:OC和C对比
1.源文件对比 C语言中常见源文件.h头文件,.c文件 文件扩展名 源类型 .h 头文件,用于存放函数声明 .c C语言源文件,用于实现头文件中声明的方法 OC中的源文件.h头文件,.m与.mm的实现 ...
- 《mysql必知必会》学习_第12章_20180801_欢
第12章:汇总数据 P76 avg()函数求平均值 select avg(prod_price) as avg_price from products; #计算prod_price的平均值,并且命名为 ...
- js-数组面试题
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...