首页 > 解决方案 > 清洁 alpha 船体图像

问题描述

这是将ahullR 包中的函数alphahull应用于我的二维点集的结果。如何从图像中去除那些厚黑点?谢谢!

阿尔法赫尔

标签: rgeospatial

解决方案


简单地隐藏数据点似乎是有问题的,但这个解决方案通过从对象获取船体外部点的坐标ahull并用不可见的点覆盖这些点来完成您所描述的操作。有了这个,您不必更改输入数据或ahull对象。

library(alphahull)

lim=5
mat <- matrix(data=rnorm(1000), ncol=2)

some_hull = ahull(mat, alpha=0.5)
plot(some_hull, xlim = c(-lim,lim), ylim = c(-lim,lim))

在此处输入图像描述

arc 对象ahull$arcs在第三列中包含一个指示符,该指示符位于船体外部。您可以使用这些坐标并简单地覆盖稍大的不可见点来隐藏原始点,而无需更改输入数据或对象。

non_members <- some_hull$arcs[which(some_hull$arcs[, 3] == 0), 1:2]

plot(some_hull, xlim = c(-lim,lim), ylim = c(-lim,lim))
points(non_members, col="white", pch=19, cex=1.2)

在此处输入图像描述


推荐阅读