MACCS/MAJA, how it works


MACCS (Multi-sensor Atmospheric Correction and Cloud Screening) is a level 2A processor, which detects the clouds and their shadows, and estimates aerosol optical thickness (AOT), water vapour and corrects for the atmospheric effects. The processor was jointly developed by CESBIO and CNES. CESBIO developed the methods and a prototype, while CNES funded the operational version of the processor, with a strong support from CESBIO for the validation.


More recently CNES+CESBIO and DLR joined their efforts to develop a joint processor named MAJA, for MACCS-ATCOR Joint Algorithm. MAJA is an evolution  of MACCS, in which a couple of methods inspired by ATCOR software have been added. MAJA V1_0 could have been called MACCS V6.0, but we wanted to celebrate the association of both entities with a new name.

MAJA runs at CNES within the Muscate ground segment of Theia (data are available here) and within the Venµs ground segment. And finally, MAJA is freely available in binary version for non commercial use.


MAJA's distinctive feature is its dedication to high resolution time series and its wide use of multi-temporal methods. For this reason, MAJA can only be applied to the optical missions which observe the earth under constant viewing angles. However, MAJA was already applied to several satellites :

A short description of MAJA

The following ATBD document provides a detailed description of the methods used in MAJA. But if you lack time, here is a much shorter description. MAJA is briefly described in the joined figure. The text below provides some information for the main boxes.

Atmajaspheric absorption

In the case of Sentinel-2 and Venµs, which include a water vapour channel at 940 nm (resp. 910nm) in a strong water vapour absorption band, a first step consists in estimating the atmospheric water vapour content. For the other satellites, weather analysis data can be used. After that, the processor can correct for the gaseous absorption using the SMAC model.


Composite imajage

The next steps deeply involve multi-temporal methods. Of course, to do that, a time series must be processed in chronological order. After each processing, a composite image is updated with with the unclouded pixels from the processed date. This composite image is used as a reference for the cloud detection and the AOT estimate.


The cloud majasks

Our cloud detection method is based on a large number of tests, the most efficient of which are :

  • a test based on the  cirrus band (at 1380 nm), available on Landsat 8 and Sentinel-2, which detects very well the high clouds (above 2000m)
  • a multi-temporal test, which detects a steep increase of the blue surface reflectance, which is the sign of presence of a cloud.
  • and finally, to avoid over detections of clouds, for each potential detected by one of the previous tests, a last test measures the correlation of the pixel neighbourhood with the previous images. As it is unlikely that two different clouds at the same location on successive dates have the same shape, if a large correlation is observed, the pixel is finally not declared as a cloud.

Having detected the clouds, we can follow with the detection of  cloud shadows, water, and snow.

Aerosol optical thickness estimajate

The aerosol optical thickness (AOT) estimate combines several criteria in the computation of a global cost function, which is then inverted using non linear least mean squares inversion.

  • A multi-temporal criterion : after atmospheric correction, two successive observations of the same neighbourhood should provide nearly the same surface reflectances. The squared residuals after atmospheric correction are inserted in the cost function.
  • A multi-spectral criterion : above vegetation, and also above many bare soils, the surface reflectance in the blue is close to half the reflectance in the red. The squared residuals to this relation after atmospheric correction are also added to the cost function.
  • Optical Thickness minimum and maximum : AOT cannot be negative, and should not get higher that the one measured using the dark pixel method. When the AOT values are above maximum or under minimum, a high cost is added to the cost function.


The cost function evaluation is evaluated using neighbourhoods of coarse resolution pixels (240m), spreading over 2 kilometres. The obtained AOT images are then smoothed, the gaps are filled to obtain finally an AOT map with a 5 km resolution. The aerosol type is not estimated, it is a processing parameter which can be fixed per geographic region.

Atmajaspheric correction

One of he quicklooks we produce with each image for visual verification, here for Chiapas site in Mexico, with the TOA reflectance, top left, the AOT and cloud mask, bottom left, surface reflectance after adjacency effect correction, top right, and the same with slope correction, bottom right.


Once the AOT is known, we can retrieve the surface reflectances. To do that, we are using look-up tables (LUT) which are computed using the SOS radiative transfer code (Successive Orders of Scattering, Lenoble, 2007). These LUT are also used in the AOT estimation.


The surface reflectance of the cloud free pixels obtained there are used to update the composite image, which will be used for the processing of the next image in the time series.


Before editing the output product, we still need to correct for two other points, already described in this blog : the adjacency effects and the effects of terrain slopes on the illumination.


MAJA development started in 2005, and the contributor list is starting to be quite long :

  • at CESBIO : H.Tromp, V. Debaecker, M. Huc, P.Gely, Bastien Rouquié and O.Hagolle,
  • at CNES : B. Petrucci, D.Villa-Pascual, Camille Desjardins, Pierre Lassalle
  • at DLR : A. Makarau and R.Richter
  • at CS-SI : T.Feuvrier, C.Ruffel, A.Bricier and many others
  • at CAP GEMINI : M.Farges, G. Rochais, E.Durand
  • at Magellium : E. Hillairet

For more details, we have published 4 papers about MACCS methods and validation :

  • A multi-temporal method for cloud detection, applied to FORMOSAT-2, VENµS, LANDSAT and SENTINEL-2 images, O Hagolle, M Huc, D. Villa Pascual, G Dedieu, Remote Sensing of Environment 114 (8), 1747-1755
  • Correction of aerosol effects on multi-temporal images acquired with constant viewing angles: Application to Formosat-2 images, O Hagolle, G Dedieu, B Mougenot, V Debaecker, B Duchemin, A Meygret, Remote Sensing of Environment 112 (4), 1689-1701


Posted under: Comment ça marche /how it works, Corrections (geometry, atmosphere, clouds), In English

Tagged as: ,


  • Lauri M on 20/05/2016 at 14:33 said:

    I saw multiple interesting presentations at ESA Living Planet 2016 mentioning MACCS. One thing I haven't been able to figure out is that is MACCS software publicly available, or will it be? I found some mentions about MACCS and Orfeo Toolbox, is MACCS included there? I'm just looking for alternatives to Sen2Cor.

    Thanks, Lauri M

    • Olivier Hagolle on 20/05/2016 at 15:32 said:

      Dear Lauri, thanks for your interest for MACCS. I was also at LPS, too bad we did not meet.
      Here is the situation with MACCS, a complex one in 3 points :

      CNES decided to distribute L2A products processed with MACCS rather than MACCS itself. A ground segment has been built and Sentinel-2 data will be processed and distributed using MACCS.
      But this ground segment will not produce the world world, and "only" about 6 M of km2. If you are lucky, your interest zone may lie within the selected zones which are displayed here . All the data above France are already distributed.

      ESA is considering producing L2A over the whole world and is currently selecting the method that will be implemented. MACCS is among the runners, and I think it has some chances, but however, I am sure it will at least take 18 months, before ESA can start the production.

      MACCS has been included in the Sen2Agri package you must have heard of at LPS (it was shown 3 times). The sen2Agri processor will be distributed (within the next 6 months), and it will include MACCS as a blackbox. A license will have to be signed saying that you intend to use MACCS within the Sen2Agri system. But if you are working in the Plymouth Marine lab, it is maybe not your main interest. By the way, MACCS was developed to work above lands and only extrapolates above water.

      I hope it clarifies the situation a little bit

  • Lauri M on 24/05/2016 at 09:11 said:

    Thanks Olivier for the detailed answer!
    Indeed there are couple of interesting zones within the 6 M km2 area.
    Yes, my current interest is in water, especially in small lakes. This in mind, could you open bit more the "MACCS only extrapolates above water" part? Does it mean that the data is not usable at all over water, or it's just not so reliable?
    Thanks for the interesting blog,

  • Olivier Hagolle on 24/05/2016 at 11:48 said:

    MACCS does two things : it detects clouds and shadows, and estimates aerosol optical thickness (AOT) to use it for atmospheric correction. To do that, it relies on assumptions of stability with time of surface reflectance. This assumption is usually nor true above water.

    Clouds above water are usually correctly detected, but I did not find a way to detect the shadows. Regarding aerosols, we estimate the AOT above land, and then fill the gaps above water. This is working well above small water bodies, but not over ocean or very large lakes,far from the coast.

    Some users tested the output products along the coast and were happy with the results :

    Gernez, P.; Lafon, V.; Lerouxel, A.; Curti, C.; Lubac, B.; Cerisier, S.; Barillé, L. Toward Sentinel-2 High Resolution Remote Sensing of Suspended Particulate Matter in Very Turbid Waters: SPOT4 (Take5) Experiment in the Loire and Gironde Estuaries. Remote Sens. 2015, 7, 9507-9528.

  • Olivier Gaquiere on 21/09/2017 at 20:58 said:

    Bonjour Olivier,

    j'envisage de tester Sen2Agri pour un site dans les Antilles. Je suis interessé par le processeur "composite", pour éliminer un maximum de nuages dans cette zone très souvent couverte, et par le processeur "LAI retrieve".
    Ma question est simple : est-il possible à votre avis de fournir au processeur "composite" directement des images S2 au niveau 1A, ce qui éviterait le cout de traitement de MACCS.

    Merci d'avance

    • Olivier Hagolle on 25/09/2017 at 16:41 said:

      Bonjour Olivier,
      effectivement, MUSCATE a choisi un format différent du format de sortie standard de MAJA, alors que Sen2Agri a conservé ce format. Il n'est donc pas possible d'économiser du temps en récupérant les produits de MUSCATE. J'ai regretté la décision de MUSCATE qui nous pose aujourd'hui bien des soucis, mais elle avait été prise dans un but louable d'homogénéisation des produits au sein de MUSCATE.
      Il nous est maintenant difficile de revenir en arrière, désolé.

Leave a Reply to Olivier Hagolle Cancel reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>