to deglint the raw data
back to Help

1 - NO NEED for field data, nor for atmospheric correction
2 - this is demonstrated in this website, using a variety of hyper/multi spectral data
Requirements are
1 - homogeneous water body and atmosphere
2 - some coverage of optically deep water
3 - some coverage of dry land
Problems are
1 - the precision on estimated depth is found wanting, because the noise-equivalent change in radiance  of accessible data is too high for shallow water column correction work 
2 - radiance data should be preprocessed by the provider at level 1 in order to improve S/N ratio
3 - exponential decay: the deeper/darker the bottom, the poorer the performances
I keep digging
until suitable data
become available

How To Deglint

Compute a Model of the Sky_Glint
Write a model_textfile image_mGLINT.gli
Deglint and Linearize the image
  • -deglint/vRbaD/GlintM25.0
  • vRbaD
    • v   silent
    • V   verbose
    • R  RawDeglint=1 recommended    as Ls=Ls-LSKY. 
    • r   RawDeglint=0 deglint as Ls=MAX(La,Ls-LSKY)
    • b   BlankDeep=0 to deglint normally even if pure Glint is observed
    • B   BlankDeep=1 to write Ls=Lsw if Pure Glint is observed. This is automatically disabled if RawDeglint is enabled
    • a Adjacency=0
    • A Adjacency=1 to enable the correction of AdjacencyEffect/FloatingVegetals
    • D   DecreaseGlint   not in use
  • GlintM25.0
    • GlintMax: maximum value of glint
    • GlintMin=LswNIR
    • deglinting is limited to the range (GlintMin, GlintMax)
    • if LsNIR>GlintMax, pixel is left undeglinted
  • -D(d)eglint/ArBvS/DegTol/3,4_GlintM/FN/mDEGLINT_mGLINT/Gext[1]_Gext[2]_Gext[3]_Gext[4]
  • -D(d)eglint/A(a)R(r)B(b)V(v)S(s)/0.5/3,4_20/FN_7_8/2_23/1_700_400_900
  • -deglint/vRbaD/cloud/q/F1/L4/FN/mDEGLINT1/GlintM33
    • -Deglint RunDeglinter=1 to run the Deglinter
      • if Lsw[LastGlint]=0, Deglinter runs in automatic mode
    • -deglint RunDeglinter=0 to deglint while modeling
  • A(a) not compulsory
    • A Adjacency=1 to enable the correction of AdjacencyEffect/FloatingVegetals
    • a Adjacency=0
  • B(b) not compulsory
    • B BlankDeep=1 to write Ls=Lsw if Pure Glint is observed. This is automatically disabled if RawDeglint is enabled
    • b BlankDeep=0 to deglint normally even if pure Glint is observed
  • R(r) not compulsory
    • R RawDeglint=1 deglint_raw as Ls=Ls-LSKY.
      • Recommended
        • BlankDeep is automatically disabled.
    • RawDeglint=0 deglint as Ls=MAX(La,Ls-LSKY) or MAX( Lsw,Ls-LSKY)
  • S(s) not compulsory
    • S Smooth=1, only for running the deglinter
      • WinRadMax=1, Smart=0, SmoothDeep=1
    • s Smooth=0
    • may be overridden by a -Smooth... argument
  • V(v) not compulsory
    • V Verbose deglinting
    • v Silent deglinting
  • DegTol Dynamic deglinting tolerance: a value of 0.5 is convenient.
  • Q(q) not  compulsory
    • q.....Qflag=0............uses..............the  main   regression 4-200: this is the default Q.....Qflag=1...........forces use of the  initial regression 0-4
    • Qflag for a dual glint regression see tarawa tutorial glint regression text file
  • FirstGlint,LastGlint
    • 4 : deglinting shall be estimated only from band FirstGlint=LastGlint=4
      • LastGlint is usually the NIR band
      • could be a RED band though, if no proper NIR band is available
      • FirstGlint is optional: unless specified here, it shall be made equal to LastGlint by default
    • 3,4 : deglinting shall be estimated from band LastGlint=4, and also from band FirstGlint=3
      • this is optional, and sometimes allows to compensate for excessive system noise
      • mostly useful for hyperspectral datasets
      • bands must be specified in ascending order
    • 10,13 :
      • deglinting shall be estimated from band LastGlint=13,
        • and also from bands 12,11 and FirstGlint=10
      • FirstGlint and LastGlint must be specified in ascending order
      • this is to take advantage of better correlation of the glint signal among visible bands
    • In (multi)hyperspectral images, multiple Glint bands are designed
      • to allow estimation of SUN_glint which exhibits weaker inter band correlationat both ends of the visible range
      • as opposed to SKY_glint which exhibits fairly strong correlation across the whole visible and NIR range
  • Glintm_GlintM: deglinting interval
    • Glintm[LastGlint] is a LOW threshold for DeglintBase_band
      • it is automatically set equal to Lsw[LastGlint] provided in the -Lsw... argument
    • GlintM[LastGlint] is a HIGH deglinting threshold for DeglintBase_band_LastGlint
    • Deglinting interval: Glintm[LastGlint]<=radiance[LastGlint]<=GlintM[LastGlint]
    • Amount of glint: it is estimated for all spectral bands as a function of radiance[LastGlint]-Glintm[LastGlint].
      • if the amount of glint is too high, no deglinting is applied : deglinting very strong glint or bright clouds would be a nonsense because the shallow bottom reflected signal is obliterated in the first place.
  • FlightNumber: optional
    • FN7_6_5 : only Flights 7, 6 and 5 shall be deglinted in a hyperspectral mosaic
    • mDEGLINT: only pixels coded in the mSE range mDEGLINT<=mSE<=mSOIL-1 shall be de-glinted
      • Values in the range 1_to_20 are accepted.
      • This provides control on which areas needs deglinting and which areas is best left not deglinted (like in some bad adjacency effect in the vicinity of densely vegetated areas).
      • If a small target only needs deglinting, as in tmnov study case, code it at 20 in mask mSE, and set mDEGLINT at 20 in -deglint commandline argument.
    • mGLINT: only pixels under mSE=mGLINT shall be read for deriving glint correlation parameters
      • mGLINT values of 22 and 23 are authorized
      • mGLINT=23: only pixels under mSE=23 shall be used for computing Sky Glint model
      •  mGLINT=255: all pixels under glint_window shall be used for computing Sky Glint model. Only a value of 255 is accepted
  • Glint window /Gext[1]_Gext[2]_Gext[3]_Gext[4]
    • This is optional: if not specified,
      • Gext[1]=1 Gext[2]=nbRow Gext[3]=1 Gext[4]=nbLin
      • that specifies the whole image by default
    • For computing the Glint model, only the rectangular glint_window is processed.
    • Local patches of glint coded at mSE=22 or mSE=23: a series of glint targets targets are coded at either mSE=22 or mSE=23 in mask mSE inside the rectangle. This is used when very scarce and local patches of hopefuly optically deep waters may be used for estimating glint. Most usefull with hyperspectral or high resolution imageries.
    • Wide areas of open waters: the whole rectangle exhibits distinct glint features over open optically deep waters. The value of 255 is NOT to be coded in mask mSE. This is the most general case when glinted optically deep open waters abound in a at low resolution satellite image.


How to Deglint

The method implemented here was presented
by Hedley et al. : IJRS Vol 26, No 10, 2005 , 2107-2112
"Simple and robust removal of sun glint for mapping shallow-water benthos."
In addition to the Path_Radiance, Glint/Haze/Adjacency_Effect is present everywhere in the image
  •  In the form of evenly distributed sky dome light reflected at the sea surface: ideally, this is incorporated into the Lsw, La and LsM terms. An illustration of this is the fact that clouds sometimes cast a shadow even in the NIR band, while usually they don't.
  • GLINT : in the form of glitter of skylight and of sunlight that is modulated by the swell at the sea surface: most conspicuous.
  • HAZE : in the form of faint lumps of haze .
  • ADJACENCY : in the form of a subtle and gradual increase of the Path_Radiance when moving from open waters towards the waterline: the ill-famed atmospheric adjacency effect. This is most conspicuous along deserts when the atmosphere is loaded with aerosols, but can be a real pain under a deep blue sky along densely vegetated temperate lands.
  • Altogether, these various sources add to the water-leaving radiance. For all practical purpose in 4SM, we call that addition the "glint", and we try to remove as much of it as possible, in spite of the fact that each of these sources has its own spectral properties.

Removing the "glint" is necessary in all flavors of shallow water modeling
  • Some claim that some kind of Fourier transform can do that: unfortunately, this only removes that part of the glint which is spatially modulated by the swell, but leaves untouched the rest which is randomly distributed
    • In 4SM, deglinting is based on the fact that a NIR band has very little penetration in water.
    • Therefore, the signal that is observed in the NIR band is deemed to be caused by the glint (or haze): Lglint nir=Ls nir- Lsw nir
  • This may only hold as long as the sea bottom is not detected by the NIR band
  • Therefore, in 4SM, deglinting is only allowed within a certain range of Ls nir
  •  BUT this may not be possible in some circumstances: 
    • for example, under a deep blue and very clear sky, the glitter signal in the NIR band may very well be very small and hardly correlated at all to other bands
    • while the correlation is excellent in the visible range
    • in this regard, a slightly hazy atmosphere is best, as it ensures a strong enough "glint" in the NIR band.
  • For the purpose of removing the glint, the first thing is to investigate the spectral composition of the glint over an optically deep water area:
  • It is usually the case that a fairly strong correlation can be observed among wavebands:
    • Ls[i] =bias[ci] [nir ] + slope[i] [nir]*Ls[nir]
  • Under a clear blue sky on a calm and clear day, the composition of the glint is mostly that of the light from the skydome, i.e. high in blue, low in green, and even lower in red and near-infrared: a "deep blue" sky, mostly  caused by Rayleigh scattering.
  • Under a hazy sky, the composition of the glint is more evenly distributed across the visible spectrum: a "milky sky", strongly affected by Mie scattering.
  • The haze which surrounds the clouds can be removed to a certain extent, as it exhibits very strong interband spectral correlations  :   see tmnov cloud     tmnov deglint

  Retrieve Glint Statistics: this is done using a shapefile glint.shp
  • Specify a glint extraction area in shapefile glint.shp :
    • all pixels  under this shapefile shall then be used for automatic extraction of glint statistics. 
  • Anyway, the practitioner shall have to settle for a set of glint regression parameters that he feels comfortable with.
  • If Deglinting is required and a suitable glint text file is not available, 4SM shall first retrieve the glint statistics, then proceed with the required processing.
  • NOTE: much stronger correlations may be retrieved by enabling light smoothing

Remove the glint

Once a set of inter band correlation coefficients based on the NIR band has been extracted from the image
over an optically deep water area to represent a mix of average sky/sun-glint, average haze and average adjacency effect,
these correlations are used to remove the glint :
  • Lglint[i] = slope[i] [nir] *(Ls[nir]-Lsw[nir])  ==>  Ls[i]=Ls[i]-Lglint[i]
  • In 4SM, this is done by enabling the   -D(d)eglint... commandline argument
  • -Deglint....: to run the Deglinter
  • -deglint.....: to enable deglinting when running other modules like Linearizer, Calibrator, Model, ZZRegressor, ABProfiler, ZZProfiler

Automatic Deglinter

If no -Lsw... commandline argument is specified, then 4SM
  • evaluates a new glint regression from the specified glint area
  • uses the lowest and the highest observed raw Ls[nir] from the specified glint area to specify the deglinting interval
  • all marine pixels that exhibit  Ls[nir]  inside this interval shall be deglinted