【Python影像组学】医疗图像格式转换—nrrd格式转为png格式

该博客介绍了一个Python脚本,用于将.nrrd格式的图像数据转换为.png格式,并进行旋转操作。脚本涉及nrrd、numpy、opencv等库,适用于医学图像处理,特别是对于需要预处理的mask图像,转换后与3Dslicer显示一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


首先需要导入必要的库,如果没有需要安装一下

安装方法:(可以直接在控制台输入以下命令进行安装)
pip install numpy
pip install pynrrd
pip install opencv-python
pip install opencv-contrib-python

import numpy as np
import nrrd
import os
import cv2

# nrrd_filename:读入的nrrd文件路径
# save_path:转换后的png保存路径
# patient_id:病人编号,如果没有将这个参数删去
# 如果删去patient_id参数,则函数中也要删掉这个参数
def nrrd_to_png(nrrd_filename, save_path, patient_id):
    nrrd_filename = nrrd_filename
    nrrd_data, nrrd_options = nrrd.read(nrrd_filename)
    h, w, slides_num = nrrd_data.shape
    for i in range(slides_num):
        img = nrrd_data[:, :, slides_num - i - 1] * 255
        # img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        cv2.imwrite(save_path + '/' + patient_id + '_' + str(i + 1) + '.png', img)

通过nrrd.read操作读取图像,返回值中的nrrd_data是一个numpy数组,形状是[h,w,slide_num],然后使用opencv保存一下就行了。保存以后mask出现了形状和3dslicer显示不一样,所以对数组做一下转置,就可以得到正确的图像了。

# path:上边图像的保存路径
def rotation(path):
    image = cv2.imread(path)
    image = cv2.transpose(image)
    # image = cv2.flip(image,1)
    cv2.imwrite(path, image)

具体调用过程如下:

nrrd_filename = "1_label.nrrd"  # nrrd 文件的保存路径
save_path = "D:/"  # 图片数据的保存文件夹
nrrd_to_png(nrrd_filename, save_path, "1")
rotation(save_path + "/1.png")  # 这个是最终保存的图像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值