将等高线转换为点集

Posted

技术标签:

【中文标题】将等高线转换为点集【英文标题】:Convert Contours into Set of Points 【发布时间】:2021-10-06 01:32:30 【问题描述】:

我有一个形状的轮廓(花边界),我在 Octave 中使用轮廓函数(已将其附在下面)。

我想将其转换为代表形状的点集,并拟合一个函数以展开形状,使其成为极坐标形式的角度线性函数。我正在 MATLAB 中尝试,但在 python 中的答案也可以。

主要关注的是如何将该轮廓转换为点集。

已附上下面的轮廓图,

Contour image

请帮帮我!

【问题讨论】:

“我有一个形状的轮廓”。那么这个轮廓是如何存储在您的计算机中的呢?你有什么?编辑您的问题以澄清这一点。 请立即查看! 对图像进行二值化,得到非零像素。 所以你在 Octave 中有一个矩阵。每个像素的类型是什么?背景(白色)像素的值是多少?前景(青色?)像素的值是多少? 请不要破坏您的问题,尤其是在您收到对您有帮助的答案后。更改问题的内容会使未来的访问者无法找到问题及其答案。 【参考方案1】:

你的问题很模糊,所以我在这里做了很多假设,但这是我从你的问题中理解的:

    您有一个“绘图窗口”,显示等高线图。 就你而言,你无法控制这个过程,你不知道等高线图是如何产生的,从什么数据,没有办法调用其他东西而不是等高线图,给你数据。 您只想直接从图形对象中提取所需的轮廓点。

以下是如何执行此操作的示例。我没有你的情节,所以我将使用内置的“峰值”函数来生成轮廓。

% Generate a surface plot
  peaks;

% Grab the 'peaks' graphical object, which here is the only 'child' object of the main 'axes' object
  PeaksObj = get( gca, 'children' );

% Grab the X, Y, and Z data that was used to generate this surface plot
  X = get( PeaksObj, 'xdata' );
  Y = get( PeaksObj, 'ydata' );
  Z = get( PeaksObj, 'zdata' );

% Generate our example contour plot
  contour( X, Y, Z );

太好了,现在我们可以使用等高线图了。假设我们不知道它是如何生成的。

在 octave 中,“等高线图”实际上是一组单独的线图。首先,我们需要从当前坐标区对象中获取“组对象”:

% Grab the contour 'group' object from the current axes object
  ContourGrp = get( gca, 'children' );

% The contour 'group' object should have children, which are individual contours.
  Contours = get( ContourGrp, 'children' );

此时,您有一组单独的线图,对应于单独的轮廓。您需要确定哪些轮廓是您感兴趣的轮廓。一种交互式执行此操作的方法是逐个“填充和取消填充”每个轮廓,然后找到您感兴趣的轮廓。例如,对“Contours”数组的每个元素执行此操作(即,如果有“k”个元素,则将 k 更改为从 1 到有多少元素):

% Experiment to find the contour of interest
  k = 1
  set( Contours(k), 'facecolor', 'r'    );
  set( Contours(k), 'facecolor', 'none' );

假设您想要的轮廓是 k = 5。现在我们可以获取构成该轮廓线的 X 和 Y 数据:

% Get the X and Y data from the right contour
  X = get( Contours(k), 'xdata' );
  Y = get( Contours(k), 'ydata' );

% Plot X against Y to confirm
  plot( X, Y );

恭喜。现在您有了 X Y 点,您可以从中计算质心并导出半径和角度以传递到极坐标图中。

【讨论】:

以上是关于将等高线转换为点集的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS Pro风暴Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程

ArcGIS Pro风暴Data Interoperability Tools快速将CASS等高线dwg转为shp案例教程

等高线的使用帮助教程

等高线的使用帮助教程

等高线如何转换成西安80坐标系

将.jpg转换为颜色等高线图