Учебники

OpenCV — простой порог

Thresholding — это метод сегментации изображений, в общем он используется для создания бинарных изображений. Thresholding бывает двух типов, а именно: простой порог и адаптивный порог.

Простой порог

В простой операции порогового значения пикселям, значения которых превышают указанное пороговое значение, присваивается стандартное значение.

Вы можете выполнить простую пороговую операцию над изображением, используя метод threshold () класса Imgproc. Ниже приведен синтаксис этого метода.

threshold(src, dst, thresh, maxval, type)

Этот метод принимает следующие параметры —

  • src — Объект класса Mat, представляющий исходное (входное) изображение.

  • dst — Объект класса Mat, представляющий целевое (выходное) изображение.

  • thresh — переменная типа double, представляющая пороговое значение.

  • maxval — переменная типа double, представляющая значение, которое должно быть задано, если значение пикселя превышает пороговое значение.

  • тип — переменная целочисленного типа, представляющая тип порога, который будет использоваться.

src — Объект класса Mat, представляющий исходное (входное) изображение.

dst — Объект класса Mat, представляющий целевое (выходное) изображение.

thresh — переменная типа double, представляющая пороговое значение.

maxval — переменная типа double, представляющая значение, которое должно быть задано, если значение пикселя превышает пороговое значение.

тип — переменная целочисленного типа, представляющая тип порога, который будет использоваться.

пример

Следующая программа демонстрирует, как выполнить простую операцию порогового изображения для изображения в 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 .

Вы можете выбрать нужный тип пороговой операции, передав соответствующее предопределенное значение параметру с именем type для метода threshold () .

Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY );

Ниже приведены значения, представляющие различные типы пороговых операций и их соответствующие выходы.