SimpleITK保存.nii.gz的文件

            print('img_path', img_path[0])
            img_img = load_itk(img_path[0])   # 正常读取,sitk.ReadImage(path)

            # img_img = nibabel.load(img_path[0]).get_data()
            img_array = sitk.GetArrayFromImage(img_img)  # [channel, height, width,]
            img_array_copy = sitk.GetArrayFromImage(img_img)
            channel, height, width = img_array.shape  # [channel, h, w]
            for j in range(channel):
                image = img_array[j]
                image = cv2.resize(image, (480, 480))  # resize成网络训练的h*w
       
                image_x = image
                image_x = np.expand_dims(image_x, axis=-1)
                image_x = np.expand_dims(image_x, axis=0)   # 这两个是添加成[b, h ,w ,c]的维度
                feed_dict = {
                    image_placeholder:image_x,
                    training_flag:False,
                }
                result, idx_map = sess.run([logits, seg_image], feed_dict=feed_dict)
				# idx_map是输出的预测图[1, h, w] --上面为分类好的类
以下是几种将DICOM文件转换为.nii.gz文件的代码示例: ### 使用Python自定义处理转换 ```python import pydicom import nibabel as nib import numpy as np import os def dcm2nii_custom(dcm_dir, save_path): # 读取所有DICOM文件并按位置排序 dicoms = [pydicom.dcmread(os.path.join(dcm_dir, f)) for f in os.listdir(dcm_dir) if f.endswith('.dcm')] dicoms.sort(key=lambda x: float(x.ImagePositionPatient[2])) # 提取像素数据并重建3D数组 pixel_data = np.stack([d.pixel_array for d in dicoms], axis=-1) affine = np.eye(4) # 需根据实际DICOM头信息调整仿射矩阵 # 保存为NIfTI nii_img = nib.Nifti1Image(pixel_data, affine) nib.save(nii_img, os.path.join(save_path, "custom_output.nii.gz")) ``` 此代码通过`pydicom`库读取DICOM文件,按位置排序后提取像素数据,使用`nibabel`库将其保存.nii.gz文件。需要注意的是,仿射矩阵`affine`需根据实际DICOM头信息调整 [^3]。 ### 使用SimpleITK批量转换 ```python import SimpleITK as sitk import os Path = '/home/deeplearning/PCA/' # DICOM存放的文件夹 for i in range(101): # 文件个数,这里假设是100个 folderPath = os.path.join(Path + str(i + 1)) for folder in os.listdir(folderPath): imagePath = os.path.join(folderPath, folder) # dicom图片所在文件夹 reader = sitk.ImageSeriesReader() dicom_names = reader.GetGDCMSeriesFileNames(imagePath) reader.SetFileNames(dicom_names) image = reader.Execute() # 获取到文件 sitk.WriteImage(image, folderPath + folder + '_image.nii.gz') print("完成") ``` 该代码使用`SimpleITK`库进行批量转换,遍历指定文件夹下的所有DICOM文件序列,将其转换为.nii.gz文件 [^4]。 ### 安装所需库 在运行上述代码前,需要安装相应的库,可以使用以下命令: ```bash # SimpleITK pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple SimpleITK # nibabel pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple nibabel # opencv-python pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python # numpy pip install numpy ``` 这些库的安装命令可确保代码正常运行 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值