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

Пороговая обработка - это метод сегментации изображений, в основном он используется для создания двоичных изображений. Установление пороговых значений бывает двух типов: простое установление пороговых значений и адаптивное установление пороговых значений.

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

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

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

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

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

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

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

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

  • 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 класс.

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

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

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

Работа и описание Вывод
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV