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_ミラー |
このパラメータがわかりません |
他にもたくさんあるので、まずはここに書いてみましょう。あとでゆっくり追加してね〜