1
4
简而言之,使用你的方法,你会得到一个非常糟糕的尺寸估计。无论您选择什么阈值,模糊区域的边缘都与要测量的inselberg的边缘不对应。
相反,我建议你遵循下面的食谱。我在用
DIPlib
在Python中(免责声明:我是作者)。Python绑定是C++库上的一层薄薄的一层,将下面的Python代码翻译成C++相当简单(对我来说,用Python交互式开发它更容易)。安装时使用
我从你提供的链接(而不是坡度)下载了原始高度数据。DIPlib可以直接读取浮点值TIFF文件,因此不需要任何特殊的转换。我裁剪了一个与OP在这个演示中使用的区域类似的区域,但没有理由不将该方法应用于整个图块。
该代码还根据TIFF文件中的数据设置像素大小(使用弧度单位,因为DIPlib不做度数)。
接下来,我应用具有特定直径(25像素)的顶帽滤镜。这隔离了直径为25像素或更小的所有峰值。根据您认为嵌条的最大宽度调整此尺寸。
实际上,结果是一个局部高度,即高于某个基线的高度,由过滤器的大小决定。
接下来,我应用滞后阈值(双阈值)。这会产生一个二值图像,在基线以上100米处进行阈值处理,地形在基线以上200米处。也就是说,我决定一个inselberg应该至少比基线高200米,但在100米处把它们都剪掉。在这个高度,我们将测量大小(面积)。再次,根据需要调整阈值。
现在剩下的就是测量我们发现的区域:
这将输出:
(记住,上面写着“rad”的地方实际上是度。)平方度的面积有点奇怪,但你可以将其转换为平方米,因为你知道地球上的位置。事实上,在计算之前,将像素大小转换为米可能更容易。 这里给出的“中心”值是关于左上角像素的,如果我们一开始没有裁剪图块,我们可以添加图块的坐标(可以从TIFF文件中的相应标签中获得):(-42.0,-17.0)。 在C++中,代码应该如下所示:
|
2
3
一种方法是使用ImageMagick连接的组件,并在适当的阈值后从每个白色区域提取质心。 这是ImageMagick 6中的命令行。但是,如果您愿意,您可以使用C++API。 毛刺图像:
|
Danish Bansal · 如何编辑已注释的图像(矩形边框)? 2 年前 |
Benjamin · 将tfrecord中的灰度转换为RGB 6 年前 |
Heldap · 为YOLO和SSD型号创建数据集时,为什么要进行注释 6 年前 |