自動的にしきい値を計算をし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値化では全てのドットを抽出することはできません。