此部分是 计算机视觉中的信号处理与模式识别

与其说是讲述,不如说是一些经典文章的罗列以及自己的简单点评。与前一个版本不同的是,这次把所有的文章按类别归了类,并且增加了很多文献。分类的时候并没有按照传统的分类方法,而是划分成了一个个小的门类,比如SIFT,Harris都作为了单独的一类,虽然它们都可以划分到特征提取里面去。这样做的目的是希望能突出这些比较实用且比较流行的方法。为了以后维护的方便,按照字母顺序排的序。

15. RANSAC
随机抽样一致性方法,与传统的最小均方误差等完全是两个路子。在Sonka的书里面也有提到。

[1981 ACM] Random Sample Consensus: A Paradigm for Model Fitting with Apphcatlons to Image Analysis and Automated Cartography
[2009 BMVC] Performance Evaluation of RANSAC Family

若引用文献:

翻译

随机样本共识:使用模型拟合图像分析和自动制图的范例——

作者:

摘要 -引入了一种新的范例,即随机样本共识(RANSAC),用于将模型拟合到实验数据。 RANSAC能够解释/平滑包含很大百分比的总体错误的数据,因此非常适合自动图像分析中的应用,在这些应用中,基于容易出错的特征检测器提供的数据进行解释。本文的主要部分描述了RANSAC在位置确定问题(LDP)中的应用:给定一个图像,该图像描述了一组具有已知位置的地标,请确定从中获取图像的空间点。响应于RANSAC的要求,新的结果从获得解决方案所需的最小地标数中得出,并提出了用于以封闭形式计算这些最小地标解决方案的算法。这些结果为可以在困难的查看和分析条件下解决LDP的自动系统提供了基础。还介绍了实现细节和计算示例。

关键词和短语:模型拟合,场景分析,相机校准,图像匹配,位置确定,自动制图。
CR类别:3.60、3.61、3.71、5.0、8.1、8.2

1 引言

我们引入了一种新的范例,即随机样本共识(RANSAC),用于将模型拟合到实验数据。并说明其在场景分析和自动制图中的用途。讨论的应用程序(位置确定问题(LDP))的处理水平超出了仅使用RANSAC范式的示例;介绍了有关可以解决LDP的条件的新的基本发现,并描述了解决该问题的综合方法,我们预计该方法将在近期得到实际应用。

在很大程度上,场景分析(实际上是科学)实际上是根据一组预定义的模型来解释感测数据。从概念上讲,解释涉及两个不同的活动:首先,存在在数据与可用模型之一之间找到最佳匹配的问题(分类问题);其次,存在为所选模型的自由参数计算最佳值的问题(参数估计问题)。实际上,这两个问题不是独立的,通常需要解决参数估计问题以解决分类问题。

用于参数估计的经典技术(例如最小二乘法)(根据指定的目标函数)优化功能描述(模型)对所有呈现数据的拟合。这些技术没有用于检测和拒绝重大错误的内部机制。它们是平均技术,其依赖于以下假设(平滑假设):任何数据与假设模型的最大预期偏差是数据集大小的直接函数,因此,无论数据集大小如何,总是会有足够好的值来消除任何明显的偏差。

在许多实际的参数估计问题中,平滑假设不成立。即数据包含未补偿的严重错误。为了应对这种情况,已经提出了几种试探法。通常采用的技术是一种变体,首先使用所有数据来推导模型参数,然后找到与实例化模型一致的数据最远的位置,假设这是一个严重错误,将其删除,然后重复此过程,直到出现一个错误为止。最大偏差小于某个预设阈值,或者直到不再有足够的数据可进行。

可以很容易地证明,一个总的错误(“中毒点”)与一组良好的数据混合在一起,会导致上述启发式方法失败(例如,参见图1)。我们的争论是,将平均值不适用于未经验证的数据集是不合适的技术。

图1.最小二乘(和“抛出最坏的残差”启发式算法)无法处理错误的数据点。

问题:给定图中显示的七对(x,y)对,找到一条最佳拟合线,并假设没有有效基准从该线偏离超过0.8个单位。

评论:七个点中的六个是有效数据,可以通过实线拟合。 使用最小二乘(和“抛出最差残差”启发式方法),我们在四次迭代后终止,剩下四个点,包括虚线拟合的(10,2)处的总误差。

最小二乘成功逼近
迭代   数据集  拟合的直线
残差计算

第1项剩余

在以下部分中,我们介绍RANSAC范例,该范例能够对包含很大百分比的总体错误的数据进行平滑处理。该范例特别适用于场景分析,因为经常犯错误的局部特征检测器是提供给解释算法的数据的来源。局部特征检测器会产生两种类型的错误-分类错误和测量错误。

当特征检测器错误地将图像的一部分识别为特征的出现时,就会发生分类错误。当特征检测器正确识别特征,但略微错误计算其参数之一(例如,其图像位置)时,就会发生测量错误。测量误差通常遵循正态分布,因此平滑假设适用于它们。但是,分类错误是严重错误,其影响要比测量错误大得多,并且不会平均。

在本文的最后部分中,讨论了RANSAC在位置确定问题中的应用:

给定一组在某些坐标系中位置已知的“地标”(“控制点”),请确定从中获取地标图像的空间中该点的位置(相对于地标的坐标系) 。

为了响应RANSAC的要求,在获得解决方案所需的最小地标数量上得出了一些新结果,然后提出了用于以封闭形式计算这些最小地标解决方案的算法。 (常规技术是迭代的,并且需要很好的初始猜测以确保收敛。)这些结果构成了可以在恶劣的查看和分析条件下解决LDP的自动系统的基础。 尤其是,即使由于可见度低,地形变化或图像分析错误而导致大量地标位置错误时,系统也可以正常运行。 给出了实现细节和实验结果以完善我们对LDP应用程序的描述。

2 随机样本共识

RANSAC过程与常规平滑技术相反:RANSAC使用尽可能少的初始数据集并扩大其范围,而不是使用尽可能多的数据来获取初始解,然后尝试消除无效数据点。尽可能设置一致的数据。例如,给定将圆弧拟合到一组二维点的任务,RANSAC方法将选择一组三个点(因为需要三个点来确定一个圆),计算中心并隐含圆的半径,并计算与该圆足够接近的点数以表明它们与该圆的兼容性(即,它们的偏差足够小以至于会引起测量误差)。如果有足够的兼容点,则既然已经确定了一组相互一致的点,则RANSAC将采用平滑技术(例如最小二乘法)为圆的参数计算一个改进的估计。

RANSAC范式更正式地表示如下:

给定一个需要最少n个数据点以实例化其自由参数的模型,以及一组数据点P,以使P中的点数大于n [#(P)> =n],则随机选择一个子集S1 P中的n个数据点的集合并实例化模型。使用实例化的模型M1确定在M1的一定容错范围内的P中的点的子集S1 *。集SI *被称为S1的共识集。

如果#(SI *)大于某个阈值t,该阈值是P中严重错误数量估计的函数,则使用S1 *计算(可能使用最小二乘)新模型MI *。

如果#(SI *)小于t,则随机选择一个新的子集S2并重复上述过程。 如果在经过预定数量的试验后,未找到具有t个或多个成员的共识集,则可以求解找到的最大共识集的模型,或者终止于失败。

上述算法有两个明显的改进:首先,如果存在与选择点形成S的原理相关的问题,请使用确定性选择过程,而不是随机选择过程。 其次,一旦找到合适的共识集S *并实例化了模型M *,则将P中与M *一致的任何新点添加到S *,然后基于这个更大的集合计算新模型。

RANSAC范式包含三个未指定的参数:(1)用于确定点是否与模型兼容的容错能力;(2)要尝试的子集数量;以及(3)阈值t,即数量 用来暗示已找到正确模型的兼容点。 在以下小节中讨论了为这些参数计算合理值的方法。

A.建立基准/模型兼容性的容错

基准与模型的偏差是与基准相关联的误差和与模型相关联的误差的函数(部分是与用于实例化模型的数据相关联的误差的函数)。如果模型是数据点的简单函数,那么通过分析在容错上建立合理的边界可能是可行的。但是,这种简单的方法通常不可行。对于这种情况,通常可以通过实验估计容错范围。样本偏差可以通过扰动数据,计算模型并测量隐含误差来产生。然后可以将误差容限设置为超出测得的平均误差的一两个标准偏差。

基准相对于假定模型的预期偏差通常是基准的函数,因此,每个基准的容错性应该不同。但是,与总误差的大小相比,误差容限的变化通常相对较小。因此,针对所有数据的单个错误容忍度通常就足够了。

B.找到共识集的最大尝试次数

停止选择P的新子集的决定可以基于选择n个良好数据点的子集所需的预期试验次数k。 令w为任何选定数据点在模型的误差范围内的概率。 然后我们有:

其中E(k)是k的期望值,b = w n,a =(1-b)。

几何级数和的标识为

区分以上关于a的身份,我们有:

从而,


以下是对应于n和w的一些E(k)值的列表:

通常,在放弃之前,我们可能希望将E(k)试验超出一两个标准偏差。 请注意,k的标准偏差SD(k)由下式给出:

然后

但是(使用几何级数恒等式和两个微分):

从而,

注意,通常SD(k)大约等于E(k); 因此,例如,如果(w = 0.5)和(n = 4),则E(k)= 16且SD(k)= 15.5。 这意味着可能要尝试使用k隐含的预期随机选择数的两倍或三倍(如上表所示),以获得超过t个成员的共识集。

从稍微不同的角度来看,如果我们要以概率z确保至少一个随机选择是n个数据点的无错误集合,那么我们必须期望至少进行k个选择(每n个数据点 选择),其中

例如,如果(w = 0.5)和(n = 4),则(b = 1/16)。为了获得90%的保证至少做出一个无差错的选择,

C.可接受的共识集的大小的下界

阈值t是RANSAC范式的形式声明中未指定的参数,用作确定已发现P的n个子集的基础,该子集暗示有足够大的共识集以允许算法终止。因此,必须选择足够大的t以满足以下两个目的:已经为数据找到了正确的模型,并且已经找到足够数量的相互一致的点来满足最终平滑过程的需要(该过程可以计算出改进的估计值)用于模型参数)。

为了确保最终的共识集与错误的模型兼容,并假设y是任何给定数据点在错误模型的容错范围内的概率,我们希望.yt-n非常小。尽管没有通用的方法可以精确地确定y,但可以合理地假设它小于w(w是给定数据点在正确模型的误差范围内的先验概率)。假设y <0.5,则t-n等于5的值将提供大于95%的概率,即不会出现与错误模型的兼容性。

为了满足最终平滑过程的需要,必须指定要使用的特定过程。如果要使用最小二乘平滑法,则在许多情况下可以调用形式方法来确定产生所需精度所需的点数[10]。

D.例子

让我们将RANSAC应用于图1所示的示例。w的值(任何选定数据点在模型的误差容差之内的概率)等于0.85与数据一致,并且容差(用于建立基准/问题陈述中提供了0.8个单位的模型兼容性)。无需外部平滑最终共识集即可接受由RANSAC提供的模型;因此,我们希望获得一个包含所有七个数据点的共识集。由于这些要点之一是严重错误,很明显,我们找不到所需大小的共识集,因此我们将以能够找到的最大集终止。先前提出的理论表明,如果我们一次获取两个数据点,通过它们计算线并测量剩余点与该线的偏差,那么我们应该期望在两三个试验中找到合适的共识集;但是,由于数据量有限,我们可能愿意尝试所有21种组合以找到最大的共识集。无论哪种情况,我们都可以轻松找到包含六个有效数据点及其所暗示的线的共识集。

3 位置确定问题(LDP)

图像分析中的一个基本问题是在给定场景的两种表示形式的元素之间建立对应关系。这个问题的一个变体,在制图学中尤其重要,是通过识别图像中出现的一组界标(控制点)来确定从中获得图像或照片的位置(这又称为确定元素的问题)外部相机方向,相机校准问题或图像与数据库的对应问题)。通常使用最小二乘法[11,8]与人类操作员解决,以交互方式建立图像点与相应控制点的三维坐标之间的关联。但是,在全自动系统中,对应关系必须基于边缘胜任的特征检测器的决策,因此最小二乘法通常无法处理可能导致的严重误差; 在第二节中对此进行了详细讨论,在第四节介绍的示例中为LDP进行了说明。

在本节中,将基于RANSAC范式介绍LDP的新解决方案,该解决方案在承受输入数据中的严重错误方面具有独特的能力。我们将首先研究可以解决LDP的条件,并描述有关该问题的新结果。然后,我们对基于RANSAC的算法进行完整描述,最后,描述通过使用该算法获得的实验结果。

LDP的正式定义如下:

给定一组m个控制点,在某个坐标系中已知其3维坐标,并给出一个图像,其中可见m个控制点的某些子集,请确定位置(相对于控制点的坐标系)从中获得图像。

我们首先假设我们知道n个图像点和控制点之间的对应关系;稍后我们考虑其中某些对应关系无效的情况。我们还将假设成像系统的像平面中的主点(相机的光轴刺穿像平面)和焦距(从透视中心到像平面中的主点的距离)众所周知因此(参见图2),我们可以轻松地从透视中心(CP)计算与任何一对控制点的角度。最后,我们假设摄像头位于包围控制点的凸包的外部和上方。

图2.位置确定问题的几何形状。

稍后我们将演示(附录A),如果我们可以计算从CP到三个控制点的光线的长度,那么我们可以直接求解CP的位置(以及图像平面的方向(如果需要))。 因此,LDP的等效但在数学上更简洁的陈述是

给定n个控制点的相对空间位置,并给与称为“视点中心(CP)”的附加点到每对控制点的角度,找到将CP连接到每个控制点的线段(“腿”)的长度 控制点。 我们称其为“透视n点”问题(PnP)。

为了应用RANSAC范式,我们希望确定可以解决PnP问题的n的最小值。

A.透视点问题的解决方案

P1P问题(n = 1)不提供任何约束信息,因此解决方案的无限性是可能的。 如图3所示,P2P问题(n = 2)也承认了解决方案的无限性。 CP可以驻留在直径为Rab / sin(θab)的圆上的任何位置,并围绕连接两个控制点A和B的弦(线)在空间中旋转。

图3. P2P问题的几何形状。

图4. P3P问题的几何形状(L是透视中心)。

P3P问题(n = 3)要求我们在给定基本尺寸和相对的三面角的面角的情况下确定四面体的三个支腿的长度(请参见图4)。 三个方程[A *]暗示了这个问题的解决方案:

众所周知,在n个未知数中,n个独立的多项式方程所具有的解数不能超过其各自阶数的乘积[2]。 因此,系统A *最多可以有八个解决方案。 但是,由于系统A *中的每个项都是常数或二次度,因此对于每个实数正解,都有一个几何同构的负解。因此,对于A *,最多有四个正解,在图5中, 显示一个示例,证明四个解决方案的上限是可以达到的。

图5.一个示例,显示了四个不同的P3P问题解决方案。

考虑图5(a)中的四面体。基本ABC是等边三角形,并且“腿”(即LA,LB和LC)都相等。因此,L处的三个面角(即<ALB,<ALC和<BLC)都相等。根据余弦定律,我们有:
Cos(α)= 5/8。

该四面体定义了一种解决P3P问题的方法。第二种解决方案如图5(b)所示。它是通过从L绕BC旋转开始而获得的。给定刚性三角形ABC和角度α,有必要验证L'A的长度可以为1。根据余弦定律,我们有:

减少到:

因此,L'A可以为1或4。图5(a)示出L'A = 4的情况,图5(b)示出L'A = 1的情况。

请注意,重新放置基础三角形以使其顶点移动到腿上的不同位置等效于重新放置L。图5(c)显示了对应于第二个解的基础三角形的位置。

由于图5(a)中的四面体是三重旋转对称的,因此可以通过围绕AB和AC旋转三角形来获得两个以上的解决方案。

图6.具有两个解决方案的P4P问题的示例。

图6(a)指定了P4P问题并演示了一种解决方案。 第二种解决方案可以通过绕BC旋转底座,使A放置在其腿上的不同点来实现(参见图6(b))。 为了验证这是一个有效的解决方案,请考虑X = O平面,该平面垂直于BC并包含点L,A和D。图6(c)显示了此平面中的重要特征。 alpha的余弦为119/169。 β围绕BC的旋转将A重新定位在A'。 余弦定律可用于验证A'的位置。

要完成此解决方案,必须验证D的旋转位置在LD上。 考虑图6(c)中的点D'。 它与P的距离与D的距离相同,并且根据余弦定律,我们可以证明γ等于β。 因此,LD上的D'是D的旋转位置。点A',B,C和D'构成了问题的第二种解决方案。

在附录A中,我们导出了系统A *的显式代数解。 这是通过将A *简化为一个表示四面体两边之比的未知数的二次(四次)多项式,然后直接求解该方程来实现的(我们还提供了一种非常简单的迭代方法来从给定问题中获得解) 数据)。

对于n = 4的情况,当所有四个控制点都位于同一平面(不包含CP,并且在任何一条线上不超过两个控制点)时,我们在附录B中提供一种技术 总是产生独特的解决方案。 出乎意料的是,当所有四个控制点都不在同一平面上时,就无法始终确保独特的解决方案。 例如,图6显示,在控制点处于“常规位置”的情况下,对于P4P问题至少有两种解决方案是可能的。

为了在四个非平面控制点的情况下求解CP的位置,我们可以在一次三个控制点的两个不同子集的控制点上使用附录A中介绍的算法;两个子集共有的解决方案将CP定位在给定信息固有的歧义之内。

用于构建图6中所示示例的方法可以扩展到任意数量的附加点。它基于图3所示的原理:如果CP和任意数量的控制点位于同一圆上,则任意一对控制点与CP之间的角度将与CP圆上的位置无关(因此无法确定CP的位置)。因此,我们能够构建图7所示的示例,其中五个控制点在一般位置暗示了P5P问题的两个解决方案。尽管相同的技术将适用于六个或更多控制点,但是这些点中的四个或更多现在必须位于同一平面上,因此不再处于一般位置。

图7.一个带有两个解的P5P问题的示例。

为了证明六个(或多个)控制点在总位置上始终可以产生唯一的P6P问题解决方案,我们注意到,在这种情况下,我们始终可以求解指定映射的3 x 4矩阵T的12个系数( 在同构坐标中)从3空间到2空间; 六个对应关系中的每个对应关系提供了三个新方程式,并引入了一个附加的未知量(齐次坐标比例因子)。 因此,对于六个控制点,我们有18个线性方程来求解18个未知数(实际上,可以证明,至多17个未知数是独立的)。 给定变换矩阵T,我们可以构造一个与其他三个给定控制点位于同一平面的附加(合成)控制点,并计算其在图像平面中的位置; 现在可以使用附录B中描述的技术来找到独特的解决方案。

4 实施细节和实验结果

A.RANSAC / LD算法

RANSAC / LD算法接受以下数据作为输入:
(l)m个6元组的列表L-每个6元组包含一个控制点的3D空间坐标,其对应的2D图像平面坐标以及给出预期误差的可选数字(以像素为单位) 图像平面中给定位置的位置。
(2)成像系统的焦距和主要点的像平面坐标。
(3)6元组包含严重不匹配的概率(1-w)。
(4)一个“置信度”数G,用于设置内部阈值,以接受有助于求解的中间结果,其中一个的置信度数使算法具有非常保守的行为; 置信度为零将几乎调用任何有效的解决方案。

此示例与图6中描述的P4P示例相同,不同之处在于,已添加了第五个控制点E。 E的初始位置及其旋转位置E'如图7所示。点E和E'被构造为A'和A围绕线LP的镜像; 因此,α围绕P的旋转将E重新定位到E'。 P5P问题的一种解决方案由点A,B,C和D(如图6(a)所示)加上点E构成。第二种解决方案由点A',B,C,D'和E形成 '。 因此,L有两个不同的位置,因此所有五个点都位于其适当的边上。

RANSAC / LD算法产生以下信息作为输出:

(l)镜头中心(即透视中心)的3-D空间坐标,以及相应误差的估计值。
(2)图像平面的空间方向。 RANSAC / LD算法的操作如下:
(1)通过准随机方法从列表L中选择三个6元组,该方法确保了相应控制点的合理空间分布。此初始选择称为S1。
(2)使用附录A中提供的闭式解确定对应于选择项S1的CP(称为CP1);在以下步骤中,将多个解决方案视为从单独的选择中获取。
(3)通过扰动三个选定控制点的给定像平面坐标(通过6元组指定的数量或通过一个像素的默认值),然后重新计算,可以估算CP 1的导出位置中的误差。这将对CP1的位置产生影响。

(4)给定CP1的误差估计,我们使用[1]中描述的技术来确定列表L中指定的每个控制点在图像平面中的误差椭圆(基于提供的置信度的尺寸); 如果关联的图像坐标位于相应的误差椭圆内,则将6元组附加到共识集S1 / CP1。
(5)如果S1 / CP1的大小等于或超过某个阈值t(名义上等于7和行之间的值),则将共识集S1 / CP1提供给最小二乘例程(请参见[l]或 [7])用于最终确定CP位置和图像平面方向。 1否则,将使用新的随机选择S 2,S 3重复上述步骤...
(6)如果上述步骤的迭代次数超过k = [log(l-G)] / [log(1- w3)],则使用迄今为止找到的最大共识集来计算最终解(或 如果此最大共识集包含少于六个成员,则我们将以失败告终)。

  1 最小二乘的一种替代方法是对根据共识集内的随机三元组计算的参数取平均值,该参数位于(例如)相关直方图的中心50%之内。

B.实验结果

为了证明我们的理论结果的有效性,我们进行了三个实验。在第一个实验中,我们发现了一个特定的LDP,其中常见的最小二乘修剪启发式方法失败,并表明RANSAC成功解决了此问题。在第二个实验中,我们将RANSAC应用于50个综合问题,以便在广泛的参数值范围内检查该方法的可靠性。在第三个实验中,我们使用标准的特征检测技术来定位航空图像中的地标,然后使用RANSAC确定相机的位置和方向。

C.最小二乘修剪误差的位置确定问题示例

此实验中的LDP基于20个界标及其在图像中的位置。 20封信函中有5封属于严重错误;也就是说,它们在图像中的给定位置距离其实际位置至少10个像素。良好对应关系的图像位置通常围绕它们的实际位置分布,标准偏差为一个像素。

修剪严重错误的启发式方法如下:

*使用所有对应关系来实例化模型。
*在该模型的基础上,删除与其预测图像位置有最大偏差的对应关系。
*实例化没有该对应关系的新模型。
*如果新模型暗示删除的对应关系的标准化误差大于三个标准偏差,则假定它是一个严重误差,将其排除在外,然后继续删除对应关系。否则,假设这是一个很好的对应关系,然后返回包含它的模型作为问题的解决方案。

这种启发式方法成功删除了两个重大错误;但是在删除了第三个后,它决定新模型并不意味着很大的错误,因此它返回了基于18个对应的解决方案,其中三个是严重错误。当将RANSAC应用于此问题时,它将正确的解决方案放在所选点的第二个三元组上。最终共识集包含所有良好的对应关系,没有任何重大错误。

D.50综合位置确定问题

在该实验中,RANSAC被应用于50个合成LDP。每个问题都基于30个地标与图像的对应关系。使用了一系列概率来确定问题中严重错误的数量。大错误的图像位置距离其实际位置至少10个像素。良好对应关系的位置围绕其实际位置分布,其标准偏差为一个像素。使用了两个不同的摄像头位置-一个直接在地标上向下看,另一个从倾斜角度看它们。本节前面介绍的RANSAC算法已应用于这些问题。但是,附录A中描述的简单迭代技术用于定位P3P问题的解决方案来代替该附录中也描述的闭式方法,并且使用第二个最小二乘拟合来扩展最终共识集(如Sec中所建议)本文二)表一总结了十个典型问题的结果(RANSAC成功地避免了在所有问题的最终共识中都包含严重错误);在其中五个问题中,良好对应的概率为0.8,在其他五个问题中,概率为0.6。对于所考虑的每个摄像机位置,当前程序的执行时间约为1秒。

表I.使用RANSAC的典型实验结果。

良好通信数量、最终共识集中的信函数量、考虑的三元组数、考虑的摄像机位置数

E.“真实”位置确定问题

使用互相关来在使用6英寸镜头从大约4,000英尺拍摄的航拍图像中定位25个界标。 图像在2,000 x 2,000像素的网格上被数字化,这意味着每个像素大约2 ft的地面分辨率。 相关特征检测器产生了三个总体误差。 当将RANSAC应用于此问题时,它在选择的第一个三元组中找到了17个共识集,然后将其扩展为包括最初最小二乘拟合后的所有22个良好对应。 有关摄像机参数的最终标准偏差如下:

5 结论意见

在本文中,我们介绍了一种新的范例,即随机样本共识(RANSAC),用于将模型拟合到实验数据。 RANSAC能够解释/平滑包含很大百分比的总体错误的数据,因此非常适合自动图像分析中的应用,在这些应用中,基于容易出错的特征检测器提供的数据进行解释。

本文的主要部分描述了RANSAC在位置确定问题(LDP)中的应用:给定一个图像,该图像描述了一组具有已知位置的地标,请确定从中获取图像的空间点。我们提供的有关解决方案技术和LDP问题的几何形状的大多数结果都是新的,或者是未知的。当前的摄影测量文献除了最小二乘法的变体和用于解决透视点问题的丘奇方法外,没有提供任何解析解决方案。提出的Church方法为P3P问题提供了一种迭代解决方案[3,11],但没有任何迹象表明可能有多个物理上的实际解决方案。当然,没有迹象表明有人意识到,对于一般位置上的三个以上控制点,物理上实际的多种解决方案是可能的。 (应注意,由于可以将多个解任意任意地靠近在一起,即使将迭代技术初始化为接近正确解的值,也无法保证会收敛到所需值。)

在有关LDP问题(及相关附录)的部分中,我们已完全表征了P3P问题并提供了封闭形式的解决方案。我们已经表明,对于P4P和P5P问题,可以存在多个物理上实际的解决方案,而且还证明了当四个控制点位于同一平面上时,可以确保获得唯一的解决方案(每种情况都提供了解决方法)。确定P4P和P5P问题可能的最大解决方案数目的问题仍然悬而未决,但是我们已经表明,当控制点处于一般位置时,P6P问题存在唯一的解决方案。

附录A.视角三点问题的解析解决方案

本文的主体确定了P3P问题可以有多达四个解决方案。 在本附录中,导出了用于获取这些解决方案的闭式表达式。 我们的方法涉及三个步骤:

(1)根据给定的基数(由三个控制点定义)和相对的三面角的面角(相对于三对控制点的三个角度),找到(“透视”)四面体的腿长 来自CP); (2)相对于最初指定了控制点的3-D参考系定位CP; (3)计算像平面相对于参考框架的方向。

1.透视四面体的解决方案(见图4)

给定四面体基部的三个侧面的长度(Rab,Rac,Rbc),并给定相对的三面角的相应面角(θab,θac,θbc),求出四面体的其余三个侧面的长度 四面体(a,b,c)。

可以通过同时求解方程组来解决上述问题:

现在,我们进行如下操作:

从等式 (A5)和(A7)

从等式 (A6)和(A7)

从等式 (A8)和(A9)

从等式 (A9)和(A10)

公式(A11)和(A12)具有以下形式:

将(A13)和(A14)分别乘以m'和m,然后减去,

分别将方程式(A13)和(A14)乘以q'和q,分别减去并除以y,

假设

则等式(A15)和(A16)等于等式(A13)和(A14)。 现在,我们将方程式(Al5)乘以(m'* q-m * q'),并将方程式(A16)乘以(p * m'-p'* m),然后减去以获得

扩展等式(A17)并分组项,我们在x中获得一个双二次(四次)多项式:

式(A18)的根可以以闭合形式[5]或通过迭代技术[4]找到。 对于等式(A18)的每个正实根,我们为边a和b的每一个确定单个正实值。 从等式(A6)

并从等式 (A4)我们获得

如果然后从等式 (A16)我们有

如果,然后等式 (A26)是未定义的,我们从等式(A5)获得两个y的值:

对于y的每个真实正值,我们从公式(A4)获得c的值:

当从等式(A5)而不是等式(A26)获得y值时,所得解可能无效; 必须先证明它们满足等式(A3),然后再接受它们。

应该注意的是,因为等式(A 18)的每个根都可以导致两个不同的解决方案,所以双二次方程式的存在本身并不意味着最多可以解决P3P问题的四个解决方案。 为了确定四个解的上限,还需要一些其他论点,例如本文的主体中给出的论点。

2.例子

对于图5中所示的透视四面体,我们具有以下参数:

将这些值代入公式(A19)至(A23),我们得到公式(A18)中定义的双二次系数:

[-0.5625, 3.515625, -5.90625, 3.515625, -0.5625]

上式的根是[1,1,4,0.25]

对于每个根

3.一种透视四面体的替代解决方案(请参见图8)

图8. P3P问题迭代解决方案的几何。

定位P3P问题解决方案的简单方法(有时可以代替前面小节中介绍的更复杂的过程)是将控制点三角形的一个顶点滑到四面体的边上并查找其位置的简单方法。其他两个顶点分别位于其腿上的三角形。如果顶点A与L的距离为a(L是透视中心),则边Rab和Rac的长度会将三角形限制在四个可能的位置。给定腿LA和LB之间的角度,计算点A与直线LB的距离,然后计算LB上的点B1和B2,即距A的适当距离,以插入长度为Rab的线段。类似地,我们在其腿上最多计算两个位置。因此,给定A的位置,我们发现三角形的一个侧面的长度为Rab且长度为Rac的三角形至多为四个。随着点A向下移动,四个三角形的第三边(BC)的长度呈非线性变化。通过迭代地重新放置A以暗示所需长度的第三面,可以解决该问题。

4.计算透视中心的3D位置(见图9)

图9计算透视中心的3-D位置(L)。

给定透视四面体的三个控制点的三维位置以及三个支腿的长度,可以按如下方式计算透视中心的3D位置:
(1)构造一个垂直于A B并穿过透视中心L的平面P 1。可以在不知道L位置的情况下构造该平面,这就是我们试图计算的位置。考虑包含顶点A,B和L的四面体的面。知道边LA,LB和A B的长度后,我们可以使用余弦定律找到角度LAB,然后找到LA在AB上的投影QA。 (请注意,角度LQA是直角,点Q是线AB上最接近L的点)。构造一个垂直于AB并通过Q的平面;这架飞机也穿过L。
(2)类似地构造垂直于A C d穿过L的平面P2。
(3)构造由点A,点B和点C定义的平面P3。
(4)相交平面P1,P2和P3。通过构造,交点R是P3上最接近L的点。
(5)计算线AR的长度,并将其与LA的长度结合使用以计算线RL的长度,即线L与平面P3的距离。
(6)计算向量AB和A C的叉积,以形成垂直于P3的向量。然后将该矢量按RL的长度进行缩放,并将其添加到R中,以获取透视图中心L的3-D位置。

如果知道相机的焦距和像平面中的主要点,则可以计算像平面相对于世界坐标系的方向;即,原点的位置和图像平面坐标系相对于3D参考系的方向。可以按照以下步骤进行:

(1)计算透视中心的3D参考帧坐标(如上所述)。
(2)计算三个控制点的图像位置的3-D坐标:由于我们知道了CP和控制点的3-D坐标,因此我们可以计算CP之间的三个射线的3-D坐标和控制点。知道了成像系统的焦距,我们可以计算每条射线从CP到沿着射线的像平面的距离,并从中减去。
(3)使用在步骤(2)中找到的三个点计算包含图像的平面的方程。穿过CP的该平面的法线为我们提供了图像平面坐标系的原点(即主点的3D位置)以及该系统的Z轴。
(4)可以通过计算从主点到在步骤(2)中找到的任何一个点的矢量的3-D坐标来获得像平面绕Z轴的取向。

附录B.透视4点问题的解析解决方案(所有控制点都位于同一平面内)

在本附录中,提出了一种分析技术,用于在四个给定的控制点都位于同一平面上时获得P4P问题的唯一解决方案。

1.问题陈述(参见图10)

图10. P4P问题的几何形状(所有控制点都位于同一平面中)。

给定:位于3D空间中的平面中的四个点(称为对象平面)与位于不同平面中的四个点(称为图像平面)之间的对应关系; 并给出透视中心与像平面之间的距离(即成像系统的焦距); 并且还给出了像平面中的主要点(即,在像平面坐标中,镜头的光轴刺穿像平面的点的位置)。

查找:透视中心相对于物平面坐标系的3-D位置。

2.记法

*标记四个给定的图像点(Pi),并标记四个对应的对象点{Qi}。
*我们将假定二维图像平面坐标系的原点为主要点(PPI)。
*我们将假设在参考坐标系中物平面的方程Z = 0。 可使用标准技术从该坐标系转换为地面参考系(例如,参见[61或[91])。
*将假设为同质坐标[12]。
*带撇号的符号表示转置的结构。

3.解决程序
(a)计算将点从物平面映射到像平面的3×3排列矩阵T(稍后将给出计算T的过程):

(b)通过变换将物平面中坐标为[0,0,1]'的理想线映射到图像平面[VLI]中的消失线:

(c)确定从像面原点(PPI)到消失线的距离D1 [VLI] =[al, a2, a3]':

(d)求解像平面和物平面之间的二面角(倾斜角)θ:

其中f =焦距。

(e)通过变换将图像平面中坐标为[0,0,1]'的理想线映射到物体平面[VLO]中的消失线

(f)计算点[PPO]在物平面中的位置([PPO]是镜头光轴穿透物平面的点):

(g)计算物平面中从[PPO] = [cl,c2,c3]'到消失线[VLO] = [b1,b2,b3]'的距离DO:

(h)求出“平移”角$作为[VLO] = [bl,b2,b3]'的法线与物平面中X轴之间的夹角:

(i)确定XSGN和YSGN:如果穿过[PPO]的线(与物平面中的X轴平行)与[PPO]右侧的[VLO]相交,则XSGN =1。否则,XSGN = -1。从而,

(j)解决CP在物平面坐标系中的位置:

注意:如果(b)中确定的[VL1]具有坐标[0,0,k],则图像平面和物平面平行(θ = 0)。现在,我们不再使用上述过程,而是使用相似的三角形和欧几里得几何来求解所需的信息。

4.计算归类矩阵T


5.例子

鉴于:

参考文献
1. Bolles, R.C., Quam, L.H., Fischler, M.A., and Wolf, H.C. The SRI road expert: Image to database correspondence. In Proc. Image Understanding Workshop, Pittsburgh, Pennsylvania, Nov., 1978,
2. Chrystal, G. Textbook of Algebra (Vol 1). Chelsea, New York, New York 1964, p. 415.
3. Church, E. Revised geometry of the aerial photograph. Bull. Aerial Photogrammetry. 15, 1945, Syracuse University.
4. Conte, S.D. Elementary Numerical Analysis. McGraw Hill, New York, 1965.
5. Dehn, E. Algebraic Equations. Dover, New York, 1960.
6. Duda, R.O., and Hart, P.E. Pattern Classification and Scene Analysis. Wiley-Interscience, New York, 1973.
7. Gennery, D.B. Least-squares stereo-camera calibration. Stanford Artificial Intelligence Project Internal Memo, Stanford, CA 1975.
8. Keller, M. and Tewinkel, G.C. Space resection in photogrammetry. ESSA Tech. Rept C&GS 32, 1966, U.S. Coast and Geodetic Survey.
9. Rogers, D.P. and Adams, J.A. Mathematical Elements for Computer Graphics. McGraw Hill, New York, 1976.
10. Sorensen, H.W. Least-squares estimation: from Gauss to Kalman. IEEE Spectrum (July 1970), 63-68.
11. Wolf, P.R. Elements of Photogrammetry. McGraw Hill, New York, 1974.
12. Wylie, C.R. Jr. Introduction to Projective Geometry. McGraw-Hill, New York, 1970.

Signal Processing and Pattern Recognition in Vision_15_RANSAC:Random Sample Consensus——1981的更多相关文章

  1. Signal Processing and Pattern Recognition in Vision_15_RANSAC:Performance Evaluation of RANSAC Family——2009

    此部分是 计算机视觉中的信号处理与模式识别 与其说是讲述,不如说是一些经典文章的罗列以及自己的简单点评.与前一个版本不同的是,这次把所有的文章按类别归了类,并且增加了很多文献.分类的时候并没有按照传统 ...

  2. Computer Vision_33_SIFT: A novel point-matching algorithm based on fast sample consensus for image registration——2015

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  3. Python从题目中学习:random() module

    最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...

  4. Python :random 随机数生成

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random() 用于生成一个0到1的随机符点数: 0 &l ...

  5. Python 模块:random 随机数生成

    Python中的random模块用于生成随机数. 使用该模块之前需要 import random 几个常用的函数用法: 1.random.random 函数原型: random.random() 用于 ...

  6. Pattern Recognition And Machine Learning读书会前言

    读书会成立属于偶然,一次群里无聊到极点,有人说Pattern Recognition And Machine Learning这本书不错,加之有好友之前推荐过,便发了封群邮件组织这个读书会,采用轮流讲 ...

  7. Pattern Recognition and Machine Learning (preface translation)

    前言 鉴于机器学习产生自计算机科学,模式识别却起源于工程学.然而,这些活动能被看做同一个领域的两个方面,并且他们同时在这过去的十年间经历了本质上的发展.特别是,当图像模型已经作为一个用来描述和应用概率 ...

  8. 获取Avrix上Computer Vision and Pattern Recognition的论文,进一步进行统计分析。

    此文主要记录我在18年寒假期间,收集Avrix论文的总结 寒假生活题外   在寒假期间,爸妈每天让我每天跟着他们6点起床,一起吃早点收拾,每天7点也就都收拾差不多.   早晨的时光是人最清醒的时刻,而 ...

  9. IEEE signal processing letters 投稿经验

    转自:http://emuch.net/t.php?tid=6226942 前段时间比较幸运地中了一篇spl,把自己浅薄的经验写出来,直接从自己博客上转过来,分享给大家,望抛砖引玉吧~~~ 从投稿到录 ...

随机推荐

  1. Pychar调用远程编译器的环境配置

    版本:2019最新专业版

  2. sklearn.feature_extraction.text.CountVectorizer 学习

    CountVectorizer: CountVectorizer可以将文本文档集合转换为token计数矩阵.(token可以理解成词) 此实现通过使用scipy.sparse.csr_matrix产生 ...

  3. 使用使用nltk 和 spacy进行命名实体提取/识别

    1. 什么是 命名实体提取? 参考:https://towardsdatascience.com/named-entity-recognition-with-nltk-and-spacy-8c4a7d ...

  4. vue 强制刷新组件重新渲染

    实现功能:使用富文本编辑器编写文章,然后把编写成功的文章用子组件显示. 问题描述:父组件给子组件传递数据,子组件第一次调用数据的时候页面渲染是正常的,当数据变化的时候,子组件的页面渲染就失效了. 问题 ...

  5. Navicat连接Oracle数据库用户权限问题

    解决Navicat连接Oracle数据库用户权限问题: 第一步:在cmd窗口运行[sqlplus], 第二步:输入Oracle的用户名和口令连接Oracle数据库, 第三步:执行授权代码,给用户授予D ...

  6. python学习-49 json模块

    json模块 --------将任何类型都转换为json字符串 方法dumps import json dic={"name":"abc"} data = js ...

  7. T100——错误信息提示传入参数显示

    LET l_str1 = l_xccc.xccc901LET l_str2 = l_inat015LET l_str = l_str1.trim(),'|',l_str2.trim() CALL cl ...

  8. SAS学习笔记43 宏语句

    流程控制 %GOTO语句与%label语句是结合起来使用的.首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的.可实现与 ...

  9. Eureka 注册中心一直报Connect to localhost:8761 time out 的问题

    忽略了配置eureka.client.service-url.defaultZone而导致的异常,重新覆盖配置就好 client: fetch-registry: false register-wit ...

  10. spring-cloud搭建

    1.myApplicaion 启动服务类上层必须有一层包 2.报错 com.sun.jersey.api.client.ClientHandlerException: java.net.Connect ...