ドキュメンテーション

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

makeresampler

リサンプリング構造体の作成

構文

R = makeresampler(interpolant, padmethod)

説明

R = makeresampler(interpolant, padmethod) は、tformarrayimtransform を使って、分離可能なリサンプリング構造体を作成します。

引数 interpolant は、個々のリサンプラーが使用する内挿カーネルを指定します。最もシンプルな型において、interpolant は、次のいずれかの値を使います。

内挿

説明

'cubic'

3 次内挿

'linear'

線形内挿

'nearest'

最近傍内挿

カスタムの内挿カーネルを使用する場合、次のどちらかの型でセル配列として interpolant を指定できます。

{half_width, positive_half}

half_width は、対称な内挿カーネルの幅の半分を指定する正のスカラー値。positive_half は、閉区間 [0 positive_half] 上で、カーネルを等間隔でサンプリングする値を要素とするベクトルです。

{half_width, interp_fcn}

interp_fcn は区間
[0 positive_half] 内の入力値の配列に対する内挿カーネルの値を返す関数ハンドルです。

個々の次元に沿って、別々な内挿法を指定するには、両方の内挿仕様を組み合わせます。セル配列内の要素数は、変換次元の数と等しくなければなりません。たとえば、interpolant に対して、次の値を設定すると

{'nearest', 'linear', {2 KERNEL_TABLE}}

リサンプラーは、最初の変換次元に沿って最近傍内挿を、2 番目の次元に沿って線形内挿を、3 番目の次元に沿ってカスタム仕様の表をベースにした内挿を使います。

引数 padmethod は、入力配列のエッジの近くやエッジの外側の部分をマッピングしたときに、出力要素に値をどのように内挿するか、または、割り当てるかを制御します。次の表は、padmethod の値を一覧表示したものです。

パディング方法

説明

'bound'

塗りつぶしの値の配列から配列外にマッピングする点に値を割り当て、配列内にマッピングされる点に対しては、配列の境界要素を繰り返します ('replicate' と同様)。interpolant'nearest' の場合、このパディング方法では 'fill' と同じ結果が得られます。'bound' は、'fill' と同様ですが、塗りつぶしの値と入力イメージ値を組み合わせません。

'circular'

次元内で巡回的に要素を繰り返して、配列をパディングします。padarray と同じです。

'fill'

最近傍内挿を使用する以外は、平滑化したようなエッジをもつ出力配列を作成します。入力配列のエッジ (内側または外側) の近傍にマッピングする出力点に対して、入力イメージと塗りつぶしの値を組み合わせます。interpolant'nearest' の場合、このパディング方法では 'bound' と同じ結果が得られます。

'replicate'

配列の境界の要素を繰り返すことによって配列をパディングします。padarray と同じです。

'symmetric'

配列自体の鏡像で配列をパディングします。padarray と同じです。

'fill''replicate''circular''symmetric' の場合、tformarray または imtransform により実行できるリサンプリングは、2 つの論理ステップを経由します。

  1. 入力変換空間すべてを塗りつぶすために、配列 A を制限なくパディングします。

  2. 幾何学的なマップで指定される出力点で、リサンプリング カーネルとパディングされた A のたたみ込みを計算します。

変換されない各次元は、別々に取り扱われます。パディングは、性能やメモリの効率的な観点で使用する仮想的なものです (配列の添字の再マッピングにより実行)。カスタムのリサンプラーを実装する場合、これらの動作を実装することになります。

カスタム リサンプラー

上に記述した構文は、Image Processing Toolbox™ と共に出荷している分離可能なリサンプラー関数を使う resampler 構造体を作成します。次の構文を使って、ユーザー設定のリサンプラーを使用する resampler 構造体を作成することもできます。

R = makeresampler(PropertyName,PropertyValue,...)

関数 makeresampler は、次のプロパティをサポートしています。

プロパティ

説明

'Type'

'separable' または 'custom' のどちらかの値を必ず指定しなければなりません。'Type''separable' の場合、指定できる他のプロパティは 'Interpolant''PadMethod' だけであり、結果は makeresampler(interpolant,padmethod) 構文を使った場合と等価です。'Type''custom' の場合、'NDims' および 'ResampleFcn' の各プロパティを指定しなければなりません。オプションとして 'CustomData' プロパティを指定することもできます。

'PadMethod'

詳細は、「引数 padmethod」を参照してください。

'Interpolant'

詳細は、「引数 interpolant」を参照してください。

'NDims'

取り扱うことのできるカスタムのリサンプラーの次元を示す正の整数。Inf 値を使って、カスタム リサンプラーが任意の次元を取り扱うことができることを示します。'Type''custom' の場合、NDims が必要です。

'ResampleFcn'

リサンプリングを実行する関数のハンドル。関数は、次のインターフェイスと共に呼び出されます。

B = resample_fcn(A,M,TDIMS_A,TDIMS_B,FSIZE_A,FSIZE_B,F,R)

ATDIMS_ATDIMS_B、および F の各入力の詳細は、関数 tformarray のヘルプを参照してください。引数 M は配列で、B の変換添字空間を A の変換添字空間にマッピングするものです。AN の変換次元 (N = length(TDIMS_A)) をもち、BP の変換次元 (P = length(TDIMS_B)) をもつ場合、N > 1 の場合、ndims(M) = P + 1N == 1 の場合 P です。また、size(M,P + 1) = N です。

M の最初の P 次元は、出力変換空間に対応し、TDIMS_B にリストされる出力変換次元の順番に従って、置換されます (一般的に、TDIMS_ATDIMS_B は、昇順に並べ替える必要はありませんが、このような制限は、特定のリサンプラーでは課せられることがあります)。そして、size(M) の最初の P 要素は、B の変換次元のサイズを決定します。各点がマッピングされる入力変換座標は、TDIMS_A に与えられる順番に従って、M の最後の次元をまたいで配置されます。Mdouble でなければなりません。FSIZE_A および FSIZE_B は、A および B のフル サイズで、必要に応じて、TDIMS_ATDIMS_B、および size(A) と整合性を保つ必要がある場合、1 でパディングします。

'CustomData'

ユーザー定義。

y 方向で 3 次内挿を適用し、x 方向で最近傍内挿を適用する分離可能なリサンプラーを使って、y 方向にイメージを引き伸ばします (これは、双三次内挿を適用するよりも速く、処理結果も等価です)。

A = imread('moon.tif');
resamp = makeresampler({'nearest','cubic'},'fill');
stretch = maketform('affine',[1 0; 0 1.3; 0 0]);
B = imtransform(A,stretch,resamp);

R2006a より前に導入

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