将具有简单形状的图像转换为多边形

时间:2013-10-06 08:50:14

标签: opencv image-processing computer-vision arcgis

我有一个从ArcGIS服务器导出的简单GIS图层图像,我现在要将其转换回多边形。 这样做的最佳方法是什么?

  1. 写我自己的脚本(什么是最好的 - 三角测量?线/边缘追踪?)
  2. 使用一些工具? (opencv?还有什么?)
  3. png image of polygons (each color represents a different polygon)

3 个答案:

答案 0 :(得分:1)

您显示的图像是栅格化的,因此您无法返回原始多边形。
但是,通过一些简单的连通分量分析,您可以提取所有连续的斑点(相同颜色)。这些可以用它们的边界(蓝线以外的任何东西)完全表示 您的新多边形现在是这些边界像素。当然,您可以应用多边形简化来减少多边形中的实际节点数。 OpenCV有几种这样的算法。

答案 1 :(得分:0)

最好和最简单的方法是使用From Raster toolset in ArcGIS。您可能想要使用的工具是Raster to Polygon。您可以直接在ArcGIS for Desktop中运行它,也可以在Python脚本中调用它。如果您愿意,也可以在ArcGIS for Server中运行它。 ArcGIS的所有许可级别都包括“栅格到多边形”工具。

请记住,Raster to Polygon会尝试将图像的所有部分提取到多边形(包括边界),因此您可以进行一些清理。希望这就像选择所有边界特征(即图像中的蓝色特征)并删除它们一样简单。

答案 2 :(得分:0)

尽管Gary使用argGis的答案看起来更好,但如果你只有这个光栅图像,你可以通过保持蓝色像素来提取轮廓(简单地在像素数据上循环创建一个蒙版,甚至可能{{1} }(用实际的边框像素颜色更改值)。然后你可以找到每个轮廓的连通分量,例如使用cv::floodFill`并使用 cv::approxPolyDp对点进行矢量化。