How to Correct Scan-Line Striping in SeaDAS Chlorophyll-a Product from Sentinel-2?

Use this Forum to find information on, or ask a question about, NASA Earth Science data.
Post Reply
mingyuewu
Posts: 1
Joined: Mon Sep 22, 2025 12:24 pm America/New_York
Answers: 0

How to Correct Scan-Line Striping in SeaDAS Chlorophyll-a Product from Sentinel-2?

by mingyuewu » Mon Sep 22, 2025 12:39 pm America/New_York

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,
}

Filters:

OB.DAAC - SeanBailey
User Services
User Services
Posts: 64
Joined: Mon Dec 16, 2024 8:43 am America/New_York
Answers: 0
Endorsed: 5 times

Re: How to Correct Scan-Line Striping in SeaDAS Chlorophyll-a Product from Sentinel-2?

by OB.DAAC - SeanBailey » Mon Sep 22, 2025 3:19 pm America/New_York

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

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

Post Reply