Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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++;和OPENGL库 我需要用OpenGL库在我的C++应用程序中显示一个3D图像(它是一个心脏)。我有一些2D切割的心脏图像。首先,我将这些图像导入到我的项目中。但我不知道下一步该怎么办_C++_Image_Opengl - Fatal编程技术网

C++;使用C++;和OPENGL库 我需要用OpenGL库在我的C++应用程序中显示一个3D图像(它是一个心脏)。我有一些2D切割的心脏图像。首先,我将这些图像导入到我的项目中。但我不知道下一步该怎么办

C++;使用C++;和OPENGL库 我需要用OpenGL库在我的C++应用程序中显示一个3D图像(它是一个心脏)。我有一些2D切割的心脏图像。首先,我将这些图像导入到我的项目中。但我不知道下一步该怎么办,c++,image,opengl,C++,Image,Opengl,这些是我的照片 首先要了解的是,这是OpenGL新手最重要的一点:OpenGL只绘制点、线和三角形,就是这样。这不是一个神奇的图形库。这样做的缺点是,需要付出一些努力才能取得结果。好处是,你只受创造力的限制 现在,在你的例子中,你得到的是断层图像(切片图像),从外观上看,这些都是超声图像。这些图像本质上是每个位置的“密度”表示,并定义体积数据。OpenGL本身并不“知道”如何利用它。有一种3D图像格式,但当绘制三角形时,这些将只是“切片”通过这个 但是(这是一个重要的“但是”)你可以给Open

这些是我的照片


首先要了解的是,这是OpenGL新手最重要的一点:OpenGL只绘制点、线和三角形,就是这样。这不是一个神奇的图形库。这样做的缺点是,需要付出一些努力才能取得结果。好处是,你只受创造力的限制

现在,在你的例子中,你得到的是断层图像(切片图像),从外观上看,这些都是超声图像。这些图像本质上是每个位置的“密度”表示,并定义体积数据。OpenGL本身并不“知道”如何利用它。有一种3D图像格式,但当绘制三角形时,这些将只是“切片”通过这个

但是(这是一个重要的“但是”)你可以给OpenGL程序,称为“着色器”,告诉它在哪里画什么,给什么颜色。正是在这个程序中,你可以实现一个体积光线投射器,它可以把这种图像堆栈变成一个漂亮的视图

然而,描述如何从头开始实现这样一个raycaster,从零OpenGL知识到实际图片,这完全超出了StackOverflow的范围;这简直是太宽泛了。有几个教程质量和结果参差不齐(有些是开源的)


给你一个想法:我维护的volume raycaster库由大约2500行代码组成,涵盖了各种OpenGL版本配置文件和GPU功能(大部分着色器代码生成都与目标配置文件相匹配)。如果您将自己限制为一组特定的OpenGL CAP,可能需要大约1000行代码。

首先要了解的是,对于OpenGL新手来说,这是最重要的一点:OpenGL只绘制点、线和三角形,仅此而已。这不是一个神奇的图形库。这样做的缺点是,需要付出一些努力才能取得结果。好处是,你只受创造力的限制

现在,在你的例子中,你得到的是断层图像(切片图像),从外观上看,这些都是超声图像。这些图像本质上是每个位置的“密度”表示,并定义体积数据。OpenGL本身并不“知道”如何利用它。有一种3D图像格式,但当绘制三角形时,这些将只是“切片”通过这个

但是(这是一个重要的“但是”)你可以给OpenGL程序,称为“着色器”,告诉它在哪里画什么,给什么颜色。正是在这个程序中,你可以实现一个体积光线投射器,它可以把这种图像堆栈变成一个漂亮的视图

然而,描述如何从头开始实现这样一个raycaster,从零OpenGL知识到实际图片,这完全超出了StackOverflow的范围;这简直是太宽泛了。有几个教程质量和结果参差不齐(有些是开源的)


给你一个想法:我维护的volume raycaster库由大约2500行代码组成,涵盖了各种OpenGL版本配置文件和GPU功能(大部分着色器代码生成都与目标配置文件相匹配)。如果您将自己限制为一组特定的OpenGL CAP,可能需要大约1000行代码。

如果没有任何深度信息,您永远无法将2d图像转换为3d图像,因为您错过了关键的第三维。你所能做的就是创建一个简单的立方体,将图像作为纹理。谢谢你的评论。我在图片中找到了区域的边界(边缘检测),将坐标放在向量中(X和Y),然后在不同的Z轴上为每个图片绘制GL_点。我创建了一个图像的骨架,但它不是一个3d对象。接下来,我将堆叠它们。。。。我认为我的算法不正确哦,我明白了,这些只是样本图片吗?实际上,您是否有一组图像要在z轴上表示为切片,并通过连接从每个切片图像生成的顶点来构建3D网格?是的!!!疲倦的人。。。没错,我必须这样做我的项目。但我不知道如何找到源或算法。如果没有任何深度信息,你永远无法将二维图像转换为三维图像,因为你错过了关键的三维。你所能做的就是创建一个简单的立方体,将图像作为纹理。谢谢你的评论。我在图片中找到了区域的边界(边缘检测),将坐标放在向量中(X和Y),然后在不同的Z轴上为每个图片绘制GL_点。我创建了一个图像的骨架,但它不是一个3d对象。接下来,我将堆叠它们。。。。我认为我的算法不正确哦,我明白了,这些只是样本图片吗?实际上,您是否有一组图像要在z轴上表示为切片,并通过连接从每个切片图像生成的顶点来构建3D网格?是的!!!疲倦的人。。。没错,我必须这样做我的项目。但我不知道如何找到源代码或算法。非常感谢您的回复。我仍然希望我能用OpenGl来制作它。我还发现了一个使用该库的简短教程……我会尽力理解它,但肯定还有其他问题。@AnhNguyen:Marching Cube(或Marching Tetraedra)是一种从密度图像中提取曲面的方法。根据经验,我可以告诉你,对于像你在那里看到的那样的图像,这种方法几乎不会产生好的图像。相反,您应该只实现一个直接卷渲染器(卷光栅化器);当面对像您这样的输入数据时,这样的系统生成的图像更好,保真度更高。下面是一个很好的页面,介绍了如何使用GLSL(OpenGL着色器语言):非常感谢您的回复。我还是希望我能用它