reduce

Уменьшите плотность точек в информация только для чтения

Описание

пример

reduce(ROI) уменьшает число точек, которые определяют необходимую область ROI. Объект информация только для чтения хранит массив точек в Position свойство. reduce заменяет исходное значение Position свойство с уменьшенным значением.

The reduce метод вызывает reducepoly функция, которая использует алгоритм упрощения линии Рамера-Дугласа-Пеукера. Этот алгоритм удаляет точки вдоль прямой линии и оставляет только контрольные точки (точки, где кривая линии).

пример

reduce(ROI,tolerance) уменьшает число точек, которые определяют ROI, где tolerance задает чувствительность сокращения. Задайте tolerance значение в области значений [0,1].

Примеры

свернуть все

Чтение изображения в рабочую область.

I = imread('cameraman.tif');

Отобразите изображение.

imshow(I);

Нарисуйте Freehand Информация только для чтения на изображении.

roi = drawfreehand;

Просмотрите число точек в Position свойство после заполнения формы.

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [272 2]

Используйте reduce функция объекта для уменьшения числа точек, необходимой для определения формы.

reduce(roi)

Просмотрите сокращенные числа точек в Position свойство.

disp(['Reduced Size of Position property: ' mat2str(size(roi.Position))]);
Reduced Size of Position property: [100 2]

Чтение изображения в рабочую область.

I = imread('cameraman.tif');

Отобразите изображение.

imshow(I);

Нарисуйте Polyline Информация только для чтения на изображении.

roi = drawpolyline;

Просмотрите число точек в Position свойство после заполнения формы.

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [12 2]

Используйте reduce функция объекта для уменьшения числа точек, необходимой для определения формы.

reduce(roi)

Просмотрите сокращенные числа точек в Position свойство.

disp(['First try at reducing the number of points: ' mat2str(size(roi.Position))]);
First try at reducing the number of points: [12 2]

Nот того, что число точек не изменяется. Чтобы улучшить результат, измените параметр Tolerance. По умолчанию для допуска задано значение .01. Увеличьте значение и повторите попытку.

reduce(roi,0.3)

Просмотрите размер Position снова свойство. Изменение допуска привело к сокращению.

disp(['Reduction after resetting tolerance parameter: ' mat2str(size(roi.Position))]);
Reduction after resetting tolerance parameter: [4 2]

Входные параметры

свернуть все

Информация только для чтения, заданный как один из следующих объектов информация только для чтения: AssistedFreehand, Freehand, Polygon, и Polyline.

Чувствительность сокращения, заданная как число в области значений [0, 1]. Увеличение допуска увеличивает число точек, удаляемое. Значение допуска 0 уменьшает минимальное число точек. Значение допуска 1 приводит к максимальному сокращению точек, оставляя только конечные точки линии.

Алгоритмы

Алгоритм упрощения линии Рамера-Дугласа-Пеукера рекурсивно разделяет форму, ищущую замену запуска точек на прямую линию. Алгоритм проверяет, чтобы никакая точка в запуск не отклонялась от прямой линии больше, чем значение, заданное tolerance.

Введенный в R2019b