原文发布时间:2010-04-20
作者:毛毛虫
这两天学习了转换器RasterExpressionEvaluator,发现这个转换器非常有用,在此跟大家分享下。
该转换器的属性如下:
计算栅格上每个单元格的表达式,如代数操作和条件计算。
输入端口说明:
要素通过A和B端口输入。输入的基数要求满足下列条件:
A端口有一个或更多的输入,B端口没有输入;
A端口有一个输入,B端口有一个或多个输入。
当A和B端口都有要素输入时,A端口的单个要素都有B端口的每个要素成对匹配。注意对输入要素,下面的约束:
输入要素必须是栅格;
所有成对的栅格必须有相同的行列数;
用于相同表达式的所有波段必须有相同的nodata值,或者所有波段没有nodata值;
波段都不包含调色板。
输出端口说明:
结果:对于每一对输入要素有一个输出的栅格要素。输出的栅格将有n个波段,这里n是说明/表达的对数,通过Interpretation List 和 Expression List两个参数指定。
参数Band Interpretation List:
这个参数接受一个对每个输出波段用分号间隔的说明列表,有效的说明是INT8, INT16, INT32, INT64, UINT8, UINT16, UINT32, UINT64, REAL32, REAL64, GRAY8, GRAY16, RED8, RED16, GREEN8, GREEN16, BLUE8, BLUE16, ALPHA8, ALPHA16.
如果该参数没有指定,输出的说明类型可能是用于执行操作的任何数据类型,所有波段自动决定说明类型。
参数Band Expression List:
这个参数接受分号间隔的表达式列表,这个表达式表示了如何计算每个输出波段。例如表达式:"(A[0] + B[0])/2"计算A的第一个波段和B的第一个波段的平均值。注意这个单数是区分大小写的。
在下面例子中将会看到各个参数及相关语法的具体用法。下面是这个转换器使用的一些具体示例。
用法一:反色影像
波段计算的表达式设置为:255-A[0];255-A[1];255-A[2]
原图:
RasterExpressionEvaluator设置如下,
没有设置波段的说明,自动确定,转换后的图:
RasterExpressionEvaluator设置如下,
把输出影像类型设置为RGB24,转换后的图:
用法二:
亮度调整:
RasterExpressionEvaluator设置如下,
每个波段×1.5,转换后的图:
注意要慎用这种方法——如果在图中的亮点达到或超过最大值(这个例子中是255),那么会使得影像变为纯白色(在RGB24的例子中是255,255,255),这个区域的信息会丢失。
用法三:匀色
如果一幅影像的一种颜色比其他颜色突出,我们可以只调整一个波段(或者对不同的波段应用不同的系数)。
RasterExpressionEvaluator设置如下,
只降低了绿色波段的亮度,调整后的图:
用法四:彩色到灰色的转换
建议多数网络数据源对于彩色到灰色的转换遵从下列公式(许多源栅格也要依靠影像本身而设置不同)
0.2989*A[0] + 0.5870*A[1] + 0.1140*A[2]
设置和转换后的效果如图:
也可以设置如下:
0.3333*A[0] + 0.3333*A[1] + 0.3333*A[2]
不过第一种能给出更好的效果。
用法五:单位转换
在所有单位之间转换对RasterExpressionEvaluator是非常自然的操作。在这个例子中用一个单位为米的数字化DEM数据,转换单位到英尺DEM(波段类型是INT32)。
转换器的属性如下:
转换设置和转换后的效果如下:
待续…………