modelNDVI(ndvi.values, year.int, multipleSeasons=FALSE, correction="bise",
method="LinIP", MARGIN=2, doParallel=FALSE, silent=TRUE, ...)
“none”: no correction will be performed.
“ravg”: Smoothing with running average. Default window size is 7
and can be modified by parameter ‘window.ravg’. See also runningAvg
.
“bise”: Best index slope extraction after Viovy et. al (1992). Second interpretation of bise algorithm. Can be modified with parameter ‘slidingperiod’. Default to 40, optimised for the area of Central Europe. This might has to be modified when vegetation dynamics of other climates/habitats are analysed. An maximum increase threshold is defined via parameter ‘growthFactorThreshold’ with default to 0.1 (10 percent increase per day allowed). The timeserie is cycled via parameter ‘cycleValues’, which is a boolean value determining whether the end of the ndvi timeserie is combined with its beginning or not (default value is true). If false, gaps or low ndvi values at the beginning of timeserie influence the result.
“LinIP”: A linear interpolation is performed. For interpolation, the end of timeserie is connected to the beginning (e.g. after day 365 follows day 1). Applied in Badeck et. al (2004) and Doktor et. al (2009).
“Spline”: A spline interpolation is performed. For interpolation, the end of timeserie is connected to the beginning (e.g. after day 365 follows day 1).
“DSig”: Fits a double sigmoidal function to NDVI values (according to Zhang et. al (2003)).
“DSigC”: Fits another double sigmoidal function (own C implementation) to NDVI values.
“DLogistic”: Fits a double logistic function after Fischer, Alberte (1994) to NDVI values.
“Gauss”: Fits a symmetric or asymmetric (determined by boolean parameter ‘asym’) gaussian function to NDVI values (own C implementation after Press, W.H. (1992)).
“GaussMix”: Fits a mixture of gaussian functions to NDVI values (own C implementation after Press, W.H. (1992)). The number of components is determined by parameter ‘components’. If multiple components are given, the algorithm checks which number performs best.
“Growth”: Fits a plant growth model after Richter et. al (1991) to NDVI values.
“FFT”: Smoothes the corrected or raw NDVI values with fast fourier transformation (implemented in R). The smoothing intensity can be controlled with parameter ‘filter.threshold’ with default to 3.
“SavGol”: Smoothes the corrected or raw NDVI values with a Savitzky-Golay filter (own C implementation after Press, W.H. (1992)). The smoothing algorithm can be modified with parameters ‘window.sav’ (window size of filter, default to 7), ‘degree’ (degree of fitting polynomial, default to 2) and ‘smoothing’ (repetition quantity, default to 10).
Should be ‘2’ if ‘ndvi.values’ is a vector instead of a matrix/array.
Doktor, D., Bondeau, A., Koslowski, D. and Badeck, F.W. (2009). Influence of heterogeneous landscapes on computed green-up dates based on daily AVHRR NDVI observations. Remote Sensing of Environment, 113, 2618-2632
Fischer, Alberte (1994). A Model for the Seasonal Variations of Vegetation Indices in Coarse Resolution Data and Its Inversion to Extract Crop Parameters. Remote Sensing of Environment, 48, 220-230.
Press, W.H. (1992). Numerical recipes in C: The Art of Scientific Computing, vol. 1. Cambridge University Press, Cambridge, 2nd edn.
Richter, O., Spickermann, U. and Lenz, F. (1991). A new model for plant-growth. Gartenbauwissenschaft, 56, 99-106.
Viovy, N., Arino, O. and Belward, A.S. (1992). The Best Index Slope Extraction (BISE) - a method for reducing noise in NDVI time-series. International Journal of Remote Sensing, 13, 1585-1590.
Zhang, X.Y., Friedl, M.A., Schaaf, C.B., Strahler, A.H., Hodges, J.C.F., Gao, F., Reed, B.C. and Huete, A. (2003). Monitoring vegetation phenology using MODIS. Remote Sensing of Environment, 84, 471-475.
bise
, runningAvg
,detectSeasons
,
, phenoPhase
data(avhrr)
data(modis)
# create NDVI object, correct and model values
ndvi.list1 <- modelNDVI(ndvi.values=cbind(avhrr.ndvi/10000, modis.ndvi/10000),
year.int=1995, multipleSeasons=FALSE, correction="bise",
method="LinIP", MARGIN=2, doParallel=FALSE, slidingperiod=40)
ndvi.list2 <- modelNDVI(ndvi.values=cbind(avhrr.ndvi/10000, modis.ndvi/10000),
year.int=1995, multipleSeasons=FALSE, correction="ravg",
method="FFT", MARGIN=2, doParallel=FALSE, filter.threshold=7)
# plot Values
for (ndvi.ob in ndvi.list1){ plot(ndvi.ob) }
for (ndvi.ob in ndvi.list2){ plot(ndvi.ob) }
Run the code above in your browser using DataLab