如何在Matlab中找到X,Y和Z的RANSAC

时间:2019-06-12 18:47:46

标签: matlab octave

我有一个带有X,Y和Z列的CSV文件来提供3D点。在该文件中,大约有4000个数据点。我在网上找到了有关如何对2D进行随机样本一致性(RANSAC)拟合但对3D却无任何拟合的东西,而我对找到所有图形数据点的“最佳拟合线”完全迷失了

1 个答案:

答案 0 :(得分:0)

在Matlab中,ransac似乎是计算机视觉工具箱的一部分。 function help page提供了对输入数据的以下描述:

“要建模的数据,指定为m×n矩阵。每一行对应于要建模的集合中的数据点。例如,要对一组二维点建模,请指定点数据作为m×2矩阵”

这似乎表明您只是将3D数据作为m×3阵列提供。例如:

DATA = [ 0 0 0; 0 0 1; 1 2 3];

如果CSV数据仅是3列乘以〜4000行的数组,而没有其他文本或数据,则您应该能够简单地以以下方式读取数据:

>> DATA = dlmread('data.txt')
DATA =
     0     0     0
     0     0     1
     1     2     3

后跟类似的内容:

[model, inpoints] = ransac (DATA, ...model options...)

Matlab帮助页面中描述了各种模型参数,并提供了一个二维数据集示例,该数据集使用“ M估计器SAmple and Consensus”(MSAC)模型比较了最小二乘拟合和RANSAC。如果距离公式是错误和包含的主要评估方法,则应该能够将其从2D扩展到3D。

我注意到您也将此问题标记为Octave。目前,八度似乎没有实现与ransac兼容的功能。如果您确实希望在Octave中运行代码,快速搜索就会发现一些表明Octave兼容性的实现,具体是:

请注意,这些实现可能会有所不同,包括处理3D数据的方法或能力。