OpenCV+SimpleITK 医学图像后处理的格式转换——pt文件转png

pt格式就是pytorch支持的一种格式,在网络的输出时,可以把非图像文件(不是模型)保存为pt格式 ,再讲信息读成numpy格式,再将某一切片或某一通道转化成图像。

比如说三通道的空间位移场,可视化:

'''
plt.show()旋转2D图像,必须在后面加下面的
矢状面 [::-1, ::-1]
横断面 .transpose((1, 0))
冠状面 .transpose((1, 0))[::-1, ::]
.transpose((1, 0))主对角线翻转(左上——右下为主对角线)
[::, ::]不变
[::-1, ::]上下翻转
[::, ::-1]左右翻转
[::-1, ::-1]左右再上下翻转
'''
import SimpleITK as sitk
import cv2
import os
import torch
import numpy as np
def pt2jpg(save_dir, mhaPath, wc=40, ws=300):
    # 使用SimpleITK读取数据,并使用GetArrayFromImage()函数获得图像信息
    img_data = torch.load(mhaPath)
    img_data = img_data[0]
    print(img_data.shape, type(img_data))
    channel = img_data.shape[1]#0是冠状面,1是横断面,2是矢状面
    low = wc - ws / 2
    high = wc + ws / 2
    all_img = []
    # 将医疗图像中的取值范围设置在(wc - ws / 2, wc + ws / 2)之间
    # 然后归一化0-255之间并保存
    for s in range(channel):
        slicer = img_data[:, s, :]#1是横断面
        slicer = np.transpose(slicer, [1, 0, 2])
        slicer = slicer[::-1, ::]
        #slicer[slicer < low] = low
        #slicer[slicer > high] = high
        img = cv2.normalize(slicer, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
        cv2.imwrite(os.path.join(save_dir, str(s) + '.png'), img)
    return all_img

suanfa = 'TM_OLEB_DE_NJ_e-9'

gz_path = 'D:/project/Results/brain/' + suanfa + '/3flow.pt'#原始nii.gz文件
save_dir = 'D:/project/Results/png/' + suanfa + '_flow/'#保存图片序列路径

if not os.path.exists(save_dir):
    os.makedirs(save_dir)

new_img_nc = pt2jpg(save_dir, gz_path)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值