ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

findbounds

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

説明

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

すべて折りたたむ

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

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

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

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)

入力引数

すべて折りたたむ

空間変換。構造体 (tform) として指定します。

データ型: 構造体

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

例: outb = findbounds(T,[0 0;256 256]) (入力イメージは 256 行 256 列)

データ型: double

出力引数

すべて折りたたむ

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

アルゴリズム

  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

    入力空間点のグリッド

  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 より前に導入