geometricTransform3d
説明
geometricTransform3d
オブジェクトは、点単位のマッピング関数を使用してカスタムの 3 次元幾何学的変換を定義します。
作成
説明
は tform
= geometricTransform3d(inverseFcn)geometricTransform3d
オブジェクトを作成し、逆マッピング関数プロパティ InverseFcn
の値を inverseFcn
に設定します。
は、さらに、フォワード マッピング関数プロパティ tform
= geometricTransform3d(inverseFcn,forwardFcn)ForwardFcn
の値を forwardFcn
に設定します。
プロパティ
InverseFcn
— 逆マッピング関数
関数ハンドル
逆マッピング関数。関数ハンドルとして指定します。この関数は、n 個の点のパックされた (x,y,z) 座標を表す n 行 3 列の数値行列として座標を受け入れ、同じ形式の座標を返さなければなりません。
関数ハンドルの詳細については、関数ハンドルの作成を参照してください。
例: ifcn = @(xyz) [xyz(:,1).^2,xyz(:,2).^2,xyz(:,3).^2];
ForwardFcn
— フォワード マッピング関数
関数ハンドル
フォワード マッピング関数。関数ハンドルとして指定します。この関数は、n 個の点のパックされた (x,y,z) 座標を表す n 行 3 列の数値行列として座標を受け入れ、同じ形式の座標を返さなければなりません。
関数ハンドルの詳細については、関数ハンドルの作成を参照してください。
例: ffcn = @(xyz) [sqrt(xyz(:,1)),sqrt(xyz(:,2)),sqrt(xyz(:,3))];
オブジェクト関数
outputLimits | Find output spatial limits given input spatial limits |
transformPointsForward | Apply forward geometric transformation |
transformPointsInverse | Apply inverse geometric transformation |
例
カスタムの 3 次元変換を使用したパックされた座標の変換
5 つの入力点のパックされた (x,y,z) 座標を指定します。パックされた座標は 5 行 3 列の行列として格納します。ここで、1 番目、2 番目、3 番目の列には、それぞれ x 座標、y 座標、z 座標を格納します。
XYZ = [5 25 20;10 5 25;15 10 5;20 15 10;25 20 15];
パックされた (x,y,z) 形式の点を受け入れ、同じ形式の点を返す逆マッピング関数を定義します。
inverseFcn = @(c) [c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2];
この逆マッピング関数を格納する 3 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform3d(inverseFcn)
tform = geometricTransform3d with properties: InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2] ForwardFcn: [] Dimensionality: 3
この 3 次元幾何学的変換の逆変換を入力点に適用します。
UVW = transformPointsInverse(tform,XYZ)
UVW = 5×3
30 -20 400
15 5 625
25 5 25
35 5 100
45 5 225
カスタムの 3 次元変換を使用した座標配列の変換
変換する 5 つの点の x 座標、y 座標、z 座標のベクトルを指定します。
x = [3 5 7 9 11]; y = [2 4 6 8 10]; z = [5 9 13 17 21];
パックされた (x,y,z) 形式の点を受け入れ、同じ形式の点を返す逆マッピング関数とフォワード マッピング関数を定義します。
inverseFcn = @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2]; forwardFcn = @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))];
これらの逆マッピング関数とフォワード マッピング関数を格納する 3 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform3d(inverseFcn,forwardFcn)
tform = geometricTransform3d with properties: InverseFcn: @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2] ForwardFcn: @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))] Dimensionality: 3
この 3 次元幾何学的変換の逆変換を入力点に適用します。
[u,v,w] = transformPointsInverse(tform,x,y,z)
u = 1×5
9 25 49 81 121
v = 1×5
4 16 36 64 100
w = 1×5
25 81 169 289 441
フォワード幾何学的変換を変換後の点 u
、v
および w
に適用します。
[x,y,z] = transformPointsForward(tform,u,v,w)
x = 1×5
3 5 7 9 11
y = 1×5
2 4 6 8 10
z = 1×5
5 9 13 17 21
カスタムの 3 次元変換を使用した 3 次元ボリューム イメージの変換
横軸を中心にした鏡映を実行する逆マッピング関数を定義します。この関数はパックされた (x,y,z) 座標を受け入れ、同じ形式の座標を返さなければなりません。ここで、1 番目、2 番目、3 番目の列には、それぞれ x 座標、y 座標、z 座標を格納します。
inverseFcn = @(xyz)[xyz(:,1),-xyz(:,2),xyz(:,3)];
この逆マッピング関数を格納する 3 次元幾何学的変換オブジェクト tform
を作成します。
tform = geometricTransform3d(inverseFcn)
tform = geometricTransform3d with properties: InverseFcn: @(xyz)[xyz(:,1),-xyz(:,2),xyz(:,3)] ForwardFcn: [] Dimensionality: 3
変換する MRI ボリュームを読み込んで表示します。
s = load('mri');
mriVolume = squeeze(s.D);
imwarp
を使用して幾何学的逆変換を入力 MRI ボリュームに適用します。
[mriVolumeTransformed] = imwarp(mriVolume,tform,'nearest','SmoothEdges',true);
入力 MRI ボリュームのイメージ スライスをモンタージュとして表示します。
montage(mriVolume,'Size',[4 8],'BackgroundColor','w') title('Image Slices from 3-D MRI','FontSize',14)
変換後の MRI ボリュームのイメージ スライスをモンタージュとして表示します。変換後のイメージ スライスは、x 軸に関する入力イメージ スライスの鏡映です。
montage(mriVolumeTransformed,'Size',[4 8],'BackgroundColor','w') title('Image Slices from Inverse Geometric Transformation of 3-D MRI','FontSize',14)
バージョン履歴
R2018b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)