Main Content

affine3d

(非推奨) 右から乗算する規則を使用した 3 次元アフィン幾何学的変換

affine3d は推奨されません。代わりに、affinetform3d オブジェクトを使用してください。詳細については、互換性の考慮事項を参照してください。

説明

affine3d オブジェクトは、3 次元アフィン幾何学的変換に関する情報を格納し、フォワード変換と逆変換を可能にします。

作成

説明

tform = affine3d は、恒等変換に該当する既定のプロパティ設定を使用して affine3d オブジェクトを作成します。

tform = affine3d(t) は、指定された 3 次元アフィン変換行列 t をプロパティ T に設定します。

プロパティ

すべて展開する

3 次元フォワード アフィン変換。正則な 4 行 4 列の数値行列として指定します。

行列 T は次の規則を使用します。

[x y z 1] = [u v w 1] * T

ここで、T の形式は次のとおりです。

 [a b c 0;
  d e f 0;
  g h i 0;
  j k l 1];

T の既定の設定は、恒等変換です。

データ型: double | single

入力点と出力点の両方の幾何学的変換の次元を表します。値 3 として指定します。

オブジェクト関数

invertInvert geometric transformation
isRigid幾何学的変換が剛体変換かどうかの判別
isSimilarity幾何学的変換が相似変換かどうかの判別
isTranslation幾何学的変換が純粋な平行移動かどうかの判別
outputLimitsFind output spatial limits given input spatial limits
transformPointsForwardApply forward geometric transformation
transformPointsInverseApply inverse geometric transformation

すべて折りたたむ

次元ごとに異なる倍率で 3 次元イメージをスケーリングする affine3d オブジェクトを作成します。

Sx = 1.2;
Sy = 1.6;
Sz = 2.4;
T = [Sx 0 0 0; 0 Sy 0 0; 0 0 Sz 0; 0 0 0 1];
tform = affine3d(T)
tform = 
  affine3d with properties:

                 T: [4x4 double]
    Dimensionality: 3

T プロパティの値を調べます。

tform.T
ans = 4×4

    1.2000         0         0         0
         0    1.6000         0         0
         0         0    2.4000         0
         0         0         0    1.0000

拡張機能

バージョン履歴

R2013a で導入

すべて展開する

R2022b: 非推奨

R2022b 以降、ほとんどの Image Processing Toolbox™ 関数は、左から乗算する規則を使用して幾何学的変換を作成し、実行します。そのため、affine3d オブジェクトは右から乗算する規則を使用していることから推奨されません。現時点では、affine3d オブジェクトを削除する予定はありませんが、左から乗算する規則をサポートする affinetform3d オブジェクトに切り替えることで、幾何学的変換のワークフローを効率化できます。詳細については、Migrate Geometric Transformations to Premultiply Conventionを参照してください。

コードを更新するには、次を行います。

  • 関数名 affine3d のインスタンスを affinetform3d に変更します。

  • 行列 T の転置として変換行列を指定します。ここで、Taffine3d オブジェクトの T プロパティの値または affine3d オブジェクトの作成に使用した変換行列のいずれかです。

非推奨の使用方法推奨される代替案

この例では、右から乗算する規則で変換行列 T から affine3d オブジェクトを作成します。

T = [2 0 0 0; 0 2 0 0; 0 0 4 0; 5 10 -5 1];
tformPost = affine3d(T);

この例では、変換行列 T の転置から affinetform3d オブジェクトを作成します。

T = [2 0 0 0; 0 2 0 0; 0 0 4 0; 5 10 -5 1];
A = T';
tform = affinetform3d(A);

この例では、tformPost という名前の affine3d オブジェクトから開始し、tformPostT プロパティの転置から affinetform3d オブジェクトを作成します。

T = tformPost.T;
tform = affinetform3d(T');