Main Content

fspecial

事前定義型の 2 次元フィルターの作成

説明

h = fspecial(type) は、指定した type の 2 次元フィルター h を作成します。一部のフィルター タイプには、以下の構文で示すような追加パラメーターがオプションで存在します。fspecial は、h を相関カーネルとして返します。これは、imfilter で使用するのに適した形式です。

h = fspecial('average',hsize) はサイズ hsize の平均化フィルター h を返します。

h = fspecial('disk',radius) はサイズが 2*radius+1 の正方行列内の循環平均化フィルター (pillbox) を返します。

h = fspecial('gaussian',hsize,sigma) は回転対称なガウス ローパス フィルターを返します。サイズは hsize、標準偏差は sigma です。これは推奨されません。代わりに imgaussfilt または imgaussfilt3 を使用してください。

h = fspecial('laplacian',alpha) は 2 次元ラプラス演算子の形状を近似する 3 行 3 列のフィルターを返します。alpha はラプラス演算子の形状を制御します。

h = fspecial('log',hsize,sigma) は回転対称なガウスのラプラシアン フィルターを返します。サイズは hsize、標準偏差は sigma です。

h = fspecial('motion',len,theta) はイメージとカメラの線形移動で畳み込みを行った後、近似するフィルターを返します。len は移動の長さを指定し、theta は反時計回りの移動角度を指定します。フィルターは水平移動と垂直移動のベクトルになります。既定の len9、既定の theta0 です。これは 9 個のピクセルの水平移動に相当します。

h = fspecial('prewitt') は 3 行 3 列のフィルターを返します。これは垂直勾配を近似することで水平エッジを強調します。垂直エッジを強調するには、フィルター h' を転置します。

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]

h = fspecial('sobel') は 3 行 3 列のフィルターを返します。これは垂直勾配を近似することで平滑化効果を使用して水平エッジを強調します。垂直エッジを強調するには、フィルター h' を転置します。

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]

すべて折りたたむ

イメージを読み取り、それを表示します。

I = imread('cameraman.tif');
imshow(I);

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

モーション フィルターを作成し、それを使用してイメージをぼかします。ぼかしたイメージを表示します。

H = fspecial('motion',20,45);
MotionBlur = imfilter(I,H,'replicate');
imshow(MotionBlur);

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

ディスク フィルターを作成し、それを使用してイメージをぼかします。ぼかしたイメージを表示します。

H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate'); 
imshow(blurred);

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

入力引数

すべて折りたたむ

フィルターのタイプ。次のいずれかの値に指定します。

説明

'average'

平均化フィルター

'disk'

循環平均化フィルター (pillbox)

'gaussian'

ガウス ローパス フィルター。これは推奨されません。代わりに imgaussfilt または imgaussfilt3 を使用してください。

'laplacian'

2 次元ラプラス演算子を近似する

'log'

ガウスのラプラシアン フィルター

'motion'

カメラの線形移動を近似する

'prewitt'

プレウィット水平エッジ強調フィルター

'sobel'

ソーベル水平エッジ強調フィルター

データ型: char | string

フィルターのサイズ。正の整数または正の整数の 2 要素ベクトルとして指定します。h の行や列の数を指定するにはベクトルを使用します。スカラーを指定すると、h は正方行列です。

'average' フィルター タイプと共に使用する場合、既定のフィルター サイズは [3 3] です。ガウスのラプラシアン ('log') フィルター タイプと共に使用する場合、既定のフィルター サイズは [5 5] です。

データ型: double

円板型フィルターの半径。正の数値として指定します。フィルターは、サイズ 2*radius+1 の正方行列です。

データ型: double

標準偏差。正の数値として指定します。

データ型: double

ラプラス演算子の形状。範囲が [0, 1] の数値として指定します。alpha0 として指定して、4 近傍ラプラシアン フィルターを取得します。

[ 0  1 0 
  1 -4 1 
  0  1 0 ]

データ型: double

カメラの線形移動。数値スカラー (ピクセル単位) として指定します。

データ型: double

カメラの動きの角度 (度単位)。数値スカラーとして指定します。角度は水平から反時計回りの方向に測定します。

データ型: double

出力引数

すべて折りたたむ

相関カーネル。行列として返されます。

データ型: double

アルゴリズム

平均化フィルター:

ones(n(1),n(2))/(n(1)*n(2))

ガウス フィルター:

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=hg(n1,n2)n1n2hg

ラプラシアン フィルター:

2=2x2+2y2

2=4(α+1)[α41α4α41α411α4α41α4α4]

ガウスのラプラシアン (LoG) フィルター:

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=(n12+n222σ2)hg(n1,n2)σ4n1n2hg

fspecial はカーネルの全要素の合計がゼロに必ずなるように、方程式をシフトします (ラプラス カーネルと同様)。均一領域の畳み込み結果は常にゼロになります。

モーション フィルター:

  1. 引数 lentheta で指定される長さと角度を持ち、中心係数 h で中心に配置される理想的な線分を作成します。

  2. 各係数位置 (i,j) について、その位置と理想的な線分との最短距離を計算します。

  3. h = max(1 - nearest_distance,0);

  4. h:h = h/(sum(h(:))) を正規化します。

拡張機能

バージョン履歴

R2006a より前に導入