从numpy数组检测高值

2024-09-27 22:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一种探测雷达图像上风暴单元的探测装置。 我有二维阵列的雷达数据,我们在底图上画出来。 我们得到了azymuth和rangebins的数据,我们把它们放到一个具有lat/lon坐标的polargrid中。在

numpy数组中的值基于dBZ高度,范围从0到最大80。在

下面是一个名为data的numpy数组的打印输出:

[[-31.5 -31.5  16.5 ..., -31.5 -31.5 -31.5]
[-31.5 -31.5 -31.5 ..., -31.5 -31.5 -31.5]
[-31.5 -31.5 -31.5 ..., -31.5 -31.5 -31.5]
...,
[-31.5 -31.5 -31.5 ..., -31.5 -31.5 -31.5]
[-31.5 -31.5 -31.5 ..., -31.5 -31.5 -31.5]
[-31.5  11.5 -31.5 ..., -31.5 -31.5 -31.5]]

而-31.5代表空值或隐藏值。我们只需要正值。即使是小数也没有意义。在

那么我们要做什么:

检测高值的簇,并在该单元格周围形成一个红色正方形。 我试过用图像面具的方法,但是我被困在那里了。甚至我也不知道图像掩模是否是解决这个问题的好办法。在

这是我处理数据的代码。在

^{pr2}$

所以探测的数量会经常波动。也许我也需要像DBscan这样的东西?在

有人能帮我吗?在


Tags: 数据图像numpy高度数组单元lonlat
1条回答
网友
1楼 · 发布于 2024-09-27 22:36:34

如果你能用scipy,我想这样的方法会管用:

import scipy.ndimage

mask = data > 20
labels, num_labels = scipy.ndimage.label(mask)
custers = scipy.ndimage.find_objects(labels)

现在,clusters将是一个切片元组的列表,您可以获得矩形的起始和结束行和列,如下所示:

^{pr2}$

相关问题 更多 >

    热门问题