摘要:
双目立体匹配一直是双目视觉的研究热点,双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成等。在上一节中,我们看到了对极约束和其他相关术语等基本概念。我们还看到,如果我们有两个场景相同的图像,则可以通过直观的方式从中获取深度信息。下面是一张图片和一些... 阅读全文
摘要:
最终整个程序: 阅读全文
摘要:
在我们使用针孔相机时,我们会丢失大量重要的信息,比如说图像的深度,或者说图像上的点和摄像机的距离,因这是一个从 3D 到 2D 的转换。因此一 个重要的问题就产生了,使用这样的摄像机我们能否计算除深度信息呢?答案 就是使用多个相机。我们的眼睛就是这样工作的,使用两个摄像机(两个眼睛), 这被称为立体视觉。在进入深度图像之前,我们要先掌握一些多视角几何的基本概念。在本节中我们要处理对极几何。下图为使... 阅读全文
摘要:
在上一节摄像机校准里,我们找到了摄像机矩阵,畸变参数等,给一个模板图像,我们可以用上面的信息来计算它的姿态,或者物体是如何处于空间中的,比如如何旋转的,怎么被移动的。对于一个平面物体。我们可以假设Z = 0,这样,问题现在变成了摄像机如何放置的来看我们的模板图像,所以,如果我们知道物体是怎么放在空间中的,我们可以画出2D图来模拟3D效果。在计算机视觉中,物体的姿势指的是其相对于相机的相对取向和位置... 阅读全文
摘要:
上个教程已经谈到,为了校准摄像头,我们至少需要10种测试模式。现在我们使用示例图片:用同一相机从不同的位置,不同的角度,拍摄标定板的多张照片(10-20张最佳),将照片放到文件夹中:设想一张棋盘的图像,需要用于校准摄像头最重要的输入数据是3D真实世界点的集合以及图像中这些点的相应2D坐标。2D图像点我们得能够轻易从图像中找出来。(这些图像点是棋盘中两个黑色方块相互接触的位置)那现实世界空间的3D点 阅读全文
摘要:
了解完一定原理之后,我们在下个教程中将开始实践一下。 阅读全文
摘要:
之前我们讨论过LK算法,其本质来讲属于稀疏光流算法,我们在OpenCV中所用的函数为:calcOpticalFlowPyrLK。这次来介绍一种稠密光流算法(即图像上所有像素点的光流都计算出来),它由Gunnar Farneback 所提出。光流是由物体或相机的运动引起的图像对象在两个连续帧之间的视在运动模式.光流方法计算在t和 t+Δt时刻拍摄的两个图像帧之间的每个像素的运动位置。这些方法被称为差 阅读全文
摘要:
之前介绍的两种算法对于视频中的跟踪而言仍然有一定的局限性。这次我们来讨论一种光流估计的方法用于进行目标跟踪。光流是物体或者摄像头的运动导致的两个连续帧之间的图像对象的视觉运动的模式。它是一个向量场,每个向量是一个位移矢量,显示了从第一帧到第二帧的点的移动,如图:它显示了一个球在5个连续帧里的移动。箭头显示了它的位移矢量。光流在很多领域有应用:·移动构建·视频压缩·视频稳定光流在很多假设下有效:1. 阅读全文
摘要:
上一个教程中我们介绍了一个视频跟踪的算法,但是通过实验我们发现,在视频或者是摄像头当中,如果被追踪的物体迎面过来,由于****效果,物体会放大,之前设置好的窗口区域大小会不合适。OpenCV实现了一个Camshift算法,首先使用meanshift算法找到目标,然后调整窗口大小,而且还会计算目标对象的的最佳外接圆的角度,并调整窗口。并使用调整后的窗口对物体继续追踪。使用方法与meanShift算法 阅读全文
摘要:
之前我们就已经用过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中那样在空间中绘制它, 阅读全文