Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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# 用VTK实现DICOM图像的三维点云可视化#_C#_Image Processing_3d_Vtk_Medical Imaging - Fatal编程技术网

C# 用VTK实现DICOM图像的三维点云可视化#

C# 用VTK实现DICOM图像的三维点云可视化#,c#,image-processing,3d,vtk,medical-imaging,C#,Image Processing,3d,Vtk,Medical Imaging,我的任务是可视化一个可以在DICOM系列中找到的灰度点云。 我找到了这个教程,它展示了如何通过机械化骨骼在3D中可视化骨骼。我可以把它转移到c#上,它就可以工作了,但我只需要一个3D点云,在那里我可以通过设置灰度阈值来定义对象。希望你明白我的意思。 所以我试了一下: // read file string pathDicom = @"...\dicomDirectory"; vtkDICOMImageReader reader = new Kitware.VTK.vtkDICOMImageRea

我的任务是可视化一个可以在DICOM系列中找到的灰度点云。 我找到了这个教程,它展示了如何通过机械化骨骼在3D中可视化骨骼。我可以把它转移到c#上,它就可以工作了,但我只需要一个3D点云,在那里我可以通过设置灰度阈值来定义对象。希望你明白我的意思。 所以我试了一下:

// read file
string pathDicom = @"...\dicomDirectory";
vtkDICOMImageReader reader = new Kitware.VTK.vtkDICOMImageReader();
reader.SetDirectoryName(pathDicom);
reader.Update();

// convert HU value
vtkImageShiftScale shiftScale = vtkImageShiftScale.New();
shiftScale.SetScale(reader.GetRescaleSlope());
shiftScale.SetShift(reader.GetRescaleOffset());
shiftScale.SetInputConnection(reader.GetOutputPort());
shiftScale.Update();

// Visualize
vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(shiftScale.GetOutputPort());

vtkActor actor = vtkActor.New();
actor.SetMapper(mapper);
actor.GetProperty().SetPointSize(4);

vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow;
vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer();
renderer.SetBackground(0.2, 0.3, 0.4);
renderer.AddActor(actor);
当我开始做这件事时,我也犯了同样的错误

vtkStreamingDemandDrivenPipline (09366B85)
VisualStudio告诉我

System.AccessViolationException
这是一种记忆错误

所以我的问题是我的错误在哪里?在调试过程中,我发现错误是从我为参与者设置映射器时开始的。但我现在知道,这段代码是用vtk显示所有内容的正常方式。我认为问题在于我没有真正从数组中获取点,但是imageData应该包含序列中的所有像素

希望你能帮助我