ドキュメンテーション

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

imtranslate

イメージの平行移動

構文

B = imtranslate(A,translation)
[B,RB] = imtranslate(A,RA,translation)
___ = imtranslate(___,method)
___ = imtranslate(___,Name,Value)

説明

B = imtranslate(A,translation) は、translation に指定された並進ベクトルを使用してイメージ A を平行移動します。A が 3 つ以上の次元をもち、translation が 2 要素ベクトルである場合、imtranslate は、一度に 1 平面ずつ、2 次元平行移動を A に適用します。

[B,RB] = imtranslate(A,RA,translation) は、空間参照イメージ A を、関連付けられている空間参照オブジェクト RA と共に平行移動します。並進ベクトル translation は、ワールド座標系にあります。この関数は、平行移動された空間参照イメージ B を、関連付けられている空間参照オブジェクト RB と共に返します。

___ = imtranslate(___,method) は、method で指定された内挿法を使用して、イメージ A を平行移動します。

___ = imtranslate(___,Name,Value) は、平行移動のさまざまな特性を制御する名前と値のペアを使用して、入力イメージを平行移動します。

すべて折りたたむ

イメージをワークスペースに読み取ります。

I = imread('pout.tif');

イメージを平行移動します。

J = imtranslate(I,[25.3, -10.1],'FillValues',255);

元のイメージと平行移動したイメージを表示します。

figure
imshow(I);
title('Original Image');

set(gca,'Visible','on');
figure
imshow(J);
title('Translated Image');

set(gca,'Visible','on');

イメージをワークスペースに読み取ります。

I = imread('pout.tif');

イメージを平行移動します。OutputView パラメーターを使用して、平行移動したイメージ全体が表示されるように指定します。

J = imtranslate(I,[25.3, -10.1],'FillValues',255,'OutputView','full');

元のイメージと平行移動したイメージを表示します。

figure
imshow(I);
title('Original Image');
set(gca,'Visible','on');

figure
imshow(J);
title('Full Translated Image');
set(gca,'Visible','on');

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

X、Y 方向の平行移動を適用します。

mriVolumeTranslated = imtranslate(mriVolume,[40,30,0],'OutputView','full');

ボリュームの中心を通る軸スライス平面を表示することによって平行移動を可視化します。X 方向と Y 方向に移動しています。

sliceIndex = round(sizeIn(3)/2);
axialSliceOriginal   = mriVolume(:,:,sliceIndex);
axialSliceTranslated = mriVolumeTranslated(:,:,sliceIndex);

imshow(axialSliceOriginal);

imshow(axialSliceTranslated);

入力引数

すべて折りたたむ

平行移動するイメージ。任意のクラスの非スパース数値配列 (uint64 および int64 を除く) または論理配列として指定します。

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

入力イメージ A に関連付けられている空間参照情報。空間参照オブジェクト imref2d または imref3d として指定します。

並進ベクトル。[Tx Ty] (2 次元入力用) や [Tx Ty Tz] (3 次元入力用) など、2 要素または 3 要素の非スパース、実数値の数値ベクトルとして指定します。小数値も指定できます。

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

内挿法。次のいずれかの値で指定します。

説明
'cubic'3 次内挿。

メモ

3 次内挿は、元の範囲外のピクセル値を生成します。

'linear'線形内挿
'nearest'

最近傍内挿。出力ピクセル値として、対象となる位置の中に存在している値を割り当てます。周りの他のピクセルは、考慮に入れません。

データ型: char

名前/値のペアの引数

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

例: mriVolumeTranslated = imtranslate(mriVolume,[40,30,0],'OutputView','full');

すべて折りたたむ

出力ワールド座標範囲。'OutputView' と次のいずれかの値で構成されるコンマ区切りのペアとして指定します。

説明
'same'出力ワールド座標範囲は入力イメージと同じです。
'full'出力ワールド座標範囲は、入力イメージと平行移動された出力イメージの両方を含む四角形の境界です。

データ型: char

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

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

  • A が 3 次元で、translation が 3 要素ベクトルである場合、FillValues はスカラーでなければなりません。

  • A が N 次元で、translation が 2 要素ベクトルである場合、FillValues は、スカラーまたは A の 3 ~ N 次元に一致するサイズの配列になります。たとえば、A が 200 x 200 x 3 の uint8 RGB イメージである場合、FillValues はスカラーまたは 3 行 1 列の配列となります。

  • A が 4 次元の場合、FillValues は、スカラーまたは配列になります。たとえば、A が 200 x 200 x 3 x 10 である場合、FillValues はスカラーまたは 3 行 10 列の配列となります。

    塗りつぶしの値の例は次のとおりです。

    塗りつぶしの値説明
    0 黒で塗りつぶす
    [0;0;0] 黒で塗りつぶす
    255白で塗りつぶす
    [255;255;255]白で塗りつぶす
    [0;0;255]青で塗りつぶす
    [255;255;0]黄色で塗りつぶす

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

出力引数

すべて折りたたむ

平行移動したイメージ。非スパース、実数値の数値配列または論理配列として返されます。B のクラスは、A のクラスと同じです。

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

ヒント

  • imtranslate は、整数値の translation ベクトル用に最適化されています。

  • 'OutputView''full' で、translation が非整数ピクセルである場合、imtranslate は出力空間参照オブジェクトのワールド座標範囲を最も近い整数ピクセルまで拡大します。これによって imtranslate は入力イメージと同じ解像度で元のイメージと平行移動したイメージの両方が含まれるようにします。それぞれのイメージ拡大部分は、イメージの片側に、並進ベクトルの指す方向で追加されます。たとえば、translation が X と Y の両方で正の非整数である場合、imtranslate は、入力イメージの解像度で 'full' の四角形境界が含まれるように、XWorldLimitsYWorldLimits の最大値を拡大します。

拡張機能

R2014a で導入

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