En este artículo vamos a ver cómo detectar imágenes de bajo contraste con OpenCV, scikit-image usando Python
Una imagen de bajo contraste tiene una distinción mínima entre las partes claras y oscuras, lo que dificulta saber dónde comienza el límite de un objeto y dónde comienza el fondo de la escena. Por ejemplo
El de la izquierda es de bajo contraste y el de la derecha es una imagen de alto contraste. Con la detección de imágenes de bajo contraste, puede detectar mediante programación imágenes que no son suficientes para su proceso de procesamiento de imágenes.
Primero, veamos cómo podemos ver manualmente el contraste de una imagen usando histogramas. El histograma de una imagen de alto contraste (derecha) abarca todo el rango dinámico, pero el histograma de una imagen de bajo contraste (izquierda) solo cubre un rango estrecho, como se ve a continuación.
Ahora hagámoslo mediante programación usando el método is_low_contrast de la biblioteca scikit-image.
Acercarse:
- Importe todas las bibliotecas necesarias.
- Lea la imagen en modo de escala de grises.
- Compruebe si la imagen es una imagen de bajo contraste o una imagen de alto contraste utilizando algún valor de umbral proporcionado.
Sintaxis: is_low_contrast(img, “valor de umbral”)
Ejemplo 1: imagen de bajo contraste
Imagen de entrada:
Código:
Python3
import cv2 from skimage.exposure import is_low_contrast img = cv2.imread("low_contrast_img(1).jpg") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) if(is_low_contrast(gray,0.35)): cv2.putText(img, "low contrast image", (5, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2) else: cv2.putText(img, "high contrast image", (5, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2) cv2.imshow("output",img) cv2.imwrite("output.jpg",img) cv2.waitKey(0) # closing all open windows cv2.destroyAllWindows()
Producción:
Ejemplo 2: imagen de alto contraste
Aporte:
Código:
Python3
import cv2 from skimage.exposure import is_low_contrast img = cv2.imread("high contrast image(2).jpg") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) if(is_low_contrast(gray,0.35)): cv2.putText(img, "low contrast image", (5, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2) else: cv2.putText(img, "high contrast image", (5, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2) cv2.imshow("output",img) cv2.imwrite("output.jpg",img) cv2.waitKey(0) # closing all open windows cv2.destroyAllWindows()
Producción:
Además, puede encontrar los contornos en imágenes de alto contraste para el preprocesamiento de imágenes y extraer el objeto de la imagen.
Publicación traducida automáticamente
Artículo escrito por bhavyajain4641 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA