EP03_04 📊 Equalización de Histograma (L bits)
En imágenes de satélite de teleobservación, la variación de iluminación a lo largo del día produce imágenes de bajo contraste. La equalización de histograma se aplica automáticamente en satélites como el Landsat para redistribuir los tonos, revelando detalles de vegetación, relieve y zonas urbanas invisibles en la imagen original.
Ver en la Figura 3.29 una simulación de este EP.
📋 Directrices de Implementación
Dimensiones: Leer los enteros \(L\) (líneas), \(C\) (columnas) y \(B\) (número de bits, con \(L_{\max} = 2^B\) ).
Datos: Leer la matriz de píxeles \(f\) con valores en \([0, 2^B - 1]\) .
Histograma: Calcular \(h[k]\) = número de píxeles con intensidad \(k\) , para \(k = 0 \ldots 2^B-1\) .
Probabilidad: \(p[k] = h[k] / (L \cdot C)\) .
CDF: \(\text{cdf}[k] = \sum_{j=0}^{k} p[j]\) ; función de distribución acumulada.
LUT: \(\text{lut}[k] = \text{round}\left(\text{cdf}[k] \cdot (2^B - 1)\right)\) ; Look-Up Table (tabla de consulta).
Aplicación: \(g[i,j] = \text{lut}[f[i,j]]\) .
Salida: Mostrar la matriz equalizada \(L \times C\) .
📌 Restricciones Computacionales
Redondeo: Usar redondeo matemático (round) en la LUT.
Bits: El número de niveles es \(2^B\) (ej.: \(B=3 \Rightarrow 8\) niveles, \(B=8 \Rightarrow 256\) niveles).
CDF acumulada: \(\text{cdf}[k] = \sum_{j=0}^{k} p[j]\) , con \(\text{cdf}[2^B-1] = 1.0\) .
🧠 Fundamentación Teórica
1
Histograma
\(h[k] \leftarrow\) nº píxeles con intensidad \(k\)
2
Probabilidad
\(p[k] = h[k] / (L \cdot C)\)
3
CDF
\(\text{cdf}[k] = \sum_{j=0}^{k} p[j]\)
4
LUT
\(\text{lut}[Look-Up Table (tabla de consulta)k] = \text{round}(\text{cdf}[k] \cdot (2^B-1))\)
5
Aplicación
\(g[i,j] = \text{lut}[f[i,j]]\)
📦 Especificación de Entrada y Salida (VPL)
Entrada:
Línea 1: Entero \(L\) .
Línea 2: Entero \(C\) .
Línea 3: Entero \(B\) (número de bits).
Líneas siguientes: Elementos enteros de la matriz.
Salida:
Matriz equalizada en \(L\) líneas y \(C\) columnas.
📌 Ejemplos
5
5
3
3 4 2 3 4
4 3 3 4 3
2 3 4 3 2
3 4 3 2 3
4 3 2 3 4
5 7 1 5 7
7 5 5 7 5
1 5 7 5 1
5 7 5 1 5
7 5 1 5 7
Ejemplo 3 bits del capítulo
1
4
3
0 0 7 7
0 0 7 7
Histograma bimodal extremo
Figura 3.29: Simulador EP03_04: Ecualización de Histograma (Niveles L = 2^B)
%% writefile EP03_04.py
# Código Python
TestSuite("EP03_04.py" ).run()
✔️ EP03_04.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP03_04.cases
🔍 Probando Python: EP03_04.py
⚠️ EP03_04.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.