👆 Clic izquierdo oscurece (−25) y clic con el botón derecho aclara (+25) los píxeles de la entrada. Observe el umbral óptimo T* ajustarse dinámicamente al histograma.
T* = −
Elegir manualmente el umbral \(T\) funciona cuando la iluminación es estable, pero en microscopía digital y en inspección de láminas de sangre, cada muestra tiene un contraste diferente — un umbral fijo fallaría de imagen en imagen. El método de Otsu resuelve esto encontrando, por sí solo, el umbral que maximiza la separación estadística entre las dos clases de píxeles, haciendo la segmentación automática y adaptativa. Ver en Figura 4.31 una simulación de este EP.
Dimensiones: Leer los enteros \(L\) (filas) y \(C\) (columnas).
Datos: Leer los valores enteros de la matriz original fila por fila.
Histograma: Construir el histograma \(h[i]\), \(i=0,\dots,255\), contando cuántos píxeles tienen valor \(i\).
Búsqueda del umbral: Para cada candidato \(T\) de \(1\) a \(255\), calcular la varianza entre clases: \[ \sigma_B^2(T) = \frac{n_0 \cdot n_1}{N^2}\,(m_0 - m_1)^2 \] donde \(n_0,n_1\) son las cantidades de píxeles con valor \(<T\) y \(\geq T\), \(m_0,m_1\) son sus medias, y \(N=L\times C\).
Elección: El umbral óptimo \(T^*\) es el que maximiza \(\sigma_B^2(T)\) (en caso de empate, mantener el primero encontrado).
Aplicación: Binarizar la imagen usando \(T^*\), aplicando: \[ p' = \begin{cases} 255, & \text{si } p > T^* \\ 0, & \text{si } p \le T^* \end{cases} \]
cv2.THRESL_BINARY; los píxeles con valor exactamente igual a \(T^*\) se vuelven negros.| Concepto | Significado | Impacto |
|---|---|---|
| \(\sigma_B^2(T)\) alta | Clases bien separadas en \(T\) | \(T\) es un buen candidato a umbral |
| Histograma bimodal | Dos “picos” distintos | Otsu encuentra el valle entre ellos |
| Histograma unimodal | Un único “pico” | Otsu aún elige algún \(T\), pero la segmentación es poco fiable |
Entrada:
Salida:
| Entrada | Salida | Observación |
|---|---|---|
| 4 4 12 12 12 200 12 12 200 200 12 200 200 200 200 200 200 200 |
0 0 0 255 0 0 255 255 0 255 255 255 255 255 255 255 |
Histograma bimodal claro: 12 y 200 |
| 1 2 10 250 |
0 250 | Solo dos valores: \(T^*\) queda en el mayor |
👆 Clic izquierdo oscurece (−25) y clic con el botón derecho aclara (+25) los píxeles de la entrada. Observe el umbral óptimo T* ajustarse dinámicamente al histograma.
T* = −
%%writefile EP04_02.py
# Código PythonOverwriting EP04_02.py
TestSuite("EP04_02.py").run()✔️ EP04_02.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP04_02.cases
🔍 Probando Python: EP04_02.py
⚠️ EP04_02.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.