bboxcrop

Обрезка ограничивающих рамок

Описание

пример

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

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

[___] = bboxcrop(___,'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"
    ];

Создайте окно обрезки по центру.

targetSize = [256 256];
win = centerCropWindow2d(size(I),targetSize);

Центрируйте обрезку изображения.

[r,c] = deal(win.YLimits(1):win.YLimits(2),win.XLimits(1):win.XLimits(2));
J = I(r,c,:);

Центрируйте поля подрезки и метки. Коробки, расположенные вне окна обрезки, удаляются.

[bboxB,indices] = bboxcrop(bboxA,win);
labelsB = labelsA(indices);

Отображение результатов.

figure
I = insertObjectAnnotation(I,'Rectangle',bboxA,labelsA);
J = insertObjectAnnotation(J,'Rectangle',bboxB,labelsB);
imshowpair(I,J,'montage')

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Ограничительные прямоугольники, заданные как M -by-4, M -by-5 или M -by-9, нерассчитывают числовую матрицу. M - количество ограничивающих рамок. Каждая строка матрицы определяет ограничивающий прямоугольник как выровненный по оси прямоугольник, поворотный прямоугольник или кубоид. В этой таблице описывается формат для каждого ограничивающего прямоугольника.

Ограничительный прямоугольникОписание
Выровненный по оси прямоугольник

Определенный в пикселе координирует как <reservedrangesplaceholder4>-by-4 числовая матрица со строками формы [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>], где:

  • M - количество выровненных по оси прямоугольников.

  • x и y задайте верхний левый угол прямоугольника.

  • w задает ширину прямоугольника, которая является его длиной вдоль оси x.

  • h задает высоту прямоугольника, которая является его длиной вдоль оси y.

Повернутый прямоугольник

Определенный в пространственных координатах как <reservedrangesplaceholder5>-by-5 числовая матрица со строками формы [<<reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reserved angesplaceholder0>] , где:

  • M - количество повернутых прямоугольников.

  • xctr и yctr определяют центр прямоугольника.

  • xlen задает ширину прямоугольника, которая является его длиной вдоль оси x перед поворотом.

  • ylen задает высоту прямоугольника, которая является его длиной вдоль оси y перед поворотом.

  • yaw задает угол поворота в степенях. Вращение по часовой стрелке-положительно вокруг центра ограничивающего прямоугольника.

Square rectangle rotated by -30 degrees.

Cuboid

Определенный в пространственных координатах как <reservedrangesplaceholder9>-by-9 числовая матрица со строками формы [<<reservedrangesplaceholder8> <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> <reserved angesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplace holder0>] , где:

  • M - количество кубоидов.

  • xctr, yctr и zctr задают центр кубоида.

  • xlen, ylen и zlen задают длину кубоида вдоль оси x, оси y и оси z, соответственно, перед вращением.

  • xrot, yrot и zrot задают углы поворота кубоида вокруг оси x, оси y и оси z, соответственно. xrot, yrot и zrot углов поворота находятся в степенях вокруг кубоидного центра. Каждое вращение по часовой стрелке-положительно относительно положительного направления связанной пространственной оси. Функция вычисляет матрицы вращения, принимая ZYX упорядочить углы Эйлера [xrot yrot zrot].

Рисунок показывает, как эти значения определяют положение кубоида.

Обрезка окна, заданная как вектор с четырьмя элементами или как images.spatialref.Cuboid объект.

Когда вы задаете bboxA в качестве прямоугольного входного параметра окно обрезки должно быть четырехэлементным вектором в формате [x, y, width, height].

Когда вы задаете bboxA как кубоид, окно кадрирования должно быть images.spatialref.Cuboid объект.

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

площадь (bbox пересечения bounding rectangle )/площадь (bbox)

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

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

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

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

свернуть все

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

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

См. также

| | |

Введенный в R2019b