Main Content

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

maketform

N 次元空間変換構造体 (TFORM) の作成

2 次元および 3 次元の幾何学的変換の場合、関数 maketform は推奨されません。詳細については、互換性の考慮事項を参照してください。

説明

行列からの N 次元のアフィン変換と射影変換の作成

T = maketform("affine",A) は、行列 A として指定された N 次元のアフィン変換に対する空間変換構造体 T を作成します。変換構造体 T は、フォワード変換と逆変換の両方をもっています。

空間変換構造体 (TFORM 構造体) は、関数 tformarraytformfwd、および tforminv で使用できます。

T = maketform("projective",P) は、行列 P として指定された N 次元射影変換に対する TFORM 構造体を作成します。T には、フォワード変換と逆変換の両方があります。

フォワード関数および逆関数からの変換の作成

T = maketform("custom",ndims_in,ndims_out,forward_fcn,inverse_fcn,tdata) は、ユーザーが設定した関数ハンドルとパラメーターをベースにカスタムの TFORM 構造体 T を作成します。ndims_inndims_out は、入力と出力の次元数です。forward_fcninverse_fcn は、フォワード関数と逆関数への関数ハンドルです。引数 tdata は任意の MATLAB® 配列で、通常、カスタム変換のパラメーターを保存するために使われます。Ttdata フィールドを介して、forward_fcninverse_fcn にアクセスすることができます。

空間参照の変換の作成

T = maketform("box",tsize,outCornerStart,outCornerEnd) は、頂点の座標 ones(1,N) とサイズ tsize で定義される入力ボックスを、反対側の頂点の outCornerStartoutCornerEnd で定義される出力ボックスにマッピングする N 次元のアフィン TFORM 構造体 T を作成します。"box" TFORM 構造体は、通常、イメージまたは配列の行と列の添字をワールド座標系にレジストレーションするために使用されます。

T = maketform("box",inCorners,outCorners) は、N 次元のアフィン TFORM 構造体 T を作成します。この変換は、対角側の頂点の inCorners(1,:)inCorners(2,:) で定義される入力ボックスを、反対側の頂点の outCorners(1,:)outCorners(2,:) で定義される出力ボックスにマッピングします。

合成変換の作成

T = maketform("composite",T1,T2,...,TL) は、コンマ区切りの TFORM 構造体として指定された変換の合成 T1, T2, ..., TL である TFORM 構造体 T を作成します。T のフォワード関数と逆関数は、合成変換 T1, T2, ..., TL のフォワード関数と逆関数の関数成分です。

T = maketform("composite",[T1,T2,...,TL]) は、ベクトルとして指定された変換の合成 T1, T2, ..., TL である TFORM 構造体 T を構築します。T のフォワード関数と逆関数は、合成変換 T1, T2, ..., TL のフォワード関数と逆関数の関数成分です。

すべて折りたたむ

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

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.

入力引数

すべて折りたたむ

アフィン変換。(N+1) 行 (N+1) 列の行列または(N+1) 行 N 列の行列として指定します。ここで、N はアフィン変換の次元です。この行列は正則かつ実数の行列でなければなりません。

A が (N+1) 行 (N+1) 列の場合、A の最後の列は [zeros(N,1);1] でなければなりません。それ以外の場合、A は、その最後の列が [zeros(N,1);1] になるように、自動的に拡大されます。行列 A は、tformfwd(U,T) (U は 1 行 N 列のベクトル) が 1 行 N 列のベクトル X を返すようなフォワード変換、すなわち X = U * A(1:N,1:N) + A(N+1,1:N) を定義します。

データ型: double

射影変換。(N+1) 行 (N+1) 列の行列として指定します。ここで、N は射影変換の次元です。この行列は正則かつ実数の行列でなければなりません。P(N+1,N+1) を 0 にすることはできません。

行列 P は、tformfwd(U,T) (U は 1 行 N 列のベクトル) が 1 行 N 列のベクトル X を返すようなフォワード変換、すなわち X = W(1:N)/W(N+1) を定義します。ここで、W = [U 1] * P です。

データ型: double

入力の次元数。正の整数として指定します。

データ型: double

出力の次元数。正の整数として指定します。

データ型: double

フォワード関数。構文 X = forward_fcn(U,T) をサポートする関数ハンドルとして指定します。U は numpts 行 ndims_in 列の行列で、その行は変換入力空間の点です。X は numpts 行 ndims_out 列の行列で、その行は変換出力空間の点です。

forward_fcn は空でもかまいません。

データ型: function_handle

逆関数。構文 U = inverse_fcn(X,T) をサポートする関数ハンドルとして指定します。U は numpts 行 ndims_in 列の行列で、その行は変換入力空間の点です。X は numpts 行 ndims_out 列の行列で、その行は変換出力空間の点です。

inverse_fcn は空でもかまいません。ただし、関数 tformarray と共に TFORM struct T を使用するには、inverse_fcn を定義しなければなりません。

データ型: function_handle

カスタム変換のパラメーター。配列として指定します。

データ型: double

入力ボックスのサイズ。正の整数の N 要素ベクトルとして指定します。

データ型: double

出力空間における開始頂点の座標。N 要素ベクトルとして指定します。tsize(k) が 1 でない限り、outCornerStart(k) と outCornerEnd(k) を同じにすることはできません。1 の場合、k 番目の次元に関するアフィン スケール係数は 1.0 であるとみなされます。

データ型: double

出力空間における反対側の頂点の座標。N 要素ベクトルとして指定します。tsize(k) が 1 でない限り、outCornerStart(k) と outCornerEnd(k) を同じにすることはできません。1 の場合、k 番目の次元に関するアフィン スケール係数は 1.0 であるとみなされます。

データ型: double

入力空間における頂点の座標。N 行 2 列の数値行列として指定します。最初の列はある 1 つの頂点の座標を表し、2 番目の列はその反対側の頂点の座標を表します。outCorners(1,k) と outCorners(2,k) が同じでない限り、inCorners(1,k) と inCorners(2,k) を同じにすることはできません。

データ型: double

出力空間における頂点の座標。N 行 2 列の数値行列として指定します。最初の列はある 1 つの頂点の座標を表し、2 番目の列はその反対側の頂点の座標を表します。inCorners(1,k) と inCorners(2,k) が同じでない限り、outCorners(1,k) と outCorners(2,k) を同じにすることはできません。

データ型: double

合成変換。TFORM 構造体として指定します。

入力 T1, T2, ..., TL は、関数の合成を表す通常の表記法と同じ順序 T = T1T2...TL で並べます。合成は結合的ですが、可換ではありません。これは、T を入力 U に適用するには、TL を最初に、T1 を最後に適用しなければならないことを意味します。よって、たとえば L = 3 である場合、tformfwd(U,T)tformfwd(tformfwd(tformfwd(U,T3),T2),T1) と同じになります。T1 から TL までの成分は、入力次元と出力次元の数に関して整合性を保っていなければなりません。

T は、すべての合成変換がフォワード変換関数として定義されている場合にのみフォワード変換関数として定義されます。T は、すべての合成変換が逆変換関数として定義されている場合にのみ逆変換関数として定義されます。

データ型: function_handle

出力引数

すべて折りたたむ

多次元空間変換。TFORM 構造体として返されます。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する