主要内容

ransac

拟合模型到噪声数据

描述

例子

模型inlierIdx) = ransac (数据fitFcndistFcnsampleSizemaxDistance使用m估计样本共识(MSAC)算法,随机样本共识(RANSAC)算法的一个版本,对噪声数据拟合一个模型。

指定适合模型的函数,fitFcn,以及用于计算模型到数据之间距离的函数,distFcn.的ransac函数随机抽取样本数据使用sampleSize并使用贴合功能,以最大限度地增加内嵌的数量maxDistance

___) = ransac (___名称,值另外指定一个或多个名称,值对参数。

例子

全部折叠

加载并绘制一组嘈杂的二维点。

负载pointsForLineFitting.mat情节(点(:1),点(:,2),“o”);持有

图中包含一个轴对象。axis对象包含一个类型为line的对象。

用线性最小二乘拟合一条直线。由于异常值,这条线不是很合适。

modelLeastSquares = polyfit(点(:1),点(:,2),1);X = [min(points(:,1)) max(points(:,1))];y = modelLeastSquares(1)*x + modelLeastSquares(2);情节(x, y,的r -

图中包含一个轴对象。轴对象包含两个类型为line的对象。

使用MSAC算法拟合一条线到这些点。定义样本大小、嵌线的最大距离、拟合函数和距离评价函数。调用ransac运行MSAC算法。

sampleSize = 2;每次试验的抽样点数百分比maxDistance = 2;*内嵌线的最大允许距离fitLineFcn = @(points) polyfit(points(:,1),points(:,2),1);%拟合函数使用polyfitevalLineFcn =...距离评价函数@(模型,分)和((分(:,2)- polyval(模型,分(:1)))^ 2,2);[modelRANSAC, inlierIdx] = ransac(points,fitLineFcn,evalLineFcn,...sampleSize maxDistance);

使用polyfit

modelInliers = polyfit(点(inlierIdx, 1),点(inlierIdx, 2), 1);

显示最终的拟合行。这条线对于异常值来说是稳健的ransac识别和忽略。

inlierPts =点(inlierIdx:);x = [min(inlierPts(:,1)) max(inlierPts(:,1))];y = modelInliers(1)*x + modelInliers(2);情节(x, y,“g -”)传说(“吵点”“最小二乘健康”健壮的适合的);持有

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些对象分别代表噪声点、最小二乘拟合、鲁棒拟合。

输入参数

全部折叠

要建模的数据,指定为——- - - - - -n矩阵。每一行对应于要建模的数据集中的一个数据点。例如,要建模一组2-D点,指定点数据为——- - - - - -2矩阵。

数据类型:|

函数的子集数据,指定为函数句柄。函数的形式必须是:

模型= fitFcn(数据)

如果可以将多个模型与数据相匹配,那么fitFcn以单元格数组形式返回模型参数。

函数用于计算从模型到数据的距离,指定为函数句柄。函数的形式必须是:

距离= distFcn(模型、数据)

如果模型是一个n-element数组,则距离必须为——- - - - - -n矩阵。否则,距离必须是一个1的向量。

最小样本容量数据这是必需的fitFcn,指定为正标量整数。

拟合曲线到内嵌点(指定为正标量)的最大距离。任何比这个距离更远的点都被认为是异常值。RANSAC算法从一个小样本点创建一个拟合,但试图最大化内嵌点的数量。降低最大距离可以通过在嵌点上施加更紧的公差来改善配合。

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“MaxNumTrials”,2000年

函数来验证模型,指定为逗号分隔的对,由'ValidateModelFcn'和函数句柄。函数返回真正的如果模型是基于函数中定义的标准而被接受的。使用此函数拒绝特定的匹配。函数的形式必须是:

isValid = validateModelFcn(模型、变长度输入宗量)

如果没有指定函数,则假定所有模型都是有效的。

寻找产生有效模型的样本的最大尝试次数,指定为逗号分隔对,由'MaxSamplingAttempts'和一个整数。

最大随机试验数,指定为逗号分隔对,由'MaxNumTrials'和一个整数。单次试验使用最少的随机点数数据以适应一个模型。然后,试验检查内嵌的数量maxDistance从模型。经过所有的试验,选择嵌线数量最多的模型。增加试验次数可以提高输出的稳健性,但需要额外的计算。

最终解决方案确定模型拟合的最大嵌套数,指定为逗号分隔对,由'信心和从0到100的标量。增加这个值会提高输出的稳健性,但会增加额外的计算量。

输出参数

全部折叠

中定义的参数返回fitFcn输入。该模型最大限度地增加了所有样本尝试的嵌套数量。

Inlier点,作为逻辑向量返回。这个向量的长度和数据,每个元素表明该点是否是基于模型拟合的嵌套点maxDistance

参考文献

Torr, P. H. S.和A. Zisserman。“MLESAC:一种新的用于估计图像几何的鲁棒估计器”。计算机视觉与图像理解.第18卷,第1期,2000年4月,138-156页。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2017a