【问题标题】:Extract polygons from an image从图像中提取多边形
【发布时间】:2014-11-10 11:24:06
【问题描述】:

我有一个带有不同颜色的简单多边形的图像 (PNG)。鉴于左上角的坐标为 [0,0],我需要对这些多边形进行序列化。我已经尝试过 gdal_polygonize 并且我对结果几乎很满意,但是有一个问题。看看this triangle我想得到角点和它们的顺序来知道它们中的哪些是链接在一起的。所以我期望的坐标是 [30.0, 23.0], [30.0, 504.0], [511.0, 504.0], [30.0, 23.0]。我试过 gdal_polygonize.py 但是当我尝试时

gdal_polygonize -8 triangle.png triangle 

我得到了数百个坐标,因为它将斜边的每个像素都计为多边形的一个角。我能做些什么?必须有一些算法,但我能找到的只是从 3d 对象中提取多边形的算法等等:(

我不确定,但也许 this 是我的问题的解决方案,但由于我在 R 方面不太好,我想知道,我是否可以使用 R 脚本,如果可以,它看起来如何?

【问题讨论】:

    标签: r algorithm extract polygon gdal


    【解决方案1】:

    gdal_polygonize 非常精确,它遵循每个像素的轮廓。这使行为变得容易且可预测。您显然想对您的图像进行一些解释,在这种情况下,像素化对角线实际上是一条直线,但这并不明显,因此它实际上取决于您的应用程序。

    对于复杂的矢量化有很多选择,你可以看看 Scikit 图像,例如: http://freeconnection.blogspot.nl/2013/07/vectorize-image-with-python-scikit-image.html

    对于这个简单的示例,有一些更简单的技巧,但它们是否可用实际上取决于实际应用程序。

    给定您的三角形图像,以及来自gdal_polygonize 的结果。您可以使用ogr2ogr 转换输出并提供简化值1。

    ogr2ogr -simplify 1 output.shp input.shp
    

    我认为该值是以输入的单位提供的,鉴于缺乏空间参考系统,它仍然是一个“像素”。

    在结果上运行ogrinfo 会显示多边形中的剩余顶点:

    ogrinfo -al triangle_sim.shp    
    POLYGON ((30 23,30 504,511 504,511 503,30 23))
    

    我不确定为什么还剩下一个“单像素”步骤,从 511 504511 503。这可能是由于 OGR 使用的简化算法的性质。提高简化容差似乎不起作用。虽然它接近您想要的,但您可以使用不同的软件尝试相同的方法(使用简化算法),看看是否能得到想要的结果。

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 2020-09-02
      • 2013-03-02
      • 1970-01-01
      • 2015-09-03
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多