最近在做医学图像相关的实践,数据集图像是dicom格式的,标注是nrrd格式的图像.为了方便后期的模型搭建和训练转一下格式.python读取nrrd格式的图像需要用到pynrrd库,使用pip就可以安装:

pip install pynrrd

核心代码:

import numpy as np
import nrrd
import os
import cv2

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出现了形状和itk-snap显示不一样,所以对数组做一下转置,就可以得到正确的图像了.
转置代码如下:

def rotation(path):
    image = cv2.imread(path)
    image = cv2.transpose(image)
    # image = cv2.flip(image,1)
    cv2.imwrite(path,image)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐