OCV_AdaptiveThreshold

31st December 2025 at 10:53pm

OCV_AdaptiveThreshold(適応的閾値処理)

1. 概要:画像処理の仕組み

画像全体で一つの閾値を用いる通常の二値化とは異なり、各ピクセルの周囲(局所領域)の明るさを分析して、場所ごとに最適な閾値を自動決定します。 これにより、照明ムラ(一部が極端に明るい、または暗い)がある写真でも、全域にわたってきれいに物体を切り出すことが可能になります。

2. GUIの使い方

  • maxValue: 閾値条件を満たした箇所に割り当てる輝度値です(通常は255)。
  • adaptiveMethod: 閾値計算のアルゴリズムを「平均値(MEAN)」か「ガウス加重平均(GAUSSIAN)」から選択します。
  • thresholdType: 二値化の出力形式(通常 または 白黒反転)を選択します。
  • blockSize: 閾値を計算するために参照する近傍のサイズです。
  • constSubtractedFromMean: 計算された平均値から差し引く定数です。ノイズの除去具合を調整します。

3. 実際の処理

以下の画像処理が行われています。

  1. ADAPTIVE_THRESH_MEAN_C(単純な平滑化)、ADAPTIVE_THRESH_GAUSSIAN_C(ガウシアンフィルタによる平滑化)のどちらかを選択します。
  2. 元画像を上記で設定した方法で平滑化します。カーネルのサイズはblockSizeです。
  3. 元画像と平滑化画像の差分処理を行います。
  4. 差分画像をconstSubstractedFromMeanで指定した閾値で2値化します。

差分画像は0近傍の画像になります。輝度変化により輝度が生じますので、constSubstractedFromMeanで指定した閾値で2値化します。ただし、正の変化しか出力されないので注意してください。

所望のエッジが負の変化の場合は、画像の輝度を反転してから(Edit ⇒ Invert)、本処理を行ってみてください。

ダイアログのthreshholdTypeのTHRESH_BINARY_INVは、最後の2値化での反転なので注意してください。

4. 注意点

  • 8-bit Grayscale 画像専用です。
  • blockSize は必ず 3以上の奇数 を指定してください。偶数や1以下の値を入力するとエラーになります。

HomeへIJToolsUsingOpenCVへ