MAJA 4.2 is available and open source
MAJA is the high quality cloud detection and atmospheric correction code developped by CNES and CESBIO, with contributions from DLR, and coded by CS GROUP. It is used within Pôle Theia, Sen2Agri, Sen4cap, DLR, EEA Snow&Ice, KERMAP… to process #Sentinel2 time series.
It’s been a long time since we wanted to make MAJA available as an open source code, and we finally made it ! After years of internal discussions within CNES, the decision had been taken this winter to release MAJA as open source with version 4.2. But it took us 6 months from the decision to the release, half for the final validation of the results and correction of the last bugs, and half to perform an audit of the code. The audit was necessary to check that our developpment did not include code protected by other licences.
As a result, you may look, download and modify MAJA’s code from here.
https://github.com/CNES/MAJA
You will see the size of MAJA project: MAJA is certainly not a simple code, it uses very advanced features of C++. But anyway, as an amateur pythonist, I still have been able to make slight changes within MAJA, in a period I had some spare time. As a result, real computer professionals should still manage to contribute.
Of course, we still distribute compiled versions of MAJA for linux systems (Ubuntu, Redhat), and MAJA 4.2 has been added to the list of available versions. The executable code can be downloaded from here :
https://logiciels.cnes.fr/en/content/maja
MAJA ‘s development had been started more than twelve years ago, and the Orfeo Tool Box, on which MAJA relies, has considerably evolved since then. As a result, we felt it was necessary to update MAJA to better use the framework of OTB Applications, and to replace the main C++ program which was hard to maintain, by a new orchestrator written in Python. The version 4 so far is mainly a transformation of the code with little improvement regarding the content of the algorithmic methods, but there is one which is important, so please read until the end of the list below.
Here is a list of what’s new with MAJA V4.2, compared to MAJA V3 series :
- It is the first open source release of Maja !
- The orchestration has been rewritten in python, facilitating the use of Maja while keeping the legacy interfaces in place.Swapping to MAJA 4.2 should be very easy.
- Regarding the interfaces, only the processing parameters have been slightly changed in MAJA 4.2. MAJA nominal output formats are the same as those of MUSCATE, the Theia processing center. The formats that we callled « native » might be abandonned in the future versions
- A new download script for CAMS data (Copernicus Atmosphere Monitoring service) has been included
- The new and old CAMS formats are supported, the limitation after July 2019 is not active anymore. We will finally be able to swith MAJA production using CAMS in theia production center. CAMS data are used to specify the aerosol type before estimating the aerosol optical thickness.
- Our launcher to process time series, Start_maja, is now natively included within Maja. It was completely rewritten by Peter Kettig himself, and it is good to see the difference of a professional code compared to my version 🙂 . Start Maja includes a lot of new features that make the use of MAJA much much easier.
- There is an automatic DTM creation tool within Start_maja. You just need specify the tile to process and Start-MAJA fetches the data and generates the DTM files, if they do not exist yet.
- The nominal processing parameters, and the LUTS (GIPP) are also downlaoded automatically
- We also implemented a Snow mask for VENµS (which does not have a SWIR band)
- One evolution has a large impact on the quality of the products generated by MAJA V4.2. It is the possibility to increase the resolution of cloud masks. This is possible thanks to an improvement of the speed of the module to find cloud shadows. MAJA V4.2 is able to process cloud masks and aerosol detection at 120 m resolution, with an increment of duration of about 10% compared to cloud masks at 240 m resolution in MAJA V3.x.
![]() | ![]() |
Cloud mask generated at 240m resolution, example in French Guyana | Cloud mask generated at 120 m resolution. More small clouds and more shadows are detected. |
A big « thank you » to Manuel Grizonnet and Pierre Lassalle, who started the refactoring, and Peter Kettig who handled most of the project and rewrote and improved start-maja. The coding was made by the CS-SI company, mainly Benjamin Esquis et Julie Brossard. The participation of Jerome Colin from CESBIO was essential for the validation, and I just insisted a lot, so that we solve the bug that prevented us from working at 120m resolution … Many thanks also to those at CNES who helped us making MAJA’s source available to everyone: it required a cultural change, and the pioneering work of the Orfeo ToolBox (OTB) team within CNES was essential.