reduce

Уменьшайте плотность точек в ROI

Описание

пример

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

reduce вызовы метода reducepoly функция, которая использует Ramer–Douglas–Peucker алгоритм упрощения линии. Этот алгоритм удаляет точки вдоль прямой линии и уезжает только knickpoints (точки, где линия изгибается).

пример

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

Примеры

свернуть все

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

I = imread('cameraman.tif');

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

imshow(I);

Чертите Freehand ROI на изображении.

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 на изображении.

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]

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

reduce(roi,0.3)

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

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

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

свернуть все

Объект ROI в виде одного из следующих объектов ROI: AssistedFreehand, Freehand, Polygon, и Polyline.

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

Алгоритмы

Ramer–Douglas–Peucker алгоритм упрощения линии рекурсивно подразделяет форму, смотрящую на замену запуск точек с прямой линией. Алгоритм проверяет, что никакой смысл в запуске не отклоняется от прямой линии больше, чем значение, заданное tolerance.

Введенный в R2019b