bboxerase

Удалите ограничительные рамки

Описание

пример

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

Примечание

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

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

пример

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

Примеры

свернуть все

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

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);

Удалите пиксели и ограничительные рамки, которые лежат в, случайным образом выбрал ROI.

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] является левыми верхними координатами ограничительной рамки. width и height являются шириной и высотой ограничительной рамки соответственно.

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

Необходимая область в виде одного из этих значений:

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

  • Rectangle объект.

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

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

Overlap between bounding box and ROI

threshold=NumberofoverlappingpixelsTotalnumberofpixelsinboundingbox

Значение по умолчанию 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