在遙感影像中,我們常用 NDVI(歸一化植被指數)來衡量地表植被的綠度。它簡單直觀,是生態監測、農情分析的基礎工具。但你是否注意到:
NDVI 雖然“綠”,卻常常“亂”。
因為云層、觀測頻率、天氣干擾,NDVI 的時間序列往往是鋸齒狀、斷裂的,很難反映植物真實的生長節奏。
那么,能不能讓 NDVI 曲線變得平滑、優雅?更重要的是,讓我們看出植物一年中什么時候最綠、什么時候開始變黃?
答案就是:諧波擬合(Harmonic Regression)
我們用一套簡單的數學模型——正弦函數 + 余弦函數的組合,就可以模擬 NDVI 的自然波動,就像聽診器一樣,聽出綠地的“心跳”與“節奏”。
這套方法不僅可以:
-
去除 NDVI 的噪聲、缺值干擾
-
提取“年最大 NDVI 值”與“峰值出現時間”
-
還可以看出城市、公園、農田中綠意的季節差異
一串函數,就能復刻大地的春夏秋冬。
我們在 GEE(Google Earth Engine)中完成了這項分析,原始 NDVI 和諧波擬合 NDVI 的對比圖已經生成。未來我們還可以進一步提取出“綠期長度”、“相位差異”等生態指標。
📌 想獲取腳本 or 全套實操教學?歡迎關注【全域智圖】公眾號。
部分代碼,完整代碼關注公眾號// 1. 設置研究區域(成都點位,可自行替換)
var region = ee.Geometry.Point([104.07, 30.67]);
Map.centerObject(region, 8);// 2. 加載 MODIS NDVI 數據(MOD13Q1)
var modis = ee.ImageCollection('MODIS/006/MOD13Q1').filterDate('2020-01-01', '2021-01-01').filterBounds(region).select('NDVI').map(function(img) {return img.multiply(0.0001).copyProperties(img, ['system:time_start']);});// 3. 添加時間變量(以天為單位)
var withTime = modis.map(function(img) {var t = ee.Date(img.get('system:time_start')).difference(ee.Date('2020-01-01'), 'day');return img.addBands(ee.Image.constant(t).rename('t').toFloat());
});print(chart);
// 9. 顯示 NDVI 原始圖像(選擇其中一個時間點)
var exampleRaw = modis.filterDate('2020-07-01', '2020-07-15').median();
Map.addLayer(exampleRaw, {min: 0.1, max: 0.8, palette: ['white', 'green']}, '原始 NDVI');// 10. 顯示擬合 NDVI(同一時期)
var exampleFitted = fittedSeries.filterDate('2020-07-01', '2020-07-15').median();
Map.addLayer(exampleFitted, {min: 0.1, max: 0.8, palette: ['white', 'blue']}, '擬合 NDVI');
擬合NDVI
真實NDVI