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.adaptiveThreshold
para 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()
Publicación traducida automáticamente
Artículo escrito por rishabhsingh1304 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA