随笔分类 -  OpenCV

OpenCV学习(39) OpenCV中的LBP图像
摘要:本章我们学习LBP图像的原理和使用,因为接下来教程我们要使用LBP图像的直方图来进行脸部识别。 参考资料: http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html http://www.cnblogs.com/mikewolf2002/p/3438166.html LBP的基本思想是... 阅读全文

posted @ 2013-11-23 10:31 迈克老狼2012 阅读(18540) 评论(4) 推荐(3) 编辑

目标检测的图像特征提取之(三)Haar特征
摘要:原帖地址:http://blog.csdn.net/zouxy09/article/details/7929570 1、Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征。 Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑... 阅读全文

posted @ 2013-11-22 19:45 迈克老狼2012 阅读(13062) 评论(0) 推荐(1) 编辑

目标检测的图像特征提取之(二)LBP特征
摘要:原文地址:http://blog.csdn.net/zouxy09/article/details/7929531 LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用于纹理特征提取。而且... 阅读全文

posted @ 2013-11-22 19:34 迈克老狼2012 阅读(4685) 评论(0) 推荐(0) 编辑

目标检测的图像特征提取之(一)HOG特征
摘要:原帖地址:http://blog.csdn.net/zouxy09/article/details/7929348 1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用... 阅读全文

posted @ 2013-11-22 19:10 迈克老狼2012 阅读(1876) 评论(1) 推荐(0) 编辑

浅析人脸检测之Haar分类器方法
摘要:原帖地址:http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html 由于工作需要,我开始研究人脸检测部分的算法,这期间断断续续地学习了Haar分类器的训练以及检测过程,在这里根据各种论文、网络资源的查阅以及对代码的理解做一个简单的总结。我试图概括性的给出算法的起源、全貌以及细节的来龙去脉,但是水平有限,只能了解其大... 阅读全文

posted @ 2013-11-22 16:49 迈克老狼2012 阅读(3300) 评论(0) 推荐(1) 编辑

OpenCV学习(38) 人脸识别(3)
摘要:前面我们学习了基于特征脸的人脸识别,现在我们学习一下基于Fisher脸的人脸识别,Fisher人脸识别基于LDA(线性判别算法)算法,算法的详细介绍可以参考下面两篇教程内容: http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html LDA算法细节参考: http://ww... 阅读全文

posted @ 2013-11-22 06:57 迈克老狼2012 阅读(2049) 评论(5) 推荐(0) 编辑

线性判别分析(Linear Discriminant Analysis, LDA)算法分析
摘要:原文来自:http://blog.csdn.net/xiazhaoqiang/article/details/6585537 LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996... 阅读全文

posted @ 2013-11-21 16:01 迈克老狼2012 阅读(2370) 评论(0) 推荐(0) 编辑

OpenCV学习(37) 人脸识别(2)
摘要:在前面一篇教程中,我们学习了OpenCV中基于特征脸的人脸识别的代码实现,我们通过代码 Ptr model = createEigenFaceRecognizer(); 创建了人脸识别模型类,该识别模型类基于特征值人脸。该类有几个重要的成员: int _num_components; double _threshold; vector _projecti... 阅读全文

posted @ 2013-11-20 20:46 迈克老狼2012 阅读(1804) 评论(0) 推荐(0) 编辑

OpenCV学习(36) 人脸识别(1)
摘要:本文主要参考OpenCV人脸识别教程:http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html 1、OpenCV 从2.4开始支持3个新的人脸识别算法。 Eigenfaces 极值特征脸 createEigenFaceRecognizer() Fisherfaces crea... 阅读全文

posted @ 2013-11-19 21:32 迈克老狼2012 阅读(3096) 评论(4) 推荐(0) 编辑

OpenCV学习(35) OpenCV中的PCA算法
摘要:PCA算法的基本原理可以参考:http://www.cnblogs.com/mikewolf2002/p/3429711.html 对一副宽p、高q的二维灰度图,要完整表示该图像,需要m = p*q维的向量空间,比如100*100的灰度图像,它的向量空间为100*100=10000。下图是一个3*3的灰度图和表示它的向量表示: 该向量为行向量,共9维,用变量表示就是[v0,... 阅读全文

posted @ 2013-11-19 21:15 迈克老狼2012 阅读(12315) 评论(1) 推荐(0) 编辑

PCA的数学原理
摘要:原帖地址:http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程... 阅读全文

posted @ 2013-11-18 16:26 迈克老狼2012 阅读(31050) 评论(2) 推荐(8) 编辑

OpenCV学习(34) 点到轮廓的距离
摘要:在OpenCV中,可以很方便的计算一个像素点到轮廓的距离,计算距离的函数为:double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)Parameters:contour – 输入参数轮廓。 pt – 测试的点。 measureDist – 如果为false的话,则函数计算符号,在轮廓外部在为-1,在轮廓内为1,在轮廓上,则为0。如果为ture,则计算实际的像素符号距离,在轮廓外的点像素距离为负值,在内的点,像素距离为正值。下面的是计算一副图像中各个像素到轮廓距离的代码:#include "ope 阅读全文

posted @ 2013-11-17 10:58 迈克老狼2012 阅读(7433) 评论(0) 推荐(1) 编辑

OpenCV学习(33) 轮廓的特征矩Moment
摘要:在OpenCV中,可以很方便的计算多边形区域的3阶特征矩,opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。class Moments { public: ...... // 空间矩 double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; // 中心矩 double mu20, mu11, mu02, mu30, mu21, mu12, mu03; // 中心归一化矩 double nu20, nu11, nu02, nu30, nu21, nu12, nu03; }空间矩的公式为:可以知道,对于01二值化的图像,m.. 阅读全文

posted @ 2013-11-17 10:33 迈克老狼2012 阅读(46675) 评论(4) 推荐(7) 编辑

OpenCV学习(32) 求轮廓的包围盒
摘要:在OpenCV中,能够很方便的求轮廓包围盒。包括矩形,圆形,椭圆形以及倾斜的矩形(包围面积最小)集中包围盒。用到的四个函数是:Rect boundingRect(InputArray points)void minEnclosingCircle(InputArray points, Point2f& center, float& radius)RotatedRect minAreaRect(InputArray points)RotatedRect fitEllipse(InputArray points)输入的参数都是轮廓,下面是程序代码:1. Rect和原型包围盒代码:nt 阅读全文

posted @ 2013-11-16 19:25 迈克老狼2012 阅读(10870) 评论(0) 推荐(0) 编辑

OpenCV学习(31) 基于defects的简单手势
摘要:前几年在做毕业设计时候曾用opencv1.0中defects做过简单的手势识别,这几天看OpenCV2.46中的轮廓函数,发现和以前差别挺大,函数调用完全不一样,重新实现了简单手势的代码。1.首先用简单的肤色检测算法,得到手的区域。 Mat img = cv::imread("../hand2.jpg"); namedWindow("image"); imshow("image", img); Mat hsvimg; 首先把图像转化到HSV颜色空间,利用肤色色度、饱和度和亮度的特殊范围,得到手的区域。最后对得到的二值手的区域进行开闭操 阅读全文

posted @ 2013-11-16 17:43 迈克老狼2012 阅读(1830) 评论(0) 推荐(0) 编辑

OpenCV学习(30) 轮廓defects
摘要:上一篇教程中,我们学习了如何计算轮廓的凸包,其实对一个轮廓而言,可能它的凸包和它本身是重合的,也有可能不是重合的。比如下面左边图像的轮廓本身就是凸包,而右边图像的轮廓则不是。我们可以通过函数bool isContourConvex(InputArray contour),来判定一个轮廓是否是凸包,是的话返回true,否则false[注意测试的轮廓必须是简单轮廓,没有自交叉之类的]。 对一个非凸包的轮廓而言,它包括一系列的凹陷区域,这些区域称作defect,比如下面手轮廓中,包括6个defect区域。在OpenCV中,我们用下面的结构来定义defect。struct CvConvexityDe. 阅读全文

posted @ 2013-11-16 13:01 迈克老狼2012 阅读(5127) 评论(0) 推荐(0) 编辑

OpenCV学习(29) 凸包(convexhull)
摘要:在opencv中,通过函数convexHulll能很容易的得到一系列点的凸包,比如由点组成的轮廓,通过convexHull函数,我们就能得到轮廓的凸包。下面的图就是一些点集的凸包。求凸包的代码如下:int main( int /*argc*/, char** /*argv*/ ) { Mat img(500, 500, CV_8UC3); RNG& rng = theRNG(); cout points; //随机在1-100个点,这些点位于图像中心3/4处。 for( i = 0; i hull; convexHul... 阅读全文

posted @ 2013-11-13 21:14 迈克老狼2012 阅读(23008) 评论(0) 推荐(0) 编辑

OpenCV学习(28) 轮廓
摘要:OpenCV中可以方便的在一副图像中检测到轮廓,并把这些轮廓画出来。主要用到两个函数:一个是findContours( img, contours0, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);另一个是drawContours( cnt_img, contours, idx, color, 1, 8, hierarchy );int main( int argc, char**) { Mat img = Mat::zeros(w, w, CV_8UC1); //画6个卡通头像 for( int i = 0; i > con... 阅读全文

posted @ 2013-11-10 19:29 迈克老狼2012 阅读(2873) 评论(0) 推荐(0) 编辑

OpenCV学习(27) 直方图(4)
摘要:我们可以利用OpenCV的直方图,backproject直方图和meanshift算法来跟踪物体。下面通过简单的例子来说明如何实现跟踪算法,我们有两幅狒狒的图片,如下图所示:我们首先在左图中框选狒狒的脸,计算出框选区域的色度(HSV空间的H)直方图,然后在image2中,backproject该直方图,得到每个像素点属于该直方图的概率图。 得到的概率图之后,我们去掉图中低饱和度的像素,然后二值化,最后对该图使用meanshift算法,得到密度最大的区域,这个区域就是我们跟踪的目标区域。注意下面去掉低饱和度像素的方法(HSV空间中的S分量表示饱和度):cv::cvtColor(image, h. 阅读全文

posted @ 2013-11-10 08:52 迈克老狼2012 阅读(1071) 评论(0) 推荐(0) 编辑

OpenCV学习(26) 直方图(3)
摘要:本章中我们学习一下通过backproject直方图,得到一副图像中每个像素属于该直方图的概率。在下边原始图中(左图),我们框选了一块四边形的区域,计算该区域的灰度直方图,然后通过下面的函数calcBackProject,计算图像src中每个像素在直方图中的概率,最终的结果在result中,result中每个像素表示该像素在直方图中的概率,我们对得到的结果进行二值化,就得到下边右图的结果。 我们框选了一块白云区域,但从背投影结果中,海浪的边缘在直方图中的概率也很高,这是因为它们的灰度比较相似,如果我们只想白云的位置,最好使用三通道的直方图,然后背投影。 cv::calcBackProject(. 阅读全文

posted @ 2013-11-09 17:44 迈克老狼2012 阅读(1208) 评论(0) 推荐(0) 编辑

导航