Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Warper

多くのイメージに同じ幾何学的変換を効率的に適用します

説明

Warper オブジェクトは、線形幾何学的変換を特定のサイズの 2 次元イメージに適用します。

作成

説明

w = images.geotrans.Warper(tform,inputSize) は、幾何学的変換オブジェクト tform から Warper オブジェクトを作成し、InputSize プロパティを設定します。

w = images.geotrans.Warper(tform,inputRef) は入力イメージ inputRef の座標系を指定します。

w = images.geotrans.Warper(tform,inputRef,outputRef) は出力イメージ outputRef の座標系を指定します。この構文を使用すると、幾何学的変換のアプリケーションを特定の出力の関心領域に限定し、パフォーマンスを向上させることができます。

w = images.geotrans.Warper(sourceX,sourceY) は、幾何学的変換を実行するのに必要な入力イメージ座標 sourceXsourceY を指定します。

w = images.geotrans.Warper(___,Name,Value) は、1 つ以上の名前と値の引数を使用して Interpolation プロパティと FillValue プロパティを設定します。

たとえば、warper = images.geotrans.Warper(tform,size(im),"FillValue",1) は、元のイメージ外にあるピクセルに 1 の塗りつぶしの値を指定します。

入力引数

すべて展開する

幾何学的変換。次のいずれかの幾何学的変換オブジェクトとして指定します。

幾何学的変換オブジェクト説明
transltform2d平行移動変換
rigidtform2d剛体変換: 平行移動と回転
simtform2d相似変換: 平行移動、回転、等方性スケーリング
affinetform2dアフィン変換: 平行移動、回転、異方性スケーリング、鏡映、せん断
projtform2d射影変換

メモ

tform は、affine2d オブジェクトまたは projective2d オブジェクトとして指定することもできます。ただし、これらのオブジェクトは推奨されません。詳細については、互換性の考慮事項を参照してください。

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

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

入力イメージの座標。必要な出力イメージと同じサイズの 2 次元行列として指定します。sourceXsourceY の各 (x, y) インデックスは、対応する出力ピクセルの入力イメージ内の位置を指定します。

データ型: single

プロパティ

すべて展開する

入力イメージのサイズ。正の整数の 2 または 3 要素ベクトルとして指定します。

出力イメージの最初の 2 つの次元のサイズ。正の整数の 2 要素ベクトルとして指定します。

内挿法。"linear""nearest" または "cubic" として指定します。

データ型: char | string

入力イメージの境界外にある出力ピクセルに使用する値。数値スカラーとして指定します。Warper は塗りつぶしの値を入力イメージのデータ型にキャストします。

オブジェクト関数

warp幾何学的変換を適用します

すべて折りたたむ

同じサイズの一連のイメージを選択します。この例では、細胞が見える一連のイメージを使用しています。

imds = imageDatastore(fullfile(matlabroot,"toolbox","images","imdata","AT*"));

各イメージを 45 度回転させ、各イメージを縮小する相似幾何学的変換を作成します。この変換はイメージを平行移動しません。

scaleFactor = 0.5;
theta = 45;
translation = [0 0];
tform = simtform2d(scaleFactor,theta,translation);

幾何変換オブジェクト、tform、および入力イメージのサイズを指定して Warper オブジェクトを作成します。

im = readimage(imds,1);
warper = images.geotrans.Warper(tform,size(im));

処理するイメージの数を決定し、出力配列を事前に割り当てます。

numFiles = numel(imds.Files);
imr = zeros([warper.OutputSize 1 numFiles],"like",im);

Warper オブジェクトの関数 warp を呼び出して、各入力イメージに幾何学的変換を適用します。

for ind = 1:numFiles
    im = read(imds);
    imr(:,:,1,ind) = warp(warper,im);
end

出力イメージをモンタージュに可視化します。

montage(imr)

Figure contains an axes object. The axes object contains an object of type image.

ヒント

  • 入力イメージが m x n x p のサイズの RGB イメージまたは 3 次元グレースケール イメージの場合、warp は変換を各カラー チャネルまたは各色平面 p に個別に適用します。

アルゴリズム

同じサイズのイメージのバッチ全体にわたって同じ幾何学的変換を適用するように Warper が最適化されます。Warper は、ワープ プロセスを、変換された座標の計算 (1 回のみ) とイメージへの内挿 (イメージごとに実行) という 2 つのステップに分割することによって、この最適化を実現します。imwarp と比較すると、この方法は、中小サイズのイメージでは処理全体を大幅に高速化し、大きなイメージでは収穫逓減が発生します。

バージョン履歴

R2017b で導入

すべて展開する

参考

関数