ドキュメンテーション

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

imfilter

多次元イメージの N 次元フィルター処理

構文

B = imfilter(A,h)
gpuarrayB = imfilter(gpuArrayA,h)
___= imfilter(___,options,...)

説明

B = imfilter(A,h) は、多次元フィルター h を使用して多次元配列 A をフィルター処理します。配列 A は、logical か、または任意のクラスと次元の非スパース数値配列です。結果 B のサイズとクラスは A と同じです。

imfilter では、倍精度浮動小数点を使用して出力 B の個々の要素を計算します。A が整数配列または論理配列の場合、imfilter は指定された型の範囲を超える出力要素を切り捨て、小数部の値を丸めます。

gpuarrayB = imfilter(gpuArrayA,h) は、GPU で処理を実行します。gpuArrayAlogical または任意のクラスと次元の非スパース数値配列を含む gpuArray です。gpuArray と併用する場合、H はベクトルまたは 2 次元行列でなければなりません。この構文では Parallel Computing Toolbox™ が必要です。

___= imfilter(___,options,...) は、指定したオプションに従って、多次元フィルター処理を行います。

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

カラー イメージをワークスペースに読み取って表示します。

originalRGB = imread('peppers.png');
imshow(originalRGB)

関数 fspecial を使用して動きによるブレのフィルターを作成します。

h = fspecial('motion', 50, 45);

フィルターを元のイメージに適用し、動きによるブレがあるイメージを作成します。imfilter は、入力イメージ配列と同じデータ型の配列を出力するため、他のフィルター関数よりも、メモリ効率に優れています。この例では、出力は uint8 の配列です。

filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)

次に、replicate 境界オプションを指定して、イメージを再びフィルター処理します。

boundaryReplicateRGB = imfilter(originalRGB, h, 'replicate');
figure, imshow(boundaryReplicateRGB)

カラー イメージを gpuArray としてワークスペースに読み取り、表示します。

originalRGB = gpuArray(imread('peppers.png'));
imshow(originalRGB)

元のイメージ

フィルター h を作成し、これを使用して、カメラの線形移動を近似します。

h = fspecial('motion', 50, 45);

imfilter を使用して、フィルターをイメージ originalRGB に適用し、新しいイメージ filteredRGB を作成します。イメージが gpuArray として返されます。

filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)

フィルター処理されたイメージ

imfilter は、入力イメージ配列と同じデータ型の配列を出力するため、他のフィルター処理よりも、メモリ効率に優れています。この例では、出力は uint8 の配列です。

whos
Name               Size               Bytes  Class       Attributes

  filteredRGB      384x512x3              108  gpuArray              
  h                 37x37               10952  double                
  originalRGB      384x512x3              108  gpuArray                    

次に replicate 境界オプションを指定して、再びフィルター処理を行います。

boundaryReplicateRGB = imfilter(originalRGB, h, 'replicate');
figure, imshow(boundaryReplicateRGB)

Replicate 境界が指定されたイメージ

入力引数

すべて折りたたむ

フィルター処理されるイメージであり、任意のクラスと次元の非スパース数値配列として指定されます。

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

多次元フィルターであり、double の N 次元配列として指定されます。

データ型: double

フィルター処理されるイメージ。gpuArray オブジェクトとして指定します。gpuArray と併用する場合、imfilter では、gpuArrayA のデータ型に応じて単精度と倍精度いずれかの浮動小数点を使用して、gpuarrayB を計算します。gpuArrayA に倍精度値または uint32 値が含まれている場合、imfilter では倍精度値を使用します。他のすべてのデータ型に対しては、imfilter は単精度を使用します。gpuarrayA が整数配列または論理配列の場合、imfilter は指定された型の範囲を超える出力要素を切り捨て、小数部の値を丸めます。

フィルター処理を制御するオプション。文字ベクトルまたは数値として指定します。サポートされているすべてのオプションは、次の表のとおりです。

境界オプション

オプション

説明

境界オプション

X

配列の境界の外に位置する入力配列値は、暗黙的に値 X と仮定します。境界オプションを指定しない場合、既定値は 0 となります。

'symmetric'

配列の境界の外に位置する入力配列値を計算するには、配列の境界をまたぐ配列の鏡像を使用します。

'replicate'

配列の境界の外に位置する入力配列値は、最近傍の配列境界値と等しいと仮定します。

'circular'

配列の境界の外に位置する入力配列値は、入力配列が周期的であると暗黙的に仮定します。

出力サイズ

'same'

出力配列は、入力配列と同じサイズです。これは、出力サイズ オプションが指定されていない場合の既定の動作です。

'full'

出力配列は、すべてのフィルターを適用した結果です。そのため、入力配列より大きくなります。

相関とコンボリューションのオプション

'corr'

imfilter は、相関を使用して、多次元フィルター処理を実行します。これは、filter2 がフィルター処理を実行する場合と同じ方法です。相関オプションまたはコンボリューション オプションが指定されない場合、imfilter は相関を使用します。

'conv'

imfilter は、コンボリューションを使用して、多次元フィルター処理を実行します。

出力引数

すべて折りたたむ

フィルター処理されたイメージであり、サイズとクラスが入力イメージと同じ数値配列として返されます。

フィルター処理されたイメージであり、クラスとサイズが gpuarrayA と同じ gpuArray として返されます。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。汎用の MATLAB Host Computer ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、この関数によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細は、「Image Processing Toolbox のコード生成について」を参照してください。

コードを生成する際、入力イメージ A は 2 次元または 3 次元でなければなりません。入力引数 options の値は、コンパイル時の定数でなければなりません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

ヒント

  • この関数は、uint8uint16int16single および double の各データ型に対し、ハードウェアの最適化を利用してより速やかな実行ができます。

R2006a より前に導入

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