ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

imwarp

イメージへの幾何学的変換の適用

構文

  • B = imwarp(A,tform)
  • [B,RB] = imwarp(A,RA,tform)
  • B = imwarp(___,Interp)
  • [B,RB] = imwarp(___,Name,Value)

説明

B = imwarp(A,tform) は、幾何学的変換オブジェクト tform によって定義される幾何学的変換に従って、イメージ A を変換します。B は出力イメージです。

[B,RB] = imwarp(A,RA,tform) は、イメージ データ A およびこれに関連付けられた空間参照オブジェクト RA によって指定される空間参照イメージを変換します。出力は、イメージ データ B およびこれに関連付けられた空間参照オブジェクト RB によって指定される空間参照イメージです。

B = imwarp(___,Interp) は、使用する内挿の形式を指定します。

[B,RB] = imwarp(___,Name,Value) は、幾何学的変換のさまざまな側面を制御するパラメーターを指定します。パラメーター名は省略形でも構いません。大文字と小文字は区別されません。

すべて展開する

イメージへの水平的ずれの適用

イメージを読み取ります。

I = imread('cameraman.tif');

2 次元幾何学的変換オブジェクトを作成します。

tform = affine2d([1 0 0; .5 1 0; 0 0 1])
tform = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

変換をイメージに適用します。

J = imwarp(I,tform);
figure, imshow(I), figure, imshow(J)

3 次元 MRI データセットへの回転変換の適用

変換されたボリュームの中心を通る 3 つのスライス平面を可視化します。

s = load('mri');
mriVolume = squeeze(s.D);
sizeIn = size(mriVolume);
hFigOriginal = figure;
hAxOriginal  = axes;
slice(double(mriVolume),sizeIn(2)/2,sizeIn(1)/2,sizeIn(3)/2);
grid on, shading interp, colormap gray

Y 軸に関する回転変換を作成します。

 theta = pi/8;
 t = [cos(theta)  0      -sin(theta)   0
     0             1              0     0
     sin(theta)    0       cos(theta)   0
     0             0              0     1]

tform = affine3d(t);

変換を適用します。

mriVolumeRotated = imwarp(mriVolume,tform);

変換されたボリュームの中心を通る 3 つのスライス平面を可視化します。

sizeOut = size(mriVolumeRotated);
hFigRotated = figure;
hAxRotated  = axes;
slice(double(mriVolumeRotated),sizeOut(2)/2,sizeOut(1)/2,sizeOut(3)/2);
grid on, shading interp, colormap gray

両方の軸のビューをリンクさせます。

 linkprop([hAxOriginal,hAxRotated],'view');

回転の効果を確認するためのビューを設定します。

 set(hAxRotated,'View',[-3.5 20.0]);

入力引数

すべて展開する

A - 変換されるイメージ任意の数値クラスの非スパース実数値配列または論理値

変換されるイメージであり、任意の数値クラスの非スパース実数値配列または論理値として指定されます。

tform - 実行される 2 次元または 3 次元の幾何学的変換幾何学的変換オブジェクト

実行される 2 次元または 3 次元の幾何学的変換であり、幾何学的変換オブジェクトとして指定されます。

  • tform が 2 次元で、ndims(A) > 2 である場合 (たとえば、RGB イメージなど)、imwarp は同じ 2 次元変換を、より高い次元に沿ってすべての 2 次元平面に適用します。

  • tform が 3 次元の場合、A は 3 次元イメージ ボリュームでなければなりません。

RA - 変換されるイメージに関連付けられている空間参照情報空間参照オブジェクト

変換されるイメージに関連付けられている空間参照情報であり、空間参照オブジェクトとして指定されます。

  • tform が 2 次元幾何学的変換の場合、RA は 2 次元空間参照オブジェクト (imref2d) でなければなりません。

  • tform が 3 次元幾何学的変換の場合、RA は 3 次元空間参照オブジェクト (imref3d) でなければなりません。

Interp - 使用される内挿の形式 ‘linear’ (既定の設定) | 'nearest' | 'cubic'

使用される内挿の形式であり、以下のいずれかの文字列として指定されます。

内挿法説明
'linear’線形内挿
'nearest'最近傍内挿 — 出力ピクセルには、対象の点が含まれるピクセルの値が代入されます。周りの他のピクセルは、考慮に入れません。
'cubic'3 次元内挿

データ型:char

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: J = imwarp(I,tform,'FillValues',[255]) は塗りつぶしの値に白のピクセルを使用します。

'OutputView' - ワールド座標系における出力イメージのサイズと位置imref2d または imref3d 空間参照オブジェクト

ワールド座標系における出力イメージのサイズと位置。imref2d または imref3d 空間参照オブジェクトとして指定します。指定した空間参照オブジェクトの ImageSizeXWorldLimits および YWorldLimits の各プロパティによって、出力イメージのサイズとワールド座標系における出力イメージの位置が定義されます。

'FillValues' - イメージの境界外にある出力ピクセルに使用する値数値スカラーまたは配列

入力イメージの境界外にある出力ピクセルに使用する値。数値配列として指定します。塗りつぶしの値は、入力イメージにおける対応する逆変換後の位置が完全に入力イメージの境界外である場合に、出力ピクセルに使用されます。

  • 入力イメージが 2 次元である場合、FillValues はスカラーでなければなりません。

  • 入力イメージが 3 次元であり、幾何学的変換が 3 次元である場合、FillValues はスカラーでなければなりません。

  • 入力イメージが N 次元であり、幾何学的変換が 2 次元である場合、FillValues はスカラーか、サイズが入力イメージの 3 次元から N 次元に一致する配列となります。

    たとえば、入力イメージが 200 x 200 x 3 の uint8 RGB イメージである場合、FillValues はスカラーか 3 行 1 列の配列となります。この RGB イメージの例において、FillValues は以下のいずれかとなる可能性があります。

    FillValue効果
    0黒で塗りつぶす
    [0;0;0]黒で塗りつぶす
    255白で塗りつぶす
    [255;255;255]白で塗りつぶす
    [0;0;255]青で塗りつぶす
    [255;255;0]黄色で塗りつぶす

  • 入力イメージが 4 次元で、サイズが 200 x 200 x 3 x 10 である場合、FillValues はスカラーであるか、3 行 10 列の配列となります。

出力引数

すべて展開する

B - 変換されたイメージ任意の数値クラスの非スパース実数値配列または論理値

変換されたイメージ。任意の数値クラスの非スパース実数値配列または論理値として返されます。

RB - 変換されたイメージに関連付けられている空間参照情報空間参照オブジェクト

変換後のイメージに関連付けられている空間参照情報。空間参照オブジェクトとして返されます。

参考

| | | | |

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