2017-04-08 93 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