[英]vtk convert 2d image to 3d (c++)
我已经读了好几天的doxygen和vtk wiki了,但我仍然不是100%地确定我要问的事情甚至可能。
我要完成的工作是以通用格式(即PNG)拍摄2d图像并输出3d模型(PNG-> Model / Mesh或2d-> 3d)。 一个很好的例子是,如果我在MS Paint中绘制一个多维数据集并将图形另存为PNG,然后读取图像并生成该多维数据集的3D模型。 所以我的第一个问题是可能吗? IT部门似乎应该采取某种方法来获取图像数据并将其转换为多数据,然后从那里开始建立模型。 这就是我的想法(在C ++中):
int main(int argc, char *argv[])
{
//Verify correct number of input arguements
if(argc < 2)
{
fprintf(stderr, "Usage: %s Filename(.png)\n");
return EXIT_FAILURE;
}
std::string fileName = argv[1];
//Read file
vtkSmartPointer<vtkImageReader2Factory> readerFactory = vtkSmartPointer<vtkImageReader2Factory>::New();
vtkImageReader2 *imageReader = readerFactory->CreateImageReader2(inputFilename.c_str());
imageReader->Update();
//Get the image Data
vtkSmartPointer<vtkImageDataGeometryFilter> imageDataGeometryFilter =
vtkSmartPointer<vtkImageDataGeometryFilter>::New();
imageDataGeometryFilter-> SetInputConnection(imageReader-> GetOutputPort()); imageDataGeometryFilter->更新();
因此,如果第一个问题的答案是肯定的,那么这似乎还遥遥无期吗?
我怀疑VTK是否提供了将通用2d形状处理为3d模型的现成算法。 这基本上是一个反问题,意味着解决方案可能很多。 如果不应用对象形状的某些约束或假设,这将很困难。
VTK可能会帮助您表达处理图像的步骤(例如,提取显着特征,例如角和线),以及在数据结构中提供更多选择。 在我看来,您的代码中显示的想法仅显示了从2d到3d的一般处理流程,但是细节(例如几何过滤器)可能需要由您自己实现。
您要完成的实际任务是一个算法问题,例如,这项工作在CAD领域(将清晰的2d工程图绘制到3d模型中)具有研究兴趣。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.