ドキュメンテーション

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

tformarray

N 次元配列への空間変換の適用

構文

B = tformarray(A,T,R,TDIMS_A, TDIMS_B,TSIZE_B,TMAP_B,F)

説明

B = tformarray(A,T,R,TDIMS_A, TDIMS_B,TSIZE_B,TMAP_B,F) は、空間変換を配列 A に適用して配列 B を生成します。

すべて折りたたむ

各正方形の幅が 20 ピクセルの 2 列 2 行のチェッカーボード イメージを作成して表示します。

I = checkerboard(20,1,1);
figure
imshow(I)

チェッカーボードを射影変換で変換します。まず、空間変換構造体 (TFORM) を作成します。

T = maketform('projective',[1 1; 41 1; 41 41;   1 41],...
                           [5 5; 40 5; 35 30; -10 30]);

リサンプラーを作成します。リサンプラーの作成時には 'circular' のパディング方法を使用します。出力は、無限チェッカーボードの遠近投影ビューになります。

R = makeresampler('cubic','circular');

TFORM とリサンプラーを指定して変換を実行します。出力次元を交換します。100 行 100 列の出力イメージを指定します。TSIZE_B を指定するため、TMAP_B を空のままにします。塗りつぶしの値は必要ないため、空のままにします。

J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]);
figure
imshow(J)

入力引数

すべて折りたたむ

入力イメージ。実数または複素数になる、非スパース数値配列 (実数または複素数) として指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

空間変換。TFORM と呼ばれる空間変換構造体として指定します。通常、関数 maketform を使用して TFORM 構造体を作成します。出力変換添字空間の各位置について、tformarrayT と関数 tforminv を使用して入力変換添字空間での対応する位置を計算します。tformarray は、入力変換空間を TDIMS_BTSIZE_B によって定義し、出力変換添字空間を TDIMS_Asize(A) によって定義します。

T が空の場合、tformarray は直接リサンプリング関数として機能します。つまり、R に定義されるリサンプラーを適用して TMAP_B に定義される各変換空間位置で値を計算します。TMAP_B が空の場合、tformarray は出力変換添字グリッドの各位置でリサンプラーを適用します。

データ型: struct

リサンプラー。構造体として指定します。resampler 構造体は、指定された位置で入力配列の値をどのように内挿するかを定義します。R は、各次元での内挿方法を細かく制御する makeresampler を使用して作成されます。また、makeresampler は、入力配列のエッジ近くで内挿するときに使用する配列の値も制御します。

データ型: struct

入力変換次元。有限の正の整数の行ベクトルとして指定します。

TDIMS_ATDIMS_B は、入力と出力配列のどの次元が空間変換に含まれるかを示します。各要素は固有で正の整数でなければなりません。エントリは昇順である必要はありませんが、順序付けられている必要があります。配列 A および B の次元と、変換子 T の入力および出力空間の間の正確な対応関係を指定します。length(TDIMS_A)T.ndims_in と等しく、length(TDIMS_B)T.ndims_out と等しくなければなりません。

たとえば、T が 2 次元変換であり、TDIMS_A = [2 1]TDIMS_B = [1 2] の場合、A の列次元と行次元はそれぞれ最初と 2 番目の変換入力空間次元に対応します。B の列次元と行次元はそれぞれ最初と 2 番目の出力空間次元に対応します。

データ型: double

変換次元でのサイズ。有限の正の整数の行ベクトルとして指定します。詳細は、TDIMS_Aを参照してください。

データ型: double

出力配列変換次元のサイズ。有限の正の整数の行ベクトルとして指定します。非変換次元の B のサイズは、これらの次元の A のサイズから直接取得されます。たとえば、T が 2 次元変換であり、size(A) = [480 640 3 10]TDIMS_B[2 1]TSIZE_B[300 200] の場合、size(B)[200 300 3] となります。

データ型: double

出力空間での点の位置。非スパース、有限の実数値配列として指定します。オプションの引数 TMAP_BB の要素の位置と出力変換空間内の位置との対応を指定する代替方法です。TMAP_B を使用すると、たとえば、出力空間における一連の任意の場所でイメージのゆがみの結果を計算することができます。TMAP_B が空でない場合は、TMAP_B のサイズは次の形式となります。

 [D1 D2 D3 ... DN L]

ここで、Nlength(TDIMS_B) と等しくなります。ベクトル [D1 D2 ... DN] は、TSIZE_B の代わりに使用されます。TMAP_B が空でない場合、TSIZE_B[] になります。

L の値は T が空であるかによって異なります。T が空である場合、LT.ndims_out となり、TMAP_B の各 L 次元点は T を使用して入力空間位置に変換されます。T が空である場合、Llength(TDIMS_A) となり、TMAP_B の各 L 次元点は入力空間の位置として直接使用されます。

データ型: double

塗りつぶしの値。配列として指定します。F の塗りつぶしの値は、次の 3 つの状況で使用できます。

  • 分離可能なリサンプラーが makeresampler を使用して作成され、その padmethod'fill' または 'bound' に設定される場合。

  • 'fill' または 'bound' のパディング方法をサポートするカスタム リサンプラーが使用される場合 (カスタマイズ特有の動作が伴う)。

  • B の変換次元から A の変換次元へのマップがある時点で意図的に未定義である場合。このような点は、TMAP_B または TFORMINV の出力で NaN によって入力変換空間でエンコードされます。

最初の 2 つのケースでは、塗りつぶしの値を使用して、入力配列のエッジの外または付近でマップする出力位置の値を計算します。塗りつぶしの値は、出力位置が入力配列の外側にマップされる場合は B にコピーされます。'fill''bound' の詳細は、「makeresampler」を参照してください。

F にはスカラー (NaN など) を指定できます。この場合、その値はすべての非変換次元に渡って複製されます。F にはスカラー以外を指定することもできます。この場合そのサイズは非変換次元の size(A) に左右されます。特に、KAJ 番目の非変換次元である場合、size(F,J)size(A,K) または 1 のいずれかでなければなりません。ユーザーに便利なように、tformarray は単位サイズで任意の次元全体で F を複製するため、複製後、size(F,J)size(A,K) と等しくなります。

たとえば、A は 10 枚の RGB イメージを表し、サイズは 200 × 200 × 3 × 10 で、T は 2 次元変換であり、TDIMS_ATDIMS_B の両方が [1 2] であるとします。つまり、tformarray は、各 10 枚の RGB イメージのそれぞれの色平面に、同じ 2 次元変換を適用します。この場合、F についていくつかのオプションがあります。

  • F にはスカラーを指定できます。この場合、すべての 10 枚のイメージの各色平面で同じ塗りつぶしの値が使用されます。

  • F には、3 行 1 列のベクトル [R G B]' を指定できます。tformarray では各 10 枚のイメージのそれぞれに対応する色平面の塗りつぶしの値として RGB 値が使用されます。

  • F には 1 行 10 列のベクトルを指定できます。tformarray では、10 枚の各イメージに異なる塗りつぶしの値が使用され、その塗りつぶしの値が 3 つすべての色平面に使用されます。

  • F には、3 行 10 列の行列を指定できます。tformarray では、10 枚の各イメージで異なる RGB 塗りつぶし色が使用されます。

データ型: double

出力引数

すべて折りたたむ

変換されたイメージ。配列として返されます。

R2006a より前に導入

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