Welcome to the TIF repository! This package includes the source code and examples of the Time-series-based Image Fusion (TIF) algorithm. The TIF algorithm was developed to produce 10 m Harmonized Landsat and Sentinel-2 (HLS) data by fusing 30 m Landsat 8-9 and 10 m Sentinel-2 A/B time series.
The TIF algorithm is designed to enhance the spatial resolution of Landsat 8-9 imagery from 30 m to 10 m by leveraging the higher resolution Sentinel-2 data. This method can be used to generate fine-resolution dense time series, i.e. 10 m Harmonized Landsat and Sentinel-2 (HLS) data.
- Spatial Resolution Enhancement: Improve Landsat 8 imagery resolution from 30 m to 10 m on any given date.
- Pixel-level Sensor-to-sensor Adjustment: Harmonize data from different satellite sources without bandpass adjustment.
- Robust Performance: Demonstrated robustness to temporal changes and varying land cover types.
- Parallel Computing Support: Accelerated by using massive computing cores.
To install the TIF package, you can clone the repository and ensure you have the required MATLAB toolboxes: Mapping Toolbox and Statistics and Machine Learning Toolbox.
git clone https://github.com/yourusername/TIF.git
To use the TIF algorithm, follow these steps:
- Prepare your Landsat 8 and Sentinel-2 time series data (save to pixels for sample-based analysis, save to lines for ROI-based analysis).
- Conduct the TIF algorithm to obtain TIF coefficient for each spectral band.
- Use the TIF coefficients to fuse the Landsat data and produce 10 m HLS time series.
Here's an example script to get you started:
We have included several demos in the examples directory to demonstrate the usage of the TIF algorithm. These examples cover different scenarios and use cases, helping you understand how to apply the algorithm to your own data.
Example 1_BasicUsage demonstrates the basic usage of the TIF algorithm on a single pixel. Here's a brief overview of the script.
addpath(genpath('path_to_TIF_functions'));
%% Load example data
data = load('Examples/Data/T18TXM_Lat_42.1566_Lon_-72.5847.mat');
L8_metadata = load('Examples/Data/L8_metadata.mat');
S2_metadata = load('Examples/Data/S2_metadata.mat');
%% Initialize the TIF algorithm
TIF_coefficient = runTIFSinglePixel(data, L8_metadata, S2_metadata, 'do_plot', true);
%% Run the fusion process to the time series
[clrx_L, prediction, clrx_S, clry_S] = predictClearSurfaceReflectanceTS(data, TIF_coefficient);
%% Merge Sentinel-2 and the predction values
[clrx_HLS, HLS_10m] = mergeL10S10TimeSeries(clrx_S, clry_S, clrx_L, prediction);
%% Display the results
band_plot = 6;
plot10mHLSTimeSeries(clrx_S, clry_S, clrx_L, prediction, band_plot);
Example 2_Advanced Usage shows advanced TIF conduction with user-defined parameters.
%% TIF with modified paramters of t_threshold, maxK, regress_method, and wfun
TIF_coefficient = runTIFSinglePixel(data, L8_metadata, S2_metadata,...
't_threshold',1,'maxK',1,'regress_method','robustfit','wfun','Sqrt',...
'msg', true,'do_plot', true,'save_figure',false);
The bashTIF.sh shows how to perform the TIF algorithm with imagery time series on the UConn HPC. Here's a brief overview of the script.
#!/bin/bash
#SBATCH --partition=general
#SBATCH --account=add-your-account
#SBATCH --ntasks=2
#SBATCH --array=1-60
#SBATCH --output=TIF_T18TXM.out
#SBATCH --mail-type=ALL
#SBATCH --mail-user=add-your-email-address
echo $SLURMD_NODENAME
cd add-your-TIF-directory
module load matlab
matlab -nojvm -nodisplay -nosplash -singleCompThread -r "batchTIF('task',$SLURM_ARRAY_TASK_ID, 'ntasks',$SLURM_ARRAY_TASK_MAX, 'ARDTiles','18TXM','hide_date','2021-06-16','analysis_scale','30to10');exit"
In this bash file, we applied the TIF algorithm to a subarea of T18TXM using 60 cores. Note: The input data area in the BIP format. Each line contains the time series of a subset image with 10 rows and 10980 cols on each row. To prepare your own input, run the StackS2Data.m.
To submit a HPC job, use the command below.
submit batchTIF.sh
We welcome contributions to the TIF project! If you would like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Commit your changes and push the branch to your fork.
- Submit a pull request to the main repository.
Reference: Our research paper "TIF: Time-series-based Image Fusion Algorithm" is submitted to the Remote Sensing of Environmet for review.
If you have any questions, please contact Zhe Zhu (zhe@uconn.edu) and Kexin Song (kexin.song@uconn.edu) at Department of Natural Resources and the Environment, University of Connecticut.