【问题标题】:Computing the area of discrete points in Matlab在 Matlab 中计算离散点的面积
【发布时间】:2016-12-16 22:53:05
【问题描述】:

我有一组 2D 离散点,需要计算内部面积,或者只是长度和高度,显然没有关系。但是这个问题的重点是;不一定我们有锋利的边缘来塑造内表面。我尝试了命令boundaryinpolygon,但似乎不适合这个问题。我们没有直边的边怎么样,比如圆弧或半圆。

https://drive.google.com/file/d/0B-DuVkE6qbU3ZnJsbWdQNjVmVkk/view?usp=sharing

链接内提供的文件:

  • 文件 1 由 XYZ 坐标加上强度(来自激光扫描数据)值组成
  • 文件 2 由 XYZ 坐标加上强度组成,而所有 Z 和强度值在文件中都是固定的。
  • 图 1-1、1-2、1-3、1-4 表示具有相关强度值的 3D 数据。不同的强度值显示不同的材料。白色箭头显示细分不同部分的深度。
  • 图 2-1、2-2 表示只有一个强度值的 2D 数据。实际上,在这一步中,将 3D 数据投影到 2D 中,所有强度值都更改为仅一个值,另外,窗口的内部部分被移除。需要计算内部部分的面积。

这对我来说是一个挑战!有人可以建议吗?

【问题讨论】:

  • 根据定义,点是面积为零的东西。除非你的意思是别的东西并且你没有表现出来。这是图像处理吗?我们可以看到图像吗?你试过什么?
  • 您能告诉我如何上传点的屏幕截图或 ascii 文件吗?实际上它不是图像结构,即不是像素格式。它只是离散点,表示 x,y 坐标,但显然没有连接。
  • 在问题编辑器中,您有一个上传图片的按钮。或者您可以将图片上传到外部网站并提供链接(也有链接按钮)
  • @Sophia 离散点没有区域
  • 如果您尝试过inpolygon,我会认为您的点集是多边形的顶点,并且您想要计算该多边形的面积。考虑到点的顺序很重要,因为您可以拥有不同的有效有序点,这些点形成具有不同面积的不同多边形(如果线段不交叉,则一组有序点有效)。

标签: matlab 2d area points


【解决方案1】:

也许您可以使用imcloseimdilateimerode 函数来获得一个唯一的“对象”,然后您可以根据您的实现,通过将所有不同于 0 或 255 的值相加来计算面积.我假设图像是黑白的,否则先转换它。 Matlab 文档:

【讨论】:

  • 亲爱的 RCaetano,我提供了数据链接,也提供了对问题的更多解释。
  • 不是图片问题。在 ascii 文件中,有 xyz 坐标加上强度值。强度是点的属性,与材料等一些参数有关。
【解决方案2】:

如果您的点是多边形的顶点坐标,那么您可以使用polyarea 返回该多边形的面积。

例如:

Area = polyarea(pointsX, pointsY) 

考虑到点的顺序很重要,它们必须形成一个有效的多边形(线段不得交叉)

【讨论】:

  • 亲爱的Sembei,我提供了数据链接,也提供了对问题的更多解释。
  • 从 ascii 文件中可以看出,构建 ascii 文件所记录的点之间没有特定的顺序。它们是随机录制的。
  • 您可以在 Z 坐标(深度)中放置一个阈值。因此,您将以具有一定深度的对象的二进制图像结束。一旦你有了二进制图像,你可能需要一些形态来清理它,然后你可以使用bwarea。看看ch.mathworks.com/help/images/ref/bwarea.html
  • 这个问题understudy没有图像特征。
猜你喜欢
  • 2017-08-16
  • 2017-09-04
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2016-06-16
  • 1970-01-01
相关资源
最近更新 更多