Optical calibration, bathymetry, water column correction and bottom typing of shallow marine areas, using passive remote sensing imageries
4SM license policy

Your comments are invited                            See you on 4SM blog

VNC : let's work together live!

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
watch this at work on the Caicos Tutorial  

Then what?
4SM shall accept to process for free any multi/hyper-spectral image you may want to try,
except for equalizing, deglinting and modeling

This means that you can run your calibration and your sea truth evaluation, 
ahead of any actual modeling of your image

Then if/when satisfied with your Calibration and Command Line,
you shall have to purchase the License key
for final equalizing/deglinting/modeling of your image

Become a 4SM SUPER USER  on x86-64 machines
4SM now queries the CPUID of the Intel or AMD x86 processor
of the machine it is running on, through the Linux "cpuid" command.

If this query is found to match any of the CPUIDs registered in the 4SM code,
then 4SM shall process any image without any restriction: no further licensekey babbling.
  • For this to work for a while, say two years, in exchange for what you have to offer from my wishlist :
    • I need you to send me the CPUID of the Intel powered machine staff at your office shall be using use most for running 4SM
    • I need a username they shall use to login: you name it as you like, can be very nondescript, I'm not concerned with passwords
    • I need to burn into 4SM.2.06 both that CPUID and that agreed username
    • Anyone can log into any Intel machine under any username and run 4SM.2.06 subject to licensing
    • It's only that 4SM.2.06 shall grant superuser to any person at any given time who has logged in under the agreed username on the machine with the agreed machine.
    • My machine is Intel Centrino 2: I get two distinct CPUIDs: I had to register both of them.User ymorel using either CPUID is granted superuser priviledge.
This can be disabled by specifying  -PROCESSnosu/..... in the commandline
We need to talk: 
For the purpose of furthering 4SM,
you, as an individual, are welcome to register your CPUID for two years


As the 4SM practitioner,
the purchaser of a 4SM license takes full responsibilities
over all aspects of the output of his work using the 4SM software

4SM license policy summary
  • Current 4SM executable is available for free for download in any one of the tutorials
  • All of its functionalities are enabled.
  • 4SM shall process for free any imagefile that is square and contains <=100000.001 shallow pixels.
  • For a bigger file, a paid-up internal_4SM_licensekey must be incorporated into 4SM code.
  • From then on, current 4SM shall process any imagefile whose content matches that licensekey.
  • And further versions of 4SM shall keep doing so for one year after date of issue.
  • This also means that the owner of this licensed_imagefile may copy it, or any subset of it, along with the corresponding commandline_licensekey, to any third party without any restriction on my part: 4SM shall accept to process it, and further versions of 4SM shall retain that capability for one full year.


Example of 4SM license key

example in Caicos tutorial

The following is an example of the license file tmnov.lic
that is formated by 4SM upon first attempt
at modeling a non licensed/free image.
  • 4SM_Required_LicenseKey for file tmnov.pix is -LK/A441792105R751041R93S6496A/tmnov/144_US$/-LE/1/800/1/900/0.720/4
    • This LicenseKey is good for a 4-bands 800*900 image with and the lesser of Areafactor=0.849 MillionShallowPixels=0.720
    • MillionShallowPixels is encoded into the Required_LicenseKey
    • You may reduce its cost by masking optically deep waters, lands, clouds, etc in the mSE_mask channel_5
    • Beware though not modify the surface area masked as shallow waters once you've paid for it: your license would be denied!
    • Maximum is presently 60 LicensedMillionShallowPixels: that would be a very large and very shallow image!
  • WARNING: this image is not licensed yet        
    • 4SM shall write out a chequered image until license is paid up
    • This licensekey needs to be paid for and encoded into a new version of 4SM
    • Or it may be ciphered by a 4SM super-user, forwarded to you through email, then placed by you in the 4SM commandline to enable full functionality 
Until then,
once you are satisfied with the calibration of your image,
you have two possibilities:
  • 4SM shall write out a chequered image for any of the RunEqualizer, RunDeglinter or RunModeler options while retaining full functionnalities for all other options
  • subset image:
    • if an image is square with less than 0.1 MillionShallowPixels, then no License Key is needed at all
    • you can subset yourimage into as many such square subimages as you want
    • each subimage square and with less than 0.1 MillionShallowPixels
    • process each and all of these subimages with full 4SM functionality
    • and finally piece all subimages together

See below how it works


4SM license key, how does it work?

4SM does not check for or require any License Key,
until the operator launches runs the Equalizer, the Deglinter or the Modeler
    • this means that all 4SM functionalities are enabled for any image
      • apart from Equalizing, Deglinting or Modeling.
      • this means that you can calibrate/sea-truth your image thoroughly without any restriction:
      • and then process it as a chequered image
      • ==> see for yourself wether it is worth paying for the cost of the license.
    • if the image is square and has less than 0.1 MillionShallowPixels, then no License Key is needed at all
    • that's about a 300*300 image.
  • ELSE ==> 4SM shall issue a License Key and proceed to write a chequered image.

4SM is still under development.
  • At this stage, its source code has not been consolidated by any professional programmer: ~40,000 lines.
  • It is one single source code compiled by "gcc -lm -w 4SM.2.06.c -o 4SM.2.06"
  • Should you experience any inconvenience in its use, please send a copy of your working image file to Yann MOREL, along with command line, etc, so that I hopefully shall be able to fix the problem for you.

  • 4SM is a supervised process.
  • By paying the price for a License Key, you acquire the right of use of 4SM on your own image.
  • All the privileges and responsibilities of the supervisor are transferred from Yann MOREL onto yourself.
  • You work on your own image under your own and exclusive responsibility.
  • By paying this price, you agree that Yann MOREL shall not be held responsible to any extent for your own work using 4SM.

It is available for free for download in any one of the tutorials

  • an image file is 4SM_licensed, worldwide and without any restriction
    • if it is square and has less than 0.100 MillionShallowPixels: no license key is needed
    • or if its required_license key has been purchased/incorporated into the 4SM executable
    • or if it is the subset of a registered_4SM_licensed_image file.

  •  At first attempt to running Equalizer, Deglinter or Modeler
    • 4SM analyzes the image file and works out the required_license key details:
      • if the required_license key is found to be free, 4SM proceeds normally
      • else if a match is found with a command line_license key, 4SM proceeds normally
      • else if a match is found with an internal_4SM_license key, 4SM proceeds normally
      • else 4SM writes out and displays an image.lic text file, and proceed to write a chequered image.

  • Please, trim unnecessary void rows/columns out of image file
  • MASK:
    • Add one 8bits mask with desired ShallowPixels encoded to any value within the range 0<N<=NbBands.
    • If no such mask exists, all image pixels shall be counted as shallow.
    • Best is to mask
      • all optically deep pixels at 240,
      • all land pixels at 240, all
      • nodata pixels at 239,
      • so that only shallow pixels are actually counted for the calculation of the cost of the license.
  • BANDS:
    • Minimum three bands:
      • G, R, Nir
      • or B, G, R
    • One NIR band is most useful
    • Four bands are OK:
      • B, G, R, Nir
    • Hyperspectral: up to 20 bands at present:
      • 10 to 20 bands, well located over the visible range, should suffice in order to derive a fairly detailed and reliable spectral bottom signature.
      • Please, do not underestimate the use of red bands
      • From 400 to 450 nm, radiometric quality can be very frustrating

How license cost is calculated: see License calculator   
  • AreaFactor= sqrt ( nbRow* nbLin) / 1,000,000
    • If nbLin==nbRow and AreaFactor<=0.100 ==> AreaFactor=0 ==> no licensekey is needed.
    • If MillionShallowPixels< AreaFactor, AreaFactor= MillionShallowPixels
  • BandFactor= sqrt ( NbBands).
  • ==> LicenseCost=100*AreaFactor*BandFactor in EUROS.


  • If a required_license key is needed, it must be added to the set of internal_4SM_keys
  • Only the first 26 characters of the key are checked against image file content and layout. The end of required_license key is metadata.
    • the first 26 characters only contain informations on
      • the radiances of a selection of pixels: you should not modify them
      • the number of shallow pixels: you should not increase this in excess of 5%
      • the number of bands
    • this means that, once licensed,
      • you can rename your image as you like
      • you must stick to the original spectral image
      • sorry, all you can do is
        • reduce the number of MillionShallowPixels pixels as you like
        • or increase it by less than a 5% tolerance

  • If the content or layout of a licensed_image file_data_channels has been altered, chances are that 4SM shall not acknowledge a licensed image.
  • As for the shallow pixels mask, it may be modified at will to the extent that the number of actual MillionShallowPixels does not exceed 105% of the LicensedMillionShallowPixels
    • once this limit is reached upon Modeling, Equalizing or Deglinting,
    • then 4SM complains and exits 

  • If your image is registered to a quality sea truth dataset, I might want a copy of both that image and sea truth dataset.
  • In exchange for a FREE LICENSE for another image file of similar size and layout,
    • for exclusive purpose of further consolidation and commercial promotion of 4SM. 

  • A licensed_image file, or any of its SubImage siblings, may be copied by you to any third party without any restriction.
  • Dissemination of licensed_image files by their owners is encouraged, as well as communication with rspfsm@attglobal.net
  • In further versions of 4SM, I reserve the right of keeping an internal_4SM_key in the code for one year.
    • this means that further versions of 4SM, available for download from my website,
    • shall keep accepting an internal_4SM_key until one year after date of issue.


Suppose you want to experiment the licensing process
  • Get a license key: run your script with a bare -LK argument
nice -20 ./4SM.2.06 -PROCESS/30_AUG_2008/MASK_0 -Origin/BILKO
  • this runs the License_Editor and quits: 4SM displays a tmnov.lic textfile advising that the Required_LicenseKey is
    • -LK/A441792105R751041R93S6496A/tmnov/144_US$/-LE/1/800/1/900/0.720/4
  • then you would send it to the me by email, along with your 144 US$ payment
  • this Required_LicenseKey now needs to be inbedded in the 4SM code by me
  • so that 4SM runs with full functionali
  • Or, if you're lucky, I can convert it into a ciphered licensekey, and send it back to you by email
nice -20 ./4SM.2.06 -PROCESSnosu/30_AUG_2008/MASK_0
  • Feel like the superuser: anyone may do that for any of the tutorial images! 
    • you would then include that ciphered licensekey in your script for 4SM to process your image without any restriction
nice -20 ./4SM.2.06 -PROCESS/30_AUG_2008/MASK_0
@LE101/700/101/800/subset @-LS
-Smooth_4d/Smart+ -Model/mask_0
You are now set to work on image tmnov.pix
Subsetting a licensed image
  • Suppose you have paid up the license for your image or you use the ciphered license key
  • and now you want to subset it because it is too large: 4SM shall not accept to process your image subset
  • -LE... use a -LE... argument to get a ciphered license key for that subset of licensed image tmnov
    • -LE101/700/101/800/subset shall get you a ciphered license key for a window -E101/700/101/800 named "subset" (you choose any suffix for your subset)
      • from Row_101 to Row_700
      • from Line_101 to Line_800
    • -LKgk9Hh-gHag9HHHXkdhlKk~%XXg/tmnovsubset
File tmnov.lic now has the following lines
  • 4SM.2.06_Ciphered_LicenseKey for subset of file tmnov.pix is
    • -LK/gk9Hh-gHag9HHHXkdhlKk~%XXg/tmnovsubset
  • This commandline_licensekey is free for a subset of licensed_imagefile tmnov.pix==> This licensed_imagefile_subset tmnovsubset must be subsetted and given any name you like
  • ==> Both arguments
    • -DB/anyname/31_1_0_0/4_1/600_700/220.23450_381.16550/1_1
    • -LKgk9Hh-gHag9HHHXkdhlKk~%XXg/tmnovsubset
  • ==> must be placed in the commandline
  • ==> 4SM shall then accept to process subsetted database anyname.pix without any restriction
Your new command line
  • ==> Please don't forget to disable existing -DB... -LE... arguments, and leave -MIS... argument unchanged
    • you now need to -MakePIX... the desired database anyname.pix
    • then -Import... desired channels from tmnov.pix into anyname.pix
  • Your new command line anyname.sh should look like this: (see that georeferencing is OK)
nice -20 4SM.2.06 -PROCESS/30_AUG_2008/MASK_0
You are now set to work on image anyname.pix
that was subsetted from a licensed image tmnov.pix
without any restriction