Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

bboxOverlapRatio

境界ボックスのオーバーラップ率の計算

説明

overlapRatio = bboxOverlapRatio(bboxA,bboxB) は、bboxA および bboxB の境界ボックスの各ペア間のオーバーラップ率を返します。関数は、0 および 1 の間の overlapRatio 値を返します。1 は、完全なオーバーラップを意味します。

overlapRatio = bboxOverlapRatio(bboxA,bboxB,ratioType) により、その割合の計算に使用する方法をさらに指定できます。ratioType'Union' または 'Min' のいずれかに設定しなければなりません。

すべて折りたたむ

2 つの境界ボックスを形式 [x y width height] で定義します。

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

境界ボックスをイメージ上に表示します。

I = imread('peppers.png');
RGB = insertShape(I,'filled-rectangle',bboxA,'ShapeColor','green');
RGB = insertShape(RGB,'filled-rectangle',bboxB,'ShapeColor','yellow');
imshow(RGB)

2 つの境界ボックス間のオーバーラップ率を計算します。

overlapRatio = bboxOverlapRatio(bboxA,bboxB)
overlapRatio = 0.0833

2 つのセットの境界ボックスを無作為に生成します。

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 行 4 列または M 行 5 列の非スパース数値行列として指定します。M は境界ボックスの数です。行列の各行で、軸に平行な四角形または回転した四角形として、境界ボックスを定義します。次の表に、各境界ボックスの形式を示します。

境界ボックス説明
軸に平行な四角形[xmin, ymin, width, height]このタイプの境界ボックスは、M 個の境界ボックスを表す M 行 4 列の行列として、ピクセル座標で定義します。
回転した四角形[xcenter, ycenter, width, height, yaw]このタイプの境界ボックスは、M 個の境界ボックスを表す M 行 5 列の行列として、空間座標で定義します。座標 xcenterycenter は、境界ボックスの中心を表します。要素 widthheight はそれぞれ、x 軸と y 軸に沿ったボックスの長さを表します。yaw は、回転角度を度単位で表します。境界ボックスの中心の回転量は、時計回りの方向で測定されます。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

境界ボックス。M 行 4 列または M 行 5 列の非スパース数値行列として指定します。M は境界ボックスの数です。行列の各行 M で、軸に平行な四角形または回転した四角形として、境界ボックスを定義します。次の表に、各境界ボックスの形式を示します。

境界ボックス説明
軸に平行な四角形[xmin, ymin, width, height]このタイプの境界ボックスは、M 個の境界ボックスを表す M 行 4 列の行列として、ピクセル座標で定義します。
回転した四角形[xcenter, ycenter, width, height, yaw]このタイプの境界ボックスは、M 個の境界ボックスを表す M 行 5 列の行列として、空間座標で定義します。座標 xcenterycenter は、境界ボックスの中心を表します。要素 widthheight はそれぞれ、x 軸と y 軸に沿ったボックスの長さを表します。yaw は、回転角度を度単位で表します。境界ボックスの中心の回転量は、時計回りの方向で測定されます。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

割合のタイプ。文字ベクトル 'Union' または 'Min' として指定します。

  • 割合のタイプを 'Union' に設定して、bboxA および bboxB の間の交差部分をその 2 つの和集合部分の面積で除算して割合を計算します。

  • 割合のタイプを 'Min' に設定して、bboxA および bboxB の間の交差部分をその 2 つの境界ボックスの最小面積で除算して割合を計算します。

データ型: char

出力引数

すべて折りたたむ

2 つの境界ボックス間のオーバーラップ率。MN 列の行列として返されます。出力行列の各 (IJ) 要素は、bboxA の行 IbboxB の行 J の間のオーバーラップ率に対応します。関数は、0 と 1 の間の overlapRatio を返します。1 は、完全なオーバーラップを意味します。bboxA または bboxB のいずれかが double の場合、関数は overlapRatiodouble で返します。それ以外の場合は single として返します。

関数は、割合のタイプに基づいてオーバーラップ率を計算します。ratioType'Union' または 'Min' に設定できます。

データ型: single | double

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2014b で導入