framework-chl-temp / builderDataset.py
builderDataset.py
Raw
import numpy as np
import pandas as pd
import cv2
import glob
import os

# Función para cargar las imágenes y las máscaras automáticamente
def load_images_and_masks(base_dir):
    chlorophyll_images = []
    mask_images = []

    # Rutas a las carpetas de imágenes
    chlorophyll_dir = os.path.join(base_dir, 'modis_clo')
    mask_dir = os.path.join(base_dir, 'modis_cloud')

    # Cargar imágenes de clorofila
    for month in range(9):
        chlorophyll_path = glob.glob(os.path.join(chlorophyll_dir, f'clora_{month:02d}_*.tif'))[0]
        img = cv2.imread(chlorophyll_path, cv2.IMREAD_UNCHANGED)  # Asegúrate de cargar la imagen sin cambios
        chlorophyll_images.append(img.astype(np.float32))  # Convertir a tipo flotante si es necesario

    # Cargar imágenes de máscaras
    for month in range(9):
        mask_path = glob.glob(os.path.join(mask_dir, f'cloud_{month:02d}_*.tif'))[0]
        mask = cv2.imread(mask_path, cv2.IMREAD_UNCHANGED)  # Asegúrate de cargar la imagen sin cambios
        mask_images.append(mask.astype(np.float32))  # Convertir a tipo flotante si es necesario

    return chlorophyll_images, mask_images

# Función para crear los conjuntos de datos
def create_datasets(chlorophyll_images, mask_images):
    datasets = [[] for _ in range(8)]

    # Dimensiones de las imágenes
    height, width = chlorophyll_images[0].shape

    # Iterar sobre cada píxel de las imágenes
    for i in range(height):
        for j in range(width):
            values = []

            # Revisar los meses desde septiembre hacia enero
            for month in range(8, -1, -1):
                if mask_images[month][i, j] == 1:

                    values.append(chlorophyll_images[month][i, j])
                else:
                    break

            # Si se encontraron valores válidos, se añaden al conjunto de datos correspondiente
            if len(values) > 1:
                datasets[len(values) - 2].append(values[::-1])

    return datasets

# Función para guardar los conjuntos de datos en archivos CSV
def save_datasets(datasets):
    for idx, dataset in enumerate(datasets):
        if dataset:  # Solo guardar si el conjunto de datos no está vacío
            df = pd.DataFrame(dataset)
            csv_filename = f'C:/Users/Personal/Documents/Periodo5/Images2023WCO/ImPack4/Corregistradas/DataSets/dataset_{idx+1}.csv'
            df.to_csv(csv_filename, index=False)

# Directorio base donde están las carpetas Chlorophyll_image y CloudMask
base_dir = 'C:/Users/Personal/Documents/Periodo5/Images2023WCO/ImPack4/Corregistradas'

# Cargar las imágenes y las máscaras
chlorophyll_images, mask_images = load_images_and_masks(base_dir)

# Crear los conjuntos de datos
datasets = create_datasets(chlorophyll_images, mask_images)

# Guardar los conjuntos de datos en archivos CSV
save_datasets(datasets)