Ransac和圆拟合

合集下载

和ransac 算法优化的拟合方法

和ransac 算法优化的拟合方法

拟合方法在计算机视觉和图像处理领域中扮演着重要的角色,它广泛应用于图像配准、特征匹配、物体识别等领域。

而RANSAC算法作为一种经典的拟合方法,具有很好的鲁棒性和适用性,能够有效地应对数据中的噪声和异常值。

然而,RANSAC算法在一些情况下存在一些局限性,因此需要进一步优化。

本文将介绍RANSAC算法的基本原理和局限性,并结合实际应用,探讨RANSAC算法的优化方法。

一、RANSAC算法的基本原理RANSAC(Random Sample Consensus)算法是一种基于随机采样的一致性算法,用于拟合数据中的模型参数。

其基本原理为通过随机采样的方式选择一组数据点,利用这些数据点拟合出一个模型,并计算出与该模型一致的数据点个数。

重复这个过程多次,最终选取具有最大一致性的模型参数作为最终结果。

RANSAC算法的流程如下:1. 随机选择一定数量的数据点;2. 通过这些数据点拟合出一个模型;3. 计算出与该模型一致的数据点个数;4. 重复上述步骤,直到满足停止条件。

RANSAC算法具有很好的鲁棒性和适用性,能够有效地抵抗数据中的噪声和异常值。

在很多图像处理和计算机视觉的应用中得到了广泛的应用。

二、RANSAC算法的局限性然而,RANSAC算法在一些情况下存在一定的局限性。

主要表现在以下几个方面:1. 计算复杂度较高。

由于RANSAC算法是通过随机采样和迭代的方式来寻找最优模型参数,因此其计算复杂度较高,在处理大规模数据时效率较低。

2. 对参数选择敏感。

RANSAC算法中需要手动设置一些参数,如采样次数、一致性阈值等,这些参数的选择对算法的性能有较大影响,而且需要经过大量的试验和调整。

3. 对数据分布要求较高。

RANSAC算法对于数据的分布有一定要求,如果数据的分布不满足一致性条件,可能导致算法无法得到准确的结果。

以上局限性影响了RANSAC算法在一些实际应用中的效果,因此需要进一步优化来提高算法的性能。

离散点双圆弧拟合 c++

离散点双圆弧拟合 c++

离散点双圆弧拟合 c++离散点双圆弧拟合是指给定一组离散的二维点,通过找到最佳的两个圆弧来逼近这些点的方法。

这种方法在许多应用中都有广泛的应用,例如CAD软件中的曲线拟合和机器视觉中的形状识别。

在C++中实现离散点双圆弧拟合,我们可以采用以下步骤:1. 首先,读取并存储离散点的坐标。

我们可以将每个点表示为一个二维向量。

2. 接下来,通过计算两个点之间的距离,找到连续点之间的最大距离。

这将作为拟合过程中两个圆弧之间的分界点。

3. 然后,将点集分为两个子集,每个子集对应一个圆弧。

可以使用一种启发式算法,例如RANSAC,来选择最佳的子集。

4. 对于每个子集,使用最小二乘法拟合一个圆弧。

这可以通过最小化每个点到圆弧的距离实现。

5. 最后,将两个圆弧的结果合并为一个整体。

以下是用C++实现离散点双圆弧拟合的示例代码:```cpp#include <iostream>#include <vector>#include <cmath>// 二维点的结构体struct Point {double x;double y;};// 拟合圆弧的结构体struct Arc {double center_x;double center_y;double radius;};// 计算两点之间的距离double distance(const Point& p1, const Point& p2) {return std::sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));}// 计算圆弧拟合误差double computeError(const Arc& arc, const std::vector<Point>& points) {double error = 0.0;for (const auto& point : points) {double dx = point.x - arc.center_x;double dy = point.y - arc.center_y;double d = std::abs(std::sqrt(dx * dx + dy * dy) - arc.radius);error += d;}return error;}// 拟合一个圆弧Arc fitArc(const std::vector<Point>& points, int start, int end) {// 实现最小二乘拟合方法来计算圆弧的参数// ...// 返回圆弧的结果Arc arc;return arc;}// 进行离散点双圆弧拟合void dualArcFitting(const std::vector<Point>& points) {int n = points.size();// 找到最大的两个点之间的距离int max_distance = 0;int max_distance_index = 0;for (int i = 1; i < n; i++) {double d = distance(points[i-1], points[i]);if (d > max_distance) {max_distance = d;max_distance_index = i;}}// 将点分为两个子集std::vector<Point> subset1(points.begin(), points.begin() + max_distance_index);std::vector<Point> subset2(points.begin() +max_distance_index, points.end());// 对每个子集拟合一个圆弧Arc arc1 = fitArc(subset1, 0, subset1.size() - 1);Arc arc2 = fitArc(subset2, 0, subset2.size() - 1);// 输出结果std::cout << "Arc 1: center=(" << arc1.center_x << ", " << arc1.center_y << "), radius=" << arc1.radius << std::endl; std::cout << "Arc 2: center=(" << arc2.center_x << ", " << arc2.center_y << "), radius=" << arc2.radius << std::endl; }int main() {// 读取离散点的坐标std::vector<Point> points;// ...// 假设我们已经从其他地方读取了点的坐标// 进行双圆弧拟合dualArcFitting(points);return 0;}```在上述示例代码中,我们定义了`Point`结构体表示二维点,`Arc`结构体表示拟合的圆弧。

球面拟合算法

球面拟合算法

球面拟合算法球面拟合是一种常见的三维形状拟合方法。

在球面拟合中,我们寻找最适合给定数据点的球体,使得数据点到球面的距离最小,从而将数据点集合拟合为一个球面模型。

本文将介绍一些常用的球面拟合算法,以及它们的优缺点。

1. 最小二乘法拟合最小二乘法是一种常用的拟合方法,它可以用来拟合线性和非线性函数。

在球面拟合中,最小二乘法的目标是最小化数据点到球面的距离平方的和。

这个问题可以形式化为以下优化问题:minimize ||X - xc||^2subject to ||x_i - xc||^2 = r^2, i=1,2,...,n其中,X是一个n维列向量,包含了n个数据点的坐标;xc是球心坐标;r是球半径。

这个问题可以通过求解最小二乘法的正规方程来解决。

最小二乘法的优点是简单易实现,对大规模的数据处理也很有效。

然而,这种方法容易受到噪声数据的干扰,尤其是当数据点不是清晰地分布在球面上时。

此外,由于最小二乘法没有考虑平面内部的数据点对模型拟合的影响,因此可能导致球面模型的过拟合。

2. PCA拟合PCA(Principal Component Analysis)是一种经典的数据降维方法,它可以用来分析数据的主要特征,并减少数据的维度。

在球面拟合中,PCA可以用来找到最小二乘球面中心的初步估计,从而减小最小二乘法的搜索空间。

具体地,我们可以先通过PCA找到数据集的主成分,然后将这些数据点投影到主成分上得到一个一维线性回归模型。

通过对这个线性模型进行拟合,可以获得球心估计。

此后,我们可以使用最小二乘法获得精确的球面拟合。

PCA拟合的优点是具有鲁棒性和准确性,尤其是在处理含有噪声数据的情况下。

其缺点是需要进行额外的PCA计算,对大规模数据的计算量较大。

RANSAC(RANdom SAmple Consensus)是一种经典的鲁棒拟合算法,可以用来拟合任意形状的模型。

在球面拟合中,RANSAC可以用来排除掉噪声点和离群点,从而提高拟合算法的鲁棒性。

matlab ransac拟合圆柱算法原理

matlab ransac拟合圆柱算法原理

一、介绍MATLAB RANSAC算法MATLAB RANSAC算法是一种用于拟合圆柱的算法,它基于随机抽样一致性(RANSAC)原理,通过在数据中随机选择一些点进行拟合,然后验证拟合模型的准确性,最终找到最优的圆柱拟合模型。

二、RANSAC算法原理1. 数据采样RANSAC算法首先随机选择数据中的一定数量的点(最小拟合点数),然后根据这些点来拟合圆柱模型。

2. 模型拟合在数据采样的基础上,RANSAC算法利用最小二乘法等数学方法来拟合圆柱模型,得到一个初步的拟合结果。

3. 内点和外点的判定RANSAC算法通过设定一个阈值,来判断哪些点是符合拟合模型的内点,哪些点是不符合拟合模型的外点。

4. 模型评估RANSAC算法对拟合的模型进行评估,计算内点的比例,用于估计拟合模型的准确性。

5. 更新和迭代RANSAC算法在一定的迭代次数内寻找最优的拟合模型,通过更新内点和外点的数量来找到最优的拟合结果。

三、MATLAB RANSAC拟合圆柱的具体步骤1. 数据准备需要准备圆柱点云数据,可以是从3D扫描仪获取的点云数据,也可以是通过其他途径获取的点云数据,确保数据质量较高。

2. 参数设置在MATLAB中,需要设置RANSAC算法的参数,包括最小拟合点数、迭代次数、内点和外点的阈值等参数。

3. RANSAC算法实现使用MATLAB内置的RANSAC算法函数,传入点云数据和参数,实现圆柱拟合。

4. 模型评估获取拟合结果后,需要对拟合模型进行评估,计算内点的比例,判断拟合结果的准确性。

5. 结果展示将拟合结果在MATLAB中进行可视化展示,可以绘制圆柱拟合的结果图和误差分布图,以便进行进一步分析和验证。

四、MATLAB RANSAC拟合圆柱的应用领域1. 工业制造MATLAB RANSAC算法可以用于工业制造中的零件检测和质量控制,通过拟合圆柱模型对零件的表面进行检测和分析。

2. 地质勘探在地质勘探领域,MATLAB RANSAC算法可以用于分析地质中的圆柱形结构,如岩心、矿石等,对地质结构进行建模和分析。

Ransac和圆拟合

Ransac和圆拟合

课程实验报告
2017 - 2018 学年第一学期
课程名称:计算机视觉及应用
实验名称:
班级:电通1班
学生姓名: 学号: 。

实验日期: 2017.12.1 地点:
指导教师:
成绩评定: 批改日期:
实验数据分析及处理
示例图片RANSAC拟合情况:
通过在MATLAB上仿真,得到RANSAC圆拟合图,如下所示:图1 第一次运行时RANSAC圆拟合图
图2 第二次运行时RANSAC圆拟合图
图3 第三次运行时RANSAC圆拟合图
实验结果分析
1.图1结果分析
如图1所示,随机生成了300个蓝色的点,其中局内点21个,即黄色点,局外点190个,以抽样点为圆心,拟合了一个圆。

2. 图2结果分析
如图2所示,其中局内点11个,局外点200个,得到较好的拟合结果。

3.图3结果分析
如图3所示,其中局内点14个,局外点200个,得到较好的拟合结果。

4.图1、图2、图3横向对比分析
图一、图二、图三,都是经过多次拟合才拟合成功。

可能的原因是样本点是随机产生的,不能确定每次产生的样本点都能成功的拟合。

5.RANSAC拟合原理和流程图
建立模型时利用圆的定义方程:dist(P,A)+dist(P,B)=DIST,其中P为圆上一点,A为圆心。

随机选取三点A,P构建圆模型,计算每个点到此两焦点的距离和与DIST的差值,差值小于一定阈值时的点为符合模型的点,点数最多时的模型即为最佳圆模型,再根据符合条件的点,利用圆一般方程x^2+y^2+Dx+Ey+F=0和得到符合点进行系数拟合,根据函数式画出最终拟合圆。

ransac算法阈值

ransac算法阈值

ransac算法阈值RANSAC(随机抽样一致性)算法是一种基于随机抽样的迭代算法,用于处理数据集中存在的外点(outliers)。

该算法的核心思想是从数据集中随机抽取一些数据子集,估计模型参数,然后将数据集中与该模型拟合的数据点视为内点(inliers),再通过重复迭代的方式来逐渐筛选出内点,最终得到模型参数。

在使用RANSAC算法时,一个重要的参数是阈值(threshold),该参数用于判断数据点是否为内点。

具体而言,当某个数据点到模型曲线或平面的距离小于阈值时,该数据点被认为是内点,否则该数据点被认为是外点。

因此,阈值的大小会直接影响到最终得到的模型参数和内点集合的大小。

下面分步骤阐述RANSAC算法阈值的选择。

步骤一:确定数据集首先需要明确待处理的数据集,比如一个点云数据集或是一个图像特征点集合。

步骤二:选择拟合模型类型在决定阈值大小之前,需要确定待拟合的模型类型,比如直线、平面、圆形等,不同的模型类型会影响到阈值的选择。

步骤三:使用不同阈值进行试验为了找到合适的阈值大小,可以先选择一个较小的阈值进行试验,然后通过比较不同的内点集合大小和模型拟合效果来评估阈值的影响。

如果内点集合比较小,可能是因为阈值过小导致了过度拟合(overfitting),因此需要增加阈值。

反之,如果内点集合过大,可能是因为阈值过大导致了欠拟合(underfitting),因此需要减小阈值。

步骤四:选择合适的阈值通过重复步骤三,逐渐增加或减小阈值,最终得到一个能够较好的区分内点和外点的阈值大小。

需要注意的是,阈值的选择还会受到数据噪声和数量的影响。

如果数据噪声比较大或数据集较小,可能需要选择相对较小的阈值。

反之,如果数据噪声较小或数据集较大,可以考虑选择相对较大的阈值。

综上所述,选择合适的阈值大小是RANSAC算法中一个比较重要的问题。

通过试验和不断调整,可以得到一个能够较好地拟合数据集的模型参数和内点集合。

拟合圆的几种方法

拟合圆的几种方法

拟合圆的几种方法拟合圆是图像处理和计算机视觉中常见的任务之一,其目的是通过给定的数据点集,找到一个最佳的圆来描述这些数据点的分布特征。

在本文中,我们将介绍几种常用的拟合圆的方法。

最简单直接的方法是使用最小二乘法拟合圆。

最小二乘法是一种常见的数学优化方法,通过最小化数据点到拟合圆的距离平方和来确定最佳的拟合圆。

具体而言,对于给定的数据点集,可以通过求解一个最小化目标函数的优化问题来得到最佳的拟合圆的参数。

最小二乘法拟合圆的优点是简单易实现,但在面对噪声较大或数据点分布非常不均匀的情况下,拟合效果可能不佳。

还可以使用RANSAC算法进行拟合圆。

RANSAC(Random Sample Consensus)是一种鲁棒性较强的参数估计方法,常用于处理含有噪声和异常值的数据。

在拟合圆的问题中,RANSAC算法可以通过随机抽样一小部分数据点来估计圆的参数,并通过计算剩余数据点到估计圆的距离来评估拟合效果。

通过迭代这个过程,RANSAC算法可以找到一个最优的拟合圆。

相比于最小二乘法,RANSAC算法在处理噪声和异常值时更具有鲁棒性,但需要更多的计算时间。

还有一种常用的拟合圆的方法是使用Hough变换。

Hough变换是一种将数据点从直角坐标系转换到参数空间的技术,通过在参数空间中寻找峰值来确定最佳的拟合圆。

具体来说,在Hough变换中,每个数据点可以表示为一个参数空间中的曲线,而拟合圆可以表示为参数空间中的一个峰值。

通过寻找参数空间中的峰值,可以确定最佳的拟合圆。

Hough变换在处理噪声和异常值时也比较鲁棒,但计算复杂度较高,需要更多的计算资源。

除了以上提到的方法,还有一些其他的拟合圆的方法。

例如,可以使用梯度下降法进行拟合圆,通过迭代优化圆的参数来最小化一个损失函数。

梯度下降法在处理大规模数据时较为高效,但需要选择合适的学习率和迭代次数。

另外,还可以使用最大似然估计方法进行拟合圆,通过估计数据点在圆上的分布概率来确定最佳的拟合圆参数。

ransac算法公式

ransac算法公式

RANSAC(Random Sample Consensus)算法是一种用于拟合模型和去除离群值的迭代算法。

它适用于一些具有噪音和异常值的数据集。

RANSAC算法的基本步骤如下:1. 随机从数据集中选择一个最小样本数(通常是最小的模型参数数量)作为内点,将其余的数据点标记为外点。

2. 使用选择的内点拟合模型。

3. 计算所有数据点到该模型的距离,并将小于给定阈值的数据点标记为临时内点。

4. 如果临时内点数目大于预设值,接受当前模型并重新拟合使用所有这些临时内点。

5. 重复上述步骤固定的迭代次数,选择拟合度最高的模型作为最终模型。

RANSAC算法的数学公式如下:输入:- 数据集D = {x_1, x_2, ..., x_N},其中x_i 表示第i 个数据点- 模型参数数量k- 最大迭代次数max_iterations- 内点数量阈值min_inliers- 残差阈值threshold输出:拟合模型参数1. best_model = null2. best_score = 03. for iterations = 1 to max_iterations:4. random_sample = randomly select k samples from D5. maybe_model = fit_model_to_samples(random_sample)6. consensus_set = empty set7. for each data_point in D:8. if distance_between(data_point, maybe_model) < threshold:9. add data_point to consensus_set10. if size of consensus_set > min_inliers:11. definitely_model = fit_model_to_samples(consensus_set)12. score = evaluate_model(definitely_model)13. if score > best_score:14. best_model = definitely_model15. best_score = score16. return best_model其中,fit_model_to_samples() 表示使用数据点进行模型拟合,distance_between() 表示计算数据点到模型的距离,evaluate_model() 表示评估模型的拟合度得分。

MATLAB点云处理(十六):多项式曲线拟合(RANSACMSAC)

MATLAB点云处理(十六):多项式曲线拟合(RANSACMSAC)

MATLAB 点云处理(⼗六):多项式曲线拟合(RANSACMSAC )⽂章⽬录1 多项式拟合函数 fitPolynomialRANSACfitPolynomialRANSAC — 使⽤RANSAC算法从点云中进⾏多项式拟合该函数使⽤M-估计量样本⼀致性(MSAC)算法,即随机样本⼀致性(RANSAC)算法的改进算法来拟合数据。

主要有 2 种重载⽅式NO.1 给定数据点xyPoints 、拟合阶数N 、内点到模型的最⼤距离maxDistance ,返回多项式系数P P = fitPolynomialRANSAC (xyPoints ,N ,maxDistance )通过对xyPoints 中给定的 个⼆维平⾯点进⾏多项式拟合,找到多项式系数P(按将幂排列)。

对于多项式 ,对应的多项式系数为 其中,xyPoints :即[x y], 为⼆维平⾯坐标点,为m×2阶矩阵N :多项式拟合阶数,为⼤于 0 的整数maxDistance :内点到模型的最⼤距离,为正数P :多项式系数,作为数值向量返回。

每个元素对应于N次多项式⽅程中的⼀个系数数。

例如,对于⼆次多项式, 对应 NO.2 给定数据点xyPoints 、拟合阶数N 、内点到模型的最⼤距离maxDistance ,返回多项式系数P 和内点的线性索引inlierIdx[P ,inlierIdx ] = fitPolynomialRANSAC (xyPoints ,N ,maxDistance )2 代码实现⽰例1: 对空间种⼀组曲线点,投影到xoy平⾯进⾏RANSAC多项式拟合(直线拟合)代码:m p (x )=p x +1n p x +2n −1...+p x +n p n +1P =[p ,p ,...,p ,p ]12n n +1Ax +2Bx +C =0P [A ,B ,C ]clc;clear;%加载点云ptCloud =pcread('line.pcd');figure;pcshow(ptCloud);title('原始点云');xlabel('X(m)');ylabel('Y(m)');zlabel('Z(m)');%提取xoy平⾯坐标点x = ptCloud.Location(:,1);y = ptCloud.Location(:,2);figure;plot(x,y,'.');title('xoy平⾯投影点云');xlabel('X(m)');ylabel('Y(m)');zlabel('Z(m)');%设置多项式拟合阶数 NN =1;%设置内点到模型的最⼤距离maxDistance =0.1;%执⾏MSAC多项式拟合[P, inlierIdx]=fitPolynomialRANSAC([x,y],N,maxDistance);%输出多项式系数P%使⽤polyval计算多项式,⽤红⾊圆圈标记异常值x1 =linspace(min(x),max(x));%在区间[min.x,max.x]内⽣成100个等间距的x,⽤与计算多项式的值yRecoveredCurve =polyval(p,x1);figure;plot(x1,yRecoveredCurve,'-g','LineWidth',2);hold on;plot(x(inlierIdx),y(inlierIdx),'.',x(~inlierIdx),y(~inlierIdx),'ro');legend('多项式拟合曲线','内点','外点','Location','SouthEast');title('拟合结果展⽰')xlabel('X(m)');ylabel('Y(m)');zlabel('Z(m)');hold off;结果展⽰:P =1×2 single ⾏向量0.6178 1.0817⽰例2: 对空间种⼀组曲线点,投影到xoy平⾯进⾏RANSAC多项式拟合(⼆次曲线拟合)代码:clc;clear;%加载点云ptCloud =pcread('test2.pcd');%提取xoy平⾯坐标点x = ptCloud.Location(:,1);y = ptCloud.Location(:,2);figure;plot(x,y,'.');title('xoy平⾯投影点云');xlabel('X(m)');ylabel('Y(m)');zlabel('Z(m)');%设置多项式拟合阶数 NN =2;%设置内点到模型的最⼤距离maxDistance =0.1;%执⾏MSAC多项式拟合[P, inlierIdx]=fitPolynomialRANSAC([x,y],N,maxDistance);%输出多项式系数P%使⽤polyval计算多项式,⽤红⾊圆圈标记异常值。

ransac算法拟合圆

ransac算法拟合圆

ransac算法拟合圆(最新版)目录1.RANSAC 算法简介2.圆的参数方程3.RANSAC 算法在拟合圆上的应用4.算法的优点与局限性正文1.RANSAC 算法简介RANSAC(Random Sample Consensus)算法是一种基于随机抽样的迭代算法,旨在从一组包含噪声的数据中估计某个数学模型的参数。

该算法的主要思想是通过随机抽样和投票的方式来达成共识,从而找到最优解。

RANSAC 算法广泛应用于计算机视觉、机器人学等领域。

2.圆的参数方程圆是平面上所有到一个固定点的距离相等的点的集合。

设圆的圆心为(x0, y0),半径为 r,则圆的参数方程为:x = x0 + r * cos(t)y = y0 + r * sin(t)其中,t 为参数,范围在 [0, 2π] 之间。

3.RANSAC 算法在拟合圆上的应用在实际应用中,由于测量误差等因素,我们往往无法直接得到圆的精确参数,而需要通过拟合方法来估计。

RANSAC 算法正是一种有效的拟合圆的方法。

假设我们有一组圆上的点 P1, P2,..., Pn,我们希望通过这组点来拟合一个圆。

首先,我们需要对数据进行预处理,剔除异常值和明显不在圆上的点。

然后,我们随机选择两个点,计算它们连线与圆的交点,得到一个新的点。

重复这个过程,直到得到足够多的点。

这些点构成的圆就是拟合的结果。

接下来,我们用 RANSAC 算法来优化这个拟合结果。

具体来说,我们用以下步骤来实施算法:(1) 从原始点集中随机选择一个点作为圆心候选点。

(2) 以该点为中心,计算所有点到圆心的距离,将距离小于等于半径阈值的点加入到新的点集中。

(3) 重复步骤 (2),直到新的点集不再变化,或者达到最大迭代次数。

(4) 计算新的点集的圆心和半径,得到最终的拟合结果。

4.算法的优点与局限性RANSAC 算法在拟合圆等曲线形状时表现出较好的效果,具有较强的鲁棒性。

但是,该算法也存在一定的局限性:(1) 对于某些特殊情况,如点集呈环状分布,算法可能无法得到正确的结果。

变电站开关柜带电操作机器人关键技术研究

变电站开关柜带电操作机器人关键技术研究
rithm based on deep learning and image processing method of switching operationꎻThe operation technology of flexi ̄
ble manipulator includes hand eye calibration technologyꎬpath planning of non ̄collision manipulator and flexible op ̄
应于待定位目标所在场景的位置ꎬ固定设置双目视
觉系统ꎬ对双目视觉系统进行标定ꎬ通过标定后的双
目视觉系统对待定位目标所在场景进行同步拍摄ꎬ
获取待定位目标所在场景同一时刻的左影像和右影
类的算法对其进行识别ꎬ基于深度学习的目标分类
方法主要以 Mobilenet 网络为基础进行分类ꎬ判断目
标的当前状态ꎬ主要包括旋钮开关的状态ꎬ压板的分
中图分类号:TM63 文献标识码:B
Research on Key Technologies of Live Operating Robot for Substation Switchgear
GUO Hao1 ꎬWANG Fa ̄shun2 ꎬZHOU Gang1
(1. Jiaxing Power Supply CompanyꎬJiaxing 314000ꎬChinaꎻ
深度学习的同心圆识别方法、基于深度学习的目标分类算法、倒闸操作图像处理方法ꎻ柔性机械臂操作技术
包括手眼标定技术、非碰撞机械臂路径规划、基于电流环的柔性操作ꎮ 通过对这些技术研究实现对设备的指
针、数字仪表、开关分合等状态免人工的远程高效、准确识别ꎬ提升了工作效率ꎮ
关键词:变电站ꎻ开关柜ꎻ带电操作机器人

改进的RANSAC圆检测算法

改进的RANSAC圆检测算法

!第"#卷第$期郑州大学学报!理学版"%&’("#)&($ !*#$+年,月-./012340&56278.!)9:.;<7.=>."?9@.*#$+改进的M$B R$%圆检测算法邓仕超!!高!阳!!韩海媚!桂林电子科技大学机电工程学院!广西桂林"H$##H"摘要!为解决传统随机抽样一致性!@92>&I N9I J’723<&2N7N:12<R’b F);F O"圆检测算法中无目的抽样耗时较长’检测结果准确性和稳定性较差等问题’提出一种改进的b F);F O算法.该算法先滤去较短的图形边缘’仅留下较长的边缘进行抽样.当第一次取到候选圆时’该算法还借助候选圆进一步排除无效点’大大减少了所需抽样次数.然后’用最小二乘法对这些候选圆参数进一步优化)筛选’提高了最终结果的稳定性和准确性.实验表明’该算法速度快)准确性好’完全能满足实际检测的需要.关键词!b F);F O算法#圆检测#候选圆#最小二乘法中图分类号!U T,D$(H$文献标志码!F文章编号!$CA$B C+H$!*#$+"#$B##AAB#""’(!$#($,A#"V W.7N N2.$CA$B C+H$(*#$A#"+)*引言图像处理中常用的圆检测算法有(基于c&530变换的圆检测*$\*+算法#基于随机抽样一致性!@92>&I N9I J’723<&2N7N:12<R’b F);F O"算法的圆检测.c&530变换圆检测算法要遍历三维参数空间’对内存和时间的消耗特别大’且检测结果精度受参数离散化程度的影响也大.文献*,+提出了随机c&530变换!b c U"算法’该算法随机抽取图像空间中的,个点’对应到参数空间中的$个点’再从参数空间中选取候选圆并进一步挑出真实圆’从而大大减少了内存消耗.b F);F O算法*H+与b c U算法相似’但其抽样的目的在于估计出一个能包含尽可能多的边界点的圆模型’只用圆模型上的点来拟合真实圆.这两种算法的共同缺点在于大量圆外点会带来大量无效抽样和累积.文献*"+用梯度法预先判断,点是否在候选圆上’减少了无效采样’但计算梯度本身也要消耗不少时间.文献*C+则对每条连续边界,等分’再分别取点进行圆拟合’该方法仅对连续边界进行取样’大大减少了对无效点的抽样.但这两种改进算法都只用,个点得到圆参数’准确度有限.文献*A+用最小二乘法改进了b c U算法’先用H点确定初始圆参数’再对得到的圆上点迭代使用最小二乘法’直至没有新点加入’该方法准确性较好’但所需迭代次数受初始参数影响大.本文设计了一种改进的b F);F O 圆检测算法’可以进一步减少检测圆所需时间并保证其准确度.+*M$B R$%算法传统b F);F O圆检测算法的具体步骤如下($"对待检测的图像进行预处理及边缘提取’建立由所有边缘点坐标构成的点集.8令当前循环次数#[ #.*"初始化局内点点集Q3,K O[)6P P.从边界点点集.中随机抽取,个点’计算这,个点所确定的圆的参数*2’;’I+!圆心!2’;".半径I"’若圆的半径I的范围在预设的范围之内’则转,"#否则转C".,"计算各边界点到*"中所得到的圆的圆心的距离$’若$\I"!!!为可接受的局内点偏离裕度"’则认为该点为局内点’将其坐标存入局内点点集Q3,K O’否则视为局外点.收稿日期!*#$AB#,B*H基金项目!广西制造系统与先进制造技术重点实验室项目(新型无O9e*平场复消色差显微物镜研发!$HB#H"B$"B##A/"#桂林电子科技大学教育教学改革示范中心专项(布氏硬度压痕直径自动化测量仪器的研制.作者简介!邓仕超!$DA,&"’男’广西梧州人’副研究员’主要从事图像处理)光纤传感与嵌入式系统等方面研究’=B I97’(>N<K351:.1>5. <2#高阳!$DD$&"’男’广西桂林人’硕士研究生’主要从事机器视觉检测与图像处理研究’=B I97’($#$AD$++*"Kjj.<&I.郑州大学学报!理学版"第"#卷H "计算该圆上的局内点点数0’若0大于阈值0I 72’则认为此次估计出的圆模型足够合理’这些局内点也可视为有效点’转""#否则转C ".""对点集Q 3,K O 中的所有点用最小二乘法重新计算圆的参数模型’得到最终结果.C "#[#X $’若#‘%I 9]’则结束#否则转*".-*改进的M $B R $%算法传统bF );F O 算法中抽样耗时占算法总耗时的比重较大’而非圆边界点!即局外点"的数量又是影响所需抽样次数的最主要的因素.所以’减少局外点数量对减少算法总耗时有较大作用.另外’传统算法通过三点预估圆方法选取的局内点点集的随意性较大’这使得最终得到的检测结果的随意性也较大’为改善这一点’可以考虑综合使用多组局内点点集进一步地拟合和筛选.本文根据以上思路对原算法进行改进.-,+*图像预处理为减少边缘提取中伪边缘带来的非圆边界点’本文在预处理环节中采用陷波滤波*++’针对性地滤去图像中金属本身的纹路.常用的边缘提取方法有($"使用;&L1’)O 922R 等算子直接提取.*"使用模糊分割等分割算法进行区域分割*D +’再用形态学算法提取边缘.综合考虑算法准确性和耗时长短’本文使用O 922R 检测法进行边缘提取.待处理的图像如图$所示.提取出的边缘如图*所示.从图中可以看出’凹痕圆的边界基本被提取’金属纹路伪边缘大大减少.接着’为进一步减少凹痕固有的小裂纹带来的非圆边界点’本文对提取出的边缘进行连通域检测’并对检测出的所有+邻接连通区域进行标记.+邻接的示意图如图,所示.然后’将这些连通区域存储到一个元胞数组中’每$个元胞代表$个连通区域!即一条连续边界".最后通过统计的方法将小边界去除’仅对较长的连续边界进行抽样.图+!待检测凹痕图像4563+!U 01J7<:5@1&Q >12:Q &@>1:1<:7&2图-!图$中提取的边缘4563-!U 011]:@9<:1>1>31&Q e 73.$图/!+邻接示意图4563/!U 01N M1:<0&Q +B 9>W 9<12<R J7]1’N-,-*三点估计圆参数通常’由三点确定圆参数的方法是将三点的坐标代入圆的方程’联立三元方程求解得到.本文则利用圆的圆心到弦的中点的连线垂直于弦这一特性’联立二元方程求出圆心坐标’然后求圆心到任意一点的距离即可得出半径.由于只需求解二元方程’比原算法更为简便.假设圆心坐标为a !2’;"’三点坐标分别为=!)$’*$"’P !)*’**"’H !),’*,"’可以得到二元方程(;7*$?***6)*7)$**7*$!)$?)**72"’;7*$?*,*6),7)$*,7*$!)$?),*72"8!$"+A!第$期邓仕超#等$改进的bF );F O 圆检测算法从而可以很容易地得到圆心坐标!2’;"’而半径即为*"+I6!27)$"*?!;7*$"槡*8-,/*寻找候选圆在判定某点是否属于局内点时’本文由原判定公式$\I "!’得出!I \!"*"$*"!I X !"*’若设某次估计出的圆的圆心为a !2’;"’某点坐标为Q !)"’*""’则该公式变成!I \!"*"!)"\2"*X !*"\;"*"!I X !"*’从而避免了原方法中计算边界点到圆心的距离$时的开方运算’加快了速度.若抽样所得圆的局内点个数大于阈值0I 72’则可判定该圆为候选圆.由于后期还有进一步的筛选’阈值可以根据多次试验的结果取一个相对较小的值以减少抽样时间.如果是第一次取到候选圆’我们可以综合原来判定候选圆局内点时的阈值!估计出一个阈值!*!!*‘!"’并认为满足$\I ‘!*的点不属于所求圆的边界并将其排除’仅对剩下的点抽样以进一步提高后续抽样取到候选圆的概率.实验证明’在第一次得到候选圆后’可以很容易地连续得到候选圆.如果在随机抽样中’已经有,fH 次能够得到候选圆’那么真实圆的边缘存在于这些候选圆局内点中的概率就已经很大了.再继续抽样的意义不大.为控制总的检测时间’本文以H 次为阈值’只要H 次取到候选圆’就可以结束抽样循环-,7*确定最终圆参数得到候选圆后’用最小二乘法对以上候选圆的局内点再进行圆拟合’可以得到更为精准的候选圆*$#+.然后’设定一个很小的距离阈值!,!!,_!"’把原局内点中到新圆的边缘的径向距离小于阈值!,的点作为新候选圆的局内点’比较各新候选圆局内点的个数T ’选择T 最大的新候选圆作为最终真实圆.相比原算法只选出一个候选圆进行最小二乘法拟合’本算法对多个候选圆进行拟合与精选’可以得到更准确更稳定的结果.-,8*本文算法的具体步骤$"对待检测的图像进行预处理及边缘提取’检测边缘点中所有的+邻接连通区域’排除长度较小的连通域’用剩余的较长的连续边界上的点构建边界点集.’初始化候选圆局内点单元集D C "I [)6P P ’候选圆参数单元集D [)6P P ’当前循环次数#[#’候选圆个数T K [#.然后’为最大抽样次数%I 9]设定一初始值.*"初始化局内点点集Q 3,K O [)6P P .从边界点点集.中随机抽取,个点’计算这,个点所确定的圆的参数*2’;’I +!圆心!2’;"’半径I "’若半径I 的范围在预设的圆的半径范围之内’则转,"#否则转C ".,"计算各边界点到*"中所得到的圆的圆心的距离$’若$\I "!!!为可接受的局内点偏离圆的边缘的裕度"’则认为该点为局内点’将其坐标存入局内点点集Q3,K O ’否则视为局外点.H "计算该圆上的局内点点数0’若0大于阈值0I 72’则认为该圆可以作为候选圆’将局内点点集Q 3,K O 作为一个单元,C "I ’存入候选圆局内点单元集D C "I ’转""#否则转C ".""T K [T K X $’若T K /H ’则结束循环’转+"#若T K [$’则计算边界点到该候选圆的圆心的距离$’从边界点点集.中排除满足$\I ‘!*的点’再转C "#若$_T K _H ’直接转C ".C "#[#X $’若#‘%I 9]’则结束循环’转A "#否则转*".A "若T K _*’则%I 9]自加$#’再转*"#否则转+".+"对各候选圆局内点单元,C "I "!"[$’*’/’T K "分别进行最小二乘法圆拟合’将得到的新的候选圆参数,"[*2"’;"’I "+作为一个单元存入候选圆参数单元集D 中’计算各候选圆的局内点到由该候选圆重新拟合出的圆心*2"’;"+的距离$"’从这些局内点中找出满足$"\I ""!,的局内点’并排除,C "I "中其他的点.初始化候选圆局内点数目集T D [)6P P ’将新的候选圆局内点的个数存入T D 中.比较各候选圆的局内点个数’找出局内点个数最大的候选圆’并将其参数*2"’;"’I "+作为最终得到的真实圆的圆参数./*实验结果为了检验本文算法的有效性’用该算法在%;*#$,平台下编写了实验程序’并将其用于布氏硬度压痕直径自动化测量仪器研制中.图$即为用cE B ,###E 硬度计’$#I I 直径淬硬钢球在用正火处理过的U $#钢板DA郑州大学学报!理学版"第"#卷上压出的凹痕图像’实验载荷为*D(H*M)’成像用的O O S像素数为$D*#^$"C#.本实验用该方法在同一块钢板上共得到了$#个凹痕!凹痕分布相对集中".实验要求测出凹痕直径并查表得出布氏硬度值*$$+.本文分别用上述,种算法对这$#个凹痕进行检测’其结果如表$所示.其中随机c&530变换!b c U"圆检测算法的具体步骤见文献*,+.表$中的参考直径是用读数显微镜对这$#个凹痕进行测量所得到的直径的平均值!括号内为测量所得直径的取值范围".从表中可以看出’本文算法所得直径相比其他两种算法更接近参考值’测量结果的方差也比其他两种方法更小.因此’本文算法提高了测量结果的准确性和稳定性.从检测时间上看’本文算法的耗时也明显比其他两种算法更短.表+!,种算法检测结果0123+!U01>1:1<:7&2@1N5’:N&Q:0@119’3&@7:0I N检测结果b c U传统b F);F O本文算法!!参考直径$$V I I H($#+!H(#A+f H($*C"平均直径点数$*C,C(,CH*(,C,D($平均直径$,V I I H(#+A H($*+H($#A直径方差!$V I I*C(+,^$#\C*(+$^$#\H,(+,^$#\C 圆心坐标!2’;"!,+#($’H+H($"!,AC(+’H+*(""!,A+(A’H+*(+"检测时间K V I N$HA$$*H+!!用以上,种算法检测得到的圆参数在图*所示的边缘图像上画圆’其对比效果如图H所示.从图中可以看出’,种算法检测出的圆对左上角的边缘的贴合程度有微小差异.为了更清楚地看出这些差异’图"为图H左上角的局部放大图.从图中可以看出’本文算法所得结果对图像边缘的贴合效果也优于其他两种算法.图7!,种算法拟合的圆的对比45637!U01>7Q Q1@12<1N9I&23:01Q7::723<7@<’1N72:0@119’3&@7:0IN图8!图H的局部放大图45638!U01J9@:79’12’9@31I12:&Q e73.H7*结论本文对传统的b F);F O圆检测算法从无效点的排除)候选圆的选取)真实圆的确定等方面进行了改进’实验结果表明’该算法结果在准确性)稳定性)运算时间,个方面均明显优于传统b F);F O圆检测算法’而且也优于目前常用的b c U圆检测算法’完全能够满足实时检测需求.#+$+!第$期邓仕超#等$改进的b F);F O圆检测算法参考文献!*$+!P a Zn’/c F)ZPh’i6/T’1:9’.b1N19@<0&Q1>31>1:1<:7&29’3&@7:0I L9N1>&2O922R9’3&@7:0I92>c&530:@92N Q&@I*-+.F>892<1>I9:1@79’N@1N19@<0’*#$H’$#,D(*C*\*C".**+!E g6G c F b g6E FF.F21d9’3&@7:0I Q&@N M1d<&@@1<:7&292>L9N1’721>1:1<:7&2L9N1>&2:01@92>&I741>c&530:@92N Q&@I*-+.-&5@29’&Q G723;95>52781@N7:R B<&I J5:1@92>72Q&@I9:7&2N<712<1N’*#$A’*D!$"(*D\,+.*,+!王新’张元东’王莉.一种随机c&530变换检测圆的优化方法*-+.测控技术’*#$C’,"!C"($$*\$$C.*H+!袁清珂’张振亚’毕庆.改进的b F);F O算法在直线拟合中的应用*-+.组合机床与自动化加工技术’*#$"’$!$"($*,\ $*".*"+!袁理’曹智睿.改进的随机c&530变换圆检测算法*-+.计算机应用’*#$#’,#!;$"($AH\$AC.*C+!陈小艳’王强’李柏林.改进的c&530变换检测圆方法*-+.计算机系统应用’*#$"’*H!+"($DA\*#$.*A+!霍建亮’曾翎’王德胜’等.基于最小二乘法改进的随机圆检测算法*-+.光电工程’*#$$’,+!""($H"\$"#.*++!阮秋琦.数字图像处理学*?+.北京(电子工业出版社’*#$,.*D+!刘洪普’杨乐’侯向丹’等.一种改进的模糊O均值图像分割算法*-+.郑州大学学报!理学版"’*#$A’HD!*"(CC\A$.*$#+牛方君’曹慧慧.利用最小二乘法测量半径样板半径*-+.电子产品可靠性与环境试验’*#$"’,,!C"("C\"+.*$$+文九巴.金属材料学*?+.北京(机械工业出版社’*#$$.(O P;D?:JM$B R$%$>6D;5=H O9D;%5;@>:":=:@=5D<S=)Z;07<09&’Z F gi923’c F)c97I17!Q3O K"K JK+G90+C F23"C2B23$(B+C K I"C2B(34"3++I"34’&J"B"3M3"N+I O"K*G9(B+C K I G3"C R+C F3G B G4*’&J"B"3"H$##H’H F"32"$2G=;1@=(U&N&’81:01J@&L’1I&Q’&23N9I J’723:7I1’J&&@9<<5@9<R92>N:9L7’7:R&Q:1N:@1N5’:N R71’>1> LR:@9>7:7&29’b F);F O!@92>&I N9I J’1<&2N12N5N"<7@<5’9@>1:1<:7&29’3&@7:0I’927I J@&81>b F);F O 9’3&@7:0Id9N J@&J&N1>:&>1:1<:<7@<’1.e7@N:’R’:017I931L&@>1@N d1@1Q7’:1@1>’&2’R’198723’&231@L&@B >1@N Q&@N9I J’723.U012’d012:01<92>7>9:1<7@<’1d9N Q7@N:’R J7<M1>’7289’7>J&72:N d1@1Q5@:01@1’7I7B 29:1>L9N1>&2:07N<92>7>9:1<7@<’1’d07<03@19:’R@1>5<1>:01@1j57@1>N9I J’723:7I1N.?&@1&81@’:01’19N:N j59@1N I1:0&>d1@15N1>:&&J:7I741J9@9I1:1@N92><0&&N1:01L1N:<7@<’19I&23:01<92>7>9:1N.U05N’:01N:9L7’7:R92>9<<5@9<R&Q:01Q729’@1N5’:N d1@17I J@&81>.F<<&@>723:&:011]J1@7I12:9’@1B N5’:N’7:d9NN0&d2:09::019’3&@7:0I<&5’>Q5’’RI11::01211>N729<:59’87N59’72N J1<:7&2d7:0Q9N: N J11>92>3&&>9<<5@9<R.K:A C D;J G(b F);F O9’3&@7:0I#<7@<’1>1:1<:7&2#:01<92>7>9:1<7@<’1N#:01’19N:N j59@1I1:0&>!责任编辑(方惠敏"。

三维点集拟合:平面拟合、RANSAC、ICP算法

三维点集拟合:平面拟合、RANSAC、ICP算法

三维点集拟合:平⾯拟合、RANSAC、ICP算法⼀: 拟合⼀个平⾯:使⽤SVD分解,代码⾥⾯去找吧空间平⾯⽅程的⼀般表达式为:Ax+By+Cz+D=0;则有:平⾯法向量为n=(A,B,C).第⼀种⽅法:对于空间中n个点(n3)空间中的离散点得到拟合平⾯,其实这就是⼀个最优化的过程。

即求这些点到某个平⾯距离最⼩和的问题。

由此,我们知道⼀个先验消息,那就是该平⾯⼀定会过众散点的平均值。

接着我们需要做的⼯作就是求这个平⾯的法向量。

根据协⽅差矩阵的SVD变换,最⼩奇异值对应的奇异向量就是平⾯的⽅向。

注意:这个⽅法是直接的计算⽅法,没办法解决数值计算遇到的病态矩阵问题.在公式转化代码之前必须对空间点坐标进⾏近似归⼀化!第⼆种⽅法:使⽤法线⽅法,对于空间中n个点(n3),若已获得点云法线使⽤合适的⽅法剔除离群点,计算点云的形⼼P;若在已经获得法线的点云中,可以对法线进⾏剔除离散点之后,求取最⼩⽅差的均值,直接求得法线⽅向N( alpha, beta, theta );使⽤点法式描述三维平⾯;或者根据形⼼P和法线⽅向,计算出平⾯⽅程的⼀般式。

使⽤法线多次聚类:完成场景平⾯提取使⽤法线两次聚类:第⼀次根据法线⽅向进⾏聚类,使⽤⼀个欧式距离约束,找出⽅向接近的簇S(1),这样得到的S(1)内的集合,每⼀类指向了⼤致相同的⽅向,但距离上并不⼀定接近;第⼆次,再次根据点云的空间位置进⾏聚类,对S(1)的每⼀簇内再次进⾏基于距离的聚类,找出每⼀簇内位置接近的类别,这样再次对集合进⾏划分,得到的每⼀类⽅向⼤致相同,⽽位置较近,可以假设为⼀个平⾯的点。

此外,若考虑到平⾯密度要求,还可以再根据密度进⾏⼀次聚类,把密度较低的平⾯从集合中踢出去。

(2):空间向量的旋转:2-D绕原点旋转变换矩阵是:[cosA sinA] [cosA -sinA][-sinA cosA] 或者 [sinA cosA]2-D绕任意⼀点旋转变换矩阵是:[x y 1] [1 0 0] [cosA sinA 0] [1 0 0] [x' y' -][0 1 0] x [0 1 0] x [-sinA cosA 0] x [0 1 0] = [- - -][0 0 1] [rtx rty 1] [0 0 1] [-rtx -rty 1] [- - -]⼆:利⽤Ransac算法进⾏拟合作者:王先荣原⽂链接:本⽂翻译⾃维基百科,英⽂原⽂地址是:/wiki/ransac,如果您英语不错,建议您直接查看原⽂。

ransaccirclefit拟合圆算法

ransaccirclefit拟合圆算法

ransaccirclefit拟合圆算法主题:ransaccirclefit拟合圆算法摘要:拟合圆是计算机视觉和图像处理中常用的基本任务之一。

在实际应用中,我们经常需要从图像数据中自动地提取出含有圆形目标的相关信息。

然而,由于图像中可能存在噪声、遮挡、几何失配等因素,导致传统的拟合圆算法效果不佳。

为了解决这个问题,ransaccirclefit算法应运而生。

本文将详细介绍ransaccirclefit 算法的原理、实现步骤和应用案例。

第一部分:引言1.1. 背景和意义1.2. 拟合圆问题概述第二部分:ransaccirclefit算法原理解析2.1. RANSAC算法概述2.2. 使用RANSAC算法拟合圆的思路2.3. RANSAC拟合圆的数学原理第三部分:ransaccirclefit算法实现步骤3.1. 数据预处理3.2. 随机采样生成候选圆3.3. 计算圆内点个数3.4. 判断最优拟合圆第四部分:ransaccirclefit算法的应用案例4.1. 图像中圆形目标检测4.2. 医学图像分析中的应用4.3. 工业视觉中的应用第五部分:实验结果与讨论5.1. 数据集介绍5.2. 拟合效果评估5.3. 参数敏感性分析第六部分:总结与展望6.1. 算法特点总结6.2. 算法的潜在改进空间通过以上对ransaccirclefit拟合圆算法的全面介绍,读者将对该算法的原理和实现步骤有深入的了解。

此外,通过实例的应用案例以及对算法的实验结果与讨论,读者可以评估该算法在不同应用场景下的适用性和优越性。

最后,总结和展望部分将回顾整个文章的内容,并提出对该算法的未来改进方向,为读者提供深入探索ransaccirclefit拟合圆算法的方向。

注:鉴于输入字数限制,本文仅为文章结构和内容提纲,总字数未达到3000-6000字要求。

实际撰写时,可以在每个部分进一步展开,详细描述算法原理、实现细节、实验结果等。

改进的RANSAC圆检测算法

改进的RANSAC圆检测算法

改进的RANSAC圆检测算法邓仕超;高阳;韩海媚【摘要】为解决传统随机抽样一致性(random sampling consistency,RANSAC)圆检测算法中无目的抽样耗时较长,检测结果准确性和稳定性较差等问题,提出一种改进的RANSAC算法.该算法先滤去较短的图形边缘,仅留下较长的边缘进行抽样.当第一次取到候选圆时,该算法还借助候选圆进一步排除无效点,大大减少了所需抽样次数.然后,用最小二乘法对这些候选圆参数进一步优化、筛选,提高了最终结果的稳定性和准确性.实验表明,该算法速度快、准确性好,完全能满足实际检测的需要.%To solve the problem of long sampling time,poor accuracy and stability of test results yielded by traditional RANSAC(random sample consensus)circular detection algorithm,an improved RANSAC algorithm was proposed to detect circle.Firstly,the image borders were filtered,only leaving longer bor-ders for sampling.Then,when the candidate circle was firstly picked,invalid points were further elimi-nated based on this candidate circle,which greatly reduced the required samplingtimes.Moreover, the least squares method were used to optimize parameters and choose the best circle among the candidates. Thus,the stability and accuracy of the final results were improved.According to the experimental re-sults,it was shown that the algorithm could fully meet the needs in actual visual inspection with fast speed and good accuracy.【期刊名称】《郑州大学学报(理学版)》【年(卷),期】2018(050)001【总页数】5页(P77-80,81)【关键词】RANSAC算法;圆检测;候选圆;最小二乘法【作者】邓仕超;高阳;韩海媚【作者单位】桂林电子科技大学机电工程学院广西桂林541004;桂林电子科技大学机电工程学院广西桂林541004;桂林电子科技大学机电工程学院广西桂林541004【正文语种】中文【中图分类】TP391.410 引言图像处理中常用的圆检测算法有:基于Hough变换的圆检测[1-2]算法;基于随机抽样一致性(random sampling consistency,RANSAC)算法的圆检测.Hough变换圆检测算法要遍历三维参数空间,对内存和时间的消耗特别大,且检测结果精度受参数离散化程度的影响也大.文献[3]提出了随机Hough变换(RHT)算法,该算法随机抽取图像空间中的3个点,对应到参数空间中的1个点,再从参数空间中选取候选圆并进一步挑出真实圆,从而大大减少了内存消耗.RANSAC算法[4]与RHT算法相似,但其抽样的目的在于估计出一个能包含尽可能多的边界点的圆模型,只用圆模型上的点来拟合真实圆.这两种算法的共同缺点在于大量圆外点会带来大量无效抽样和累积.文献[5]用梯度法预先判断3点是否在候选圆上,减少了无效采样,但计算梯度本身也要消耗不少时间.文献[6]则对每条连续边界3等分,再分别取点进行圆拟合,该方法仅对连续边界进行取样,大大减少了对无效点的抽样.但这两种改进算法都只用3个点得到圆参数,准确度有限.文献[7]用最小二乘法改进了RHT算法,先用4点确定初始圆参数,再对得到的圆上点迭代使用最小二乘法,直至没有新点加入,该方法准确性较好,但所需迭代次数受初始参数影响大.本文设计了一种改进的RANSAC圆检测算法,可以进一步减少检测圆所需时间并保证其准确度.1 RANSAC算法传统RANSAC圆检测算法的具体步骤如下:1) 对待检测的图像进行预处理及边缘提取,建立由所有边缘点坐标构成的点集D.令当前循环次数k=0.2) 初始化局内点点集Inpts=NULL.从边界点点集D中随机抽取3个点,计算这3个点所确定的圆的参数[a, b, r](圆心(a, b). 半径r),若圆的半径r的范围在预设的范围之内,则转3);否则转6).3) 计算各边界点到2)中所得到的圆的圆心的距离d,若|d-r|≤ε(ε为可接受的局内点偏离裕度),则认为该点为局内点,将其坐标存入局内点点集Inpts,否则视为局外点.4) 计算该圆上的局内点点数M,若M大于阈值Mmin,则认为此次估计出的圆模型足够合理,这些局内点也可视为有效点,转5);否则转6).5) 对点集Inpts中的所有点用最小二乘法重新计算圆的参数模型,得到最终结果.6) k=k+1,若k>Kmax,则结束;否则转2).2 改进的RANSAC算法传统RANSAC算法中抽样耗时占算法总耗时的比重较大,而非圆边界点(即局外点)的数量又是影响所需抽样次数的最主要的因素.所以,减少局外点数量对减少算法总耗时有较大作用.另外,传统算法通过三点预估圆方法选取的局内点点集的随意性较大,这使得最终得到的检测结果的随意性也较大,为改善这一点,可以考虑综合使用多组局内点点集进一步地拟合和筛选.本文根据以上思路对原算法进行改进.2.1 图像预处理为减少边缘提取中伪边缘带来的非圆边界点,本文在预处理环节中采用陷波滤波[8],针对性地滤去图像中金属本身的纹路.常用的边缘提取方法有:1) 使用Sobel、Canny等算子直接提取.2) 使用模糊分割等分割算法进行区域分割[9],再用形态学算法提取边缘.综合考虑算法准确性和耗时长短,本文使用Canny检测法进行边缘提取.待处理的图像如图1所示.提取出的边缘如图2所示.从图中可以看出,凹痕圆的边界基本被提取,金属纹路伪边缘大大减少.接着,为进一步减少凹痕固有的小裂纹带来的非圆边界点,本文对提取出的边缘进行连通域检测,并对检测出的所有8邻接连通区域进行标记.8邻接的示意图如图3所示.然后,将这些连通区域存储到一个元胞数组中,每1个元胞代表1个连通区域(即一条连续边界).最后通过统计的方法将小边界去除,仅对较长的连续边界进行抽样.图1 待检测凹痕图像Fig.1 The picture of dent for detection图2 图1中提取的边缘Fig.2 The extracted edge of Fig.1图3 8邻接示意图Fig.3 The sketch of 8-adjacency pixels2.2 三点估计圆参数通常,由三点确定圆参数的方法是将三点的坐标代入圆的方程,联立三元方程求解得到.本文则利用圆的圆心到弦的中点的连线垂直于弦这一特性,联立二元方程求出圆心坐标,然后求圆心到任意一点的距离即可得出半径.由于只需求解二元方程,比原算法更为简便.假设圆心坐标为Z(a, b),三点坐标分别为A(x1, y1),B(x2, y2),C (x3, y3),可以得到二元方程:(1)从而可以很容易地得到圆心坐标(a, b),而半径即为[5]2.3 寻找候选圆在判定某点是否属于局内点时,本文由原判定公式|d-r|≤ε,得出(r-ε)2≤d2≤(r+ε)2,若设某次估计出的圆的圆心为Z(a, b),某点坐标为I(xi, yi),则该公式变成(r-ε)2≤(xi-a)2+(yi-b)2≤(r+ε)2,从而避免了原方法中计算边界点到圆心的距离d时的开方运算,加快了速度.若抽样所得圆的局内点个数大于阈值Mmin,则可判定该圆为候选圆.由于后期还有进一步的筛选,阈值可以根据多次试验的结果取一个相对较小的值以减少抽样时间.如果是第一次取到候选圆,我们可以综合原来判定候选圆局内点时的阈值ε估计出一个阈值ε2(ε2>ε),并认为满足|d-r|>ε2的点不属于所求圆的边界并将其排除,仅对剩下的点抽样以进一步提高后续抽样取到候选圆的概率.实验证明,在第一次得到候选圆后,可以很容易地连续得到候选圆.如果在随机抽样中,已经有3~4次能够得到候选圆,那么真实圆的边缘存在于这些候选圆局内点中的概率就已经很大了.再继续抽样的意义不大.为控制总的检测时间,本文以4次为阈值,只要4次取到候选圆,就可以结束抽样循环2.4 确定最终圆参数得到候选圆后,用最小二乘法对以上候选圆的局内点再进行圆拟合,可以得到更为精准的候选圆[10].然后,设定一个很小的距离阈值ε3(ε3<ε),把原局内点中到新圆的边缘的径向距离小于阈值ε3的点作为新候选圆的局内点,比较各新候选圆局内点的个数N,选择N最大的新候选圆作为最终真实圆.相比原算法只选出一个候选圆进行最小二乘法拟合,本算法对多个候选圆进行拟合与精选,可以得到更准确更稳定的结果.2.5 本文算法的具体步骤1) 对待检测的图像进行预处理及边缘提取,检测边缘点中所有的8邻接连通区域,排除长度较小的连通域,用剩余的较长的连续边界上的点构建边界点集D,初始化候选圆局内点单元集Pcir=NULL,候选圆参数单元集P=NULL,当前循环次数k=0,候选圆个数Nt=0.然后,为最大抽样次数Kmax设定一初始值.2) 初始化局内点点集Inpts=NULL.从边界点点集D中随机抽取3个点,计算这3个点所确定的圆的参数[a, b, r](圆心(a, b),半径r),若半径r的范围在预设的圆的半径范围之内,则转3);否则转6).3) 计算各边界点到2)中所得到的圆的圆心的距离d,若|d-r|≤ε(ε为可接受的局内点偏离圆的边缘的裕度),则认为该点为局内点,将其坐标存入局内点点集Inpts,否则视为局外点.4) 计算该圆上的局内点点数M,若M大于阈值Mmin,则认为该圆可以作为候选圆,将局内点点集Inpts作为一个单元pcir,存入候选圆局内点单元集Pcir,转5);否则转6).5) Nt=Nt+1,若Nt≥4,则结束循环,转8);若Nt=1,则计算边界点到该候选圆的圆心的距离d,从边界点点集D中排除满足|d-r|>ε2的点,再转6);若1<Nt<4,直接转6).6) k=k+1,若k>Kmax,则结束循环,转7);否则转2).7) 若Nt<2,则Kmax自加10,再转2);否则转8).8) 对各候选圆局内点单元pciri(i=1, 2,…,Nt)分别进行最小二乘法圆拟合,将得到的新的候选圆参数pi=[ai, bi, ri]作为一个单元存入候选圆参数单元集P中,计算各候选圆的局内点到由该候选圆重新拟合出的圆心[ai, bi]的距离di,从这些局内点中找出满足|di-ri|≤ε3的局内点,并排除pciri中其他的点.初始化候选圆局内点数目集NP=NULL,将新的候选圆局内点的个数存入NP中.比较各候选圆的局内点个数,找出局内点个数最大的候选圆,并将其参数[ai, bi, ri]作为最终得到的真实圆的圆参数.3 实验结果为了检验本文算法的有效性,用该算法在VS2013平台下编写了实验程序,并将其用于布氏硬度压痕直径自动化测量仪器研制中.图1即为用HB-3000B硬度计,10 mm直径淬硬钢球在用正火处理过的T10钢板上压出的凹痕图像,实验载荷为29.42 kN,成像用的CCD像素数为1 920×1 560.本实验用该方法在同一块钢板上共得到了10个凹痕(凹痕分布相对集中).实验要求测出凹痕直径并查表得出布氏硬度值[11].本文分别用上述3种算法对这10个凹痕进行检测,其结果如表1所示.其中随机Hough变换(RHT)圆检测算法的具体步骤见文献[3].表1中的参考直径是用读数显微镜对这10个凹痕进行测量所得到的直径的平均值(括号内为测量所得直径的取值范围).从表中可以看出,本文算法所得直径相比其他两种算法更接近参考值,测量结果的方差也比其他两种方法更小.因此,本文算法提高了测量结果的准确性和稳定性.从检测时间上看,本文算法的耗时也明显比其他两种算法更短.表1 3种算法检测结果Tab.1 The detection results of three algorithms检测结果RHT传统RANSAC本文算法参考直径d1/mm4108(4078~4126)平均直径点数d2636364236391平均直径d3/mm408741284107直径方差Sd/mm2683×10-6281×10-4383×10-6圆心坐标(a,b)(3801,4841)(3768,4825)(3787,4828)检测时间t/ms14711248用以上3种算法检测得到的圆参数在图2所示的边缘图像上画圆,其对比效果如图4所示.从图中可以看出,3种算法检测出的圆对左上角的边缘的贴合程度有微小差异.为了更清楚地看出这些差异,图5为图4左上角的局部放大图.从图中可以看出,本文算法所得结果对图像边缘的贴合效果也优于其他两种算法.图4 3种算法拟合的圆的对比Fig.4 The differences among the fitting circles in three algorithms图5 图4的局部放大图Fig.5 The partial enlargement of Fig.44 结论本文对传统的RANSAC圆检测算法从无效点的排除、候选圆的选取、真实圆的确定等方面进行了改进,实验结果表明,该算法结果在准确性、稳定性、运算时间3个方面均明显优于传统RANSAC圆检测算法,而且也优于目前常用的RHT圆检测算法,完全能够满足实时检测需求.参考文献:[1] LI G Q,ZHANG L X,YU Z P,et al.Research of edge detection algorithm based on Canny algorithm and Hough transform[J].Advanced materials research,2014,1039:262-265.[2] BOUKHAROUBA A.A new algorithm for skew correction and baseline detection based on the randomized Hough transform[J].Journal of King Saud university-computer and information sciences,2017,29(1):29-38.[3] 王新,张元东,王莉.一种随机Hough变换检测圆的优化方法[J].测控技术,2016,35(6):112-116.[4] 袁清珂,张振亚,毕庆.改进的RANSAC算法在直线拟合中的应用[J].组合机床与自动化加工技术,2015,1(1):123-125.[5] 袁理,曹智睿.改进的随机Hough变换圆检测算法[J].计算机应用,2010,30(S1):174-176.[6] 陈小艳,王强,李柏林.改进的Hough变换检测圆方法[J].计算机系统应用,2015,24(8):197-201.[7] 霍建亮,曾翎,王德胜,等.基于最小二乘法改进的随机圆检测算法[J].光电工程,2011,38(5):145-150.[8] 阮秋琦.数字图像处理学[M].北京:电子工业出版社,2013.[9] 刘洪普,杨乐,侯向丹,等.一种改进的模糊C均值图像分割算法[J].郑州大学学报(理学版),2017,49(2):66-71.[10] 牛方君,曹慧慧.利用最小二乘法测量半径样板半径[J].电子产品可靠性与环境试验,2015,33(6):56-58.[11] 文九巴.金属材料学[M].北京:机械工业出版社,2011.。

拟合圆的几种方法02

拟合圆的几种方法02

拟合圆的几种方法02拟合圆的几种方法02拟合圆是一种常用的数据拟合方法,它可以通过给定的数据点来找到一个最佳拟合的圆。

拟合圆在许多领域都有广泛的应用,如计算机图形学、计算机视觉、图像处理等。

在拟合圆的方法中,需要考虑到拟合的精度和计算复杂度。

下面介绍几种常用的拟合圆的方法:1.最小二乘法拟合圆:最小二乘法是一种常见的数据拟合方法,可以用于拟合圆。

该方法通过最小化数据点到拟合圆的距离之和,找到最佳拟合的圆。

具体步骤如下:a.对给定的数据点,定义一个误差函数,该函数表示每个数据点到拟合圆的距离的平方和。

b.使用优化算法(如最小二乘法)来最小化误差函数,得到最佳拟合的圆。

2.RANSAC算法拟合圆:RANSAC(Random Sample Consensus)算法是一种基于统计原理的拟合算法,可以用于拟合圆。

该方法通过随机选择一小部分数据点来计算拟合的圆,然后通过衡量其他数据点到该圆的距离来评估拟合的好坏,不断迭代直到找到最佳的圆。

具体步骤如下:a.随机选择一小部分数据点作为圆心和半径的初始值。

b.计算其他数据点到该圆的距离,并根据一定的阈值判断是否为内点。

c.根据内点重新拟合圆。

d.重复步骤b和c,直到达到一定的迭代次数或者内点个数达到一定的阈值。

3.霍夫变换拟合圆:霍夫变换是一种常用的图像处理技术,可以用于拟合圆。

该方法通过将空间上的点映射到参数空间中,找到在参数空间中具有峰值的位置,从而得到拟合的圆。

具体步骤如下:a.对给定的数据点,定义霍夫空间,该空间包括圆心的坐标和半径的范围。

b.遍历所有数据点,对每个数据点,在霍夫空间中计算对应的参数,并对应的参数空间加1c.在参数空间中找到具有峰值的位置,该位置对应于拟合的圆。

需要注意的是,在拟合圆的过程中,可能会遇到一些问题,如数据点存在噪声、数据点不均匀分布等。

针对这些问题,可以采取一些预处理措施,如滤波去噪、数据归一化等,以提高拟合的准确性和稳定性。

球面拟合算法

球面拟合算法

球面拟合算法
球面拟合算法是一种用于找到最佳拟合球的算法。

该算法通常用于三维数据点的拟合,例如点云数据或3D模型。

球面拟合算法的目的是找到一个球面,使得所有数据点到该球面的距离的平方和最小。

常见的球面拟合算法包括最小二乘法、RANSAC算法、迭代最近点算法等。

其中,最小二乘法是一种常见的线性回归方法,可以通过求解一个线性方程组来得到最小二乘拟合球。

RANSAC算法则是一种基于随机采样的迭代方法,通过反复随机选择数据点来寻找最佳拟合球。

迭代最近点算法则是一种局部优化方法,通过不断寻找最近的数据点来逐步优化拟合球的位置和半径。

球面拟合算法在许多领域都有广泛的应用,例如计算机视觉、机器人学、地理信息系统等。

在计算机视觉中,球面拟合算法可以用于三维物体的重建和姿态估计等任务。

在机器人学中,球面拟合算法可以用于机器人的定位和导航。

在地理信息系统中,球面拟合算法可以用于地形建模和地球物理学等应用。

- 1 -。

基于RANSAC的圆拟合算法在螺纹孔检测中的应用

基于RANSAC的圆拟合算法在螺纹孔检测中的应用

基于RANSAC的圆拟合算法在螺纹孔检测中的应用
尚会超;韩鑫磊;嵇长委;彭向前
【期刊名称】《现代制造工程》
【年(卷),期】2024()2
【摘要】在视觉检测过程中,针对多残缺、多噪声圆周的拟合精度不佳的问题,提出了一种基于RANSAC的圆拟合算法。

首先对图像进行边缘检测,使用基于Scharr
算子的Canny算法可获得高质量的边缘分布图;使用霍夫梯度法在边缘分布图中对目标圆弧进行粗定位,并提取包含目标圆弧的点集;提取到的点集中含有大量无关边
缘像素点,使用RANSAC算法剔除点集中的异常数据,得到有效样本数据构成的待
拟合圆周点集;最后采用LIN算法对待拟合圆周点集进行拟合,得出最终的拟合结果。

算法在椒盐噪声和曲线噪声抗干扰实验中表现优异,有着较强的抗干扰能力。

已经
成功应用到了螺纹孔圆周的拟合,精度和实时性均可满足实际生产要求。

【总页数】8页(P112-119)
【作者】尚会超;韩鑫磊;嵇长委;彭向前
【作者单位】中原工学院机电学院;湖南科技大学机电工程学院
【正文语种】中文
【中图分类】TP391.4
【相关文献】
1.改进RANSAC算法在直线拟合中的应用∗
2.基于圆拟合的非完整圆激光光斑中心检测算法
3.基于RANSAC算法的2 D Metrology在BGA质量检测中的应用研究
4.MeanShift聚类圆拟合算法在焊点检测中的应用
5.基于圆拟合的孔系中心坐标高精度检测方法研究
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
nCurInlyerCount =nCurInlyerCount+CurMask; %计算符合圆模型的点的个数
if(CurMask==1)
xx =[xx,Data(:,k)];
end
end
%%选取最佳模型
if nCurInlyerCount > nMaxInlyerCount %符合模型的点数最多的模型即为最佳模型
P(:,1)=Data(:,ind(2)); %圆上一点
DIST= sqrt((P(1,1)-A(1,1)).^2+(P(2,1)-A(2,1)).^2);
%DIST = (((P(1,1) - A(1,1)).^2) + ((P(2,1)-A(2,1)).^2);
xx=[];
nCurInlyerCount=0; %初始化点数为0个
实验结果分析
1.图1结果分析
如图1所示,随机生成了300个蓝色的点,其中局内点21个,即黄色点,局外点190个,以抽样点为圆心,拟合了一个圆。
2. 图2结果分析
如图2所示,其中局内点11个,局外点200个,得到较好的拟合结果。
3.图3结果分析
如图3所示,其中局内点14个,局外点200个,得到较好的拟合结果。
最后,通过估计局内点与模型的错误率来评估模型。
上述过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。
实验步骤及方法
第一步:生成随机点,本实验随机点的数量设置为300;
第二步:参数的初始化,设置圆长短轴,生成圆模型;
第三步:由圆定义,查找符合圆模型的点;
Y = (a * cos(alpha) * sin(beta)+ b * sin(alpha) * cos(beta) )+wgn(1,length(alpha),g_NormDistrVar^2,'linear');
Data=[X;Y];
plot(Data(1, :), Data(2, :), '.', 'Tag', 'DATA');
4.图1、图2、图3横向对比分析
图一、图二、图三,都是经过多次拟合才拟合成功。可能的原因是样本点是随机产生的,不能确定每次产生的样本点都能成功的拟合。
5.RANSAC拟合原理和流程图
建立模型时利用圆的定义方程:dist(P,A)+dist(P,B)=DIST,其中P为圆上一点,A为圆心。随机选取三点A,P构建圆模型,计算每个点到此两焦点的距离和与DIST的差值,差值小于一定阈值时的点为符合模型的点,点数最多时的模型即为最佳圆模型,再根据符合条件的点,利用圆一般方程x^2+y^2+Dx+Ey+F=0和得到符合点进行系数拟合,根据函数式画出最终拟合圆。
%%是否符合模型?
for k=1:g_NumOfPoints
CurModel=[A(1,1) A(2,1) DIST ];
pdist=((Data(1,k)-A(1,1)).^2+(Data(2,k)-A(2,1)).^2);
CurMask =(abs(DIST-pdist)< dThreshold); %到直线距离小于阈值的点符合模型,标记为1
SampleMask = zeros([1 nDataLen]);
while sum( SampleMask ) ~= nSampLen% ~=不等于
ind = ceil(nDataLen .* rand(1, nSampLen - sum(SampleMask))); %抽样,选取nSampLen个不同的点
课程实验报告
2017 - 2018学年第一学期
课程名称:计算机视觉及应用
实验名称:
班 级:电通1班
学生姓名:学号:。
实验日期:2017.12.1地点:
指导教师:
成绩评定:批改日期:



的及要求
RANSAC即随机抽样一致。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果。借助MATLAB工具,通过RANSAC算法拟合圆,理解其原理,分析它的优点与确定。
nDataLen = size(Data, 2); %数据长度
nIter = 50; %最大循环次数
dThreshold = 2; %残差阈值
nMaxInlyerCount=-1; %点数下限
A=zeros([2 1]);
%B=zeros([2 1]);
P=zeros([2 1]);
%%主循环
for i = 1:nIter
on;
%% RANSAC圆拟合
%圆一般方程:Ax2+Bxy+Cy2+Dx+Ey+F=0
%F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)
%%参数初始化
nSampLen = 2; %设定模型所依据的点数
SampleMask(ind) = 1;
end
Sample = find( SampleMask ); %找出非零元素的索引值,即建立模型的点
%%建立模型,存储建模需要的坐标点,焦点和过圆的一个点
%圆定义方程:到两定点之间距离和为常数
A(:,1)=Data(:,ind(1)); %圆点
% B(:,1)=Data(:,ind(2)); %焦点
第四步:画出拟合结果;
实验数据
matlab程序代码:
clc;
clear;
%%生成带噪声的圆
%参数初始化
g_NumOfPoints = 500; %点数
g_ErrPointPart = 0.5; %噪声
g_NormDistrVar = 3; %标准偏差
a=20;b=20; %长轴短轴
angle=60; %倾斜角
%圆一般方程:Ax2+Bxy+Cy2+Dx+Ey+F=0
%F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);
p(1)=1;
p(2)=0;
p(3)=1;
F=@(p,x)p(1)*x(:,1).^2+p(3)*x(:,2).^2 +p(2)*x(:,1).*x(:,2)+p(4)*x(:,1)+p(5)*x(:,2)+p(6);
实验仪器设备
实验设备为一台装有win10系统的PC,matlab2015b软件。
实验原理
利用圆的定义,圆是平面内到定点F1、F2的距离之和等于常数(大于|F1F2|)的动点P的轨迹,F1、F2称为圆的两个焦点。其数学表达式为:|PF1|+|PF2|=2a(2a>|F1F2|)。选取3个点,2个焦点,1个过圆的点,就能确定圆。
实验总结
RANSAC本身就是一个不确定的算法,它通过不断地迭代估计出模型的参数,带有一定的随机性,不能确定地拟合圆,因而RANSAC算法稳定性较差。另外,它计算参数的迭代次数没有上限,如果设置上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。但RANSAC也有明显的优点,它能从包含大量局外点的数据集中估计出高精度的参数。
批改意见
签名: 年 月 日
实验内容
有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
然后,用所有假设的局内点去重新估计模型(譬如使用最小二乘法),因为它仅仅被初始的假设局内点估计过。
%%圆生成
beta = angle * (pi / 180);
alpha = linspace(0, 360, g_NumOfPoints) .* (pi / 180);
X = (a * cos(alpha) * cos(beta)- b * sin(alpha) * sin(beta) )+wgn(1,length(alpha),g_NormDistrVar^2,'linear');
plot(Ellipse_points(1,:),Ellipse_points(2,:),'r*');
hold on;
plot(Ellipse_x(1,:),Ellipse_x(2,:),'yo');
hold on;
ezplot(@(x,y)F(pr,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
p0=[1 1 1 1 1 1];
x=Ellipse_x';
pr=nlinfit(x,zeros(size(x,1),1),F,p0); %拟合系数,最小二乘方法
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
%%画点作图
title('RANSAC圆拟合');
legend('样本点','抽取点','符合点','拟合曲线')
实验数据分析及处理
示例图片RANSAC拟合情况:
通过在MATLAB上仿真,得到RANSAC圆拟合图,如下所示:
相关文档
最新文档