Classes
Enumerations
Enumeration | Description | |
---|---|---|
BFilterColor | 対象色(2値画像ノイズ除去フィルタ用) | |
BFilterDirect | 走査方向(2値画像ノイズ除去フィルタ用) | |
CannyEdgeThresholdMode | Canny エッジ検出の閾値モード | |
DerivativeDirection | 微分方向 | |
DistanceTransformMode | 距離変換モード | |
KirschCalcMode | Kirsch 計算モード | |
LineMode | 線の種類 | |
MatrixType | マトリックス種別 | |
MedianMxNBorderMode | ボーダーモード(MxN メディアンフィルタ用) | |
NeighborMode | 近傍モード | |
ObjectColor | 対象色 | |
Preset | フィルタプリセット | |
PrewittCalcMode | Prewitt 計算モード | |
ProcMode | 処理モード | |
RobinsonCalcMode | Robinson 計算モード | |
SobelCalcMode | Sobel計算モード | |
ThinningMode | 細線化のアルゴリズム |
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) は、
各画素において注目画素が線かどうかの判定を行うフィルタです。
線の強度と角度(線と直行するベクトルの向き)を出力します。
【入力画像】
【線強度】 | 【線角度】 |
コーナー検出:
ハリスフィルタ(CFviHarrisFilter) は、
コーナー強度を求めるクラスです。
コーナー部分の強度が高く、直線部分の強度は低くなります。
(高い強度は正、低い強度は負になります)
【入力画像】
【出力画像】
※上図は、視覚的に確認する為に 負の値を黄色で、正の値を水色で表示したものです。
孤立点の除去:
CFviSolodelFilter は、2値画像上の白または黒の孤立点を除去します。
孤立点とは、注目画素の色とその周辺8近傍の全ての画素の色が異なる事を言います。
例えば、注目画素が白(濃度値:1)の時、周辺8画素が全て黒(濃度値:0)であれば、注目画素を黒にします。
【入力画像】
【出力画像】
距離変換:
CFviDistanceTransform は、
2値画像の各画素に対し距離変換を行って距離画像を生成するクラスです。
【入力画像】
【出力画像】
※上図は、視覚的に確認する為に距離画像の各画素を 16 倍しています。
距離画像の各画素は、前景(濃度値:1) から背景(濃度値:0) までの最短距離を表しています。
背景(濃度値:0) に対応する画素は、常に 0 になります。
距離の定義は、以下の4種類から指定できます。
- シティブロック距離
- チェスボード距離
- 近似ユークリッド距離
- ユークリッド距離
距離画像の一般的な用途として『骨格化』があげられます。 骨格化は、距離が極大となる画素(線の中央)のみを抽出する処理です。 後述の『細線化』とは異なり、線幅が 1 にならない場合があります。
細線化:
CFviThinningFilter は、2値画像を細線化するクラスです。
【入力画像】 | 【出力画像】 | |
細線化とは、画像のトポロジー(連結性、穴、分岐)を保持しながら幅1の線分を得る方法です。 一般的な用途として図形認識や文字認識があげられます。
本ライブラリでは、 エッジ検出 で利用しています。 また、エッジ検出で得られた特徴点を利用した 特徴点応用マッチング や ハフ検出 にも派生します。
細線化のアルゴリズムについては、 ThinningMode の解説をご参照ください。