For most remote sensing applications, there is a tradeoff between temporal and spatial resolution. Either you have high resolution data that is infrequently sampled, or you can have data that is updated frequently, but at a lower resolution.
In this project, I was curious whether I could use an image super resolution neural network to improve the resolution of remote sensing data in the ocean.
For context, chlorophyll a concentration is a proxy for the amount of phytoplankton in the ocean. For biological oceanography, phytoplankton concentrations are one of the most important features to monitor as it forms the base of the oceanic food chain.
The MODIS spectrometer aboard the Aqua satellite was launched in 2002. It images the earth every 1-2 days. I used level 3 preprocessed monthly composite images found here in order to fill in many of the gaps in coverage due to cloud cover, while still maintaining the spatial structure that is present in the chlorphyll and temperature distribution.
Because the sensing data is grayscale and the super resolution network expects an RGB image, I mapped the intensity to common matplotlib colormaps.
Level 3 products (products with the most preprocessing) were most accessible at 4km and 9km per pixel resolutions. For this test, I used the 9km data (low res) as the images to upsample, and 4km data (high res) as the ground truth image. I also compared the super resolution images against basic bicubic upsampling.
To see and run the code, you can launch a Google colab notebook here: Ocean Super Resolution
The network certainly accomplishes the goal of upsampling an image and sharpening the output. However, there are a fair number of artifacts present in the outputs.
It's questionable though whether the benefits of increased resolution would be strong enough to outweigh the downsides of introducing processing artifacts into the sample.