Matrox イメージング ライブラリ (MIL) エッジ検出モジュール

      MIL画像処理ライブラリを学習する過程の一部を記録します。

Edge Finder のソース コード:

 // 分配一个边缘检测缓存.
 MIL.MedgeAlloc(MilSystem, MIL.M_CONTOUR, MIL.M_DEFAULT, ref MilEdgeContext);

// 分配一个结果缓存.
MIL.MedgeAllocResult(MilSystem, MIL.M_DEFAULT, ref MilEdgeResult);

// 下面这两句是自定义计算一些边缘特征:M_MOMENT_ELONGATION和M_FERET_MEAN_DIAMETER
MIL.MedgeControl(MilEdgeContext, MIL.M_MOMENT_ELONGATION, MIL.M_ENABLE);
MIL.MedgeControl(MilEdgeContext, MIL.M_FERET_MEAN_DIAMETER + MIL.M_SORT1_DOWN, MIL.M_ENABLE);

// 计算边缘和特征
MIL.MedgeCalculate(MilEdgeContext, MilImage, MIL.M_NULL, MIL.M_NULL, MIL.M_NULL, MilEdgeResult, MIL.M_DEFAULT);

// 返回获取的边缘数量.
MIL.MedgeGetResult(MilEdgeResult, MIL.M_DEFAULT, MIL.M_NUMBER_OF_CHAINS + MIL.M_TYPE_MIL_INT, ref NumEdgeFound);

// 绘制边缘轮廓到图中。
MIL.MgraColor(MIL.M_DEFAULT, EdgeDrawColor);
MIL.MedgeDraw(MIL.M_DEFAULT, MilEdgeResult, GraphicList, MIL.M_DRAW_EDGES, MIL.M_DEFAULT, MIL.M_DEFAULT);

     上記のコードは、エッジ検出の一般的な手順を紹介しているだけであり、実際の画像に合わせて変更する必要があるパラメータがまだ多くあります。以下は、Edge で最も一般的に使用される MedgeControl の概要です。

       MedgeControl 説明 この関数は、エッジ ファインダー コンテキストまたはエッジ ファインダー結果バッファーに指定されたコントロールを設定します。エッジ ファインダー コンテキストの場合、これらの設定は MedgeCalculate 操作の実行を制御し、MedgeCalculate が計算するエッジ フィーチャを選択します。Edge Finder 結果バッファの場合、これらの設定は結果の事後操作を制御します。たとえば、結果の計算に使用されるソース イメージのスケーリングされた領域をペイントするには、ペイント コントロール値を適切に設定する必要があります。

 MedgeControl パラメータ: 

MIL.MedgeControl(MilEdgeContext, X, Y);//X, Y は 2 つのパラメータを表します

バツ 説明する Y 説明する
M_精度 エッジ抽出の精度を設定する

M_無効にする

M_高

DISABLE は無効を意味し、ピクセル精度で計算されます。

HIGH は、計算する非常に高いサブピクセル精度を指定することを意味します。

M_ANGLE_ACCURACY  エッジ検出時のコーナーの精度を設定します

M_高

M_LOW

文字通りに受け取ってください
M_CHAIN_ALL_NEIGHBORS  エッジチェーンの設定方法

M_無効にする

M_ENABLE

このパラメータを有効にするかどうかを制御します。つまり、より多くの情報を使用してエッジを構築します。以下に示すように。

バツ 説明する Y 説明する
M_DETAIL_LEVEL 画像抽出の詳細レベルを設定します。詳細レベルが低いほど、より多くのエッジが検出されます。もちろん、これらのエッジは必ずしも正確であるとは限りません。

M_高

M_MEDIUM

M_VERY_HIGH

詳細レベルを中、高、および非常に高に設定します。
M_FILTER_SMOOTHNESS 画像の滑らかさ処理、つまりノイズ除去の度合いを設定します。大きすぎると画像のエッジ情報が変化し、小さすぎるとノイズを除去できません。この値は、合理的に設定する必要があります。(エッジ検出に大きな影響を与えます)

M_DEFAULT

価値

デフォルト値は50、VALUEの設定範囲は[0, 100]です。
M_FILTER_TYPE エッジ検出の演算子を設定します。MIL で使用されるデフォルトの演算子は SHEN-CASTAN であり、これは重い演算子です。

M_デリチェ

M_FREI_CHEN

M_プレウィット

M_SHEN

M_ソベル

いくつかの一般的な演算子については、次の図に式を示します。

バツ 説明する Y 説明する
M_FLOAT_MODE エッジのすべての処理を強制的に浮動小数点精度を使用して計算するかどうかを設定します。

M_無効にする

M_ENABLE

なし
M_MAGNITUDE_TYPE 各エッジでエッジ グラデーションの大きさを計算する方法を設定します。CONTOUR の場合、大きさはエッジ位置勾配ベクトルのノルムです。CREASTはエッジ位置の最大値です。

M_NORM

M_SQR_NORM

デフォルト: 輪郭の場合は M_SQR_NORM、CREAST の場合は M_NORM。

M_NORM は勾配の大きさを指し、M_SQR_NORM は勾配の大きさの 2 乗を指します。

M_オーバースキャン 境界画像を処理するためのスキャン タイプを設定します (IIR フィルター、このパラメーターは無視されます (SHEN や deriche など))

M_無効にする

M_ミラー

このパラメータがわかりません

 他にもたくさんあるので、まずはここに書いてみましょう。あとでゆっくり追加してね〜  

おすすめ

転載: blog.csdn.net/qq_37925923/article/details/132576806