RasterConvolver转换器在FME 2018.1+中可用。
栅格数据中的边缘是值的强度突然变化的位置。边缘通常发生在面或对象的边界,因此(对于空间数据)对于提取重要要素,例如植被区域的边界非常有用。
在FME中可用使用RasterConvolver检测边缘,使用叫做卷积的处理过程。
卷积是一个在栅格要素和数字矩阵(核)之间进行的数学运算。操作和核的定义通常叫做滤波。
边缘方向
边缘的“方向”从低强度部分到高强度部分。边缘可以以主要垂直或水平方向发生。因此RasterConvolver允许用户从左到右,从右到左,从上倒下或从下到上进行边缘检测。
当栅格具有混合的边缘方向或主要边缘方向未知时,则可检测四个方向的所有边缘,然后使用ExpressionEvaluator对它们进行合并。这个例子就使用了该技术。
下载
源数据
这些例子中的源数据是JPEG格式的栅格图像数据集。在FME DataInspector中看起来是这样:
该图像是包含一个学校的温哥华地区的鸟瞰图。对于这项练习,我们希望识别校园内不同的表面和建筑物。
分步说明
- 启动FME Workbench,打开提供的开始模版。这个工作空间读取影像数据和学校的粗略轮廓,轮廓用于裁剪影像:
在Workbench(Run > Run with Feature Caching)中开启要素缓存(feature caching),然后运行工作空间。检查裁剪结果:
- 添加RasterConvolver转换器,连接到Clipper:Inside端口。打开参数对话框坚持不同的滤波类型。注意有4个叫做Sobel的边缘检测滤波器:
选择Sobel Top,点击OK,关闭参数对话框。运行工作空间(或者进行部分运行),检查输出。注意到,正在检测边缘。
但是还有3个其他的Sobel边缘检测过滤器,我们也可以尝试它们。
- 添加其他3个RasterConvolver转换器。将它们每个都连接到Clipper:Inside端口:
把它们设置为使用不同的Sobel滤波器:Sobel Top、Sobel Bottom、Sobel Left、Sobel Right。
运行工作空间(选择RasterConvolver转换器并按下F6)。检查输出(选择RasterConvolver转换器并按下Ctrl+I)。
注意每个滤波类型会添加不同方向的边缘。为了得到完整结果,我们需要将它们合并到一起。
- 在画布中添加一个RasterExpressionEvaluator转换器,先不连接到任何对象,打开参数对话框。
设置Mode(模式)参数为Two Rasters:
在Band Expression(s)(波段表达式)字段中,将第一个Interpretation设置为Red8。在Expression(表达式)字段中输入:
换句话说,我们把两个栅格要素的0波段合并到一起。每个单元格新的值等于栅格A值的平方加上栅格B值的平方再开方。
对波段1和2(Green8和Blue8)重复该步骤,每次在表达式中更改波段数字:
现在关闭参数对话框,将前面两个RasterConvolver输出连接到RasterExpressionEvaluator的A和B输入端口。
注意RasterExpressionEvaluator不允许同时处理4个栅格;因此我们需要使用多个转换器。
- 复制(使用复制/粘贴或Ctrl+D)已有的RasterExpressionEvaluator。将它连接到第二组RasterConvolver:Output端口。因为表达式完全一样,所以参数不需要更改。
现在第二次复制RasterExpressionEvaluators。这次将它连接到已有的RasterExpressionEvaluators转换器的Result端口:
现在运行工作空间,查看第三个RasterExpressionEvaluator转换器的结果:
我们可以看到表面和建筑的边缘,但是图像中有相当多的噪点。
- 在Clipper和每个已有的RasterConvolver转换器之间添加RasterConvolver(在Clipper的绿色输出端口箭头处输入RasterConvolver进行快速添加):
打开参数对话框,设置Convolution Filter Type为Blur: Gaussian 5。
重新运行工作空间,然后再次检查最终输出。虽然表面的边缘要模糊一些,但图像中的噪点要小得多。
可选步骤
- 如果你喜欢带黑色轮廓的白色图像(而不是带白色轮廓的黑色图像),打开最后一个RasterExpressionEvaluator的参数对话框。修改表达式为:
对于8位栅格数据,255减去该值会产生反转图像。
你也可以在工作空间最后添加RasterInterpretationCoercer转换器,使颜色成为标准灰色。设置"Destination Interpretation Type"(目标解译类型)选项为Gray8,"Convert Color to Color"(转换颜色到颜色)选项为Cast。
重新运行工作空间。最终输出为白色背景上具有黑色的线:
你现在可以使用这些轮廓(无论手动或自动过程)来确定学校所有的表面和建筑。
注意事项
结果的质量很大程度上依赖于图像在强度差异很大的区域之间,需要具有清晰和明确的边界。
例如,用户尝试定义坐落在码头上的集装箱边界:
不幸的是,强度差异最大的边缘是集装箱的阴影;因此当集装箱隐藏在背景表面时,阴影具有最清晰的定义。