Intro
Unha “batea” é un tipo de balsa ou estrutura flotante formada por un entramado de trabes de madeira combinadas con flotadores dos que colgan cordas, perpendiculares á propia balsa, que se mergullan na auga permitindo o crecemento do marisco, principalmente mexillóns.
Detectar estas en imaxes visibles de Observación da Terra (EO) é relativamente sinxelo (dada a resolución adecuada), agás polo feito de que Galicia está sempre notablemente nubrada. Polo tanto, tratar de monitorizalas con, por exemplo, Sentinel 2, significaría estar todo o inverno mirando para unha teito branco de nubes. Para construír un sistema de observación que funcione todo o ano, hai que soltar a cámara e coller un microondas (só parcialmente metafórico). A ferramenta ideal para o traballo sería un Radar de Apertura Sintética (SAR) como o do Sentinel 1. Ao radar non lle importan as nubes, de feito atravesaas. O que si lle importa, e moito, é a xeometría.
En circunstancias normais, con auga en calma, entra en xogo un fenómeno chamado reflexión especular. Os instrumentos SAR lanzan microondas desde a órbita cara á terra e logo tentan recoller o que o terreo reflectiu. A superficie lisa do océano desvía o pulso do radar lonxe do satélite, facendo que a auga en calma apareza escura. Isto contrasta facilmente coas bateas que son, esencialmente nesta configuración, reflectores de esquina (corner reflectors). O pulso golpea a auga plana xunto á balsa, rebota cara arriba na cara vertical dunha trabe e logo sae disparado directamente de volta ao satélite. Este dobre rebote crea un sinal forte que, a pesar do tamaño das propias bateas e da baixa resolución do Sentinel 1, debería ser facilmente visible nas imaxes.
Os datos
def normalize_band(data, vmin, vmax):
clipped = np.clip(data, vmin, vmax)
return ((clipped - vmin) / (vmax - vmin) * 255.0).astype(np.uint8)
vv_db = 10 * np.log10(vv_raw)
vh_db = 10 * np.log10(vh_raw)
diff_db = vv_db - vh_db
R_channel = normalize_band(vv_db, -25, 0)
G_channel = normalize_band(vh_db, -30, -5)
B_channel = normalize_band(diff_db, 0, 15)
A saída
Ao visualizar as imaxes queda claro que as bateas son visibles a pesar do seu tamaño (fíxate nos pequenos puntos sobre o mar negro nas imaxes de abaixo).
Composición RGB de falsa cor con mar calma
Polarización VV co mar en calma
Polarización VH co mar en calma
Composicción de falsa cor RGB co mar picado
Polarización VV co mar picado
Polarización VH co mar picado