exponenta event banner

bboxerase

Удалить ограничивающие рамки

Описание

пример

bboxB = bboxerase(bboxA,window) удаляет ограничивающие рамки на входе bboxA которые находятся в пределах представляющей интерес области (ROI), указанной window. Выходные данные представляют собой набор ограничивающих рамок, сохраненных на входе bboxA.

Примечание

Чтобы выполнить случайное стирание или увеличение данных, используйте bboxerase вместе с imerase функция.

[bboxB,indices] = bboxerase(bboxA,window) также возвращает индексы ограничивающих рамок, сохраненные из входного набора ограничивающих рамок bboxIn.

пример

___ = bboxerase(___,'EraseThreshold',threshold) дополнительно задает порог для величины перекрытия между областью ограничивающего параллелепипеда и указанной окупаемостью инвестиций. Ограничительная рамка удаляется, если перекрытие между областью ограничительной рамки и окупаемостью инвестиций равно или больше указанного порога.

Примеры

свернуть все

Прочтите изображение.

I = imread('peppers.png');

Определите ограничивающие рамки и метки.

bboxA = [410 230 100 90;
        186 78 80 60];
labelsA = ["garlic";"onion"];

Найти размер входного изображения

inputSize = size(I);

Чтобы случайным образом выбрать интересующую область (ROI), укажите диапазон для масштаба и пропорции ROI. Значение шкалы для ROI устанавливается в диапазоне от 0,2 до 0,3. Аналогично, минимальное значение для отношения сторон устанавливается в диапазоне 1:10, а максимальное значение для отношения сторон устанавливается в диапазоне 30:100.

scale = [0.2,0.3];
dimensionRatio = [1,10;30,100];

Выберите ROI с помощью randomWindow2d функция.

window = randomWindow2d(inputSize,'Scale',scale,'DimensionRatio',dimensionRatio);

Удалите пикселы и ограничивающие рамки, лежащие в пределах случайно выбранной окупаемости инвестиций.

J = imerase(I,window);
[bboxB,indices] = bboxerase(bboxA,window);
labelsB = labelsA(indices);

Отображение исходного и дополненного изображения.

annotatedI = insertObjectAnnotation(I,'Rectangle',bboxA,labelsA);
annotatedJ = insertObjectAnnotation(J,'Rectangle',bboxB,labelsB);
figure
montage({annotatedI,annotatedJ})
title(['Input | Random Erase Output'])

Figure contains an axes. The axes with title Input | Random Erase Output contains an object of type image.

Прочтите изображение.

I = imread('visionteam1.jpg');

Определите ограничивающие рамки и метки.

bboxA = [64 101 117 440;
193 101 67 309;
282 86 114 375;
618 118 79 345;
486 55 131 528;
475 109 66 361];

labelsA = ["Person 1";"Person 2";"Person 3";"Person 4";"Person 5";"Person 6"];

Укажите прямоугольную область, представляющую интерес.

window = [470 100 90 360];

Удаление пикселов, лежащих в прямоугольной области, с помощью imerase функция.

J = imerase(I,window);

Удалите ограничивающие рамки, лежащие в прямоугольной области. Установите пороговое значение стирания 0,7. bboxerase функция возвращает сохраненные ограничивающие рамки и соответствующие индексы.

[bboxB,indices] = bboxerase(bboxA,window,'EraseThreshold',0.7);

Прочтите метки класса, соответствующие сохраненным ограничительным рамкам.

labelsB = labelsA(indices);

Просмотрите результаты.

figure
I = insertObjectAnnotation(I,'Rectangle',bboxA,labelsA);
J = insertObjectAnnotation(J,'Rectangle',bboxB,labelsB);
imshowpair(I,J,'montage')
title(['Number of input bounding boxes: ', num2str(length(labelsA)), ' | ', 'Number of output bounding boxes: ', num2str(length(labelsB))])

Figure contains an axes. The axes with title Number of input bounding boxes: 6 | Number of output bounding boxes: 5 contains an object of type image.

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

свернуть все

Входной набор ограничивающих рамок, заданный как матрица M-by-4. M - количество ограничивающих прямоугольников. Каждая строка в матрице формы [xmin ymin width height ]. [xmin ymin] - верхние левые координаты ограничивающей рамки. ширина и высота - это ширина и высота ограничивающей рамки соответственно.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Регион интересов, указанный как одно из следующих значений:

  • 4 - вектор элемента формы [x y width height]. [x y] - верхние левые координаты ROI. ширина и высота - это ширина и высота ROI соответственно.

  • Rectangle объект.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Стереть порог, заданный как положительный скаляр, меньший или равный 1. Порог стирания задает критерии удаления ограничивающей рамки из набора ввода bboxA. Значение представляет собой отношение количества пикселей в ограничивающей рамке, которые находятся внутри ROI (перекрывающихся пикселей), к общему количеству пикселей в ограничивающей рамке.

Overlap between bounding box and ROI

порог = Количество перекрывания pixelsTotal число пикселей в ограничивающем прямоугольнике

Значение по умолчанию - 0,8. Это означает, что ограничивающая рамка удаляется, если 80% пикселей в ограничивающей рамке находятся в пределах указанного ROI.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Выходные ограничивающие рамки, сохраненные на входе, возвращаются в виде матрицы N-by-4. N - количество ограничивающих прямоугольников, сохраненных на входе. Каждая строка матрицы определяет одну ограничительную рамку того же типа, что и входные данные. bboxA. Значение N всегда меньше или равно M, числу входных ограничивающих прямоугольников.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Индексы сохраненных ограничивающих рамок, возвращаемые как вектор целых чисел. Индексы указывают, какие ограничивающие рамки находятся на входе, bboxA, сохраняются и возвращаются на выходе.

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