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), задайте область значений для шкалы и соотношения сторон информации только для чтения. Значение шкалы для информация только для чтения установлено в области значений 0,2 и 0,3. Точно так же минимальное значение для соотношения сторон установлено в области значений 1:10, а максимальное значение для соотношения сторон установлено в области значений 30:100.

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

Выберите информация только для чтения при помощи 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. The 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 - количество ограничивающих рамок. Каждая строка в матрице формы [<reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> <reservedrangesplaceholder4> ]. [xmin ymin] - верхние левые координаты ограничивающего прямоугольника. width и height являются шириной и высотой ограничивающего прямоугольника, соответственно.

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

Необходимая область, заданное как одно из следующих значений:

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

  • Rectangle объект.

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

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

Overlap between bounding box and ROI

threshold=NumberofoverlappingpixelsTotalnumberofpixelsinboundingbox

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

Типы данных: 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