Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

bboxcrop

境界ボックスのトリミング

説明

bboxB = bboxcrop(bboxA,window) は、トリミング領域 window にある、入力の境界ボックスのセット bboxA から境界ボックスをトリミングします。

[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 object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

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

境界ボックス説明
軸に平行な四角形

[x y w h] 形式の行をもつ M 行 4 列の数値行列として、ピクセル座標で定義します。ここで、

  • M は軸に平行な四角形の数です。

  • x と y は四角形の左上隅を指定します。

  • w は四角形の幅、つまり x 軸に沿った長さを指定します。

  • h は四角形の高さ、つまり y 軸に沿った長さを指定します。

回転した四角形

[xctr yctr xlen ylen yaw] 形式の行をもつ M 行 5 列の数値行列として、空間座標で定義します。ここで、

  • M は回転した四角形の数です。

  • xctr および yctr は四角形の中心を指定します。

  • xlen は四角形の幅、つまり、回転前の x 軸に沿った長さを指定します。

  • ylen は四角形の高さ、つまり、回転前の y 軸に沿った長さを指定します。

  • yaw は回転角度 (度単位) を指定します。回転は境界ボックスの中心を軸として時計回りに正となります。

Square rectangle rotated by -30 degrees.

直方体

[xctr yctr zctr xlen ylen zlen xrot yrot zrot] 形式の行をもつ M 行 9 列の数値行列として、空間座標で定義します。ここで、

  • M は直方体の数です。

  • xctr、yctr、および zctr は直方体の中心を指定します。

  • xlen、ylen、および zlen はそれぞれ、回転前の x 軸、y 軸、および z 軸に沿った直方体の長さを指定します。

  • xrot、yrot、および zrot はそれぞれ、x 軸、y 軸、および z 軸周りの直方体の回転角度を指定します。回転角度 xrot、yrot、および zrot は、直方体の中心に対する度数です。各回転は、関連する空間軸の正方向に対して時計回りに正となります。関数は、ZYX の順序のオイラー角 [xrot yrot zrot] を想定して回転行列を計算します。

次の図は、これらの値で直方体の位置がどのように決定されるかを示しています。

トリミング ウィンドウ。4 要素のベクトルまたは Cuboid オブジェクトとして指定します。

bboxA を矩形入力として指定する場合、トリミング ウィンドウは [x,y,width,height] 形式の 4 要素ベクトルでなければなりません。

bboxA を直方体として指定する場合、トリミング ウィンドウは Cuboid オブジェクトでなければなりません。

オーバーラップしきい値。1 以下の正のスカラーとして指定します。変換後のボックスと出力表示によって定義される領域とのオーバーラップ量は、次のように定義されます。

(bounding rectangle に交差する bbox 領域) / (bbox 領域)

  • bounding rectangle — 入力空間参照オブジェクト ref によって定義される。

  • bbox — bboxA 内のボックスの変換結果。

オーバーラップの計算値が threshold プロパティよりも大きい場合、変換後のボックスが bounding rectangle の境界でクリップされます。そうでない場合、ボックスは破棄されます。しきい値を下げると、オブジェクトの一部が破棄されることがあります。

出力引数

すべて折りたたむ

トリミングされた境界ボックス。M2 個の境界ボックスから成る M2 行 N 列の行列として返されます。返される境界ボックスの数は、入力の境界ボックスの数よりも少なくなります。行列の各行 M2 は、入力 bboxA と同じタイプの 1 つの境界ボックスを定義します。

インデックス。整数のベクトルとして返されます。インデックスは、入力 bboxA 内のどの境界ボックスがトリミング ウィンドウ内にあるかを示します。

バージョン履歴

R2019b で導入