exponenta event banner

уменьшить

Снижение плотности точек в окупаемости инвестиций

Описание

пример

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

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]

Входные аргументы

свернуть все

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

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

Алгоритмы

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

Представлен в R2019b