ドキュメンテーション

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

colfilt

構文

B = colfilt(A,[m n],block_type,fun)
B = colfilt(A,[m n],[mblock nblock],block_type,fun)
B = colfilt(A,'indexed',...)

説明

B = colfilt(A,[m n],block_type,fun)Amn 列の各ブロックを一時行列の列に再配置してから関数 fun をこの行列に適用することによって、イメージ A を処理します。fun は関数ハンドルでなければなりません。関数 colfilt は必要に応じて A をゼロでパディングします。

colfiltfun を呼び出す前に im2col を呼び出すことで一時行列を作成します。fun を呼び出した後、colfiltcol2im を使用してこの行列の列を mn 列のブロックに再配置します。

block_type は、次のテーブルに示すいずれかの値になります。

メモ

colfilt は、実行できる演算の種類が blockproc および nlfilter と似ていますが、実行速度はそれらを大幅に上回ります。

説明

'distinct'

Amn 列の明確に区別されたブロックを一時行列の列に再配置してから、関数 fun をこの行列に適用します。fun から返される行列は一時行列と同じサイズでなければなりません。次に colfilt は、fun によって返された行列の列を mn 列の各ブロックに再配置します。

<span></span>

'sliding'

Amn 列の各スライディング近傍を一時行列の列に再配置してから、関数 fun をこの行列に適用します。fun は、一時行列の各列で単一の値を含んだ行ベクトルを返さなければなりません(sum などの列圧縮関数では、適切なタイプの出力が返されます)。colfilt は次に、fun によって返されたベクトルを A と同じサイズの行列に再配置します。

B = colfilt(A,[m n],[mblock nblock],block_type,fun) は行列 A を前述したとおりに処理しますが、メモリを節約するためにサイズを mblocknblock 列のブロックに分けて処理します。[mblock nblock] 引数を使用しても演算の結果は変わりません。

B = colfilt(A,'indexed',...)A をインデックス付きイメージとして処理し、A のクラスが uint8 または uint16 の場合に 0 をパディングするか、A のクラスが double または single の場合に 1 をパディングします。

メモ:

関数 colfilt はメモリを節約するために A をサブイメージに分割し、一度に 1 サブイメージずつ処理する場合があります。これは、fun が複数回呼び出される可能性があることと、呼び出しのたびに fun の最初の引数の列数が異なる可能性があることを意味します。

クラス サポート

入力イメージ A は、fun によってサポートされている任意のクラスとなります。B のクラスは fun からの出力のクラスに依存します。

すべて折りたたむ

この例では、列方向の近傍処理を使用して、各出力ピクセルを入力ピクセルの 5 行 5 列の近傍の平均値に設定する方法を説明します。

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

I = imread('tire.tif');

列方向フィルター処理を実行します。関数 mean は 5 行 5 列のピクセル近傍ごとに呼び出されます。

I2 = uint8(colfilt(I,[5 5],'sliding',@mean));

元のイメージとフィルター処理されたイメージを表示します。

imshow(I)
title('Original Image')

figure
imshow(I2)
title('Filtered Image')

R2006a より前に導入

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