OpenCV2 Computer Vision Programming Manual(Chinese Edition) - Tapa blanda

[ JIA ]Robert Laganiere

 
9787030375810: OpenCV2 Computer Vision Programming Manual(Chinese Edition)

Sinopsis

OpenCV提供的视觉处理算法非常丰富,并且以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,所以很多人用它来做算法的移植。OpenCV的代码经过适当改写可以正常的运行在DSP系统和单片机系统中,目前这种移植在大学中经常作为相关专业本科生毕业设计或者研究生课题的课题。《OpenCV2计算机视觉编程手册》是一本循序渐进的计算机视觉指导手册,给予OpenCV2代码库中包含高级特性的C++接口。本书介绍了OpenCV2中众多的视觉算法。你将学会如何读、写、创建及操作图像,领略图像分析中常用的技术,并了解如何使用C++高效实现。作用原理在之前的秘诀中,我们学习到能够从一组特征点的匹配中估算出与两幅图像相关的基础矩阵。精确地说,这组匹配仅包含高质量的匹配。然而,在实际应用中,很难保证通过比较特征点描述子得到的匹配集是完全相同的。因此我们将使用RANSAC(RANdomSAmplingConsensus)策略来进行基础矩阵的估算。RANSAC算法的目的是从包含异常值的数据集中估算出给定的数学元素。基本原理是随机地选取一些数据点,并且仅用它们来进行估算。选择的数据点的个数应当是可用于进行估算的最小数。对于基础矩阵而言,8个匹配是最小数(事实上可以是7,但是8个点的线性算法计算更迅速)。一旦从这随机的8个匹配中算出基础矩阵,集合中所有剩下的匹配都将与矩阵对应的极性约束进行测试。我们找到所有满足该约束的匹配,它们对应的特征非常靠近极线。这些匹配组成了这个基础矩阵的支持集合。RANSAC算法背后最主要的想法是支持集合越大,得到正确矩阵的可能性就越大。显而易见的,如果一个(或多个)随机选择的匹配是错误的,那么得到的基础矩阵也是错误的,于是它的支持集合应当很小。这个过程会重复数次,最后我们保留最大支持集合的矩阵作为最合适的。因此,我们的目标是多次随机挑选8个匹配,最终能够得到8个足够好的匹配提供我们一个较大支持集合。根据完整数据集中错误匹配的个数,挑选到8个正确数据的概率会不同。然而我们值得挑选的次数越多,我们从中得到至少一个优质匹配集合的概率就越大。更精确地,如果假设集合包含n%正确值,那么同时选中8个正确匹配的概率是8n。因此,包含至少一个错误匹配的概率是(1—8n)。如果我们挑选k次,至少出现一次包含8个正确结果的概率是1—(1—8n)k。这便是置信概率C,我们希望它尽可能地高。因此,当运行RANSAC算法时,我们需要确定k的数量以得到给定的置信等级。在CV::findFundamentalMat函数中使用RANSAC算法时,需要提供两个额外的参数。第一个是置信等级,它决定迭代的次数。第二个是归类为正确的点离极线的最大距离。因此,该函数返回一个字符类型的std::vector,标志着对应的匹配被识别为outlier(0)还是inlier(1)。初始数据集中优质匹配的数量越大,RANSAC给出正确基础矩阵的概率也越高。因此我们在调用CV::findFundamentalMat之前便对数据集使用了多个滤波器。当然,你可以选择跳过其中的一些步骤。这仅仅是如何在计算复杂性、最终匹配数目以及所需的

"Sinopsis" puede pertenecer a otra edición de este libro.