医学图像分割系统之算法调用21-12-08

选择文件->本地(提前把jpg放到本地,且放几张到前端)/服务器(不知道能不能导通)选择一张图片->一键分割->将图片前缀传给算法调用算法(后端把得到的预测nii切片成jpg

私下将所有的img原图数据集(可先准备一个原图)切片成jpg作为准备(已准备),提前就准备好。如果其他人使用,首先应自己准备一张jpg图片(所以切片功能可作为副页面)。
加载一张jpg到前端,传参数名图片前缀到算法test,得到一个nii预测后,再切片转成jpg(既然挪到本地就不用在管服务器如何再保存到本地了)加载到前端。

一、nii转jpg及问题

参考:批量nii文件转换成jpg格式_llly333的博客-CSDN博客_nii文件转换为jpg

用jupyter notebook运行,方便修改运行。

环境:名为open-mmlab的envs环境

改一下nii文件路径以及存放jpg路径即可。

import nibabel as nib
import numpy as np
import imageio
import os

#读取nii文件
def read_niifile(niifile):  # 读取niifile文件
    img = nib.load(niifile)  # 下载niifile文件(其实是提取文件)
    img_fdata = img.get_fdata()  # 获取niifile数据
    img90 = np.rot90(img_fdata) #旋转90度
    #return img_fdata
    return img90

#保存jpg文件并输出
def save_fig(file):  # 保存为图片
    fdata = read_niifile(file)  # 调用上面的函数,获得数据
    (y, x, z) = fdata.shape  # 获得数据shape信息:(长,宽,维度-即切片数量)
    for k in range(z):
        silce = fdata[:, :, k]
        #silce = fdata[k, :, :]  # 三个位置表示三个不同角度的切片
        imageio.imwrite(os.path.join(output, '{}.jpg'.format(os.path.splitext(os.path.splitext(i)[0])[0]+'_'+str(k))), silce)
        # 将切片信息保存为jpg格式
        #i表示获取到的nii文件名(不含路径)
        #os.path.splitext(i)[0]表示去除文件名后缀
        #用两次splitext是因为图像原格式为.nii.gz,需要去两次后缀,如果是.nii形式的文件只用去除一次后缀即可
        #str(k)代表每层切片单独命名,避免重名,以_0,_1,...的形式命名

#读取文件
def findAllFile(base):
    for root, ds, fs in os.walk(base):
        for f in fs:
            yield f

#设置文件路径
# base =r'C:\Users\nii' # nii文件的路径
base = "/media/exdisk/yrzheng/YanyiXia/002DSeg/code/01project_STUnet_both/predictions/TU_Synapse224/img/"
output = "/media/exdisk/yrzheng/YanyiXia/002DSeg/code/01project_STUnet_both/predictions/TU_Synapse224/img_jpg/" # 保存png的路径
for i in findAllFile(base):
    dir = os.path.join(base,i)
    savepicdir = (os.path.join(output,i))
    #os.mkdir(savepicdir) #新建文件夹,重命名为nii文件名称,无需子文件夹,注释掉
    save_fig(dir)

 

 

【仍遇到一些特别常见的问题】

1、上来模块报错:没有nibanel模块

原因:此环境下并不是没有安装此模块,只是没有安装jupyter,所以用的别的用户的jupyter,所以在别人环境下无此模块,所以安装jypyter在此环境下。

 conda install jupyter 

2、pip安装不到当下的envs环境,显示其他的环境,需运行pip命令如下

python -m pip install nibabel

3、缺少imageio模块同上安装

4、imagefile错误原因:在要遍历处理的文件夹下不光只含有nii文件,还放了其他文件,就转移掉即可

二、改测试test.py代码

pycharm激活码suspended,选择start trial开始试用即可,且记得选择下面的两个复选框,否则还不行

整个切片送到网络,花将近4分

换成一个切片送到网络,也花3分03

注意,for循环,range开始和结束不能相同,不然步长为0,就不执行for语句

range只写一个数,是默认从0开始,到结束数-1

计算结果八类也慢循环8次,一类就要好几秒

一个切片1分29秒

D:\SystemSeg\Anaconda\envs\python3.8\python.exe D:/SystemSeg/01project_STUnet_both/TransUNet/test_slice.py
Namespace(Dataset=<class 'datasets.dataset_synapse.Synapse_dataset'>, base_lr=0.01, batch_size=24, dataset='Synapse', deterministic=1, exp='TU_Synapse224', img_size=224, ind=95, is_pretrain=True, is_savenii=True, list_dir='case0001', max_epochs=150, max_iterations=20000, n_skip=3, num_classes=9, seed=1234, test_save_dir='../predictions', vit_name='R50-ViT-B_16', vit_patches_size=16, volume_path='../data/Synapse/test_vol_h5', z_spacing=1)
TU_pretrain_R50-ViT-B_16_skip3_epo150_bs24_224
1 test iterations per epoch
1it [01:29, 89.54s/it]idx 0 case case0001 mean_dice 0.026404 mean_hd95 72.593257
1it [01:29, 89.67s/it]
Mean class 1 mean_dice 0.015071 mean_hd95 84.332377
Mean class 2 mean_dice 0.046360 mean_hd95 40.475918
Mean class 3 mean_dice 0.052767 mean_hd95 45.475268
Mean class 4 mean_dice 0.042436 mean_hd95 25.612497
Mean class 5 mean_dice 0.018292 mean_hd95 139.258752
Mean class 6 mean_dice 0.018888 mean_hd95 129.019378
Mean class 7 mean_dice 0.000000 mean_hd95 0.000000
Mean class 8 mean_dice 0.017422 mean_hd95 116.571866
Testing performance in best val model: mean_dice : 0.026404 mean_hd95 : 72.593257

Process finished with exit code 0

【改test.py代码】

输入整个测试集代码保存一份

test.py代码没问题,dataset_Synapse.py代码没问题,utils.py代码没问题

回想起来了,测试test.py代码中,加载模型时名字是固定的,而我为了区别之前跑的好多参数的模型,就把先得到的模型测试好得到结果后,再给改了命名,下次用哪个改哪个即可

注:image,label标签中看不到数据很正常,前边切片没有

 到第10个image后边100行才有,而且console终端里面显示不完全所以显得全是零,遇到这种情况没事多往后面维度和后面的行里看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值