simpleitk包的使用与numpy的区别

在SimpleITK中,各术语对应如下:

Width: 宽度,矢状面(Sagittal)
Height: 高度,冠状面(Coronal)
Depth: 深度, 横断面(Axial)
使用GetSize()的输出为:(矢状面Width, 冠状面Height, 横断面Depth),也即原始SimpleITK数据的存储形式
使用GetArrayFromImage()方法后,X轴与Z轴发生了对调,输出形状为:(横断面Depth, 冠状面Height, 矢状面Width)

	import SimpleITK as sitk
    path = './data/patient001/patient001_frame01.nii.gz'
    image = sitk.ReadImage(path)
    # 直接获取尺寸
    shape_img = image.GetSize()
    print(f'GetSize of image: {shape_img}')
    # 转换为numpy矩阵后输出矩阵维度
    data = sitk.GetArrayFromImage(image)
    shape_data = data.shape
    print(f'numpy of image: {shape_data}')
    '''
    输出信息
    GetSize of image: (216, 256, 10)
    numpy of image: (10, 256, 216)
    '''

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
使用SimpleITK库导入DICOM文件并生成STL文件,您可以按照以下步骤操作: ```python import SimpleITK as sitk import vtk def dicom_to_stl(dicom_dir, output_stl): # 读取DICOM序列 reader = sitk.ImageSeriesReader() dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir) reader.SetFileNames(dicom_names) image = reader.Execute() # 使用Marching Cubes算法提取表面 surface_extractor = sitk.MarchingCubes() surface_extractor.SetInput(image) surface_extractor.SetValue(0, 1000) # 根据实际需求设置阈值 # 将表面转换为vtk数据类型 surface = surface_extractor.GetOutput() surface_array = sitk.GetArrayFromImage(surface) vtk_data = vtk.vtkImageData() vtk_data.SetDimensions(surface_array.shape[::-1]) vtk_data.AllocateScalars(vtk.VTK_UNSIGNED_CHAR, 1) vtk_data.GetPointData().SetScalars(vtk.util.numpy_support.numpy_to_vtk(surface_array.ravel(), deep=True)) # 使用vtkSTLWriter将表面写入STL文件 stl_writer = vtk.vtkSTLWriter() stl_writer.SetFileName(output_stl) stl_writer.SetInputData(vtk_data) stl_writer.Write() dicom_dir = "path/to/dicom/files" output_stl = "path/to/output.stl" dicom_to_stl(dicom_dir, output_stl) ``` 请确保您已经安装了SimpleITK和vtk库。在代码中,您需要将`dicom_dir`替换为含DICOM文件的目录的路径,并将`output_stl`替换为要生成的STL文件的路径。 与之前的代码示例相比,这里使用SimpleITK库而不是pydicom库来读取DICOM文件。然后,我们使用SimpleITK的Marching Cubes算法提取表面,并将表面数据转换为vtk数据类型,最后使用vtkSTLWriter将表面写入STL文件。 请注意,阈值的设置可能需要根据您的DICOM文件的实际情况进行调整。 希望对您有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小峰呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值