ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

fspecial

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

構文

h = fspecial(type)
h = fspecial(type, parameters)

説明

h = fspecial(type) は指定された type の 2 次元フィルター h を作成します。fspecialh を相関カーネルとして返します。これは imfilter と共に使用するのに適した形式です。type は以下のいずれかの値をもつ文字列です。

説明

average

平均化フィルター

disk

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

gaussian

ガウス ローパス フィルター

laplacian

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

log

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

motion

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

prewitt

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

sobel

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

h = fspecial(type, parameters) は、type によって指定されるフィルターと、選択したフィルターのタイプに固有の追加の parameters を変更して指定されるフィルターを受け入れます。この引数を省略した場合、fspecialparameters の既定値を使用します。

以下に各フィルター タイプの構文を示します。該当する場合、追加のパラメーターも示します。

  • h = fspecial('average', hsize) はサイズ hsize の平均化フィルター h を返します。引数 hsize は、h の行数と列数を指定するベクトル、または h が正方行列である場合はスカラーです。hsize の既定値は [3 3] です。

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

  • h = fspecial('gaussian', hsize, sigma) は回転対称なガウス ローパス フィルターを返します。サイズは hsize、標準偏差は sigma (正) です。hsizeh の行数と列数を指定するベクトルか、h が正方行列である場合はスカラーです。hsize の既定値は [3 3] です。sigma の既定値は 0.5 です。

  • h = fspecial('laplacian', alpha) は 2 次元ラプラス演算子の形状を近似する 3 行 3 列のフィルターを返します。パラメーター alpha はラプラス演算子の形状を制御し、範囲 0.0 ~ 1.0 内でなければなりません。alpha の既定値は 0.2 です。

  • h = fspecial('log', hsize, sigma) は回転対称なガウスのラプラシアン フィルターを返します。サイズは hsize、標準偏差は sigma (正) です。hsize は、h の行数と列数を指定するベクトルか、h が正方行列である場合はスカラーです。既定値は hsize に対しては [5 5]sigma に対しては 0.5 です。

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

    フィルター係数 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 ]

    垂直エッジを検出するか x 導関数を求めるには、h' を使用します。

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

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

コード生成

fspecial は、MATLAB からのコード生成をサポートします。効率のよい、製品レベルの品質をもつ C/C++ コードを生成できます。最良の結果を得るには、すべての入力はコンパイル時に定数でなければなりません。式や変数は、その値が変化しない限りは使用できます。コード生成をサポートするツールボックス関数の詳細な一覧を確認するには、「サポートされる関数」を参照してください。

クラス サポート

h のクラスは double です。

I = imread('cameraman.tif');
subplot(2,2,1); 
imshow(I); title('Original Image');

H = fspecial('motion',20,45);
MotionBlur = imfilter(I,H,'replicate');
subplot(2,2,2); 
imshow(MotionBlur);title('Motion Blurred Image');

H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate');
subplot(2,2,3); 
imshow(blurred); title('Blurred Image');

詳細

すべて展開する

アルゴリズム

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

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

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

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

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

参考

| | | | | | | |

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