A. Opencv将多维特征向量利用K-means算法聚类
你的理解没有错,确实是一个样本一行,
CvMat* sample = cvCreateMat( sample_dimension, 1, CV_32FC2 );
或者使用 Mat sample;
sample.create(...);
B. 机器学习中,有没有给定的阈值返回聚类结果的算法
机器学习通过从数据里提取规则或模式来把数据转换成信息。主要的方法有归纳学习法和分析学习法。数据首先被预处理,形成特征,然后根据特征创建某种模型。机器学习算法分析收集到的数据,分配权重、阈值和其他参数达到学习目的。如果只想把数据分成不同的类,那么“聚类”算法就够了;如果需要预测,则需要一个“分类”算法。OpenCV库里面包含的是基于概率统计的机器学习方法,贝叶斯网络、马尔科夫随机场、图模型等较新的算法还在成长过程中,所以OpenCV还没有收录。
机器学习的算法有很多很多:1、Mahalanobis
2、K-means 非监督的聚类方法3、朴素贝叶斯分类器 特征是高斯分布&&统计上相互独立 条件比较苛刻4、决策数 判别分类器,根据阈值分类数据,速度快。ID3,C4.5
5、Boosting 多个判别子分类器的组合6、随机森林 由多个决策树组成7、人脸检测/Haar分类器 使用Boosting算法8、期望最大化EM 用于聚类的非监督生成算法
9、K-近邻 最简单的分类器10、神经网络(多层感知器) 训练分类器很慢,但是识别很快11、支持向量机 SVM 可以分类,也可以回归。通过分类超平面实现在高维空间里的最优分类
12、遗传算法 借鉴生物遗传机制 ,随机化埂攻第煌郢号电铜钉扩非线性计算算法总之呢,个人觉得,机器学习、数据挖掘、模式识别、专家系统等方向和领域目前还是一种比较混乱的局面。学术界和商业界可能是不同的,关于算法的理论研究和使用这些方法生成商品是分别关注的。按照不同的领域、不同的方法可以划分出众多的分支。但是有一点是肯定的,这些在上世纪80年代提出来的公式和证明,如今正在变成一行行的代码,在一些猫(tomcat)、IIS等服务器的支持下,爬上了网络,到处寻觅对主人有用的信息,然后运送到网络中,最终生成产品,或者半产品。看看你电脑上的那根网线,它那么小,但是很难想象它从你的电脑上拿走了什么,又给你送来了什么。有些远了,继续说数据这些事。目前我接触过的算法有:(太多了,一时间真不好说出来) 神经网络(感知器、BP、RBF等很多的算法),遗传算法,支持向量机,层次分析法,各种回归,灰色系统(国产的方法,用于不确定知识的预测),粗糙集,贝叶斯网络,时间序列分析(也有很多)。学习和研究纸面的算法公式只是第一步,不可以忽略的基础,如何使用这些方法,在浩瀚的互联网上找到自己需要的、满足客户需要的数据和信息,从而让需要的人能够更加方便地得到,是今后的重头戏了。貌似很多的企业已经进军数据仓库这一块,并尝到了巨大的甜头,也有企业养着一队预备军,专注研发,随时准备奔赴前线,占领市场。无线网络市场的竞争已经到了激烈的局面,普适计算的时代也快到了吧。它依赖于硬件产品的可穿戴,和软件产品的内嵌、快速响应。总而言之,越来越人性化,谁都不愿意抱着笔记本电脑蹲厕所,是吧?
C. 如何在opencv中使用层次聚类算法
如何在opencv中使用层次聚类算法
Invalidate只是放一个WM_PAINT消息在队列里,不做别的,所以只有当当前函数返回后,进入消息循环,取出WM_PAINT,才执行PAINT,所以不管Invalidate放哪里,都是最后的。
InvalidateRect(hWnd,&rect,TRUE);向hWnd窗体发出WM_PAINT的消息,强制客户区域重绘制,
rect是你指定要刷新的区域,此区域外的客户区域不被重绘,这样防止客户区域的一个局部的改动,而导致整个客户区域重绘而导致闪烁,如果最后的参数为TRUE,则还向窗体发送WM_ERASEBKGND消息,使背景重绘,当然在客户区域重绘之前。
D. 什么是均值漂移图像分割技术
均值漂移算法是一种通用的聚类算法,它的基本原理是:对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。
可以利用均值偏移算法的这个特性,实现彩色图像分割,Opencv中对应的函数是pyrMeanShiftFiltering。这个函数严格来说并不是图像的分割,而是图像在色彩层面的平滑滤波,它可以中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域,所以在Opencv中它的后缀是滤波“Filter”,而不是分割“segment”。先列一下这个函数,再说一下它“分割”彩色图像的实现过程。
E. Opencv将多维特征向量利用K-means算法聚类
你的理解没有错,确实是一个样本一行,
CvMat*
sample
=
cvCreateMat(
sample_dimension,
1,
CV_32FC2
);
或者使用
Mat
sample;
sample.create(...);
F. 机器学习同一特征在不同阈值下取值可以算不同维度吗
当然可以。通常情况下,阈值越大,准确率越高,召回率越低。
G. 编程实现图像处理
这个是很基本的图像处理了。写个思路给你吧。
第一步:对整张图像做k-means聚类,或者其他聚类算法也行。我喜欢我MST聚类,不会有空洞;
第二步:依序考察你得到的每一类,考察的指标看你要求了。比如面积(一般用聚类区域的周长来代替,因为好算),像素数,颜色分布等(实际图片中基本不可能有真正的纯色区域,因为噪声多少会有点波动)。选出你要的那个区域(也就是类)。
第三步:用另一张图像替换这个区域。我不太清楚你要做出什么样的效果,如果只是缩放到同等大小然后贴上去的话,直接缩放然后把像素矩阵复制过去就行了。如果要比较完美的“融合”的话,还要在边缘处做插值(最近邻,线性,双线性随你选,当然效果越好计算代价越高)。
至于用什么软件做,用你熟悉的软件就行了。对实时性没要求的话Matlab足够,否则用OpenCV比较好,也就是C++。
另外,聚类算法如果不是很好的话,边缘会出现锯齿,用形态学开运算滤掉即可。
还有什么问题的话可以追问我。
H. opencv 的saliency API 怎么用
过图像分割和区域颜色,距离等信息计算得到显着信息。
主要步骤依次为颜色聚类,图像分割,对每个分割区域分别计算颜色直方图,然后计算每个区域的显着性信息,计算时,每两个区域的距离用颜色直方图距离衡量,每个区域对别的区域的显着性贡献和该区域面积有关,所以算法主要突出以下几种区域
i、颜色直方图和周围区域差距大。
ii、本身面积小
I. 什么是机器学习
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。