2012年6月2日
摘要: 摘要 本文通过opencv来实现一种前景检测算法——GMM,算法采用的思想来自论文[1][2][4]。在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应。然后在测试阶段,对新来的像素进行GMM匹配,如果该像素值能够匹配其中一个高斯,则认为是背景,否则认为是前景。由于整个过程GMM模型在不断更新学习中,所以对动态背景有一定的鲁棒性。最后通过对一个有树枝摇摆的动态背景进行前景检测,取得了较好的效果。关键字:GMM,opencv,前景检测前言 前景检测主要分为帧差法,平均背景法,光流法,前景建模法,背景非参数估计,背景建模法等。而.. 阅读全文
posted @ 2012-06-02 09:37 tornadomeet 阅读(36616) 评论(19) 推荐(7) 编辑
摘要: 在做实验的过程中,难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是很常用的。下面就来讲讲基于opencv的C++版本中图片输出视频是怎么实现的。 本次试验的数据为摇摆的树枝树叶图片,Waving Trees,其来源网址为: http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.ht 该数据全由bmp图片组成。 本次试验的工程环境为:opencv2.3.1+vs2010 实验功能:将多张bmp彩色图片生成一个avi格式的灰度视频文件。 在试验过程中,需要注意一下... 阅读全文
posted @ 2012-06-02 09:13 tornadomeet 阅读(16538) 评论(7) 推荐(1) 编辑
  2012年5月24日
摘要: Deep Learning(深度学习):ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞pytho... 阅读全文
posted @ 2012-05-24 08:32 tornadomeet 阅读(45139) 评论(24) 推荐(41) 编辑
  2012年5月21日
摘要: 1. 读Leibe, B., A. Leonardis, et al. (2004). Combined object categorization and segmentation with an implicit shape model. ECCV. 本文提出的算法名为ISM,其集成识别和分割方法到一个普遍的概率框架中。为了得到好的分割效果,该算法能够产生一个基于每个像素的信任图,该信任图能够体现假设的支持度和真实度,通过该信任图能够处理一个场景中多个目标以及用基于MDL准则解决目标假设重叠的问题。 其识别的流程是首先用常见的特征点检测算子检测出图片的特征点,且以特征点为中心抽取出... 阅读全文
posted @ 2012-05-21 20:07 tornadomeet 阅读(1645) 评论(1) 推荐(0) 编辑
  2012年5月17日
摘要: 1.读Harris, C. and M. Stephens (1988). A combined corner and edge detector, Manchester, UK. 本文提出的算法可以同时检测出边缘和角点,其角点检测算子名为Harris,用的是作者的名字命名,可见其应用之广。 作者首先指出计算机视觉对3维世界的理解离不开图像的特征检测和跟踪,随后又指出边缘信息检测和跟踪存在很多问题,不太适合理解3维真实世界,所以作者把工作重心放在特征点的检测和跟踪上。 本文特征点和边缘检测的思想很简单,其思想来源于前人Moravec的角点检测算法。即用一个小的窗口在像素点周围移动,如... 阅读全文
posted @ 2012-05-17 10:49 tornadomeet 阅读(1989) 评论(0) 推荐(1) 编辑
  2012年5月14日
摘要: 1. 得到Mat类型img的size,可以使用函数img.size(),注意这里有括号。但是在需得到img的行和列时,不需要使用括号,即使用img.rows和img.cols. 2. 已经定义好了img为Mat型,但是没有初始化,在后面程序的任何一个位置可以使用下面的代码初始化img,比如img=Mat(***1,***2),其中***1是矩形区域的大小,***2是数组内数据类型。 3. 在opencv中像素点的数据类型能找到对应类似char,int,float,double的,比如说是分别为CV_8UC1,CV_16UC1,CV_32FC1, CV_64FC1,一定要注意是没有这一说... 阅读全文
posted @ 2012-05-14 00:07 tornadomeet 阅读(6691) 评论(1) 推荐(2) 编辑
  2012年5月10日
摘要: 1.读Dollár, P., V. Rabaud, et al. (2005). Behavior recognition via sparse spatio-temporal features, IEEE. 本文作者提出了检测视频数据特征点,即spatio-temporal特征,即时空特征点,并将该特征应用于行为识别,且在前提假设比较少的情况下提出了一个人体特征检测和行为识别的通用框架。 行为识别的研究途径有以下几种:通过恢复视频中人体的位置和姿态,但是模型匹配很难做到准确;通过跟踪空间特征点轨迹来进行识别;通过不断的重复跟踪来对人体进行行为识别;通过检测时空特征点来进行行为识别。 阅读全文
posted @ 2012-05-10 23:31 tornadomeet 阅读(3161) 评论(1) 推荐(0) 编辑
摘要: 第一章,引论 本章是本书的纲领,有着统领全局的味道。 首先通过一个多项式曲线拟合的例子引出了本领域的一些概念,比如线性模型,过拟合,错误函数,模型比较和模型选择,最大似然,正则化,岭回归,权值衰减,验证集,hold-out集等。 然后作者分别从概率理论,决策理论,信息理论三个方向分别介绍了这几个理论在模式识别和机器学习中的作用。本书也是由这3个理论贯穿的,其中最终要的理论是概率理论。(待续…)第二章,概率分布 阅读全文
posted @ 2012-05-10 21:41 tornadomeet 阅读(1853) 评论(0) 推荐(0) 编辑
  2012年5月8日
摘要: 上次已经初步体验了下particle filter,直接用别人的代码,见我前面的博文http://www.cnblogs.com/tornadomeet/archive/2012/03/18/2404817.html 一开始是内存出错,后面干脆自己学了下particle filter滤波的原理,把代码认真看了一遍,然后自己从头敲了遍代码,虽然运行时不再出现内存溢出等bug,但是没有跟踪效果。 这次的代码和上次一样,有跟踪效果,不过不理想。依旧是参照博主:http://blog.csdn.net/yang_xian521/article/details/6928131 的代码,但是算法稍... 阅读全文
posted @ 2012-05-08 23:11 tornadomeet 阅读(6127) 评论(3) 推荐(1) 编辑
  2012年5月4日
摘要: opencv编写程序中,用鼠标选定矩形框经常用到。编程时看似很简单的逻辑思路,如果对opencv中的Rect不是很了解的话,那实现的效果就不是特别理想,比如说虽然我们习惯性用鼠标从左上到右下选择,但是偶尔也会从左下到右上选择等等…… 开始自己实现这个功能后,发现写的代码比较繁琐,if语句太多。后面看了opencv的例程后,感觉它的代码效率非常高。下面就是用来练习下的。 环境:opencv2.3.1+vs2010 功能:打开摄像头,捕捉视频图像,用鼠标选定视频区域(支持各种选择习惯)。 代码和注释如下: 1 #include "stdafx.h" 2 #include &qu 阅读全文
posted @ 2012-05-04 21:58 tornadomeet 阅读(14922) 评论(0) 推荐(1) 编辑
  2012年5月3日
摘要: 目的: 直方图在cv领域到处可见,因为其功能在cv算法的实现中必不可少。Opencv库中也集成了关于直方图的不少函数,比如直方图的计算,均衡,归一化,相似度比较等等。为了体验这些函数,做了个小实验,功能是:打开摄像头,鼠标选定一个框,框内图像作为标准图像,计算出其直方图并显示出来;然后继续鼠标选定框,该框内的图像的直方图与标准图像的进行相似度计算,计算结果在终端输出,数值越大表示相似度越大。 工程环境:opencv2.3.1+vs2010。工程代码: 1 // hist_test.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h&quo 阅读全文
posted @ 2012-05-03 16:39 tornadomeet 阅读(27096) 评论(3) 推荐(2) 编辑
  2012年5月1日
摘要: 读Poppe, R. (2010). "A survey on vision-based human action recognition." Image and Vision Computing 28(6): 976-990. 这篇文章写的是关于人体动作识别的综述类文章,论文中没有对某个具体的模型或算法做详细的描述,只是将其分类到作者框架下动作识别的一个研究方向。 在本篇论文的参考文献中,作者也列出了比较出名的此类综述性文章,但是每篇综述性文章的写作线索都不尽相同,这是因为每个学长对human action recognition的理解不完全相同。 本领域的一些难点和特点 阅读全文
posted @ 2012-05-01 22:37 tornadomeet 阅读(1209) 评论(0) 推荐(0) 编辑
摘要: 读Isard, M. and A. Blake (1998). "Condensation—conditional density propagation for visual tracking." International journal of computer vision 29(1): 5-28. 在目标跟踪领域中,kalman跟踪有着先天的不足,因为它是基于单模高斯分布的,不能同时表示多目标。而condensation算法使用了重采样技术,目标的概率分布通过随机产生的数据集来表示,然后使用已知的动态模型和观察模型来传播这些随机数据集。实验最后显示这个算法对快速运动 阅读全文
posted @ 2012-05-01 21:44 tornadomeet 阅读(1142) 评论(0) 推荐(0) 编辑
摘要: 读Comaniciu, D. and P. Meer (2002). "Mean shift: A robust approach toward feature space analysis." Pattern Analysis and Machine Intelligence, IEEE Transactions on 24(5): 603-619. 本文分析的算法mean shift是属于一种非参数算法,可以被用来分析复杂的多模态特征空间以及视觉领域的一些其它难题。 文章明确给出了mean shift的定义和计算方法。先将非参数密度估计用核函数表示,然后对其求导,通过引 阅读全文
posted @ 2012-05-01 21:07 tornadomeet 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: 读Stauffer, C. and W. E. L. Grimson (1999). Adaptive background mixture models for real-time tracking, IEEE. 这篇文章首次将GMM模型引入cv领域中,提供了一个用背景减图法进行于前景检测的背景建模方法。文章中将每一个像素点都建立一个混合高斯模型(即用多个高斯来描述该像素点),并且能够在线近似更新该点的模型。训练阶段,当建立了多个高斯时,这些混合高斯的分布将会被评估决定哪些高斯最有可能代表背景模型。在检测阶段,将会计算每个像素点的值与混合高斯中高斯的相似度,如果到达预定阈值,则认为属于背景. 阅读全文
posted @ 2012-05-01 20:24 tornadomeet 阅读(1724) 评论(0) 推荐(0) 编辑
摘要: 帧差法是背景减图法中的一种,只不过是帧差法不需要建模,因为它的背景模型就是上一帧的图,所以速度非常快,另外帧差法对缓慢变换的光照不是很敏感,所以其用途还是有的,有不少学者对其做出了出色的改进。 其基本原理可以用下面公式看出: |i(t)-i(t-1)|<T 背景 |i(t)-i(t-1)|>=T 前景 其中i(t),i(t-1)分别为t,t-1时刻对应像素点的像素值,T为阈值。 当然其缺点也不少,容易出现”双影”和”空洞”现象。 用opencv2.3.1+vs2010做了个简单的实验,其实验代码如下: 1 // frame_diff.cpp : 定义控制台应用程序的入口点。 2.. 阅读全文
posted @ 2012-05-01 09:28 tornadomeet 阅读(31194) 评论(13) 推荐(5) 编辑
  2012年4月30日
摘要: 1. Windows的窗体交互是基于消息映射机制的,比如我们的编辑框可以映射一个变量,我们在编辑框里输入一个数字后,这个数据就可以传递到映射变量里;而我们的按钮可以映射成一个函数,当我们运行的窗体点击这个按钮时,相应的映射函数就被执行。映射变量的添加在类向导里面。而映射函数的添加比较方便,只需要在资源预览中双击按钮控件,便会弹出一个Add Member Function的对话框。2. VC中调用延时函数为Sleep(int n),其中的S一定要大写,且n为毫秒的单位。必须包含头文件<<windows.h>>。3. 普通的代码即使没有用到类,但是.c和.c++区别还是蛮大 阅读全文
posted @ 2012-04-30 08:20 tornadomeet 阅读(1823) 评论(0) 推荐(1) 编辑
  2012年4月29日
摘要: 1. 显示窗口大小的改变方法不同。 在c版本中,定义一个窗口时用cvNamedWindow. 比如说cvNamedWindow(“src”,0);后面的参数为0表示窗口大小可以手动改变,否则窗口的大小是自适应图片大小的。 而在c++版本中定义一个窗口用namedWindow. 比如说namedWindow(“src”,1);不管后面第二个参数是多少,都不能手动更改窗口的大小,因为它的尺寸是根据图片大小自动生成的。 并且要看到手动调整窗口大小的效果,还需要配合cvShowImage(“src”,img); 也就是说如果后面显示用c++版本的imshow(“src”,img);也是看... 阅读全文
posted @ 2012-04-29 17:33 tornadomeet 阅读(9840) 评论(5) 推荐(1) 编辑
  2012年4月27日
摘要: 读Maybeck, P. S. 1979. “Stochastic Models, Estimation, and Control, Volume 1”, Academic Press, Inc. Kalman filter最优估计体现在:它包含了所有能提供的信息,能处理所有可以利用的测量(而不用管这些测量的精度如何),来估计我们感兴趣的参数值。Kalman filter主要利用了系统和测量设备动态模型的相关知识,系统噪声,测量误差,动态模型的不确定性以及我们需要估计的感兴趣变量的初始值。 Kalman估计的主要步骤有:初始化,预测,测量,校正。举个简单的例子形象理解下,比如说我们要预测在.. 阅读全文
posted @ 2012-04-27 16:59 tornadomeet 阅读(2193) 评论(0) 推荐(0) 编辑
  2012年4月23日
摘要: 本文将总结一些在使用opencv+vs过程中碰到的error。 1.程序编译通过,运行时出现如下错误: 解决方法: a.可能是读取文件时出现错误,比如说读图片,视频等文件名字或路径弄错了。 2. 编译程序通过,运行时出现如下错误: 解决方法: a.可能是数据类型不对,比如说在该语句中gray_diff.at<unsigned char>(i,j)=255; 本来gray_diff中的数据类型是unsigned char的,如果你写成了gray_diff.at< int>(i,j)=255;或者是写成其它的就会报类似的错误。 3. 当编译通过,运行程序一段时间后出现如下提 阅读全文
posted @ 2012-04-23 22:11 tornadomeet 阅读(5950) 评论(0) 推荐(0) 编辑
摘要: 本文中将列出opencv需常用的最小工程,以方便今后做测试用。 工程环境为vs2010+opencv2.3.1一、opencv读取图片并显示出来: 代码为: 1 #include "stdafx.h" 2 #include <opencv2/highgui/highgui.hpp> 3 4 using namespace cv; 5 6 int main(int argc,unsigned char* argv[]) 7 { 8 Mat img_src; 9 for (;;)10 {11 img_src=imread("lena.jpg"); 阅读全文
posted @ 2012-04-23 22:01 tornadomeet 阅读(3682) 评论(0) 推荐(0) 编辑
  2012年4月22日
摘要: 一、安装qt软件:( 如果使用的是Qt源码,则用该方法编译,步骤参考http://www.cnblogs.com/elect-fans/archive/2012/03/25/2416997.html 否则直接下载qt-win-opensource-4.8.2-vs2010.exe文件并安装,该文件已编译过了,装完后可以直接使用。本人后面还是采用后面这种方法)听说qt做界面很好,易学,而opencv的界面支持又太简单了,所以打算以后就用qt做cv软件方面的界面,而是就打算学习下qt了。因为在windows下用vs比较多,经过一番查找资料后有2种方法可以将vs和qt结合起来用。1. 直接用qt的. 阅读全文
posted @ 2012-04-22 21:42 tornadomeet 阅读(11380) 评论(22) 推荐(0) 编辑
  2012年4月15日
摘要: 好像在opencv的c版本中,应该是opencv1.0以前,还没有出现CommandLineParser这个类,最近看到opencv2.3后面的版本里自带的samples,很多都用到了CommandLineParser 这个类,那么这个类到底有什么作用呢,从命名大概可以猜出这是个命令行解析类。因为我们知道opencv是一个开源库,所以其很少有图形操作方面的api,基本上还是基于命令行执行的。那么这个类的出现主要是方便用户在命令行使用过程中减少工作量,暂时只能理解到这一点好处,也不知道说错了没有。 比如说看下samples中的一个类中,main函数前定义了一个keys指针 const c... 阅读全文
posted @ 2012-04-15 18:26 tornadomeet 阅读(12701) 评论(3) 推荐(0) 编辑
  2012年4月12日
摘要: 在机器学习和模式识别领域,svm理论使用得很广泛,其理论基础是统计学习,但是如果我们的研究方向不是svm理论,我们只是利用已有的svm工具来对我们的任务进行分类和回归,那么libsvm是一个不错的选择。 那么libsvm到底怎么使用呢?研究了一下,发现使用起来不是很复杂,这一小结就说说到底怎么简单的体会libsvm吧。一、首先准备几个工具: Libsvm下载 http://www.csie.ntu.edu.tw/~cjlin/libsvm/ Gnuplot下载:http://www.gnuplot.info/ Python下载: http://www.python.org/getit/ ... 阅读全文
posted @ 2012-04-12 14:57 tornadomeet 阅读(18992) 评论(6) 推荐(8) 编辑
  2012年4月11日
摘要: 这一节是计算机网络作业,windows socket编程,老师电脑上开一个服务器程序,公开ip地址和端口号,我们同学自己编写一个客户端,能与老师的服务器建立联系,两者能收发即可。这样的代码网上很多,而是就采用了孙鑫VC++第14讲的代码,下面是添加的一点简单注释。 其实socket完成连接功能很简单,依葫芦画瓢即可。首先来看面向连接的TCP流程图。 面向无连接的UDP流程更加简单,如下所示: 现在用TCP协议来完成任务,下面是孙鑫老师的代码,由于我们要提前测试自己的代码,所以也用了服务器端的代码,服务器端端server代码如下: 1 #include <Winsock2.h> 2 阅读全文
posted @ 2012-04-11 12:45 tornadomeet 阅读(19497) 评论(1) 推荐(3) 编辑
  2012年4月10日
摘要: 梯度下降法又叫最速下降法,英文名为steepest descend method.估计搞研究的人应该经常听见这个算法吧,用来求解表达式最大或者最小值的,属于无约束优化问题。 首先我们应该清楚,一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。 现在假设我们要求函数的最值,采用梯度下降法,如图所示: 梯度下降法的基本思想还是挺简单的,现假设我们要求函数f的最小值,首先得选取一个初始点后,然后.. 阅读全文
posted @ 2012-04-10 19:50 tornadomeet 阅读(9641) 评论(0) 推荐(1) 编辑
  2012年4月9日
摘要: 每次看公式用到协方差矩阵时,要跑去网站上看一下协方差矩阵的定义,当然一看就能看明白,可是到了下次再碰到时,不查资料又卡住了,卡在那里令人纠结,这只能说明没有真正理解协方差矩阵。这次顺便做下笔记,加深下理解。 首先要清楚一般出现协方差矩阵时就会出现多维列向量,这里假设为n维,另外既然有协方差字眼,那肯定是一个随机变量。这里假设有d个随机变量x1,x2,x3,…,xd,只不过每个随机变量x又是由n个标量组成的列向量。简单的理解就是说在n维空间中有d个随机的点。现在我们需要求的是关于n维空间中这d个点的协方差矩阵。 用uk列向量表示d个点的平均值,uk中的每一个元素对应d个点中相应维数的平均数。所. 阅读全文
posted @ 2012-04-09 10:17 tornadomeet 阅读(7490) 评论(4) 推荐(1) 编辑
  2012年4月8日
摘要: 前景分割中一个非常重要的研究方向就是背景减图法,因为背景减图的方法简单,原理容易被想到,且在智能视频监控领域中,摄像机很多情况下是固定的,且背景也是基本不变或者是缓慢变换的,在这种场合背景减图法的应用驱使了其不少科研人员去研究它。 但是背景减图获得前景图像的方法缺点也很多:比如说光照因素,遮挡因素,动态周期背景,且背景非周期背景,且一般情况下我们考虑的是每个像素点之间独立,这对实际应用留下了很大的隐患。 这一小讲主要是讲简单背景减图法和codebook法。一、简单背景减图法的工作原理。 在视频对背景进行建模的过程中,每2帧图像之间对应像素点灰度值算出一个误差值,在背景建模时间内算出该像素点的. 阅读全文
posted @ 2012-04-08 22:35 tornadomeet 阅读(25368) 评论(6) 推荐(2) 编辑
摘要: 最近看了些立体视觉方面的资料,感觉立体视觉涉及到的东西太多,且数学理论比较强,特别是几何方面的东西,下面是对这一周看关于立体视觉方面的资料的初步总结,很多知识也是懂了个概念而已,深入的话要在以后的实践过程中不断体会,其中主要是一些名词,写下来算是对自己有个小的总结:一. 射影几何知识。 包括平面射影几何和空间射影几何。射影几何只是在欧式几何中引入了无穷远元素而已,比如说无穷远点,无穷远直线,无穷远曲线和曲面。因此在射影几何中2条平行线是可以相交的,交点在无穷远处,2个平行平面也交于无穷远处的一条直线。 所以在二维射影几何中,引入了二维射影平面,即由欧式平面和无穷远直线构成。其中涉及到的相关知. 阅读全文
posted @ 2012-04-08 15:41 tornadomeet 阅读(3144) 评论(0) 推荐(1) 编辑
  2012年4月1日
摘要: 这一章主要是练习一些图像的表示和描述,内容主要包括图像的一些常用表示方法,比如说链码,MPP,标记,边界片段,骨骼等。另一方面是图像的描述算子,比如说边界描述算子,区域描述算子等。有些课本练习的代码暂时还没有搞定。 其练习过程和结果如下所示: 1 %% 数组单元概念 2 clc 3 clear 4 f=imread('..\images\dipum_images_ch11\Fig1102(a)(noisy_circular_stroke).tif'); 5 imshow(f); 6 [a b c d]=image_stats(f); 7 a=image_stats1(f); . 阅读全文
posted @ 2012-04-01 18:58 tornadomeet 阅读(6448) 评论(7) 推荐(1) 编辑
  2012年3月29日
摘要: 一. 流形学习的英文名为manifold learning。其主要思想是把一个高维的数据非线性映射到低维,该低维数据能够反映高维数据的本质,当然有一个前提假设就是高维观察数据存在流形结构,其优点是非参数,非线性,求解过程简单。二. 流形学习的可行性是因为:1.从认知心理学的角度来讲心理学家认为人的认知过程是基于认知流形和拓扑连续性的;2.许多高维采用数据都是由少数几个隐变量所决定的,所以可以用少数的低维数据来刻画高维数据。三. 流形学习所需的数学背景知识:微分流形,黎曼流形,微分几何,切向量场,拓扑空间,光滑映射等。四. 经典流形学习算法:Isomap:等距映射。前提假设为低维空间中的欧式距离 阅读全文
posted @ 2012-03-29 10:23 tornadomeet 阅读(11359) 评论(2) 推荐(3) 编辑
  2012年3月28日
摘要: 1.准备正负样本: 在上一讲http://www.cnblogs.com/tornadomeet/archive/2012/03/27/2420088.html 中,我们已经收集到了训练所用的正样本。下面就开始收集负样本了,负样本要求是:不能包含人脸,且图片大小也不需要归一化到正样本尺寸,只需比正样本尺寸大或者相等即可。建议负样本用灰度图,加快训练速度,且负样本一定不能重复,要增大负样本的差异性。 这里我采用的负样本是用的是weizmann团队http://www.wisdom.weizmann.ac.il/~vision/Seg_Evaluation_DB/dl.html 网站上的图像分割数 阅读全文
posted @ 2012-03-28 11:28 tornadomeet 阅读(42495) 评论(58) 推荐(1) 编辑
  2012年3月27日
摘要: 总所周知,机器学习前要训练很多数据,一直感觉训练数据是个很神圣的东西,到底怎么训练呢?头脑一直有这么个疑问,但一直没时间去体验。因此最近在学adaboost算法,就要学会怎样训练出一个.xml文件了。方法是相同的,用过一次,以后的训练过程就差不多了。 只是打算进行简单的人脸数据训练,而是在网上下载了yale大学的人脸数据库,由耶鲁大学计算视觉与控制中心创建,包含15位志愿者的165张图片,包含光照,表情和姿态。下载网址为:http://cvc.yale.edu/projects/yalefaces/yalefaces.html。图片如下所示:(右下角是我的系统透明主题的青花瓷照片,别惊讶怎么. 阅读全文
posted @ 2012-03-27 20:10 tornadomeet 阅读(23841) 评论(27) 推荐(6) 编辑
  2012年3月26日
摘要: 这一章中主要是用数字图像处理技术对图像进行分割。因为图像分割是个比较难的课题。这里练习的是比较基本的。包过点、线和边缘的检测,hough变换的应用,阈值处理,基于区域的分割以及基于分水岭方法的分割。 其练习代码和结果如下: 1 %% 图像分割 2 3 %% 点检测 4 clc 5 clear 6 f=imread('.\images\dipum_images_ch10\Fig1002(a)(test_pattern_with_single_pixel).tif'); 7 subplot(121),imshow(f),title('点检测原图'); 8 9 w=[ 阅读全文
posted @ 2012-03-26 11:07 tornadomeet 阅读(17217) 评论(3) 推荐(1) 编辑
  2012年3月24日
摘要: 在上一篇博客http://www.cnblogs.com/tornadomeet/archive/2012/03/24/2415583.html中,我们已经从一个例子中学会了HMM的前向算法,解决了HMM算法的第一个问题,即模型评估问题。这一讲中我们来解决第二个问题:HMM的解码问题,即即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样寻找满足这种观察序列意义上最优的隐含状态序列S,这一步中最常用的算法就是Viterbi算法了。 同样的,我们先引入3个符合: :表示在观察时刻t正处在状态j,且沿一条路径q1q2q3..qt,产生出的o1o2o3…ot最大概率。 :表示的. 阅读全文
posted @ 2012-03-24 19:24 tornadomeet 阅读(26709) 评论(38) 推荐(6) 编辑
摘要: HMM算法想必大家已经听说了好多次了,完全看公式一头雾水。但是HMM的基本理论其实很简单。因为HMM是马尔科夫链中的一种,只是它的状态不能直接被观察到,但是可以通过观察向量间接的反映出来,即每一个观察向量由一个具有相应概率密度分布的状态序列产生,又由于每一个状态也是随机分布的,所以HMM是一个双重... 阅读全文
posted @ 2012-03-24 16:16 tornadomeet 阅读(32296) 评论(14) 推荐(6) 编辑
  2012年3月23日
摘要: DTW为(Dynamic Time Warping,动态时间归准)的简称。应用很广,主要是在模板匹配中,比如说用在孤立词语音识别,计算机视觉中的行为识别,信息检索等中。可能大家学过这些类似的课程都看到过这个算法,公式也有几个,但是很抽象,当时看懂了但不久就会忘记,因为没有具体的实例来加深印象。 这次主要是用语音识别课程老师上课的一个题目来理解DTW算法。 首先还是介绍下DTW的思想:假设现在有一个标准的参考模板R,是一个M维的向量,即R={R(1),R(2),……,R(m),……,R(M)},每个分量可以是一个数或者是一个更小的向量。现在有一个才测试的模板T,是一个N维向量,即T... 阅读全文
posted @ 2012-03-23 11:29 tornadomeet 阅读(62576) 评论(24) 推荐(10) 编辑
  2012年3月22日
摘要: 人脸检测一种主流的方法就是类haar+adaboosting,opencv中也是用的这种方法。这种方法可以推广到刚性物体的检测,前提是要训练好级联分类器(比如说用类haar特征),一旦训练数据弄好了,直接调用opencv中的类CascadeClassifier,用它的几个简单的成员函数就可以完成检测功能。所以说用起来还是很简单的。下面就是用的opencv中自带的samples中的facedetect例子。 当然,源例子考虑到了摄像头,视频,图片多种情况,还有很多出错处理的表达。这里我讲其代码都省略了,因为看起来不是特别简洁。否则还需要用命令行输入,比如说如下图: 要输入的东西比较多,如果一旦. 阅读全文
posted @ 2012-03-22 11:20 tornadomeet 阅读(45549) 评论(33) 推荐(2) 编辑
  2012年3月21日
摘要: 最近在看一些集成学习方面的知识,其中南京大学的周志华教授写的几篇关于集成学习综述性的文章还不错。看了下对集成学习有了一个初步的了解,如下: 集成学习是机器学习中一个非常重要且热门的分支,是用多个弱分类器构成一个强分类器,其哲学思想是“三个臭皮匠赛过诸葛亮”。一般的弱分类器可以由决策树,神经网络,贝叶斯分类器,K-近邻等构成。已经有学者理论上证明了集成学习的思想是可以提高分类器的性能的,比如说统计上的原因,计算上的原因以及表示上的原因。一、集成学习中主要的3个算法为:boosting,bagging,stacking. 其中boosting的弱分类器形成是同一种机器学习算法,只是其数据抽取时的. 阅读全文
posted @ 2012-03-21 10:47 tornadomeet 阅读(11898) 评论(2) 推荐(0) 编辑
  2012年3月20日
摘要: 本章的练习主要是形态学的一些基本概念和技术,这些构成了一组提取图像特征的有力工具,针对二值图像和灰度图像的腐蚀、膨胀和重构的基本操作可以组合使用,以执行非常宽泛的任务。其练习代码和结果如下: 1 %% 第9章 形态学处理 2 3 %% imdilate膨胀 4 clc 5 clear 6 7 A1=imread('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif'); 8 info=imfinfo('.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif&# 阅读全文
posted @ 2012-03-20 16:06 tornadomeet 阅读(49402) 评论(13) 推荐(15) 编辑

阿萨德发斯蒂芬