ドキュメンテーション

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

findbounds

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

構文

outbounds = findbounds(TFORM,inbounds)

説明

outbounds = findbounds(TFORM,inbounds) は、与えられた空間変換と一連の入力境界に対応する出力境界を推定します。maketform で返される TFORM は空間変換構造体です。inbounds は 2 行 num_dims 列の行列です。inbounds の 1 行目は各次元の下限を、2 行目は上限を指定します。num_dimsTFORMndims_in フィールドと一致していなければなりません。

outbounds の形式は inbounds と同じです。outbounds は入力境界によって表される変換後の四角形を完全に内包する最小の四角形領域の推定値です。outbounds は推定値に過ぎないので、変換された入力四角形を完全には内包しない可能性があります。

ヒント

imtransform の出力空間境界ボックスを制御するパラメーターである 'XData''YData' を指定しない場合、imtransform によって findbounds が呼び出されます。findbounds は出力空間境界ボックスを計算します。

アルゴリズム

  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+003 *
    
        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
        1.3593   -0.2088

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

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

R2006a より前に導入

この情報は役に立ちましたか?