【问题标题】:2D images to 3D view2D 图像到 3D 视图
【发布时间】:2012-03-12 16:54:23
【问题描述】:

我需要能够从一堆管道的 2D 图像生成 3D 透视图。

基本上...我们已经编写了软件,可以解释来自激光和声纳装置的组合数据,从而为我们提供一段管道的图像切片。这些单元穿过管道并每 100 毫米扫描管道内部。 所有这一切都很好。我的客户现在想要获取所有这些 2D 图像切片并生成 3D 视图,这样他们就可以“穿越”管道,查看扫描发现的缺陷等。我们可以在 2D 图像中看到缺陷,但在一次检查中可能有数百张图像 - 因此需要能够通过管道查看。

我在 .NET 4 平台上的 VS2010 中使用 C# 执行此操作。

老实说,我不知道从哪里开始。我不是图形开发人员,所以这对我来说是全新的领域。我认为这是一个巨大的挑战,但需要一些帮助才能开始 - 以及一些方向。

任何帮助表示赞赏:)

迈克

【问题讨论】:

  • 这可能是外包/找人短期为您做这件事的理想人选(因为获得 3D 图像需要大量的基础工作)。
  • 你有没有扫描的坐标,或者你能从收集的数据中准确推断出它们吗?
  • 我曾考虑外包它,但我也喜欢挑战。不过,这可能有点超出我的想象。首先需要做一些基础工作,然后确定我是否应该找人来做。我从用于绘制 2D 图像的导入数据中获取 X/Y 值,并根据管道直径(在导入时输入)计算出管道中缺陷的百分比。

标签: c# .net 3d rendering 2d


【解决方案1】:

嗯,每 10 厘米不是很详细。但是,您需要扫描管道的像素,创建一个封闭多边形列表,然后只需使用三角带将一组连接到下一组,一直向下管道。

【讨论】:

    【解决方案2】:

    尝试从非常基本的 2d 开始,而不是完整的 3d 渲染 - 可能就足够了。从内部看的管道可以表示为几个空中飞人。假设您的图像是管道的小圆柱部分 - 将每个条纹映射到梯形(4 将是一个好的开始 - 易于定位)并绘制而不是圆形图案。您可以以这种方式同时绘制多个条纹。向后/向前移动 - 只需将图像重新分配给梯形。

    如果您需要完整的 3d - 考虑 WPF 是否可以工作,否则 - XNA 或某些 OpenGL 库将为您提供完整的 3d。

    【讨论】:

    • 你的观点很有趣。我认为也许 2D 方法是让我进入这个领域的良好开端。
    • 我一直在玩 WPF。在网上找到了这个示例:thriple.codeplex.com 这似乎是我想要开始的。基本上是可以移动的二维图像“堆栈”。创建绒面革 3D 效果。如果不正确,请原谅术语。有没有办法使用 ViewPort3D 或类似的方法来执行此操作,您可以从视图模型中为其提供一堆图像并允许用户逐步浏览图像?我希望堆栈向下和向右一点,以类似于某种 3D 设置。真正的 hack - 但只是一个开始。
    • 我不知道。最好提出带有 WPF 标记的单独问题。
    【解决方案3】:

    您不指定上下文,100 毫米的采样间隔可能是稀疏的(1m 管道)或详细的(10 公里管道)。您也没有指定有多少样本点(横截面数量和横截面图像的大小)。

    显示数据的一种简单方法是使用体素,其中横截面上的每个像素都被视为一个立方体,相邻的样本形成相邻的立方体(想想 Minecraft)。结果看起来会是块状的,但由于它是工程/科学应用程序,这可能更可取。对模型进行插值以产生光滑的表面可能会隐藏缺陷或使区域看起来有缺陷。此外,通过体素渲染横截面比多边形表面要容易一些。

    【讨论】:

    • 感谢您的指导。将做一些研究体素以及如何应用它们。我从未指定间隔或长度,因为它因检查而异。当数据导入我的系统时,他们会设置参数(管道长度和间隔)。我已经在使用它来计算管道和材料中的缺陷百分比。
    猜你喜欢
    • 2013-07-19
    • 2019-06-02
    • 1970-01-01
    • 2020-09-17
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多