使用RasterConvolver进行边缘检测

RasterConvolver转换器在FME 2018.1+中可用。

栅格数据中的边缘是值的强度突然变化的位置。边缘通常发生在面或对象的边界,因此(对于空间数据)对于提取重要要素,例如植被区域的边界非常有用。

FME中可用使用RasterConvolver检测边缘,使用叫做卷积的处理过程。

卷积是一个在栅格要素和数字矩阵(核)之间进行的数学运算。操作和核的定义通常叫做滤波

边缘方向

边缘的“方向”从低强度部分到高强度部分。边缘可以以主要垂直或水平方向发生。因此RasterConvolver允许用户从左到右,从右到左,从上倒下或从下到上进行边缘检测。

当栅格具有混合的边缘方向或主要边缘方向未知时,则可检测四个方向的所有边缘,然后使用ExpressionEvaluator对它们进行合并。这个例子就使用了该技术。

下载

源数据

开始工作空间模版

完成工作空间模版

源数据

这些例子中的源数据是JPEG格式的栅格图像数据集。在FME DataInspector中看起来是这样:

https://knowledge.safe.com/storage/attachments/19031-rasterconvolveredges15.png

该图像是包含一个学校的温哥华地区的鸟瞰图。对于这项练习,我们希望识别校园内不同的表面和建筑物。

分步说明

  1. 启动FME Workbench,打开提供的开始模版。这个工作空间读取影像数据和学校的粗略轮廓,轮廓用于裁剪影像:

WorkbenchRun > Run with Feature Caching)中开启要素缓存(feature caching),然后运行工作空间。检查裁剪结果:

  1. 添加RasterConvolver转换器,连接到Clipper:Inside端口。打开参数对话框坚持不同的滤波类型。注意有4个叫做Sobel的边缘检测滤波器:

 

选择Sobel Top,点击OK,关闭参数对话框。运行工作空间(或者进行部分运行),检查输出。注意到,正在检测边缘。

但是还有3个其他的Sobel边缘检测过滤器,我们也可以尝试它们。

  1. 添加其他3RasterConvolver转换器。将它们每个都连接到Clipper:Inside端口:

把它们设置为使用不同的Sobel滤波器:Sobel TopSobel BottomSobel LeftSobel Right

运行工作空间(选择RasterConvolver转换器并按下F6)。检查输出(选择RasterConvolver转换器并按下Ctrl+I)。

注意每个滤波类型会添加不同方向的边缘。为了得到完整结果,我们需要将它们合并到一起。

  1. 在画布中添加一个RasterExpressionEvaluator转换器,先不连接到任何对象,打开参数对话框。

设置Mode(模式)参数为Two Rasters

Band Expression(s)(波段表达式)字段中,将第一个Interpretation设置为Red8。在Expression(表达式)字段中输入:

换句话说,我们把两个栅格要素的0波段合并到一起。每个单元格新的值等于栅格A值的平方加上栅格B值的平方再开方。

对波段12Green8Blue8)重复该步骤,每次在表达式中更改波段数字:

现在关闭参数对话框,将前面两个RasterConvolver输出连接到RasterExpressionEvaluatorAB输入端口。

注意RasterExpressionEvaluator不允许同时处理4个栅格;因此我们需要使用多个转换器。

  1. 复制(使用复制/粘贴或Ctrl+D)已有的RasterExpressionEvaluator。将它连接到第二组RasterConvolver:Output端口。因为表达式完全一样,所以参数不需要更改。

现在第二次复制RasterExpressionEvaluators。这次将它连接到已有的RasterExpressionEvaluators转换器的Result端口:

现在运行工作空间,查看第三个RasterExpressionEvaluator转换器的结果:

https://knowledge.safe.com/storage/attachments/19033-rasterconvolveredges17.png

我们可以看到表面和建筑的边缘,但是图像中有相当多的噪点。

  1. Clipper和每个已有的RasterConvolver转换器之间添加RasterConvolver(在Clipper的绿色输出端口箭头处输入RasterConvolver进行快速添加):

https://knowledge.safe.com/storage/attachments/19015-rasterconvolveredges9.png

打开参数对话框,设置Convolution Filter TypeBlur: Gaussian 5

重新运行工作空间,然后再次检查最终输出。虽然表面的边缘要模糊一些,但图像中的噪点要小得多。

可选步骤

  1. 如果你喜欢带黑色轮廓的白色图像(而不是带白色轮廓的黑色图像),打开最后一个RasterExpressionEvaluator的参数对话框。修改表达式为:

对于8位栅格数据,255减去该值会产生反转图像。

你也可以在工作空间最后添加RasterInterpretationCoercer转换器,使颜色成为标准灰色。设置"Destination Interpretation Type"(目标解译类型)选项为Gray8"Convert Color to Color"(转换颜色到颜色)选项为Cast

重新运行工作空间。最终输出为白色背景上具有黑色的线:

https://knowledge.safe.com/storage/attachments/19034-rasterconvolveredges18.png

 

你现在可以使用这些轮廓(无论手动或自动过程)来确定学校所有的表面和建筑。

注意事项

结果的质量很大程度上依赖于图像在强度差异很大的区域之间,需要具有清晰和明确的边界。

例如,用户尝试定义坐落在码头上的集装箱边界:

https://knowledge.safe.com/storage/attachments/19035-rasterconvolveredges19.png

 

不幸的是,强度差异最大的边缘是集装箱的阴影;因此当集装箱隐藏在背景表面时,阴影具有最清晰的定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值