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

En las publicaciones anteriores, se explicaron la Umbralización simple y la Umbralización adaptativa . En Simple Thresholding, se utilizó el valor global de umbral, que se mantuvo constante en todo momento. En el umbral adaptativo, el valor de umbral se calcula para regiones más pequeñas con diferentes valores de umbral para diferentes regiones con respecto al cambio de iluminación.

En Otsu Thresholding , no se elige un valor de umbral, sino que se determina automáticamente. Se considera una imagen bimodal (dos valores de imagen distintos). El histograma generado contiene dos picos. Por lo tanto, una condición genérica sería elegir un valor de umbral que se encuentre en el medio de los dos valores máximos del histograma.

Usamos la función Tradicional y la usamos como bandera extra. cv2.threshold cv2.THRESH_OTSU

Sintaxis: cv2.threshold (fuente, valor umbral, valor máximo, técnica de umbral)

Parámetros:
-> fuente : Array de imagen 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á.

A continuación se muestra el código de Python que explica la técnica de umbralización de Otsu:

# Python program to illustrate
# Otsu 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 Otsu thresholding
# as an extra flag in binary 
# thresholding     
ret, thresh1 = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY + 
                                            cv2.THRESH_OTSU)     
  
# the window showing output image         
# with the corresponding thresholding         
# techniques applied to the input image    
cv2.imshow('Otsu Threshold', thresh1)         
       
# De-allocate any associated memory usage         
if cv2.waitKey(0) & 0xff == 27:
    cv2.destroyAllWindows()     

Aporte:

Producción:

El cálculo acepta que la imagen contiene dos clases de píxeles después de los píxeles de primer plano y de fondo, luego determina el límite ideal aislando las dos clases para que su dispersión consolidada sea insignificante.

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 *