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

Requisito previo: Umbral simple usando OpenCV

En la publicación anterior , se explicó la Umbralización simple con diferentes tipos de técnicas de umbralización. Otra técnica de umbralización es la umbralización adaptativa . En Simple Thresholding, se utilizó un valor global de umbral que se mantuvo constante en todo momento. Por lo tanto, un valor de umbral constante no ayudará en el caso de condiciones de iluminación variables en diferentes áreas. El umbral adaptativo es el método en el que el valor del umbral se calcula para regiones más pequeñas. Esto conduce a diferentes valores de umbral para diferentes regiones con respecto al cambio de iluminación. Usamos cv2.adaptiveThresholdpara esto.

Sintaxis : cv2.adaptiveThreshold(fuente, maxVal, adaptiveMethod, tipo de umbral, tamaño de bloque, constante)

Parámetros:
-> fuente : array de imágenes de entrada (canal único, 8 bits o punto flotante)
-> maxVal : valor máximo que se puede asignar a un píxel.
-> adaptiveMethod : el método adaptativo decide cómo se calcula el valor del umbral.

 cv2.ADAPTIVE_THRESH_MEAN_C : Valor de umbral = (Media de los valores del área de vecindad – valor constante). En otras palabras, es la media de la vecindad blockSize×blockSize de un punto menos la constante.

cv2.ADAPTIVE_THRESH_GAUSSIAN_C : Valor de umbral = (suma gaussiana ponderada de los valores de vecindad – valor constante). En otras palabras, es una suma ponderada de la vecindad blockSize×blockSize de un punto menos la constante.

-> ThresholdType : El tipo de umbralización a aplicar.
-> blockSize : Tamaño de un vecindario de píxeles que se utiliza para calcular un valor de umbral.
-> constante : un valor constante que se resta de la suma media o ponderada de los píxeles de la vecindad.

A continuación se muestra la implementación de Python:

# Python program to illustrate 
# adaptive 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
thresh1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
                                          cv2.THRESH_BINARY, 199, 5)
  
thresh2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                          cv2.THRESH_BINARY, 199, 5)
  
# the window showing output images
# with the corresponding thresholding 
# techniques applied to the input image
cv2.imshow('Adaptive Mean', thresh1)
cv2.imshow('Adaptive Gaussian', thresh2)
  
     
# De-allocate any associated memory usage  
if cv2.waitKey(0) & 0xff == 27: 
    cv2.destroyAllWindows() 

Imagen de entrada :

Salida :

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 *