
Proyecto BermejaPi — Entrada 12: La firma de la vida y el escudo atmosférico
En la entrada anterior descubrimos una paradoja: la física orbital nos decía que nuestro planeta debería estar helado a -18 °C, pero los sensores térmicos registran agua líquida y temperaturas templadas.
En esta misión, BermejaPi va a resolver el enigma respondiendo a dos preguntas clave: ¿existe una atmósfera que atrape el calor? y ¿hay señales espectrales compatibles con agua o masa biológica en la superficie?
1. El Índice de Invernadero (\Delta T)
Para verificar la presencia de una atmósfera sin descender al suelo, comparamos la temperatura medida por el sensor térmico del Sense HAT (T_{\text{real}}) con la temperatura teórica de equilibrio sin atmósfera (T_{eq}) que calculamos en la Entrada 11.
La diferencia entre ambas nos da el Efecto Invernadero Atmosférico:
\Delta T = T_{\text{real}} - T_{eq}Si \Delta T > 0, el planeta cuenta con gases que retienen la radiación infrarroja, manteniendo el agua en estado líquido.
2. De la imagen RGB al BNDVI (Cámara NoIR)
Para buscar vegetación u organismos fotosintéticos no podemos usar el índice verde estándar (VARI) porque la cámara de Astro Pi en la ISS es NoIR (sin filtro de infrarrojo) y lleva instalado un filtro azul.
En este sensor, el canal rojo captura el Infrarrojo Cercano (NIR) que reflejan intensamente las plantas. Por eso utilizamos el índice BNDVI (Blue Normalized Difference Vegetation Index):
\text{BNDVI} = \frac{\text{NIR} - \text{Blue}}{\text{NIR} + \text{Blue}}- Agua y rocas: Valores negativos o cercanos a 0.
- Nubes y nieve: Valores neutros.
- Vegetación / Actividad biológica: Valores altos entre 0.15 y 0.70.
Código en Python: Análisis Atmosférico y BNDVI
Python
import cv2
import numpy as np
from pathlib import Path
def evaluar_atmosfera(temp_sensor_c, temp_eq_c):
"""Calcula la retención térmica producida por los gases atmosféricos."""
delta_t = temp_sensor_c - temp_eq_c
tiene_atmosfera = delta_t > 5.0
return round(delta_t, 2), tiene_atmosfera
def calcular_bndvi(ruta_imagen="foto_01.jpg"):
"""Procesa la imagen NoIR para detectar firmas biológicas en el planeta."""
ruta = Path(ruta_imagen)
if not ruta.exists():
return 0.0, 0.0
img = cv2.imread(str(ruta))
if img is None:
return 0.0, 0.0
# Canal 0 = Azul (Blue) | Canal 2 = Infrarrojo Cercano (NIR) en cámara NoIR
blue = img[:, :, 0].astype(np.float32)
nir = img[:, :, 2].astype(np.float32)
denominador = nir + blue
denominador[denominador == 0] = 1e-6
matriz_bndvi = (nir - blue) / denominador
mascara_bio = matriz_bndvi > 0.15
bndvi_promedio = float(np.mean(matriz_bndvi))
porcentaje_bio = (int(np.sum(mascara_bio)) / (img.shape[0] * img.shape[1])) * 100.0
return round(bndvi_promedio, 3), round(porcentaje_bio, 2)
# Ejecución del análisis
delta_temp, atmosfera_detectada = evaluar_atmosfera(temp_sensor_c=21.5, temp_eq_c=-18.0)
bndvi_val, veg_pct = calcular_bndvi("foto_01.jpg")
print(f"Retención térmica: +{delta_temp} °C | Atmósfera confirmada: {atmosfera_detectada}")
print(f"Índice BNDVI Medio: {bndvi_val} | Cobertura biológica estimada: {veg_pct}%")
Resultados de la Misión y Lección de Ciencia de Datos
Al procesar las imágenes obtenidas por BermejaPi:
- Escudo Térmico Confirmado: Obtenemos una retención de \Delta T \approx +39.5 \text{ °C}. La atmósfera atrapa suficiente energía para mantener el agua en estado líquido.
- La Trampa de la Media (BNDVI = 0.008): El valor medio global del planeta es casi cero porque los océanos (valores negativos) cancelan matemáticamente las zonas continentales en el promedio global.
- Firma Biológica Real (Cobertura = 22%): Al filtrar mediante la máscara \text{BNDVI} > 0.15, descubrimos que un 22% de la superficie presenta concentraciones activas compatibles con vegetación o fotosíntesis.

Reto para la clase: Cartografiar lo desconocido
Ya sabemos que el planeta es masivo, tiene atmósfera y muestra un 22% de cobertura biológica. Pero, ¿dónde están exactamente esos continentes?
En la Entrada 13 utilizaremos los puntos clave de OpenCV (ORB) para solapar las imágenes consecutivas de la ISS y construir el primer mosaico cartográfico planetario de BermejaPi.



