bboxOverlapRatio

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

Синтаксис

overlapRatio = bboxOverlapRatio(bboxA,bboxB)
overlapRatio = bboxOverlapRatio(bboxA, bboxB, ratioType)

Описание

пример

overlapRatio = bboxOverlapRatio(bboxA,bboxB) возвращает отношение перекрытия между каждой парой ограничительных рамок bboxA и bboxB. Функция возвращает значение overlapRatio между 0 и 1, где 1 подразумевает совершенное перекрытие.

overlapRatio = bboxOverlapRatio(bboxA, bboxB, ratioType) дополнительно позволяет вам задать метод, чтобы использовать для вычисления отношения. Необходимо установить ratioType или на 'Union' или на 'Min'.

Примеры

свернуть все

Задайте две ограничительных рамки в формате [x y высота ширины].

bboxA = [150,80,100,100]; 
bboxB = bboxA + 50;

Отобразите ограничительные рамки на изображении.

I = imread('peppers.png');
RGB = insertShape(I,'FilledRectangle',bboxA,'Color','green');
RGB = insertShape(RGB,'FilledRectangle',bboxB,'Color','yellow');
imshow(RGB)

Вычислите отношение перекрытия между этими двумя ограничительными рамками.

overlapRatio = bboxOverlapRatio(bboxA,bboxB)
overlapRatio = 0.0833

Случайным образом сгенерируйте два набора ограничительных рамок.

bboxA = 10*rand(5,4); 
bboxB = 10*rand(10,4);

Гарантируйте, что ширина и высота полей положительны.

bboxA(:,3:4) = bboxA(:,3:4) + 10;
bboxB(:,3:4) = bboxB(:,3:4) + 10;

Вычислите отношение перекрытия между каждой парой.

overlapRatio = bboxOverlapRatio(bboxA,bboxB)
overlapRatio = 5×10

    0.2431    0.2329    0.3418    0.5117    0.7972    0.1567    0.1789    0.4339    0.0906    0.5766
    0.3420    0.1655    0.7375    0.5188    0.2786    0.3050    0.2969    0.4350    0.2477    0.2530
    0.4844    0.3290    0.3448    0.1500    0.1854    0.4976    0.5629    0.4430    0.5027    0.2685
    0.3681    0.0825    0.3499    0.0840    0.0658    0.5921    0.6498    0.1930    0.7433    0.0676
    0.3752    0.1114    0.3114    0.0696    0.0654    0.5408    0.6234    0.2046    0.7557    0.0717

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

свернуть все

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

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

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

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

Тип отношения, заданный как вектор символов 'Union' или 'Min'.

  • Установите тип отношения на 'Union' вычислять отношение как область пересечения между bboxA и bboxB, разделенным на область объединения двух.

  • Установите тип отношения на 'Min' вычислять отношение как область пересечения между bboxA и bboxB, разделенным на минимальную область этих двух ограничительных рамок.

Типы данных: char

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

свернуть все

Перекройте отношение между двумя ограничительными рамками, возвращенными как M-by-N матрица. Каждый (I, J) элемент в выходной матрице соответствует отношению перекрытия между строкой I в bboxA и строкой J в bboxB. Функция возвращает overlapRatio в между 0 и 1, где 1 подразумевает совершенное перекрытие. Если или bboxA или bboxB являются двойными, то функция возвращает overlapRatio как double. В противном случае функция возвращает его как single.

Функция вычисляет отношение перекрытия на основе типа отношения. Можно установить ratioType на 'Union' или 'Min':

Типы данных: single | double

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2014b