
计算机视觉与机器学习
文章平均质量分 87
cshilin
这个作者很懒,什么都没留下…
展开
-
CMake编译opencv和argc、argv含义
使用CMake生成OpenCV源代码工程的解决方案 如果你需要在下载的OpenCV中尽心编译,为了学习源码或者调试,或者加入开源组织,需要将opencv进行编译生成VS解决方案。 CMake的作用远不止这一个,但是,作为一个程序开发者,而不是一个程序提供者常见的用处可能就是编译成特定操作系统的代码。我们使用windows版本的CMake。 使用很简单: 设置一个源码的位置,我们把它指定到原创 2016-07-26 20:15:46 · 3728 阅读 · 0 评论 -
朴素贝叶斯分类
我们开始讨论OpenCV的机器学习库,首先学习一个监督学习分类器NormalBayesClassifier,叫做正态贝叶斯分类器或者朴素贝叶斯分类器。它假设所有的特征之间相互独立,虽然这种假设不太符合实际,但是在实际运用中,发现这种假设得到的结果却也能够得到惊人的性能。朴素贝叶斯分类器不能处理回归问题,但是它能够有效的处理多类问题,而不仅仅是两类问题。朴素贝叶斯分类器是当前快速发展的贝叶斯网络的最简原创 2016-08-08 17:04:30 · 1567 阅读 · 0 评论 -
机器学习-二叉决策树
对于分类回归树,算法的要点是给树的每个结点定义一个衡量标准。比如,当我们拟合一个函数的时候,我们使用真实值和预测值的差的平方和,这就是衡量标准。算法的目的是使差的平方和最小。对于分类问题,我们定义一个度量,使得当一个结点的大多数值都属于同一类时,这个度量最小。三个最常用的度量是:熵(entropy)、吉尼系数(Giniindex)和错分类(misclassification)。决策树构成了其他算法原创 2016-08-08 20:50:41 · 12190 阅读 · 2 评论 -
机器学习-boosting
boosting和随机森林在内部使用了决策树,所以继承了树的很多有用性质。 在监督学习领域,有一种想法就是从很多弱分类器重学习得到一个强分类器。boosting算法,也叫AdaBoosting。 注: Boosting意为加强、提升,也就是说将弱分类器提升为强分类器。而我们常听到的AdaBoost是Boosting发展到后来最为代表性的一类。所谓AdaBoost,即Adaptive Boost原创 2016-08-08 22:04:00 · 2686 阅读 · 0 评论 -
机器学习-随机森林
OpenCV包含随机森林(random forest)类,随机森林可以通过收集很多树的子节点对各个类别的投票,然后选择获得最多投票的类别作为判断结果。通过计算“森林”的所有子节点上的值的平均值来解决回归问题。随机森林包含随机选择的一些决策树。随机森林建立时的基本子系统也是决策树,在建立决策树时会一直继续下去直到数据纯净。如果所有的树都很相似,随机森林就没有很大的作用。为了克服这点,随机森林通过在树原创 2016-08-10 21:56:09 · 4837 阅读 · 3 评论 -
机器学习-人脸检测和Haar分类器
Haar分类器是一个基于树的分类器,它建立了boost筛选式级联分类器。可以使用OpenCV中的“人脸”检测器来检测“基本刚性的”物体(脸,汽车,自行车,人体)。通过成千上万的物体各个角度的训练图像,训练出新的分类器、这个技术被用来设计目前最优的检测算法。因此,对于此类识别的任务,Haar分类器是一个有用的工具。 OpenCV称这个检测器为“Haar分类器”是因为它使用Haar特征或更准确的描述是原创 2016-08-11 14:20:53 · 5918 阅读 · 1 评论 -
人脸识别技术大总结
感谢原博主:http://www.cnblogs.com/sciencefans/p/4394861.html搞了一年人脸识别,寻思着记录点什么,于是想写这么个系列,介绍人脸识别的四大块:Face detection, alignment, verification and identification(recognization),本别代表从一张图中识别出人脸位置,把人脸上的特征点定位,转载 2016-08-11 14:35:44 · 3244 阅读 · 0 评论 -
OpenCV人脸识别facerec
人脸辨认从OpenCV2.4开始,加入了新的类FaceRecognizer,我们可使用它便捷地进行人脸辨认实验。其源代码可以在OpenCV中的opencvmodulescontribdocfacerecsrc下找到。 目前支持的算法有:Eigenfaces特点脸createEigenFaceRecognizer() Fisherfaces createFisherFac转载 2016-08-11 14:52:03 · 2674 阅读 · 0 评论 -
机器学习-车牌识别框架学习
之前学习了一个GitHub开源的框架,GitHub地址为: https://github.com/liuruoze/EasyPR 希望通过此篇博客详细阐述如何一步步实现车牌的识别过程。 车牌识别分成了两个部分,首先是车牌的定位,然后则是车牌的文字识别。 Plate Detect过程中包含了三个部分,“Plate location”,“SVM train”,”Plate judge”。其中最重原创 2016-08-12 14:56:08 · 7265 阅读 · 0 评论 -
人脸识别-再识
这里是识别,而不是人脸检测,检测部分前面我已经说过,是一种基于adaboost的级联决策算法,能够高精度的检测出人脸所在的区域。 前面我们转载了几篇人脸识别网上的资源,大家可能知道如何在OpenCV中使用人脸识别这个库,但是对于其中算法的深层含义还远没有彻底弄懂。所以我通过一篇论文的阅读《基于LBP和Fisher face的人脸算法研究》讲解现在人脸识别算法的具体含义。 CV_EXPORTS原创 2016-08-13 11:55:18 · 2524 阅读 · 0 评论 -
人脸识别-再识(二)
Fisher face方法 为了提高识别效率,在对特征向量进行降维的同时还需要寻求更有利用分类的向量。 Fisher Fface方法是主成分分析(PCA)与Fisher线性判别分析(FLD Fisher Linear Discriminant Analysis)相结合的算法,算法首先对高维特征样本进行PCA降维,投影到低维特征空间,再采用LDA方法得到最优判别向量。主成分分析方法是基于K-L变原创 2016-08-13 17:39:37 · 1563 阅读 · 0 评论 -
行人识别
行人识别这一块主要的研究是基于HoG特征+SVM分类器判断图像中是否存在行人。我们先给出行人识别的过程: 1. 数据训练(OpenCV 中有自带的已经训练好了的,设置参数为Default就是使用的默认的)。当然你可以自己根据手里的数据进行训练,如果你的数据有代表性,这样其实往往可能的效果比默认的会好,因为你的训练数据是自己的项目实际需求得到的。你的测试数据也是该环境下的。出现误差的概率会下降。原创 2016-08-13 20:17:35 · 4100 阅读 · 0 评论 -
神经网络ANN
人工神经网络又称神经网络。神经网络是一种学习器,给他一组输入,他会得到一组输出,神经网络里的结点相互连接决定了输入的数据在里面经过怎样的计算。我们可以通过大量的输入,让神经网络调整它自身的连接情况从而总是能够得到我们预期的输出。神经网络对于逼近实数值、离散值或向量值的目标函数提供了一种健壮性很强的方法,现在已经成功应用到很多领域,例如视觉场景分析,手写字符识别,语音识别、人脸识别等。需要学习的目标函原创 2016-08-14 20:16:09 · 2090 阅读 · 0 评论 -
多层神经网络ANN
本文基于 cnblog学习总结,基于的博客地址如下: http://www.cnblogs.com/ronny/p/ann_02.html在实际应用过程中,单个神经元不能拟合太复杂的映射关系,我们需要构建更复杂的网络来逼近那些更复杂的目标函数。使用多层网络有时可以经过更少的迭代训练就能找到很好的收敛关系。多层神经网络是由多个层结构组成的网络系统,他的每一层都是若干个神经元结点构成,该层的任意一个结点原创 2016-08-14 22:32:23 · 6746 阅读 · 0 评论 -
机器学习开端
机器学习算法中经常出现“有时候”能用,但又不能完全与要求一致。需要指出哪些地方出了问题并解决问题。首先介绍一些重要的规律:大量数据比少量数据好;好的特征比好的算法那更重要。如果选择的特征好,最大化他们的独立性,最小化他们在不同环境之下的变化,那么大部分算法都可以获得比较好的效果。除此之外,还有两个经常遇到的问题: 欠拟合:模型假设太严格,所以模型不能拟合到实际数据上 过拟合:算法不仅学习了数据,原创 2016-08-07 17:28:26 · 1636 阅读 · 3 评论 -
opencv feature2D模块(二)
ORB特征提取 ORB是ORiented Brief的简称,是brief算法的改进版本。ORB是在2011年《ORB:an efficient alternative to SIFT or SURF》文章中被提出。我们首先认识Brief描述子。 Brief是Binary Robust Independent Elementary Features的缩写。这个特征是在ECCV2010上提出,主要思原创 2016-08-03 21:49:36 · 3741 阅读 · 0 评论 -
opencv imgproc模块(四)
图像的矩在opencv中,如何计算一个图像的矩呢?一般由moments、contourArea、arcLength这三个函数配合求取: 使用moments计算图像所有的矩 使用contourArea来计算轮廓面积 使用arcLength来计算轮廓或曲线长度//计算一个形状的面积 vector<Point> contour; contour.push_back(Point2f(原创 2016-08-01 12:15:31 · 1615 阅读 · 0 评论 -
基本opencv2处理方法
opencv1.0版本于2006年面世,主要基于C语言。2009年发布opencv2,主要基于C++。我主要学习了2.0版本。其实两者之间的函数调用还是有些相同的,只不过有的时候使用的是全局函数cv***,而2.0使用的是不带cv的函数。 此时opencv库被划分为多个模块,这些模块被编译成库文件后,位于lib文件夹中,这是我截取的全部模块,我们需要的就是引用这些模块。 Opencv_core模原创 2016-07-18 21:08:01 · 2528 阅读 · 0 评论 -
OpenCV Core模块
OpenCV core模块提供了基本数据结构,Mat,Point,Rect,Size,Scalar等常用的数据结构类型都是在这个模块中定义。 Scalar()表示具有4个元素的数组,在OpenCV中被大量用于传递像素值,如RGB颜色值。而RGB颜色值为三个参数,其实对于Scale函数来说,如果用不到第四个参数,则不需要写出来,若只写三个参数,OpenCV会认为我们就想表示三个参数。 Scalar原创 2016-07-27 11:02:51 · 2335 阅读 · 0 评论 -
线性插值和双线性插值
线性插值如果你只处理分离的数据、想知道分离点之间的某些值,需要用到某种类型的插值。这种情况如图5-17坐标所示。对某些分离的(整数) X值,你知道Y值。当X=2,你知道Y=10,X=3时Y=30。但你不知道X=2.7时的Y值。转载 2016-07-28 11:18:33 · 6509 阅读 · 0 评论 -
OpenCV imgproc模块
imgproc模块是图像处理模块,这个模块包含如下内容:线性和非线性的图像滤波图像的几何变换其他图像转换直方图相关结构分析和形状描述运动分析和对象跟踪特征检测目标检测高级形态学变换: 腐蚀和膨胀是两种最基本的形态学操作。运用这两个基本操作,可以实现更高级的形态学变换。我们主要讲解OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换。原创 2016-07-27 21:40:49 · 3992 阅读 · 0 评论 -
OpenCV imgproc模块(二)
变换: 我们这节要提一下opencv重映射的概念。 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获得一些插值为非整数像素的坐标,因为原图像与目标图像的像素坐标不是一一对应的。我们通过重映射来表达每个像素的位置(x,y)。 g(x,y) = f(h(x,y))。 重映射比如可以进行图像翻转,如h(x,y) = (I.cols-x,y)就是相对于x方原创 2016-07-28 17:02:54 · 2884 阅读 · 0 评论 -
基本opencv2处理方法(二)
使用filter2D进行邻域计算:void shape2D(const Mat& image,Mat& result){ Mat kernel(3,3,CV_32FC1,Scalar(0));//3*3 1通道向量 kernel.at<float>(1,1) = 5.0; kernel.at<float>(0,1) = -1.0; kernel.at<float>(原创 2016-07-19 19:36:47 · 3336 阅读 · 0 评论 -
基本opencv2处理方法(三)-基本滤波器
滤波是图像处理中的一个基本操作。滤波去除图像中的噪声,提取感兴趣的特征,允许图像重采样。图像中的频率和空域:空间域指用图像的灰度值来描述衣服图像,而频域指用图像灰度值的变化来描述一幅图像。 低通滤波器和高通滤波器的概念是在频率中产生的。低通滤波器指去除图像中的高频成分,而高通滤波器指去除图像中的低频成分。低通滤波器 Mat image = imread("1.jpg",1);原创 2016-07-19 20:49:09 · 3657 阅读 · 0 评论 -
harris角点
文章目录:一、Harris角点检测基本理论二、opencv代码实现三、改进的Harris角点检测四、FAST角点检测五、参考文献六、附录(资料和源码)一、Harris角点检测基本理论(要讲清楚东西太多,附录提供文档详细说明)1.1 简略表达:角点:最直观的印象就是在水平、竖直两个方向上变化均转载 2016-08-03 13:29:01 · 1747 阅读 · 0 评论 -
opencv feature2D模块(一)
feature2D 模块包含了很多图像特征提取,匹配的相关算法,是图像模式识别重要的辅助库。 本部分包含如下内容: 特征检测和描述 特征检测器(Feature Detectors)通用接口 描述符提取器(Descriptor Extrators)通用接口 描述符匹配器(Descriptor Matchers)通用接口 通用描述符(Generic Descriptor)匹配器通用接口 关原创 2016-08-03 10:47:08 · 4419 阅读 · 0 评论 -
SIFT算法原理解析
感谢博主提供详细的图文注解:原博地址:http://blog.youkuaiyun.com/cxp2205455256/article/details/41747325首先找到图像中的一些“稳定点”,这些点是一些十分突出的点不会因光照条件的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的点,既然两幅图像中有相同的景物,那么使用某种方法分别提取各自的稳定点,这些点之间会有相互对转载 2016-08-03 15:53:01 · 2518 阅读 · 0 评论 -
opencv imgproc模块(三)
在opencv中,使用findContours()函数从二值图像中查找轮廓 配合使用drawContours()进行轮廓的绘画- 寻找物体的凸包原创 2016-07-28 22:16:56 · 4377 阅读 · 0 评论 -
SURF算法原理
一个、整体形象 这个概念是积分图像Viola和Jones建议。随机位积分图像(i。j)的值原始图象的左上角随机点(i,j)级配相应的重点领域值的总和,其数学公式如图1所看到的:那么,当我们想要计算图片一个区域的积分,就仅仅需计算这个区域的四个顶点在积分图像里的值,便能够通过2步加法和2步减法计算得出。其数学公式例如以下:二、He转载 2016-08-03 15:59:00 · 3901 阅读 · 0 评论 -
分水岭算法
感谢原博主的介绍: http://www.cnblogs.com/mikewolf2002/p/3304118.html分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线。 下面左边的灰度图,可以描述为右边的地形图,地形的高度是由灰度图的灰度值决定,灰度为0对应地形图的地面,灰度值最大的像素转载 2016-08-01 15:57:40 · 5548 阅读 · 0 评论 -
神经网络识别车牌字符
作者注:本人在看EasyPR这个开源的车牌识别项目时,作者提到使用了ANN作为最后的车牌文字识别。但是还没有给出使用的方法,本人在博客园上看到了这篇,不错,大家一起学习。下面是博客园的地址:感谢博主http://www.cnblogs.com/ronny/p/opencv_road_more_01.html1. 关于OpenCV进阶之路前段时间写过一转载 2016-08-13 20:57:27 · 4098 阅读 · 2 评论