2017-04-08 70 views
0

我有四個單獨的圖像 - 2-projected.tif3-projected.tif,4-projected.tif5-projected.tif。這是四幅Landsat圖像。 Image 2-projected.tif對應藍色通道,圖像3-projected.tif-對應綠色通道,圖像4-投影.tif-對應紅色通道,對應投影圖像對應紅外。現在我想創建NDVI圖像。爲此,我首先使用ImageMagic創建組合的RGB圖像:無法使用ImageMagick創建NDVI圖像

$ convert 4-projected.tif 3-projected.tif 2-projected.tif -combine RGB.tif 

到目前爲止,這麼好。然後,我嘗試按照this教程中的命令,該教程旨在創建NDVI圖像。我這樣做,像這樣:

$ convert 5-projected.tif RGB.tif -channel RGB -fx '(u.r-v.r)/(u.r+v.r+0.001)' -normalize NDVI.tif 

但作爲一個結果,我得到這些錯誤消息:

轉換:無法解析表達式(u.r-1.0*v.r)' @ error/fx.c/FxGetSymbol/183 1. convert: divide by zero「(UR-1.0 * VR)/(u.r + v.r + 0.001)''@ error/fx.c/FxEvaluat eSubexpression/2159。

我不知道該如何解決。

+0

順便說一句,在理論上NDVI式看起來像'(NIR-VIS)/(NIR + VIS)'(根據維基百科)並且我看到一些其他的ImageMagic命令來創建NDVI。例如,在本文中 - http://blog.sogeo.services/blog/2014/09/22/ndvi-orthofotos.html - 他們計算它像'-fx「(烏爾 - UG)/(UR + UG + 0.001)'' – Jacobian

回答

2

感興趣的兩個頻段是redNIR和NDVI公式爲:

NDVI = (NIR-red)/(NIR+red) 

你有兩個選擇。首先,如果你有紅色和兩個獨立的單聲道影像的NIR,你可以這樣做:

convert red.tif NIR.tif -fx '(u.r-v.r)/(u.r+v.r+0.001)' -normalize -compress lzw NDVI.tif 

在這裏,我使用u.r指第一圖像的第一通道和v.r指到第二圖像的第一通道。

enter image description here


可選地,如果紅色和NIR是前兩個通道中的RGB圖像(即的ImageMagick將稱它們爲紅色和綠色通道):

convert RGB.tif -fx '(u.r-u.g)/(u.r+u.g+0.001)' -normalize -compress lzw NDVI.tif 

這裏我使用的是u.r來指第一個圖像的第一個通道,而u.g指的是第一個圖像的第二個通道。


-fx方法是非常強大的,但出了名的慢。下面這個方法應該給你相同的答案,但我沒有檢查它太徹底:

convert 4-projected.tif -write MPC:red +delete   \ 
     5-projected.tif -write MPC:NIR +delete   \ 
     \(mpc:red mpc:NIR -evaluate-sequence subtract \) \ 
     \(mpc:red mpc:NIR -evaluate-sequence add  \) \ 
     -evaluate-sequence divide -normalize -compress lzw NDVI.tif 

如果你想colourise與假彩色圖像,可以生成顏色查找表(CLUT)並將NDVI圖像中的灰度值映射到這些顏色。所以,讓我們說,你想最黑暗的黑人在1982〜1982年爲黑色地圖,紅色的很暗的值,則頗具亮點值橙色,非常明亮的值,以綠色,你可以做這樣的CLUT:

convert xc:black xc:red xc:orange xc:lime +append clut.png 

enter image description here

和應用它的灰度結果從以上這樣的:

convert NDVI.tif -normalize clut.png -clut falsecolour.jpg 

enter image description here

如果你想橙色和綠色色調不再(更普遍),你可以改變它們的長度,使它們不再在CLUT:

convert -size 30x1 xc:black -size 40x1 xc:red -size 80x1 xc:orange -size 100x1 xc:lime +append clut.png 

enter image description here

然後重新申請的CLUT :

convert NDVI.tif -normalize clut.png -clut result.jpg 

enter image description here

+0

謝謝!我會在一秒鐘內檢查它! – Jacobian

+0

我將在一分鐘內添加一個更快的方法 - 堅持下去。 –

+0

我不知道爲什麼,但我仍然得到這個「無法解析(u.r-1.0 * u.g)」的錯誤信息。似乎這個錯誤甚至不涉及任務本身 – Jacobian