Vtk读取dicom文件
Vtk read dicom file
我正在尝试遍历dicom文件中的所有像素。现在我正在使用一个演示:
int main(int argc, char* argv[])
{
std::string inputFilename = "MR000000";
// Read all the DICOM files in the specified directory.
vtkSmartPointer<vtkDICOMImageReader> reader =
vtkSmartPointer<vtkDICOMImageReader>::New();
reader->SetFileName(inputFilename.c_str());
reader->Update();
// Visualize
vtkSmartPointer<vtkImageViewer2> imageViewer =
vtkSmartPointer<vtkImageViewer2>::New();
imageViewer->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
imageViewer->SetupInteractor(renderWindowInteractor);
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
imageViewer->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
是这里的一种方式来获得像素数组从阅读器对象?
vtkImageViewer2
有一个返回vtkImageData
实例的GetIntput()
方法。我想这个方法应该在imageViewer->Render()
调用之后使用。
从这个ImageData中,您可以检索图像的每个组件。您需要通过imageData->GetScalarPointer(x,y,z)
调整返回组件的类型;使用imageData->GetScalarType ()
和imageData->GetNumberOfScalarComponents()
.
看一下这个例子
vtkImageViewer2不是你想要的,vtkDICOMImageReader更适合:
这里有一些源代码应该会有所帮助(这是pcl点,但实际上是一样的):
vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
vtkSmartPointer<vtkImageData> sliceData = vtkSmartPointer<vtkImageData>::New();
reader->SetFileName(dicomFile.c_str());
reader->Update();
sliceData = reader->GetOutput();
int numberOfDims = sliceData->GetDataDimension();
int * dims = sliceData->GetDimensions();
double* spacingData = reader->GetDataSpacing();
for (int y = 0; y < dims[1]; y++)
{
for (int x = 0; x < dims[0]; x++)
{
pcl::PointXYZI tempPt = pcl::PointXYZI();
tempPt.x = x * spacingData[0];
tempPt.y = y * spacingData[1];
tempPt.z = 0;
double tempIntensity = sliceData->GetScalarComponentAsDouble(x, y, z, 0);
if (!isinf(tempIntensity))
{
tempPt.intensity = tempIntensity;
}
else
{
tempPt.intensity = 0;
}
cloud->points.push_back(tempPt);
}
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何从dicom文件中读取二进制数据
- 如何使用GDCM读取多帧DICOM文件?
- 如何使用Imebra库将压缩像素(用我自己的编码器压缩)回到DICOM图像文件中
- 如何从DICOM文件中提取PIXEL
- 如何使用纯C或C++文件读取方法解析DICOM文件
- 使用 DCMTK 压缩 DICOM 文件 (C++)
- 从 DICOM 文件 .dcm 获取像素数据
- 如何使用 MergeCom 工具包将 DICOM 文件发送到 PACS
- 如何使用Imebra库修改DICOM文件中的图像像素
- 阅读Dicom文件中的汉字
- 读取DICOM文件时,ITK访问违规错误在发布模式下,但在调试模式下没有
- DCMTK C++:如何从dicom文件中获取数据像素
- 使用Mergecom工具箱c++枚举DICOM文件中的SQ标记
- Vtk读取dicom文件