ドキュメンテーション

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

fspecial

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

fspecial'gaussian' 構文で使用することは推奨されません。代わりに imgaussfilt または imgaussfilt3 を使用してください。

構文

h = fspecial(type)
h = fspecial('average',hsize)
h = fspecial('disk',radius)
h = fspecial('gaussian',hsize,sigma)
h = fspecial('laplacian',alpha)
h = fspecial('log',hsize,sigma)
h = fspecial('motion',len,theta)
h = fspecial('prewitt')
h = fspecial('sobel')

説明

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 (正) です。

sigma

h = fspecial('motion',len,theta) はイメージでたたみ込みを行った後、len ピクセルだけ反時計回りの角度 theta 度でカメラの線形移動を近似するフィルターを返します。フィルターは水平移動と垂直移動のベクトルになります。

  • フィルター係数 h を計算するには、'motion' について以下のようにします。

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

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

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

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

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

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

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

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

すべて折りたたむ

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

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

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

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

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

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

入力引数

すべて折りたたむ

フィルターのタイプ。以下のいずれかの string または文字ベクトルとして指定します。

説明

'average'

平均化フィルター

'disk'

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

'gaussian'

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

'laplacian'

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

'log'

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

'motion'

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

'prewitt'

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

'sobel'

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

例: h = fspecial('sobel')

データ型: char | string

フィルターのサイズ。数値スカラーまたはベクトルとして指定します。h の行や列の数を指定するにはベクトルを使用します。スカラーを指定すると、h は正方行列です。'average' フィルター タイプと共に使用する場合、既定のフィルター サイズは [3 3] です。ガウスのラプラシアン ('log') フィルター タイプと共に使用する場合、既定のフィルター サイズは [5 5] です。

データ型: double

円板型フィルターの半径。数値スカラーとして指定します。

データ型: double

標準偏差。スカラーとして指定します。

データ型: double

ラプラス演算子の形状。範囲が 0.0 から 1.0 の数値スカラーとして指定します。

データ型: double

カメラの線形移動。数値スカラー (ピクセル単位) として指定します。既定の len は 9、既定の theta は 0 です。これは 9 個のピクセルの水平移動に相当します。

データ型: double

カメラの動きの角度。数値スカラーとして反時計回りの方向に度単位で指定します。既定の len は 9、既定の theta は 0 です。これは 9 個のピクセルの水平移動に相当します。

データ型: double

出力引数

すべて折りたたむ

相関カーネル。double クラスの行列として返されます。

アルゴリズム

fspecial は以下を使用して平均化フィルターを作成します。

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

fspecial は以下を使用してガウス フィルターを作成します。

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

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

fspecial は以下を使用してラプラシアン フィルターを作成します。

2=2x2+2y2

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

fspecial は以下を使用してガウスのラプラシアン (LoG) フィルターを作成します。

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

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

拡張機能

R2006a より前に導入

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