使用边界清理和主滤波对区域边缘进行平滑处理

边界清理主滤波工具用于概化栅格中区域的边缘。根据各个位置的邻域内的值,通过扩展及收缩边界,或增大或缩小区域,对边缘进行不同程度的平滑处理。

边界清理

边界清理工具主要用于清理区域间不规整的边缘。该工具使用扩展和收缩的方法在相对较大的范围上清理边界。最初,优先级较高的区域在各个方向上覆盖其邻近的优先级较低的区域,覆盖大小为一个像元。然后,它们收缩回至那些没有完全被相同值的像元包围的像元。除内部像元以外的任何像元(即,这些像元不作为八个具有相同值的最近相邻点的中心)均可替换。对于不按大小进行排序 (NO_SORT) 的默认方法,较大的值具有较高的优先级。

此外,还可以替换区域中的小岛屿(可被视为与区域共用边界)。可保留的最小区域为 3×3 的像元块。因此,可能替换狭窄的区域。例如,将移除宽度为 2 个像元、长度为 10 个像元的区域,这是因为这样的区域在收缩后无法恢复。

在下面的图示中,清理边界应用于未进行区域排序的输入栅格。值较大的区域具有较高的优先级,可以扩展到值较小的若干区域。请注意,值为 7 的像元扩展到值较低的像元。

边界清理插图 1
OutRas = BoundaryClean(InRas1)

在下面的图示中,边界清理应用于输入栅格,区域按照大小进行升序排序。总面积较小的区域具有较高的优先级,可以扩展到总面积较大的若干区域。请注意,面积较小的区域扩展到面积较大的区域。

边界清理插图 2
OutRas = BoundaryClean(InRas1, ascend)

主滤波

主滤波工具可根据像元邻域内的众数值来替换像元。主滤波需要满足两个条件才能发生替换。首先,相同值的邻近像元的数量必须多到可以成为众数值,或者至少一半的像元必须具有相同值(视指定的参数而定)。即,如果指定的是众数参数,则四分之三或八分之五的已连接像元必须具有相同的值;如果指定的是半数参数,则需要四分之二或八分之四的已连接像元具有相同的值。其次,那些像元必须与指定的滤波器的中心相邻(例如,四分之三的像元必须相同)。第二个条件与像元的空间连通性有关,目的是将像元的空间模式的破坏程度降到最低。如果不满足这些条件,将不会进行替换,像元的值也将保持不变。

在下图中,主滤波应用于输入栅格,使用最近的四个像元(四个正交的相邻像元)作为滤波器,并要求众数(四分之三的像元)值是相同的,才能更改相应像元的值。仅更改那些被三个或三个以上值相同的(正交)像元包围的像元。

主滤波插图 1
OutRas = MajorityFilter(InRas1)

在下图中,应用了主滤波,使用最近的八个像元作为滤波器,并要求至少一半的值(八分之四的像元)相同,才能更改像元的值。请注意,此时的平滑效果更佳。

主滤波插图 2
OutRas = MajorityFilter(InRas1, eight, half)

相关主题

9/15/2013