医学图像的转化(jpeg转png,png转mhd,mha转png)

医学图像的分析可以大大减轻医疗人员的负担,智能辅助医生识别医学图像中的病变或异常是现代医学发展的方向,
随着深度学习火爆,越来越多的人将目光投向深度学习,希望可以通过深度学习的方法来做图像分割等之类的问题。
做金标准是深度学习的第一步,本文讲的是最基本的东西,怎样将一幅一幅的二维图像转化为三维数据,并画金标准保存label。
个人见识浅短,有错欢迎大家指出!

下面我就按我的思路简单的介绍一下:
第一步:将jpeg转化为png
from PIL import Image
import numpy as np
import os
import glob

img_path = glob.glob(r"img/*.jpeg")#此处img是我存放jpeg图片的文件夹
print(len(img_path))
save_path = 'savepic/'#savepic是保存png图片的文件夹

for index in range(len(img_path)):
    img = Image.open(img_path[index])
    img_name = os.path.split(img_path[index])[1]
    img_name = os.path.splitext(img_name)[0]
    img.save(save_path+str(index+1)+'.png')
    
    print(img_path[index])

第二步,将png转化为mhd文件,事先要先安装一下SimpleITK库,当然也别忘了将png图像编号,方便后面使用。python版本用的是python3.6, 直接在pip install SimpleITK就好,相当简单:另外,这部分是参考https://blog.youkuaiyun.com/weixin_43061687/article/details/82051674
依据我自己的图片做了适当修改:

import SimpleITK as sitk
import cv2
import numpy as np
import os
import glob

img = []
img1 = cv2.imread('1.png',0)
img1 = np.array(img1)
img.append(img1)

width = img1.shape[1]
height = img1.shape[0]

img_path = glob.glob(r'512_496_482/*.png')#512_496_482是存放png图片的地址,有很多张二维图片
chanel = len(img_path)

img_resize = np.zeros([chanel,height,width],dtype=np.uint8)

for i in range(chanel):
    print(i)
    img = cv2.imread(img_path[i],0)
    img_resize[i,(height- img1.shape[0]) // 2:(height - img1.shape[0]) // 2 + img1.shape[0],
    (width - img1.shape[1]) // 2:(width - img1.shape[1]) // 2 + img1.shape[1]] = img

img_resize=np.reshape(img_resize,[chanel,height, width])
mhd_data = sitk.GetImageFromArray(img_resize)
sitk.WriteImage(mhd_data, "1.mhd")

然后就将mhd文件拖到ITK snap中画金标准,保存金标准时我选择的是保存为mha文件。
最后一步,将mha转化为png,用于训练。

import cv2
import SimpleITK as sitk
import numpy as np

image = sitk.ReadImage('label.mha')
img_data = sitk.GetArrayFromImage(image) 
height = img_data.shape[1]
weight = img_data.shape[2]
channel = img_data.shape[0]
savepath = 'imgtest'

for i in range(200):
    img = np.zeros((height,weight), dtype=np.uint8)
    img = img_data[i,:,:]*255
    img = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
    
    cv2.imwrite(savepath+'/'+str(i+1)+'.png',img)
    
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值