【问题标题】:How to limit voronoi calculations in Matlab?如何限制 Matlab 中的 voronoi 计算?
【发布时间】:2015-05-12 10:07:37
【问题描述】:

我有一堆椭圆柱的图像。在圆柱体内有一些重要的“点”/种子。我已经计算了它们与最近邻居之间的欧几里得距离。我的下一步是制作一个 voronoi 图并计算每个 voronoi 细胞的体积。

我需要定义椭圆柱的空​​间/限制,以便在计算 voronoi 图时加以考虑。

有什么想法吗?

提前致谢,

尤塔姆

【问题讨论】:

  • “画”是什么意思?您想以图形方式绘制 3D 体积吗?但是您将如何在该数字上“进行一些计算”?
  • 对含糊之处深表歉意。基本上,我有一堆椭圆柱的图像。在圆柱体内有一些重要的“点”/种子。我已经计算了它们与最近邻居之间的欧几里得距离。我的下一步是制作一个 voronoi 图并计算每个 voronoi 单元的体积。现在终于到了我的问题,我需要定义那个椭圆柱的空​​间/限制,以便在计算 voronoi 图时考虑在内,我不知道该怎么做......我应该在之前说过。我很抱歉。
  • 你可能想发布你已经拥有的代码

标签: matlab coordinates ellipse voronoi cylindrical


【解决方案1】:

首先让我们从一些上下文猜测开始:

Matlab mupad 用于符号计算。我不明白为什么你会认为你需要这个来绘制任何东西?

我不知道你为什么需要画任何东西,但我认为它是为了可视化完成的计算。就像横截面积一样,使用特定的平面方程,或横截面周长,给定平面方程。或者可能是光线的碰撞点,或者突出显示您正在计算的表面?

在这些情况下,数值渲染就足够了,您可以简单地使用内置的绘图功能...

我推荐表面(绘制网格) http://nl.mathworks.com/help/matlab/ref/surface.html

但实际上这里的前一个问题显示了如何手动绘制 3d 圆柱体: Cylinder with filled top and bottom in matlab

请注意,圆柱体的方程直接在函数中表示,您可以对其进行修改!


阅读您的评论后,您提出的问题与您想做什么无关。如果您将问题更新为有关限制图像上的 voronoi 计算的内容,请忽略此答案

【讨论】:

    【解决方案2】:

    这有多难取决于您是能够单独对切片进行操作,还是需要对整个卷进行操作。

    在前一种情况下,如果您的圆柱体与任何轴对齐,会容易得多。然后,您可以使用横截面椭圆的方程来定义横向平面中的边界,您可以将其应用于所有切片。这将使您可以在平面内执行操作,例如测试点的内部/外部,屏蔽图像。除了排除外部点之外,我无法猜测这可能如何与 Voronoi 图交互,但听起来它代表的是椭圆/圆柱体,这是主要问题。

    如果你的圆柱体没有轴向对齐,那么它会更难,但原则上是相同的过程:将椭圆投影到图像平面上,并根据圆柱体的纵向矢量和垂直于图像的轴之间的角度在每个切片中偏移它。

    如果您打算对卷进行操作,那么您将按照不同的顺序执行相同的操作(这取决于您使用它的目的):一旦您计算了给定图像和圆柱体,那么您可以先将蒙版或边界应用于每个切片,然后绘制 Voronoi 图。

    主要是避免将圆柱体表示为 3d 对象:即使没有符号数学也是可能的,但它很复杂,并且由于您的数据集自然地按切片排序,因此对圆柱体进行切片也是最一致的,椭圆比圆柱体的定义要紧凑得多。

    对于所有这些选项,第一步是用数学方法定义问题。根据您对 matlab 的熟悉程度,您可以将其转换为伪代码,最后转换为 matlab,或者跳过伪代码。

    【讨论】:

    • 感谢您的回复!由于我对 Matlab 很陌生,我发现手动(使用 Metamorph)获取点的质心坐标(以 xyz 为单位)更容易。然后我计算了它们与 Matlab 中最近邻居之间的欧几里得距离。我的下一步是制作一个 voronoi 图并计算每个 voronoi 单元的体积,这就是我基本上被卡住的地方(我应该更清楚。我很抱歉)。我在创建 voronoi 图方面取得了轻微的成功(虽然我确信它并不复杂),但我不知道如何定义它在空间中的限制。
    • 我只是不确定我需要哪个坐标(我猜是轴长?)。
    • 有一个函数voronoin 可以计算n-D voronoi 图,您可以使用convhulln 来获取单元体积,但诀窍是首先将您的数据整理成正确的格式。请参阅uk.mathworks.com/help/matlab/ref/voronoin.html 并查看是否可以根据需要调整示例。尝试无边界,看看结果如何,你可能会发现你可以将边界应用到voronoi图和/或相关单元格之后。
    • 太好了,我会努力的。希望我能做对。非常感谢您的帮助!
    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多