OCV_AdaptiveThreshold

 2nd April 2023 at 12:41pm

自動的にしきい値を計算をし2値化処理する関数です。画像の部分領域に対してしきい値を計算するので、輝度ムラがある画像に有効です。

ベースの考え方としては、「背景除去について」と同じです。ハマれば、1回の処理で所望を画像を取得できるので便利です。

実際の処理

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

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

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

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

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

サンプル

サンプルマクロを用意しました。以下の手順で試してください。

  • こちらからzipファイルをダウンロードしてください。
  • 全て展開します。
  • AdaptiveThreshold_Sample.ijmとDot_Blot.jpg、「File -> Open」で開きます。
  • AdaptiveThreshold_Sample.ijmを、「Macros -> Run Macro」で実行してください。

この画像は、通常の2値化では全てのドットを抽出することはできません。


HomeへIJToolsUsingOpenCVへ