【发布时间】:2014-06-21 14:23:12
【问题描述】:
我正在研究一种检测算法,用于检测雷达图像上的风暴单元。 我在底图上绘制的二维 numpy 数组中有雷达数据。 我们得到了 azymuth 和 rangebins 数据,我们将它们放入带有纬度/经度坐标的极坐标网格中。
我们的 numpy 数组中的值基于 dBZ 高度,范围从零到最大值 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 代表空值或隐藏值。我们只需要正值。即使是小数也没有意义。
那么我们要做什么:
检测高值簇,并在该单元格周围使它们成为红色方块。 我尝试了一些带有图像蒙版的东西,但我被困在那里。即使我不知道图像蒙版是否是解决此问题的好方法。
这是我处理数据的代码。
gain = 0.5
offset = -31.5
az = np.arange(0.,360.,360./scan["scan_number_azim"])
r = np.arange(scan["scan_start_azim"], (scan["scan_start_azim"] + scan["scan_number_range"] * rscale), rscale)
data = gain * raw["scan2/scan_Z_data"] + offset
因此,检测次数会经常波动。也许我也需要 DBscan 之类的东西?
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我想你忘了问一个问题 - 你到底需要什么帮助?
-
抱歉,我想检测值高于 20dbz 的集群,并在最终产品图像上围绕它们制作一个彩色方块。检测到的集群应该得到一个 ID 或者我们以后可以用它做其他事情的东西,比如细胞运动的跟踪和速度。谢谢!
-
您可以使用masked array 跟踪特定的单元格,这会为它们提供一种ID。我不确定这是否适合您的情况以及您用于绘图的工具是什么。
-
谢谢,我们使用 wradlib 处理原始雷达数据。