Hello SeaDAS team,
I am processing Sentinel-2 Level-1C data in SeaDAS to generate a Chlorophyll-a product for a coastal region. The processing runs successfully, but the final chlor_a image shows distinct diagonal stripes or scan-line artifacts across the entire scene, which are especially noticeable over the open water areas.
My goal is to create a smoother, more uniform image without these artifacts. Could anyone advise on the best way to correct this? Is there a specific l2gen parameter, a calibration setting, or a post-processing tool within SeaDAS that is recommended for mitigating this effect for Sentinel-2 data?
What I'm using is: par = {
"ifile": l2gen_ifile,
"ofile": str(l2gen_ifile).replace(".SAFE/manifest.safe", ".L2.nc"),
"suite": "OC",
"l2prod": "DEFAULT",
"atmocor": 1,
"oxaband_opt": 0,
"gas_opt": 1,
"gas_transmittance_file": "none",
"aer_opt": -2,
"aer_wave_short": 740,
"aer_wave_long": 865,
}
How to Correct Scan-Line Striping in SeaDAS Chlorophyll-a Product from Sentinel-2?
-
OB.DAAC - SeanBailey
- User Services

- Posts: 64
- Joined: Mon Dec 16, 2024 8:43 am America/New_York
- Endorsed: 5 times
Re: How to Correct Scan-Line Striping in SeaDAS Chlorophyll-a Product from Sentinel-2?
l2gen has a filtering feature (defined by filter_opt and filter_file). There is a default filter file for MSI, but I don't think it is enabled by default (i.e. filter_opt=0 is set). You can try enabling it to see if that improves the result (filter_opt=1).
You can also try modifying the filter_file options. The default is in $OCDATAROOT/msi/msl12_filter.dat, the contents of which are below.
Regards,
Sean
You can also try modifying the filter_file options. The default is in $OCDATAROOT/msi/msl12_filter.dat, the contents of which are below.
Regards,
Sean
Code: Select all
#############################################################
#
# Filter description file for MSl12
#
# Format:
#
# function name, band (1-8), width (pixels), height (scans), minfill
#
# if width is specified as -1, a diamond-shaped kernel of max width and
# heighth equal to specified height will be used for the filtering window.
#
# If number of unmasked pixels in window is less than minfill, center
# pixel will be masked and flagged as FILTER_FAILURE. A default value
# for minfill will be computed if -1 is specified.
#
# Example:
#
# ltrmed, 7, 5, 5, -1
# ltrmed, 8, 5, 5, 13
#
# Filter Functions:
#
# dilate - expands a specified mask (selected by band)
# ltmean - averaging over Lt(band)
# ltmed - median filtering on Lt(band)
# ltrmean - averaging over Lt(band) - Lr(band)
# ltrmed - median filtering over Lt(band) - Lr(band)
# ltriqmean - averaging over the inter-quartile range of Lt(band) - Lr(band)
#
#############################################################
ltmean, 1, 7, 7, 1
ltmean, 2, 7, 7, 1
ltmean, 3, 7, 7, 1
ltmean, 4, 7, 7, 1
ltmean, 5, 7, 7, 1
ltmean, 6, 7, 7, 1
ltmean, 7, 7, 7, 1