Inicio > Cursos > Computer Vision con Python > Histogramas y Mejora de Contraste
Computer Vision con PythonFundamentos de VisionLección 3 de 12

Histogramas y Mejora de Contraste

Un histograma de imagen muestra la distribucion de intensidades de pixeles. El eje X va de 0 (negro) a 255 (blanco), el eje Y muestra cuantos pixeles tienen esa intensidad.

Usos: • Diagnosticar problemas: imagen oscura = pixeles concentrados a la izquierda, sobreexpuesta = a la derecha • Ecualizar: redistribuir las intensidades para mejorar el contraste • CLAHE: ecualizacion adaptativa local, ideal para iluminacion desigual • Comparar imagenes: histogramas similares = imagenes con distribucion de color parecida

import cv2
import numpy as np

img = cv2.imread("foto.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Calcular histograma
hist = cv2.calcHist([gray], [0], None, [256], [0, 256])
# [imagen], [canal], mascara, [bins], [rango]
print(f"Intensidad mas comun: {np.argmax(hist)}")
print(f"Brillo promedio: {np.mean(gray):.0f}")

# Ecualizacion global — mejora contraste
equalizado = cv2.equalizeHist(gray)

# CLAHE — ecualizacion adaptativa (MUCHO mejor)
# Divide la imagen en bloques y ecualiza cada uno
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
mejorada = clahe.apply(gray)

# Histograma por canal (color)
colores = ("b", "g", "r")
for i, color in enumerate(colores):
    hist_canal = cv2.calcHist([img], [i], None, [256], [0, 256])
    print(f"Canal {color}: media={np.mean(img[:,:,i]):.0f}")

# Comparar histogramas (similitud entre imagenes)
hist1 = cv2.calcHist([img1], [0], None, [256], [0, 256])
hist2 = cv2.calcHist([img2], [0], None, [256], [0, 256])
cv2.normalize(hist1, hist1)
cv2.normalize(hist2, hist2)
similitud = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
print(f"Similitud: {similitud:.2f}")  # 1.0 = identicas
ConsejoUsa CLAHE en vez de equalizeHist. La ecualizacion global puede sobreexponer zonas claras al intentar arreglar zonas oscuras. CLAHE trabaja por bloques y da resultados mas naturales.
← Procesamiento de imagenesOperaciones Morfologicas →

Practica esta lección

Resuelve los ejercicios del curso de Computer Vision con Python en la app, gratis y con corrección automática.

Empezar a practicar