bboxwarp

Примените геометрическое преобразование к ограничительным рамкам

Описание

пример

bboxB = bboxwarp(bboxA,tform,ref) преобразовывает ограничительные рамки в bboxA согласно геометрическому преобразованию, заданному tform. Пространственный ссылочный объект, ref, задает выходное представление, в которое преобразовываются поля.

[bboxB,indices] = bboxwarp(bboxA,tform,ref) дополнительно возвращает вектор индексов, которые указывают который ограничительные рамки в bboxA соответствуйте деформированным версиям в выходе, bboxB.

[___] = bboxwarp(___,'OverlapThreshold',threshold) дополнительно устанавливает порог перекрытия.

Примеры

свернуть все

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

I = imread('peppers.png');

Задайте ограничительные рамки и метки.

bboxA = [
    410 230 100 90
    186 78  80  60
    ]
bboxA = 2×4

   410   230   100    90
   186    78    80    60

labelsA = [
    "garlic"
    "onion"
    ];

Задайте преобразование, чтобы горизонтально инвертировать и перевести изображение.

tform = affine2d([-1 0 0; 0 1 0; 50 50 1]);

Создайте выходное представление для imwarp.

rout = affineOutputView(size(I),tform);

Деформируйте изображение.

J = imwarp(I,tform,'OutputView',rout);

Деформируйте поля.

[bboxB,indices] = bboxwarp(bboxA,tform,rout);
labelsB = labelsA(indices);

Отобразите результаты.

annotatedI = insertObjectAnnotation(I,'Rectangle',bboxA,labelsA);
annotatedJ = insertObjectAnnotation(J,'Rectangle',bboxB,labelsB);
figure
montage({annotatedI, annotatedJ})

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

свернуть все

Ограничительные рамки, заданные как M-by-4 матрица ограничительных рамок M. Каждая строка, M, матрицы задают ограничительную рамку как четырехэлементный вектор [x, y, width, height] в пиксельных координатах.

Геометрическое преобразование, заданное в affine2d объект.

Пространственная ссылка, заданная как imref2d объект возвращен imwarp или affineOutputView функция. Объект задает выходное представление, чтобы преобразовать поля. Поля, которые преобразовываются полностью за пределами выходного представления, заданного ref отбрасываются.

[J,rout] = imwarp(I,tform);
[bboxB,indices] = bboxwarp(bboxA,tform,rout);
rout = affineOutputView(size(I),tform)
J = imwarp(I,tform,'OutputView',rout);
[bboxB,indices] = bboxwarp(bboxA,tform,rout);

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

область (bbox пересекают bounding rectangle) / область (bbox)

  • bounding rectangle — Заданный входом пространственный ссылочный объект, ref.

  • bbox — Результат преобразования окружает bboxA.

Если вычисленное значение перекрытия больше значения threshold свойство, затем преобразованные поля отсекаются к границе ограничительного прямоугольника. В противном случае поля отбрасываются. Понижение порога может привести к частям отбрасываемого объекта.

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

свернуть все

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

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

Смотрите также

| | |

Введенный в R2019b