Рубрики

Python | Методы пороговых значений с использованием OpenCV | Set-1 (простая пороговая обработка)

Thresholding — это методика в OpenCV, которая представляет собой назначение значений пикселей по отношению к предоставленному пороговому значению. В пороговом значении каждое значение пикселя сравнивается с пороговым значением. Если значение пикселя меньше, чем пороговое значение, оно устанавливается в 0, в противном случае оно устанавливается в максимальное значение (обычно 255). Thresholding — очень популярный метод сегментации, используемый для отделения объекта, рассматриваемого в качестве переднего плана, от фона. Порог — это значение, которое имеет две области по обе стороны, то есть ниже порога или выше порога.
В Computer Vision этот метод пороговой обработки выполняется на изображениях в градациях серого. Поэтому изначально изображение должно быть преобразовано в цветовое пространство в оттенках серого.

If f (x, y) > T 
   then f (x, y) = 0 
else 
   f (x, y) = 255

where 
f (x, y) = Coordinate Pixel Value
T = Threshold Value.

В OpenCV с Python для порогового значения используется функция cv2.threshold .

Syntax: cv2.threshold(source, thresholdValue, maxVal, thresholdingTechnique)

Parameters:
-> source: Input Image array (must be in Grayscale).
-> thresholdValue: Value of Threshold below and above which pixel values will change accordingly.
-> maxVal: Maximum value that can be assigned to a pixel.
-> thresholdingTechnique: The type of thresholding to be applied.

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

Основной метод пороговой обработки — бинарный порог. Для каждого пикселя применяется одинаковое пороговое значение. Если значение пикселя меньше порогового значения, оно устанавливается равным 0, в противном случае устанавливается максимальное значение.

Различные простые методики пороговой обработки:

  • cv2.THRESH_BINARY : Если интенсивность пикселей превышает установленное пороговое значение, значение устанавливается на 255, иначе устанавливается на 0 (черный).
  • cv2.THRESH_BINARY_INV : инвертированный или противоположный случай cv2.THRESH_BINARY .
  • cv.THRESH_TRUNC : Если значение интенсивности пикселей превышает пороговое значение, оно усекается до порогового значения. Значения пикселей установлены равными порогу. Все остальные значения остаются прежними.
  • cv.THRESH_TOZERO : Интенсивность пикселей установлена cv.THRESH_TOZERO 0, для интенсивности всех пикселей меньше порогового значения.
  • cv.THRESH_TOZERO_INV : инвертированный или противоположный случай cv2.THRESH_TOZERO .

Ниже приведен код Python, объясняющий различные простые методики порогового уровня —

# Python программа для иллюстрации
# простой тип порога на изображении

      
# организация импорта

import cv2 

import numpy as np 

  
# указан путь к входному изображению и
# изображение загружается с помощью команды imread

image1 = cv2.imread('input1.jpg'

  
# cv2.cvtColor применяется поверх
# ввод изображения с примененными параметрами
# конвертировать изображение в градациях серого

img = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)

  
# применение разных порогов
# техника на входном изображении
# значение всех пикселей выше 120 будет
# быть установленным на 255

ret, thresh1 = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY)

ret, thresh2 = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY_INV)

ret, thresh3 = cv2.threshold(img, 120, 255, cv2.THRESH_TRUNC)

ret, thresh4 = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO)

ret, thresh5 = cv2.threshold(img, 120, 255, cv2.THRESH_TOZERO_INV)

  
# окно с выводом изображений
# с соответствующим порогом
# методы, применяемые к входным изображениям

cv2.imshow('Binary Threshold', thresh1)

cv2.imshow('Binary Threshold Inverted', thresh2)

cv2.imshow('Truncated Threshold', thresh3)

cv2.imshow('Set to 0', thresh4)

cv2.imshow('Set to 0 Inverted', thresh5)

    
# Отменить выделение любого связанного использования памяти

if cv2.waitKey(0) & 0xff == 27

    cv2.destroyAllWindows() 

Входные данные :

Выход:

Рекомендуемые посты:

Python | Методы пороговых значений с использованием OpenCV | Set-1 (простая пороговая обработка)

0.00 (0%) 0 votes