Подходящая модель к шумным данным
[model,inlierIdx]
= ransac(data,fitFcn,distFcn,sampleSize,maxDistance)
[
подбирает модель к шумным данным с помощью демонстрационного согласия M-средства-оценки (MSAC) алгоритм, версия согласия случайной выборки (RANSAC) алгоритм.model
,inlierIdx
]
= ransac(data
,fitFcn
,distFcn
,sampleSize
,maxDistance
)
Задайте свою функцию для того, чтобы подобрать модель, fitFcn
и вашу функцию для вычисления расстояний от модели до ваших данных, distFcn
. Функция ransac
берет случайные выборки из вашего data
с помощью sampleSize
и использует подходящую функцию, чтобы максимизировать количество inliers в maxDistance
.
Загрузите и постройте набор шумных 2D точек.
load pointsForLineFitting.mat plot(points(:,1),points(:,2),'o'); hold on
Соответствуйте строке с помощью линейного метода наименьших квадратов. Из-за выбросов, строка не является подходящим вариантом.
modelLeastSquares = polyfit(points(:,1),points(:,2),1);
x = [min(points(:,1)) max(points(:,1))];
y = modelLeastSquares(1)*x + modelLeastSquares(2);
plot(x,y,'r-')
Соответствуйте строке к точкам с помощью алгоритма MSAC. Задайте объем выборки, максимальное расстояние для inliers, подходящей функции и функции оценки расстояния. Вызовите ransac
, чтобы запустить алгоритм MSAC.
sampleSize = 2; % number of points to sample per trial maxDistance = 2; % max allowable distance for inliers fitLineFcn = @(points) polyfit(points(:,1),points(:,2),1); % fit function using polyfit evalLineFcn = ... % distance evaluation function @(model, points) sum((points(:, 2) - polyval(model, points(:,1))).^2,2); [modelRANSAC, inlierIdx] = ransac(points,fitLineFcn,evalLineFcn, ... sampleSize,maxDistance);
Переоборудуйте строку к inliers использование polyfit
.
modelInliers = polyfit(points(inlierIdx,1),points(inlierIdx,2),1);
Отобразите итоговую подходящую строку. Эта строка устойчива к выбросам, которые ransac
идентифицировал и проигнорированный.
inlierPts = points(inlierIdx,:); x = [min(inlierPts(:,1)) max(inlierPts(:,1))]; y = modelInliers(1)*x + modelInliers(2); plot(x, y, 'g-') legend('Noisy points','Least squares fit','Robust fit'); hold off
данные
Данные, которые будут смоделированыДанные, которые будут смоделированы, заданные как m-by-n матрица. Каждая строка соответствует точке данных в наборе, который будет смоделирован. Например, чтобы смоделировать набор 2D точек, задайте данные о точке как m-by-2 матрица.
Типы данных: single | double
fitFcn
— Функционируйте, чтобы соответствовать подмножеству data
Функция, чтобы соответствовать подмножеству data
, заданного как указатель на функцию. Функция должна иметь форму:
model = fitFcn(data)
Если возможно соответствовать многоуровневым моделям к данным, то fitFcn
возвращает параметры модели как массив ячеек.
distFcn
— Функция, чтобы вычислить расстояния от моделиФункция, чтобы вычислить расстояния от модели до данных, заданных как указатель на функцию. Функция должна иметь форму:
distances = distFcn(model,data)
Если model
является n - массив элемента, то расстояниями должен быть m-by-n матрица. В противном случае distances
должен быть m-by-1 вектор.
maxDistance
— Максимальное расстояние для точек inlierМаксимальное расстояние от аппроксимации полиномом изгибается к точке inlier, заданной как положительная скалярная величина. Любые вопросы еще дальше, чем это расстояние рассматриваются выбросы. Алгоритм RANSAC создает подгонку из небольшой выборки точек, но пытается максимизировать количество точек inlier. Понижение максимального расстояния улучшает аппроксимацию полиномом путем помещения более трудного допуска на точки inlier.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'MaxNumTrials',2000
'ValidateModelFcn'
— Функция, чтобы подтвердить модельФункция, чтобы подтвердить модель, заданную как пара, разделенная запятой, состоящая из 'ValidateModelFcn
' и указателя на функцию. Функция возвращает true
, если модель принята на основе критериев, заданных в функции. Используйте эту функцию, чтобы отклонить определенные подгонки. Функция должна иметь форму:
isValid = validateModelFcn(model,varargin)
Если никакая функция не задана, все полиномы приняты, чтобы быть допустимыми.
'MaxSamplingAttempts'
— Максимальное количество выборки попытокМаксимальное количество попыток найти выборку, которая приводит к допустимому полиному, заданному как пара, разделенная запятой, состоящая из 'MaxSamplingAttempts
' и целого числа.
'MaxNumTrials'
— Максимальное количество случайных испытаний1000
(значение по умолчанию) | целое числоМаксимальное количество случайных испытаний, заданных как пара, разделенная запятой, состоящая из 'MaxNumTrials
' и целого числа. Одно испытание использует минимальное количество случайных точек от data
, чтобы соответствовать параболической модели. Затем испытание проверяет количество inliers в maxDistance
из модели. После всех испытаний выбрана модель с самым большим количеством inliers. Увеличение числа испытаний улучшает робастность вывода за счет дополнительного вычисления.
'Confidence'
— Уверенность конечного решения99
(значение по умолчанию) | скаляр от 0 до 100Уверенность, что конечное решение находит максимальное количество inliers для аппроксимации полиномом, заданной как пара, разделенная запятой, состоящая из 'Confidence
' и скаляра от 0 до 100. Увеличение этого значения улучшает робастность вывода за счет дополнительного вычисления.
model
— Лучшая подходящая модельfitFcn
Лучше всего соответствуйте модели, возвращенной как параметры, заданные во входе fitFcn
. Эта модель максимизирует количество inliers от всех демонстрационных попыток.
inlierIdx
— Точки InlierТочки Inlier, возвращенные как логический вектор. Вектор является той же длиной как data
, и каждый элемент указывает, является ли та точка inlier для образцовой подгонки на основе maxDistance
.
[1] Торр, P. H. S. и А. Зиссермен. "MLESAC: Новое Устойчивое Средство оценки с Приложением к Оценке Геометрии Изображений". Компьютерное зрение и Распознавание изображений. Издание 18, Выпуск 1, апрель 2000, стр 138–156.
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.