ドキュメンテーション

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

imwarp

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

構文

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

説明

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

B = imwarp(A,D)D で定義された変位場に従って入力イメージ A を変換します。

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

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

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

すべて折りたたむ

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

I = imread('cameraman.tif');
imshow(I)

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

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

                 T: [3×3 double]
    Dimensionality: 2

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

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

3 次元 MRI データをワークスペースに読み取り、それを可視化します。

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

3 次元幾何学的変換オブジェクトを作成します。まず、y 軸に対してイメージを回転した変換行列を作成します。次に、行列を affine3d オブジェクト コンストラクターに渡します。

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

    0.9239         0   -0.3827         0
         0    1.0000         0         0
    0.3827         0    0.9239         0
         0         0         0    1.0000

tform = affine3d(t)
tform = 
  affine3d with properties:

                 T: [4×4 double]
    Dimensionality: 3

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

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])

入力引数

すべて折りたたむ

変換されるイメージ。非スパース、実数値の配列として指定します。

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

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

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

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

変位場。非スパース数値配列として指定します。変位場は出力イメージのグリッド サイズと位置を定義します。変位値の単位はピクセルです。imwarp では、D は既定の固有座標系を基準とすると仮定しています。変位場の推定には、imregdemons を使用します。

  • A が m 行 n の 2 次元グレースケール イメージの場合、D は m x n x 2 です。変位場の 1 番目の平面 D(:,:,1) は、加算される変位の x 成分を表しています。imwarp はこれらの値を D の行と列の位置に加算し、A における再マップ後の位置を生成します。同様に、変位場の 2 番目の平面 D(:,:,2) が、加算される変位値の y 成分を表しています。

  • A が 2 次元トゥルーカラー イメージまたは m x n x p の 3 次元グレースケール イメージの場合、D は以下です。

    • m x n x p x 3。D(:,:,:,1) には x 軸方向の変位、D(:,:,:,2) には y 軸方向の変位、D(:,:,:,3) には z 軸方向の変位が格納されます。

    • m x n x 2。この場合、imwarp は一度に 1 平面に対して変位場を適用します。

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

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

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

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

使用される内挿の形式。以下のいずれかの値に指定します。

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

データ型: char

名前/値のペアの引数

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

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

すべて折りたたむ

ワールド座標系における出力イメージのサイズと位置。'OutputView' と空間参照オブジェクト imref2d または imref3d で構成されるコンマ区切りのペアとして指定します。空間参照オブジェクトの ImageSizeXWorldLimits および YWorldLimits の各プロパティによって、ワールド座標系における出力イメージのサイズと位置が定義されます。変位場を適用する場合、'OutputView' は使用できません。

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

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

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

  • 入力イメージが N 次元であり、幾何学的変換が 2 次元である場合、FillValues はスカラーまたは配列になります。配列を指定する場合、配列のサイズは入力イメージの高い次元に合わせなければなりません。たとえば、入力イメージが 200 x 200 x 3 の uint8 RGB イメージである場合、FillValues はスカラーか 3 行 1 列の配列となります。別の例として、入力イメージが 4 次元で、サイズが 200 x 200 x 3 x 10 である場合、FillValues はスカラーまたは 3 行 10 列の配列となります。

    この RGB イメージの例において、FillValues は以下のいずれかとなる可能性があります。

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

滑らかなエッジを作成するためのイメージのパディング。論理値 true または false として指定します。true に設定すると、imwarp は入力イメージをパディングし (FillValues で指定された値を使用)、滑らかなエッジを出力イメージに作成します。false に設定すると、imwarp はイメージをパディングしません。false (パディングなし) を選択すると、入力イメージによって出力イメージに鋭いエッジが生成される可能性があります。こうした鋭いエッジは、2 つのイメージを並べてレジストレーションする場合に継ぎ目の歪みを最小化するのに役立ちます。

出力引数

すべて折りたたむ

変換されたイメージ。非スパースの実数値配列として返されます。BA と同じクラスです。

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

拡張機能

R2013a で導入

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