OpenCV-適応しきい値

simple thresholding、しきい値はグローバルです。つまり、画像内のすべてのピクセルで同じです。 Adaptive thresholding は、より小さな領域に対してしきい値が計算される方法であるため、領域ごとに異なるしきい値があります。

OpenCVでは、この方法を使用して画像に対して適応しきい値操作を実行できます。 adaptiveThreshold()Imgprocクラス。このメソッドの構文は次のとおりです。

adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C)

このメソッドは、次のパラメーターを受け入れます-

  • src −クラスのオブジェクト Mat ソース(入力)画像を表します。

  • dst −クラスのオブジェクト Mat 宛先(出力)イメージを表します。

  • maxValue −ピクセル値がしきい値より大きい場合に与えられる値を表すdouble型の変数。

  • adaptiveMethod−使用する適応方法を表す整数型の変数。これは、次の2つの値のいずれかになります

    • ADAPTIVE_THRESH_MEAN_C −しきい値は近隣エリアの平均です。

    • ADAPTIVE_THRESH_GAUSSIAN_C −しきい値は、重みがガウスウィンドウである近隣値の重み付き合計です。

  • thresholdType −使用するしきい値のタイプを表す整数タイプの変数。

  • blockSize −しきい値の計算に使用されるピクセル近傍のサイズを表す整数型の変数。

  • C −両方の方法で使用される定数を表すdouble型の変数(平均または加重平均から減算)。

次のプログラムは、OpenCVの画像に対して適応しきい値操作を実行する方法を示しています。ここでは、タイプの適応しきい値を選択していますbinary そして ADAPTIVE_THRESH_MEAN_C しきい値法の場合。

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class AdaptiveThresh {
   public static void main(String args[]) throws Exception {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap14/thresh_input.jpg";
      
      // Reading the image
      Mat src = Imgcodecs.imread(file,0);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      Imgproc.adaptiveThreshold(src, dst, 125, Imgproc.ADAPTIVE_THRESH_MEAN_C,
         Imgproc.THRESH_BINARY, 11, 12);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap14/Adaptivemean_thresh_binary.jpg", dst);

      System.out.println("Image Processed");
   } 
}

以下が入力画像であると仮定します thresh_input.jpg 上記のプログラムで指定されています。

出力

プログラムを実行すると、次の出力が得られます-

Image Processed

指定したパスを開くと、次のように出力画像を確認できます。

他のタイプの適応しきい値処理

に加えて ADAPTIVE_THRESH_MEAN_C 適応方法として THRESH_BINARY 前の例で示したしきい値タイプとして、これら2つの値の組み合わせをさらに選択できます。

Imgproc.adaptiveThreshold(src, dst, 125, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 11, 12);

以下は、パラメーターの値のさまざまな組み合わせを表す値です。 adaptiveMethod そして thresholdType およびそれぞれの出力。

AdaptiveMethod / thresholdType ADAPTIVE_THRESH_MEAN_C ADAPTIVE_THRESH_GAUSSIAN_C:
THRESH_BINARY
THRESH_BINARY_INV