Main Content

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

findbounds

空間変換の出力境界の検出

説明

outbounds = findbounds(tform,inbounds) は、与えられた空間変換と一連の入力境界に対応する出力境界を推定します。tform は空間変換構造体です。inbounds は、出力イメージの上限と下限を指定する 2 行 num_dims 列の行列です。outbounds は、入力境界によって表される変換後の四角形を完全に内包する最小の四角形領域の推定値で、inbounds と同じ形式になります。outbounds は推定値に過ぎないため、変換された入力四角形を完全には内包しない可能性があります。

すべて折りたたむ

イメージをワークスペースに読み取って表示します。

I = imread('cameraman.tif');
figure
imshow(I)

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

イメージを引き伸ばす空間変換構造体を作成します。

T = maketform('affine',[.5 0 0; .5 2 0; 0 0 1]);

入力イメージのサイズと空間変換を指定して、出力イメージの境界を計算します。入力イメージの次元は 256 行 256 列です。出力イメージの境界は変換を反映し、次のようになります。256 行 512 列。

outb = findbounds(T,[0 0;256 256])
outb = 2×2

     0     0
   256   512

変換を適用してイメージを表示します。

transformedI = imtransform(I,T);
figure
imshow(transformedI)

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

入力引数

すべて折りたたむ

空間変換。TFORM 構造体として指定します。関数 maketform を使用して TFORM 構造体を取得できます。

データ型: struct

入力イメージの各次元の境界。2 行 num_dims 列の行列として指定します。inbounds の 1 行目は各次元の下限を、2 行目は上限を指定します。num_dimstformndims_in フィールドと一致していなければなりません。

例: [0 0;256 256] (入力イメージは 256 x 256 のピクセル)

データ型: double

出力引数

すべて折りたたむ

出力イメージの各次元の境界 (出力空間境界ボックス)。2 行 num_dims 列の行列として返されます。

データ型: double

アルゴリズム

  1. findbounds は最初に入力空間点のグリッドを作成します。これらの点はイメージの中心、コーナー、および各エッジの中点にあります。

    I = imread("rice.png");
    h = imshow(I);
    set(h,"AlphaData",0.3);
    axis on, grid on
    in_points = [ ...
        0.5000    0.5000
        0.5000  256.5000
      256.5000    0.5000
      256.5000  256.5000
        0.5000  128.5000
      128.5000    0.5000
      128.5000  128.5000
      128.5000  256.5000
      256.5000  128.5000];
    hold on
    plot(in_points(:,1),in_points(:,2),".","MarkerSize",18)
    hold off

    入力空間点のグリッド

    Nine input-space points displayed as blue dots over an image.

  2. 次に、findbounds は入力空間点のグリッドを出力空間に変換します。tform にフォワード変換 (空ではない forward_fcn フィールド) が格納される場合、findboundstformfwd を使用して入力空間点を変換します。次に例を示します。

    tform = maketform("affine", ...
        [1.1067 -0.2341 0; 0.5872 1.1769 0; 1000 -300 1]);
    out_points = tformfwd(tform, in_points)
      out_points =
    
       1.0e+03 *
    
        1.0008   -0.2995
        1.1512    0.0018
        1.2842   -0.3595
        1.4345   -0.0582
        1.0760   -0.1489
        1.1425   -0.3295
        1.2177   -0.1789
        1.2928   -0.0282

    tform にフォワード変換が格納されない場合、findbounds は Nelder-Mead 最適化関数 fminsearch を使用して出力境界を推定します。

  3. 最後に、findbounds は変換された点のグリッドの境界ボックスを計算します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する