フィルタ

Classes

ClassDescription
Public classCFviAddNoiseGauss
ノイズ付加フィルタ (gauss)
Public classCFviAddNoiseSaltAndPepper
ノイズ付加フィルタ (salt-and-pepper)
Public classCFviAddNoiseUniform
ノイズ付加フィルタ (uniform)
Public classCFviAnyCross
任意値クロスフィルタ
Public classCFviAnyCrossThreshold
任意値クロスフィルタ (閾値指定)
Public classCFviArbitraryKernelFilter
任意カーネルフィルタクラス
Public classCFviAverageFilter
平均化フィルタクラス
Public classCFviAverageMxN
平均化フィルタ (M×N)
Public classCFviBFilter
2値画像ノイズ除去フィルタ
Public classCFviCannyEdge
Canny エッジ検出クラス
Public classCFviDistanceTransform
距離変換フィルタクラス
Public classCFviDoGFilter
ガウシアン差分フィルタクラス
Public classCFviFilter
フィルタ基本クラス
Public classCFviFilterKernel
フィルタカーネル構造クラス
Public classCFviGaussian1DFilter
1次元ガウス微分フィルタクラス
Public classCFviGaussian2DFilter
2次元ガウス微分フィルタクラス
Public classCFviGaussianFilter
ガウシアンフィルタクラス
Public classCFviHarrisFilter
Harris コーナー検出クラス
Public classCFviKirsch
kirsch フィルタ
Public classCFviLaplacianFilter
ラプラシアンフィルタクラス
Public classCFviLoGFilter
ガウシアンラプラシアンフィルタクラス
Public classCFviMedianApproxFilter
近似メディアンフィルタクラス
Public classCFviMedianFilter
メディアンフィルタクラス
Public classCFviMedianMxN
メディアンフィルタ (MxN)
Public classCFviNms
非極大値の抑制(エッジ勾配を利用)
Public classCFviNmsCanny
非極大値の抑制(Canny 法によるエッジ検出で利用)
Public classCFviNmsDir
非極大値の抑制(エッジ勾配方向を利用)
Public classCFviNmsSimple
非極大値の抑制(単純)
Public classCFviPrewitt
prewitt フィルタ
Public classCFviRankFilter
ランクフィルタクラス
Public classCFviRobertsFilter
ロバーツフィルタクラス
Public classCFviRobinson
robinson フィルタ
Public classCFviSharp
鮮鋭化フィルタ
Public classCFviSobelDir
ソーベルフィルタ(エッジ角度画像出力)
Public classCFviSobelFilter
ソーベルフィルタクラス
Public classCFviSolodelFilter
孤立点除去フィルタクラス
Public classCFviStegerFilter
Steger 線抽出クラス
Public classCFviThinningFilter
細線化クラス
Public classCFviVarianceMxN
分散フィルタ (M×N)
Public classCFviZeroCross
ゼロクロスフィルタ
Public classCFviZeroCrossThreshold
ゼロクロスフィルタ (閾値指定)
Public classErrorCode
エラーコード(フィルタ関連)

Enumerations

EnumerationDescription
Public enumerationBFilterColor
対象色(2値画像ノイズ除去フィルタ用)
Public enumerationBFilterDirect
走査方向(2値画像ノイズ除去フィルタ用)
Public enumerationCannyEdgeThresholdMode
Canny エッジ検出の閾値モード
Public enumerationDerivativeDirection
微分方向
Public enumerationDistanceTransformMode
距離変換モード
Public enumerationKirschCalcMode
Kirsch 計算モード
Public enumerationLineMode
線の種類
Public enumerationMatrixType
マトリックス種別
Public enumerationMedianMxNBorderMode
ボーダーモード(MxN メディアンフィルタ用)
Public enumerationNeighborMode
近傍モード
Public enumerationObjectColor
対象色
Public enumerationPreset
フィルタプリセット
Public enumerationPrewittCalcMode
Prewitt 計算モード
Public enumerationProcMode
処理モード
Public enumerationRobinsonCalcMode
Robinson 計算モード
Public enumerationSobelCalcMode
Sobel計算モード
Public enumerationThinningMode
細線化のアルゴリズム

Remarks

ここには、フィルタ関連のクラスを集約しています。


トピック:


任意カーネルフィルタ:

本ライブラリでは、任意のフィルタを施すクラス CFviArbitraryKernelFilter を実装しています。
このクラスは、フィルタカーネル構造(CFviFilterKernel)をメンバに保有しており、 このデータ構造クラスに指定されたカーネルに従ってフィルタを施します。

フィルタカーネルは、 Resize(Int32, Int32) メソッドで領域の確保を行い、 Item[([( Int32, Int32])]) プロパティでカーネルの値を設定します。 または、 Preset(Preset) メソッドで既定のカーネルも生成できます。 既定のカーネルについては Preset 列挙値に定義された定数をご参照ください。

[↑戻る]


ガウシアンフィルタ:

ガウス関数による画像のぼかし処理、または1次微分・2次微分を行い輪郭抽出を行うクラスです。
画像のぼかし処理は、輪郭抽出の前処理として用いられます。

プレビュークラス内容
CFviGaussianFilter ガウス関数による画像のぼかし処理を行います。
内部では、微分次数 0 で CFviGaussian2DFilter を実行しています。
CFviGaussian2DFilter ガウス関数による画像のぼかし処理(または輪郭抽出)を行います。
内部では、 CFviGaussian1DFilter を X 方向・Y 方向のそれぞれに実行しています。
左図は、微分係数 2 を指定して、2次微分を行った例です。
CFviGaussian1DFilter ガウス関数による画像のぼかし処理(または輪郭抽出)を行います。
X 方向または Y 方向の何れかに対して処理を行います。
左図は、微分係数 1 を指定して、1次微分を行った例です。

[↑戻る]


ノイズ除去 (平滑化/メディアン法):

プレビュークラス内容
CFviAverageFilter 周囲画素との平均を求めてノイズ除去を行います。
単純平滑化と呼ばれる方法です。
CFviMedianFilter メディアン法によりノイズ除去を行います。
注目画素を中心とする3x3の領域(注目画素+8近傍)内で9つの値を濃度値の昇順にソートし、 注目画素を中間値に置き換えます。
CFviMedianApproxFilter メディアン法に似た方法でノイズ除去を行います。
このクラスは、従来製品 FVL/WIN の Lib_median との互換性の為に実装したものです。 前述の CFvMedianFilter と比べて処理速度は速いですが若干の誤差があります。
CFviRankFilter 注目画素を中心とする3x3の領域(注目画素+8近傍)内で9つの値を濃度値の昇順にソートし、 注目画素を指定のランクの値に置き換えます。
ランクに 1 を指定した時は、注目画素を近傍の最小値に置き換え、 ランクに 9 を指定した時は、注目画素を近傍の最大値に置き換えます。 (従来製品 FVL/WIN の Lib_min_filter、Lib_max_filter と等価です。)
ランクに 5 を指定した時は、前述の CFvMedianFilter と等価です。

[↑戻る]


輪郭抽出 (エッジ抽出):

プレビュークラス内容
CFviDoGFilter 2つのガウシアンフィルタ結果の差を出力します。
CFviLoGFilter ラプラシアンガウシアンフィルタを実行します。
CFviLaplacianFilter ラプラシアンフィルタを施します。
周囲画素との2次微分を求め、エッジを強調します。
CFviRobertsFilter ロバーツフィルタを施します。
CFviSobelFilter 3x3 のソーベル微分フィルタを施します。
CFviCannyEdge Canny 法によるエッジ検出を行います。

[↑戻る]


線(曲線)抽出:

ステガーフィルタ(CFviStegerFilter) は、 各画素において注目画素が線かどうかの判定を行うフィルタです。
線の強度と角度(線と直行するベクトルの向き)を出力します。

【入力画像】


【線強度】【線角度】
※上図は、視覚的に確認する為に UC8 (0~255) にスケーリングしたものです。

[↑戻る]


コーナー検出:

ハリスフィルタ(CFviHarrisFilter) は、 コーナー強度を求めるクラスです。 コーナー部分の強度が高く、直線部分の強度は低くなります。 (高い強度は正、低い強度は負になります)

【入力画像】


【出力画像】

※上図は、視覚的に確認する為に 負の値を黄色で、正の値を水色で表示したものです。

[↑戻る]


孤立点の除去:

CFviSolodelFilter は、2値画像上の白または黒の孤立点を除去します。
孤立点とは、注目画素の色とその周辺8近傍の全ての画素の色が異なる事を言います。 例えば、注目画素が白(濃度値:1)の時、周辺8画素が全て黒(濃度値:0)であれば、注目画素を黒にします。

【入力画像】


【出力画像】

[↑戻る]


距離変換:

CFviDistanceTransform は、 2値画像の各画素に対し距離変換を行って距離画像を生成するクラスです。

【入力画像】


【出力画像】

※上図は、視覚的に確認する為に距離画像の各画素を 16 倍しています。



距離画像の各画素は、前景(濃度値:1) から背景(濃度値:0) までの最短距離を表しています。 背景(濃度値:0) に対応する画素は、常に 0 になります。
距離の定義は、以下の4種類から指定できます。

  • シティブロック距離
  • チェスボード距離
  • 近似ユークリッド距離
  • ユークリッド距離
詳しくは、 距離変換モード(DistanceTransformMode) の解説をご参照ください。

距離画像の一般的な用途として『骨格化』があげられます。 骨格化は、距離が極大となる画素(線の中央)のみを抽出する処理です。 後述の『細線化』とは異なり、線幅が 1 にならない場合があります。

[↑戻る]


細線化:

CFviThinningFilter は、2値画像を細線化するクラスです。

【入力画像】【出力画像】

細線化とは、画像のトポロジー(連結性、穴、分岐)を保持しながら幅1の線分を得る方法です。 一般的な用途として図形認識や文字認識があげられます。
本ライブラリでは、 エッジ検出 で利用しています。 また、エッジ検出で得られた特徴点を利用した 特徴点応用マッチングハフ検出 にも派生します。

細線化のアルゴリズムについては、 ThinningMode の解説をご参照ください。

[↑戻る]