Opencv-simple-threshold
提供:Dev Guides
OpenCV-単純なしきい値
しきい値処理は、画像のセグメンテーションの方法であり、一般に、バイナリ画像の作成に使用されます。 しきい値処理には、単純なしきい値処理と適応しきい値処理の2種類があります。
単純なしきい値処理
単純なしきい値操作では、指定されたしきい値より大きい値を持つピクセルに標準値が割り当てられます。
- Imgprocクラス*のメソッド* threshold()*を使用して、画像に対して簡単なしきい値操作を実行できます。このメソッドの構文は次のとおりです。
threshold(src, dst, thresh, maxval, type)
このメソッドは、次のパラメータを受け入れます-
- src -ソース(入力)画像を表すクラス Mat のオブジェクト。
- dst -宛先(出力)イメージを表すクラス Mat のオブジェクト。
- thresh -しきい値を表すdouble型の変数。
- maxval -ピクセル値がしきい値よりも大きい場合に与えられる値を表すdouble型の変数。
- type -使用されるしきい値のタイプを表す整数タイプの変数。
例
次のプログラムは、OpenCVの画像で単純なしきい値処理を実行する方法を示しています。
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class Thresh {
public static void main(String args[]) {
//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";
Mat src = Imgcodecs.imread(file);
//Creating an empty matrix to store the result
Mat dst = new Mat();
Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);
//Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap14/thresh_trunc.jpg", dst);
System.out.println("Image Processed");
}
}
上記のプログラムで指定された入力画像 thresh_input.jpg が次のものであると仮定します。
出力
プログラムを実行すると、次の出力が得られます-
Image Processed
指定したパスを開くと、次のように出力画像を観察できます-
他のタイプの単純なしきい値処理
前の例で示した THRESH_BINARY 操作に加えて、OpenCVはさまざまな種類のしきい値操作に対応しています。 これらのタイプはすべて、 Imgproc クラスの事前定義された静的フィールド(固定値)で表されます。
それぞれの事前定義値を* threshold()メソッドの *type という名前のパラメーターに渡すことで、必要なしきい値操作のタイプを選択できます。
Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);
以下は、さまざまなタイプのしきい値操作とそれぞれの出力を表す値です。
Operation and Description | Output |
---|---|
THRESH_BINARY | THRESH_BINARY |
THRESH_BINARY_INV | THRESH_BINARY_INV |
THRESH_TRUNC | THRESH_TRUNC |
THRESH_TOZERO | THRESH_TOZERO |
THRESH_TOZERO_INV | THRESH_TOZERO_INV |