摘要:
之前我们就已经用过OpenCV中的特征检测进行过目标跟踪,这次我们将介绍一种算法,用来寻找和追踪视频中的目标物体。Meanshift算法:meanshift算法的原理很简单。假设你有一堆点集,例如直方图反向投影得到的点集。还有一个小的窗口,这个窗口可能是圆形的,现在要移动这个窗口到点集密度最大的区域当中。如下图:最开始的窗口是蓝色圆环的区域,命名为C1。蓝色圆环的重音用一个蓝色的矩形标注,命名为C 阅读全文
摘要:
从本次教程开始,我们进入新的篇章,之前一直在讨论OpenCV的特征部分,这次我们来讨论OpenCV中的背景分离,又称背景减法模型。背景分离(BS)是一种通过使用静态相机来生成前景掩码(即包含属于场景中的移动对象像素的二进制图像)的常用技术。顾名思义,BS计算前景掩码,在当前帧与背景模型之间执行减法运算,其中包含场景的静态部分,或者更一般而言,考虑到所观察场景的特征,可以将其视为背景的所有内容。背景 阅读全文
摘要:
之前我们讨论到cv2.findHomography()函数里有四个算法,这次我们来简述最后两个算法。LMEDSLMEDS又称最小中值平方法,LMedS的经典步骤是:1. 随机采样2. 计算模型参数3. 计算相对模型的点集偏差err,并求出偏差中值Med(err)4. 迭代2. 3.步直至获得符合阈值的最优解:Med(err)最小5. 精确优化模型参数(LM算法迭代优化)LMedS的函数接口 参照O... 阅读全文
摘要:
注意:本教程中将涉及到机器学习的一些概念,但不进行过多的详述。我们在上一个教程中所提及到的FLANN算法就属于单应性算法,先解释一下单应性,在计算机视觉中:平面的单应性被定义为从一个平面到另一个平面的投影映射。比如,一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。之前我们使用一个查询图像,在其中找到一些 特征点(关键点),我们又在另一幅图像中也找到了一些特征点,最后对这两幅 图像... 阅读全文
摘要:
之前我们讨论过了诸多的特征检测算法,这次我们来讨论如何运用相关的方法进行特征匹配。本次教程完全为实战教程,没有相关的算法原理介绍,大家可以轻松一下了。蛮力匹配(ORB匹配)Brute-Force匹配非常简单,首先在第一幅图像中选择一个关键点然后依次与第二幅图像的每个关键点进行(改变)距离测试,最后返回距离最近的关键点。对于BF匹配器,首先我们必须使用cv2.BFMatcher()创建BFMatch... 阅读全文
摘要:
它不会拒绝n < 12的候选对象。像素的选择不是最佳的,因为其效率取决于问题的顺序和角落外观的分布。高速测试的结果被丢弃了。彼此相邻地检测到多个特征。 它不会拒绝n < 12的候选对象。 像素的选择不是最佳的,因为其效率取决于问题的顺序和角落外观的分布。 高速测试的结果被丢弃了。 彼此相邻地检测到多 阅读全文
摘要:
ORB是2011年ICCV上作者Rublee所提出,主要针对目前主流的SIFT或者SURF等算法的实时性进行改进。当然在实时性大为提升的基础上,匹配性能也在一定程度较SIFT与SURF算法降低。但是,在图像Two Views匹配对之间变换关系较小时,能够匹配性能逼近SIFT算法,同时计算耗时极大降低。ORB算法实时性在移动端设备上提供很好的应用,当下比较流行SLAM中采用较多的ORB-SLAM算法 阅读全文
摘要:
之前讨论过的SIFT算法以及SURF算法由于受到了专利的保护,在高版本的OpenCV中是没法使用的,这就有些强人所难了,但今天我们介绍一种算法,不仅更加简单,而且是免费使用的。原理在SIFT算法使用128维的描述符,因为使用float类型描述,所以需要512字节的内存。在SURF算法中,以64维描述符来计算,至少需要256字节的内存。在创建一个含有数千个特征的向量会消耗大量的内存,这种情况在资源的 阅读全文
摘要:
我们在上个教程讨论了SIFT算法用于检测特征点,SIFT算法对旋转、尺度缩放、亮度变化等保持不变性,对视角变换、仿射变化、噪声也保持一定程度的稳定性,是一种非常优秀的局部特征描述算法。但是其实时性相对不高。SURF(Speeded Up Robust Features)算法改进了特征了提取和描述方式,用一种更为高效的方式完成特征点的提取和描述。SURF算法原理SURF特征检测的步骤1. 尺度空间的 阅读全文
摘要:
我们来看代码: 阅读全文
摘要:
在上一个教程中,我们看到了Harris Corner Detector。1994年下半年,J。Shi和C. Tomasi在他们的论文《有益于跟踪的特征》中做了一个小修改,与Harris Harris Detector相比,显示了更好的结果。哈里斯角落探测器由下式给出:取而代之的是,史托马西提出:如果大于阈值,则将其视为拐角。如果像在Harris Corner Detector中那样在空间中绘制它, 阅读全文
摘要:
经过了之前教程的过渡,本次我们来讲解一个相当重要的变换——SIFT尺度不变特征变换,之所以称其为尺度不变,是因为其不受图片放缩以及旋转的影响。在前两个教程中,我们看到了一些像Harris这样的拐角检测器。它们是旋转不变的,这意味着即使图像旋转了,我们也可以找到相同的角。很明显,因为转角在旋转的图像中也仍然是转角。但是缩放呢?如果缩放图像,则拐角可能不是角。例如,检查下面的简单图像。在同一窗口中放大 阅读全文
摘要:
我们在上次简述了OpenCV的特征基础原理,本次我们将步入实战部分,开始进行特征的初阶检测。原理在上一个教程中,我们知道了角点是图像中向任意方向发生改变时,都引起图像强烈变动的区域。Chris Harris 和 Mike Stephens 在他们1988年的论文 A Combined Corner and Edge Detector 中,做了早期的尝试,尝试找出这些角点。因此现在这个算法被称为哈里 阅读全文
摘要:
上个教程结束,标志着OpenCV的图像处理部分已经结束,从本次教程开始,我们开始讨论图像的特征问题,这是一个庞大的体系,它决定了后面目标识别的基础,本次我们先来理解图像的特征问题。我们大多数都会玩拼图游戏。会得到很多小图片,我们需要正确地将它们组装起来才能形成一个大的真实图像。问题是,这是如何做到的?如何将相同的理论投射到电脑程序中,让电脑可以玩拼图游戏?如果电脑可以玩拼图游戏,为什么我们不能给计 阅读全文
摘要:
常情况下,我们需要图像进行前景后景进行分离,有的时候也许我们仅仅是需要前景。本次教程我们将介绍GrabCut算法进行交互式前景提取。GrabCut是一种基于图切割的图像分割方法。GrabCut算法是基于Graph Cut算法的改进。基于要被分割对象的指定边界框开始,使用高斯混合模型估计被分割对象和背景的颜色分布(注意,这里将图像分为被分割对象和背景两部分)。简而言之,就是只需确认前景和背景输入,该 阅读全文
摘要:
可以看到,最终结果显示完美分割。 阅读全文
摘要:
结果让人感到乱七八糟的,现在我先采用中值滤波,继而采用高斯滤波,我们来看代码: 可以看到,效果良好,霍夫变换通常情况下受图片的噪声信息干扰非常大,所以通常情况下我们需要对图像进行预处理操作。 阅读全文
摘要:
可以看到,这个直线检测是比之前的要好很多的,我们将在下一次中介绍霍夫圆变换,用途更为广泛。 阅读全文
摘要:
我们在之前讨论OpenCV的轮廓以及直方图时已经接触过类似的匹配,事实上,它们原理基本上差不多,都是用一幅模板图像和原图进行匹配,从而找到原图中相应的地方,作为OpenCV中的一种最基本的目标识别的方法,模板匹配有其一定的作用,今天我们来具体的进行讨论。模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。它只是将模板图像滑 阅读全文
摘要:
傅里叶变换我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班。。。以时间为参照就是时域分析。但是在频域中一切都是静止的!可能有些人无法理解,我建议大家看看这个文章,写的真是相当好,推荐!https://zhuanlan.zhihu.com/p/19763358傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域 阅读全文