遙感圖像亮度地形糾正

地表光照模型

由於地形的影響, 及其與太陽的相對位置等不同,成像時各個像元的光照條件不盡相同, 同一時刻不同地形條件下的地表所接收到的光輻射強度也不盡相同。常常要求由根據遙感觀測成像時的光照條件, 模擬出光照亮度圖,把明暗不同的部分糾正過來。下面是一幅受到地形影響的 Landsat 影像,山峰的南側受到遮擋,亮度變暗了。

地表光照模型反映了地面接收太陽輻射量的多少, 可以使用 Lambert 餘弦定理來描述。假定太陽天頂角為 Z,入射角為Z (入射光與地面法線的夾角), 則光照係數 IC,又稱相對太陽入射角為:

式中, Z 為天頂角; S 為坡度角;φz 為太陽方位角; φs 為坡向角。其中, 地形坡度和坡向可以由地面高程數據(DEM)計算, 太陽天頂角及方位角可從遙感圖像的元數據中獲取。

用餘弦模型就可以反映出糾正前和糾正後亮度的關係:

其中 LH 是分波段的糾正後的水平面亮,LI 是糾正前地形條件下的亮度。餘弦模型假設了 Lambertian 面,即散射光是由四面八方均勻射入。

如下圖所示:

還有一種 C 模型,我在 2013 年的一篇論文中 [1] 看到,如下式:

GEE 計算代碼

C 模型不要求Lambertian 面假設,實現起來也很簡單。高程數據可以從 GEE 的資料中讀取並作坡度變化:

編碼部分就是直接調用 GEE 的 API函數。但因為數據不在本地,需要把波段計算的部分都包起來,便於 GEE 使用虛擬類在伺服器端操作數據。

var terrain = ee.call(Terrain, ee.Image(srtm90_v4));nvar solar_zenith = ee.Number(90).subtract(image.get(SUN_ELEVATION));nvar solar_azimuth = ee.Number(image.get(SUN_AZIMUTH));nnvar degree2radian = 0.01745nvar solar_zenith_radians = solar_zenith.multiply(degree2radian)nvar slope_radians = terrain.select([slope]).multiply(degree2radian)nvar aspect = terrain.select([aspect]);nMap.addLayer(slope_radians)nn//slope part of the illumination conditionnvar cosZ = solar_zenith_radians.cos();nvar cosS = slope_radians.cos();nvar slope_illumination = slope_radians.multiply(cosZ)nn//aspect part of the illumination conditionnvar sinZ = solar_zenith_radians.sin();nvar sinS = slope_radians.sin();nvar azimuth_diff_radians = aspect.subtract(solar_azimuth.multiply(degree2radian))//.expression("((b(aspect)-" + solar_azimuth + ")*0.01745")nnvar cosPhi = azimuth_diff_radians.cos();nvar aspect_illumination = cosPhi.multiply(sinS).multiply(sinZ)nn//illumination conditionnvar ic = slope_illumination.add(aspect_illumination)nn//apply the cosine correctionnvar cos_output = image.expression("((image*cosZ)/ic) + offsets", {n image: image.select(B4, B3, B2),n cosZ: cosZ,n ic: ic,n offsets: [770, 0, -1230]n});n

糾正後的結果,南坡的亮度增強了。

參考資料

  1. Tan, B., Masek, J.G., Wolfe, R., Gao, F., Huang, C., Vermote, E.F., Sexton, J.O. and Ederer, G., 2013. Improved forest change detection with terrain illumination corrected Landsat images. Remote Sensing of Environment, 136, pp.469-483.

推薦閱讀:

1.29【OpenCV圖像處理】輪廓邊界框
[171118] PyQt5 滑動條控制 Canny 邊緣閾值並繪製 OpenCV 圖像
數字圖像處理專業如何快速入門?謝謝。

TAG:遥感图像处理 | 图像处理 |