Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从二维图像到三维视图_C#_.net_3d_Rendering_2d - Fatal编程技术网

C# 从二维图像到三维视图

C# 从二维图像到三维视图,c#,.net,3d,rendering,2d,C#,.net,3d,Rendering,2d,我需要能够从一堆管道的2D图像生成3D透视图 基本上。。。我们已经编写了一个软件,可以解释激光和声纳装置的组合数据,为我们提供一段管道的图像切片。这些装置穿过管道,每100mm扫描一次管道内部。 所有这些都很有效。我的客户现在想拍摄所有这些2D图像切片并生成一个3D视图,这样他们就可以“穿越”管道查看缺陷等。。扫描得到的数据。我们可以在2D图像中看到缺陷,但在一次检查中可能会有数百个图像-因此要求能够通过管道查看 我是在VS2010中,在C#中的.NET4平台上这样做的 老实说,我不知道从哪里开

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

基本上。。。我们已经编写了一个软件,可以解释激光和声纳装置的组合数据,为我们提供一段管道的图像切片。这些装置穿过管道,每100mm扫描一次管道内部。 所有这些都很有效。我的客户现在想拍摄所有这些2D图像切片并生成一个3D视图,这样他们就可以“穿越”管道查看缺陷等。。扫描得到的数据。我们可以在2D图像中看到缺陷,但在一次检查中可能会有数百个图像-因此要求能够通过管道查看

我是在VS2010中,在C#中的.NET4平台上这样做的

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

感谢您的帮助:)


迈克

嗯,每10厘米都不是很详细。。但是,您需要扫描管道的像素,创建一个闭合多边形列表,然后使用三角形笔划将一个集合连接到下一个集合,一直延伸到管道。

尝试从非常基本的2d开始,而不是完整的3d渲染-可能已经足够了。当你们从里面看管道时,可以用几个吊架来表示。假设您的图像是管道的小圆柱体部分-将每个条纹映射到梯形(4个是很好的开始-易于定位)并绘制,而不是圆形图案。你可以用这种方法同时画几条条纹。要向后/向前移动,只需将图像重新指定给梯形即可


如果你需要完整的3D -考虑WPF是否工作,如果不是,XNA或一些OpenGL库将给你完整的3D。

< P>你不指定上下文,100mm的采样间隔可能是稀疏的(1M管道)或详细的(10KM管道)。也不指定有多少个采样点(横截面的数量和横截面图像的大小)


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

这可能是外包/短期找人为您做这件事的理想人选(因为要获得3D图像需要大量的基础工作).你有扫描的坐标吗?或者你能从收集到的数据准确地推断出来吗?我曾考虑过外包,但我也喜欢挑战。不过,这可能有点让我难以理解。我需要先做一些基础工作,然后决定是否应该找人来做。我从当前用于绘制2D图像的导入数据中获取X/Y值,并根据管道直径(导入时输入)计算管道中缺陷的百分比。感谢指导。我们将研究体素以及如何应用它们。我从未指定间隔或长度,因为每次检查的间隔或长度都不同。当数据导入我的系统时,他们会设置参数(管道长度和间隔)。我已经在用这个来计算管道和其他东西的缺陷百分比。你的观点很有趣。我想也许2D方法是一个很好的开始,我一直在和WPF打交道。在网上找到这个示例:这似乎是我想要开始的。基本上是可以移动的2D图像的“堆栈”。创建suedo 3D效果。如果术语不正确,请原谅。有没有一种方法可以使用ViewPort3D或类似的工具来实现这一点,您可以从viewmodel向其提供一组图像,并允许用户逐步浏览这些图像?我想堆栈提供了一点向下和右侧,以类似于某种三维设置。真正的黑客-但一个开始。我不知道。最好单独问带有WPF标记的问题。