python – 2D Numpy Array的边缘值

我有一个以下形式的2D Numpy数组(最多5000行):

 [ 247.68512  182.67136]
 [ 248.71936  182.67136]
 [ 249.74336  182.67136]
 [ 253.85984  269.1072 ]
 [ 254.89408  269.1072 ]
 [ 255.91808  269.1072 ]
 [ 249.74336  182.67136]
 [ 250.7776   182.67136]
 [ 251.8016   182.67136]
 ...

其中列0对应于x,列1对应于y.

绘制时,数据应类似于blob形状.

《python – 2D Numpy Array的边缘值》

《python – 2D Numpy Array的边缘值》

如何将这些数据减少到只有blob周围的边缘或轮廓?

我已经看了一些skimage边缘检测功能,但我认为那里有一个纯粹的numpy解决方案.

有帮助吗?如果边缘检测是最好的工具吗?

谢谢

—编辑—-
数据也是未分类的,但我可以用我现有的一些代码对blob的orgin进行排序.不确定这是否有帮助.

《python – 2D Numpy Array的边缘值》

—编辑2 —
偶然发现了this K.D.的美丽解决方案.

我认为这应该适合这个应用程序.会尝试这个.

最佳答案 它取决于blob的拓扑结构.如果斑点光滑并且内部没有空隙,则可以执行以下操作:

从远处接近blob.扫描blob位置.当你到达一个点 – 检查相邻的网格.如果你有足够高的点密度,则设置isOnBorder = true.现在,对于每个相邻点,检查它是否具有空的和填充的邻居.如果是 – 这是边界点 – 将其添加到列表中.重复此过程,直到获得完整边框.如果你有空洞,你必须在里面做网格并检查内部边界.

点赞