
学习OpenCV
文章平均质量分 89
cp32212116
学如逆水行舟,不进则退!
展开
-
图像的腐蚀原理
先来定义一些基本符号和关系。1.元素设有一幅图象X,若点a在X的区域以内,则称a为X的元素,记作a∈X,如图6.1所示。2.B包含于X设有两幅图象B,X。对于B中所有的元素ai,都有ai∈X,则称B包含于(included in)X,记作B X,如图6.2所示。3.B击中X设有两幅图象B,X。若存在这样一个点,它即是B的元素,又是X的元素,则称B击中(hit)X,记作转载 2014-08-03 16:04:51 · 11094 阅读 · 1 评论 -
CamShift算法--Back Projection
CamShift算法,即"Continuously Apative Mean-Shift"算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:1) Back Projection计算2) Mean Shift算法3) CamShift算法在这里主要讨论Back Projection,在随后的文章中继续讨论后面两个算转载 2014-12-03 17:01:24 · 703 阅读 · 0 评论 -
CamShift算法--Mean Shift算法
这里来到了CamShift算法,OpenCV实现的第二部分,这一次重点讨论Mean Shift算法。在讨论Mean Shift算法之前,首先讨论在2D概率分布图像中,如何计算某个区域的重心(Mass Center)的问题,重心可以通过以下公式来计算:1.计算区域内0阶矩for(int i=0;i for(int j=0;j M00+=I(i,j)2.区域内1阶矩:转载 2014-12-03 17:04:40 · 516 阅读 · 0 评论 -
CamShift算法--CamShift算法
1.原理在了解了MeanShift算法以后,我们将MeanShift算法扩展到连续图像序列(一般都是指视频图像序列),这样就形成了CamShift算法。CamShift算法的全称是"Continuously Apaptive Mean-SHIFT",它的基本思想是视频图像的所有帧作MeanShift运算,并将上一帧的结果(即Search Window的中心和大小)作为下一帧MeanShift算转载 2014-12-03 17:37:42 · 804 阅读 · 0 评论 -
kalman滤波--运动跟踪
kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加权后校正状态变量的估计值,使状态变量估计误差的均方差最小。具体它的原理和实现,我想也不用我在这里费口舌,但这个理论基础必须的有,必须得知道想用kalman滤波做跟踪,必须得先建立运动模型和观察模型,不是想用就能用的。如果不能建立运动模型,也就意味着你所要面对的问题不转载 2014-12-03 17:46:38 · 1611 阅读 · 0 评论 -
OpenCV 2.x + SVM介绍
分类器分类器是一种计算机程序。他的设计目标是在通过学习后,可自动将数据分到已知类别。 平面线性分类器一个简单的分类问题,如图有一些圆圈和一些正方形,如何找一条最优的直线将他们分开?我们可以找到很多种方法画出这条直线,但怎样的直线才是最优的呢?距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。 因此我们的目标是找到转载 2015-03-12 10:18:07 · 1316 阅读 · 0 评论 -
opencv 2.4.4自带例子总结
parter 1:No1. adaptiveskindetector.cpp利用HSV空间的色调信息的皮肤检测,背景不能有太多与肤色相似的颜色。效果不是特别好。No2. bagofwords_classification.cpp好大一串……目前还看不懂。No3. bgfg_codebook.cpp前后背景分离。开启摄像头或读取视频。No4. bgfg_g转载 2015-03-12 10:21:21 · 1387 阅读 · 0 评论 -
OpenCV 2.x + SVM线性不可分处理
目的实际事物模型中,并非所有东西都是线性可分的。需要寻找一种方法对线性不可分数据进行划分。 原理上一篇文章,我们推导出对于线性可分数据,最佳划分超平面应满足: 现在我们想引入一些东西,来表示那些被错分的数据点(比如噪点),对划分的影响。如何来表示这些影响呢?被错分的点,离自己应当存在的区域越远,就代表了,这个点“错”转载 2015-03-12 11:10:26 · 490 阅读 · 0 评论 -
OpenCV实现二值图像细化的算法
细化算法通常和骨骼化、骨架化算法是相同的意思,也就是thin算法或者skeleton算法。虽然很多图像处理的教材上不是这么写的,具体原因可以看这篇论文,Louisa Lam, Seong-Whan Lee, Ching Y. Suen,“Thinning Methodologies-A Comprehensive Survey ”,IEEE TRANSACTIONS ON PATTERN AN转载 2015-03-12 21:14:55 · 2768 阅读 · 0 评论 -
CamShift算法--认知
CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算,将上一帧结果作为下一帧的初始值,迭代下去。基本步骤为:1.选取关键区域2.计算该区域的颜色概率分布--反向投影图3.用MeanShift算法找到下一帧的特征区域4.标记并重复上述步骤 该算法的关键就转载 2014-12-03 16:56:10 · 759 阅读 · 0 评论 -
反向投影图
图像的反向投影图是用输入图像的某一位置上像素值(多维或灰度)对应在直方图的一个bin上的值来代替该像素值,所以得到的反向投影图是单通的。用统计学术语,输出图像象素点的值是观测数组在某个分布(直方图)下的概率。 其中b(xi)表示在位置xi上像素对应的直方图第b(xi)个bin,直方图共m个bin,qu表示第u个bin的值原创 2014-12-03 16:49:04 · 744 阅读 · 0 评论 -
IplImage, CvMat, Mat 的关系
OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplIm转载 2014-10-09 08:46:12 · 378 阅读 · 0 评论 -
Hu矩轮廓匹配
(1)普通矩:图像概率密度分布函数为f(x,y)的二维连续随机函数的p+q阶原点矩m_pqm_pq = ∬_(-∞)^(+∞)▒〖x^p y^q f(x,y)dxdy〗 p,q=0,1,2……各阶矩的物理意义:0阶矩(m_00)--------------------------为目标区域的质量1阶矩(m_01,m_10)------------------表示目标区域的质心原创 2014-08-04 19:35:45 · 9980 阅读 · 3 评论 -
基于索引表的二值化图像细化算法
基于索引表的细化算法大致是遍历被二值化图像的边缘,根据边缘点的八连通域情况查找索引表以确定该边缘点是否能够被删除。根据一些细化规则我们可以建立索引表,因此我们的主要工作就是不断地遍历边缘进行是否删除判断,直至边缘的每一个点都不能再被细化(删除)。对于边缘点P,它的八连通域是指P点的周围的八个点,我们按如下顺序标识: P0 P1 P2原创 2014-08-04 12:16:19 · 4049 阅读 · 0 评论 -
Moravec角点检测
(1)Moravec角点检测算法原理Moravec角点检测算法是最早的角点检测算法之一。该算法将角点定义为具有低“自相关性”的点。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个patch,并检测这个patch和周围其他patch的相关性。这种相关性通过两个patch间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的patch都会非常相似。转载 2014-08-05 20:12:22 · 2058 阅读 · 0 评论 -
Moravec角点检测缺点分析
下图中,是用3*3的窗口,对图像进行morave角点检测。虽然moravec算法能把所有角点都检测出来,但是把边缘上面的很多点也作为角点了,对于这种情况,我们应该是可以理解的。moravec算法对角点定义是:窗口在各个方向的移动,窗口内的灰度值都会产生较大的变化。而其实这里的“各个方向“,最多也就只有8个方向。所以,如果边缘的方向,是这8个方向以外的方向,那么,就会被认为是角点。mor转载 2014-08-06 20:40:23 · 2063 阅读 · 0 评论 -
OpenCV图像拼接
opencv2.4.0以上的版本提供了stitcher类,可以很方便的实现几幅图像的拼接,关于这个类详细的介绍,可以参考文档: http://docs.opencv.org/2.4.2/modules/stitching/doc/high_level.html?highlight=stitcher#stitcher。 该类主要用的成员函数有createDefault,用于创建缺省参数原创 2014-09-22 19:50:50 · 1779 阅读 · 0 评论 -
行人检测--HOG算子
梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。转载 2014-09-15 22:03:44 · 909 阅读 · 0 评论 -
支持向量机SVM简介
支持向量机SVM是从线性可分情况下的最优分类面提出的。所谓最优分类,就是要求分类线不但能够将两类无错误的分开,而且两类之间的分类间隔最大,前者是保证经验风险最小(为0),而通过后面的讨论我们看到,使分类间隔最大实际上就是使得推广性中的置信范围最小。推广到高维空间,最优分类线就成为最优分类面。 支持向量机是利用分类间隔的思想进行训练的,它依赖于对数据的预处理,即,在更高维的空间表达原始模转载 2014-09-15 22:13:31 · 776 阅读 · 0 评论 -
HOG+SVM行人检测--OpenCV源码不完全解释
//OpenCV中提供了HOG的行人检测(pedestrain detection)类HOGDescriptor//cv::HOGDescriptor类的构造函数的各参数的定义:HOGDescriptor():{ winSize(64,128), // detect window blockSize(16,16),原创 2014-09-15 22:15:17 · 1589 阅读 · 0 评论 -
OpenCV 2.x + SVM文字识别
预备知识下面两个都不是必备知识,但是如果你想了解更多内容,可参考这两篇文章。OpenCV 2.4+ C++ SVM介绍OpenCV 2.4+ C++ SVM线性不可分处理 SVM划分的意义到此,我们已经对SVM有一定的了解了。可是这有什么用呢?回到上一篇文章结果图:这个结果图的意义在于,他成功从二维划分了分类的区域。于是如果以后,有一个新的样本在绿色区域,那么我们就转载 2015-03-13 19:24:22 · 959 阅读 · 0 评论