Python | Técnicas de umbralización usando OpenCV | Set-1 (Umbral simple)

La umbralización es una técnica en OpenCV, que es la asignación de valores de píxel en relación con el valor de umbral proporcionado. En la determinación de umbrales, cada valor de píxel se compara con el valor de umbral. Si el valor del píxel es menor que el umbral, se establece en 0; de lo contrario, se establece en un valor máximo (generalmente 255). La umbralización es una técnica de segmentación muy popular, utilizada para separar un objeto considerado como primer plano de su fondo. Un umbral es un valor que tiene dos regiones a cada lado, es decir, por debajo del umbral o por encima del umbral. 
En Computer Vision, esta técnica de umbralización se realiza en imágenes en escala de grises. Entonces, inicialmente, la imagen debe convertirse en un espacio de color en escala de grises. 
 

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.

En OpenCV con Python, la función cv2.threshold se usa para el umbral. 
 

Sintaxis: cv2.threshold(fuente, valor de umbral, valor máximo, técnica de umbral) 
Parámetros: 
-> fuente : array de imágenes de entrada (debe estar en escala de grises). 
-> ThresholdValue: valor del umbral por debajo y por encima del cual los valores de píxeles cambiarán en consecuencia. 
-> maxVal : Valor máximo que se le puede asignar a un píxel. 
-> ThresholdingTechnique : el tipo de umbralización que se aplicará. 
 

Umbral simple

La técnica básica de Umbralización es la Umbralización Binaria. Para cada píxel, se aplica el mismo valor de umbral. Si el valor del píxel es menor que el umbral, se establece en 0; de lo contrario, se establece en un valor máximo.
Las diferentes Técnicas Simples de Umbralización son: 
 

  • cv2.THRESH_BINARY : si la intensidad de píxeles es mayor que el umbral establecido, el valor se establece en 255; de lo contrario, se establece en 0 (negro).
  • cv2.THRESH_BINARY_INV : Caso invertido o opuesto de cv2.THRESH_BINARY.
  • cv.THRESH_TRUNC : si el valor de intensidad de píxel es mayor que el umbral, se trunca al umbral. Los valores de píxel se establecen para que sean los mismos que el umbral. Todos los demás valores siguen siendo los mismos.
  • cv.THRESH_TOZERO : la intensidad de píxeles se establece en 0, para todas las intensidades de píxeles, menos que el valor de umbral.
  • cv.THRESH_TOZERO_INV : Caso invertido o opuesto de cv2.THRESH_TOZERO.

A continuación se muestra el código de Python que explica diferentes técnicas simples de umbral: 
 

Python3

# Python program to illustrate
# simple thresholding type on an image
     
# organizing imports
import cv2
import numpy as np
 
# path to input image is specified and 
# image is loaded with imread command
image1 = cv2.imread('input1.jpg')
 
# cv2.cvtColor is applied over the
# image input with applied parameters
# to convert the image in grayscale
img = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
 
# applying different thresholding
# techniques on the input image
# all pixels value above 120 will
# be set to 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)
 
# the window showing output images
# with the corresponding thresholding
# techniques applied to the input images
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)
   
# De-allocate any associated memory usage 
if cv2.waitKey(0) & 0xff == 27:
    cv2.destroyAllWindows()

Aporte: 
 

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por rishabhsingh1304 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *