Как найти RANSAC из X, Y и Z в Matlab - PullRequest
0 голосов
/ 12 июня 2019

У меня есть CSV со столбцами X, Y и Z, чтобы дать 3D точку. В файле около 4000 точек данных. В Интернете я нашел материал о том, как выполнить согласование по случайной выборке (RANSAC) с 2D, но не 3D, и я совершенно потерян, чтобы найти «наилучшую линию соответствия» для всех точек графических данных

1 Ответ

0 голосов
/ 13 июня 2019

в Matlab, ransac является частью набора инструментов Computer Vision. Страница справки по функции предоставляет следующее описание входных данных:

"Данные для моделирования, указанные как матрица m-на-n. Каждая строка соответствует точке данных в наборе для моделирования. Например, для моделирования набора двумерных точек укажите данные точек как матрица м-2 "

это указывает на то, что вы просто предоставили бы свои 3D-данные в виде массива размером 3 на 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, с примером для набора 2d данных, сравнивающего подгонку наименьших квадратов и RANSAC с использованием модели "M-оценка SAmple and Consensus" (MSAC). Их следует расширить с 2D на 3D, если формула расстояния является первичной оценкой для ошибки и включения.

Я заметил, что вы также пометили этот вопрос для Octave. В настоящее время в Octave не реализована функция, совместимая с ransac. Если вы хотите запустить код в Octave, быстрый поиск покажет несколько реализаций, которые указывают на совместимость Octave, а именно:

Обратите внимание, что эти реализации могут отличаться, в том числе метод или способность обрабатывать трехмерные данные.

...