我需要能够从一堆管道的2D图像中生成3D透视图。
基本上......我们编写的软件可以解释激光和声纳单元的组合数据,从而为我们提供一段管道的图像切片。这些装置穿过管道并每隔100mm扫描管道内部。 所有这一切都很有效。我的客户现在想要拍摄所有这些2D图像切片并生成3D视图,这样他们就可以通过管道“移动”查看由扫描拾取的缺陷等。我们可以看到2D图像中的缺陷,但在一次检查中可能会有数百个图像 - 因此需要能够查看管道。
我在C#中的.NET 4平台上的VS2010中这样做。
老实说,从哪里开始,我一无所知。我不是图形开发人员所以这对我来说都是新的领域。我认为这是一个很大的挑战,但需要一些帮助才能开始 - 并且有点方向。
任何帮助表示赞赏:)
麦克
答案 0 :(得分:0)
嗯,每10cm都不是很详细。但是,你需要扫描管道的像素,创建一个封闭的多边形列表,然后只需使用三角形连接将一个集合连接到下一个集合,一直向下管道。
答案 1 :(得分:0)
尝试从非常基本的2d开始,而不是完全吹制的3D渲染 - 可能已经足够了。当你从里面看它时,管道可以表示为几个空中飞人。假设你的图像是管道的小圆柱部分 - 将每个条纹映射到梯形(4将是良好的开始 - 易于定位)和绘制而不是圆形图案。您可以同时以这种方式绘制几条条纹。向前/向后移动 - 只需将图像重新分配给梯形。
如果你需要完整的3D - 考虑WPF是否可以工作,如果没有 - XNA或某些OpenGL库将为你提供完整的3D。
答案 2 :(得分:0)
您没有指定上下文,100mm采样间隔可能是稀疏的(1m管道)或详细的(10km管道)。您也没有指定有多少个采样点(横截面的数量和横截面图像的大小)。
显示数据的一种简单方法是使用体素,其中横截面上的每个像素被视为立方体,相邻的样本形成相邻的立方体(想想Minecraft)。结果看起来很块,但由于这是一个工程/科学应用,这可能更好。对模型进行插值以产生光滑的表面可能会隐藏缺陷或使区域看起来有缺陷。此外,渲染体素的横截面比多边形表面更容易。