Subject: Marine Geospatial Ecology Tools (MGET) help
Text archives
From: | "Jason Roberts" <> |
---|---|
To: | "'Tim White'" <> |
Cc: | <> |
Subject: | RE: [mget-help] Re: Cayula-Cornillon Chlorophyll a fronts |
Date: | Wed, 15 Jul 2009 22:19:11 -0400 |
Hi Tim, The Cayula-Cornillon algorithm is designed to work with unscaled
integers, although the code that MGET's implementation is based on (Cayula's
code, modified over the years by Dave Ullman) was specifically designed to
detect SST fronts in unsigned 8-bit data from AVHRR on the NOAA POES
satellites. I do not recall the original data provider. My guess is that all of
the validation papers (e.g. Ullman et al 2000) are based on that code and data
source. In principle, the algorithm should work on any kind of image. It
is based on a classic edge-detection algorithm. There is at least one
publication that applied it to chlorophyll fronts, but I do not recall whether
how they parameterized or tweaked the algorithm. I believe the best results will be obtained by applying it to
log scaled chlorophyll data, and that the unscaled integers from the original
data providers should work well because the data providers presumably think
hard about what scaling equation can compactly provide the best image contrast. I am a little confused about what floating-point values you
currently have. Do you simply have the log base 10 of the actual chl value? If
so, I suggest you convert it back to the actual chl value, and then performing
the inverse of function that was presumably used to get the actual chl value
from the original integers. In the case of MODIS level 3, those integers were
16-bit unsigned. This
page shows the MODIS scaling equation, near the bottom of the page. So, to
first get the actual chl value and then perform the inverse function, you'd use
a map algebra _expression_ similar to this: int((log10(pow(10, inputRaster)) + 2.0) / 0.000058) That _expression_ can obviously be simplified to: int((inputRaster + 2.0) / 0.000058) I am not sure if the MODIS level 2 data uses this same scaling
equation, however. Also, I think SeaWiFS uses a slightly different one. It is probably
not critically important to get it exactly right. The main thing is that the
integers should provide good visual contrast, so the edge-detection will work. Also, I do not know how much of the 16-bit range (0-65535) is actually
used by the chl data you have. The range of values will affect the both the
speed and the memory utilization of the tool. If you find that it is too slow
or too much memory is used, you could come up with your own scaling equation
that gets the values into a smaller range. The unsigned 8-bit range (0-255)
should provide good performance. Hope that helps, Jason From: Tim White
[mailto:] Hi There, |