代码实现:输入全部患者文件夹,自动把图像根据标签有无分类,保存为dcm,png两种格式。然后对有标签的数据进行再次处理,处理成Yolov5和UNet需要的数据。
代码运行:把患者文件夹放在patient_group文件夹中,run一下main.py文件,等待时间取决于患者数目,然后所有的结果都会在对应文件夹
现在医学图像处理的工作很多人在做,一些预处理的事情比较繁琐,但又没有太多实质性内容,所以我想生成一份普适性较强的MR图像预处理的代码,方便大家进行聚焦于模型结构的提升上,减少预处理时间。
这里先简单讲一下如何使用代码,要注意的规范,具体内容不展开。
代码在最上面,应该是免费的!!!!
一,数据格式规范
在把数据扔到代码之前,确保你的数据中每个患者是如下的格式:(否则你需要修改一下里面的函数)。
1.patient_group里面可以放多位患者,每一个患者是一个文件夹。
2.点进patient_group,应该有具体的数据文件(数据文件名称是检查日期,不过叫什么都没关系)和一个nii.gz文件(也可以部分没有nii.gz)没有的会被分类进无标签的文件夹,用作测试。
3.点进数据文件,就是各种MR的图像,选择你想要提取的那个文件夹(在第三部分会讲怎么修改)。我提取的是701015或601015(这两个对应T2W_TSE),这两个文件夹患者只会存在一个。
4.点进想要提取的数据文件夹,应该如下所示,全是dcm文件。
在修改好这些数据,确定格式符合就可以跑main.py代码
二,结果展示
每个文件夹的介绍如下图所示:
unlabeled_results,labeled_results,dcm_select_all三个文件夹如下:
label_process_results中的results_compare如下:
yolo_data中的bounding_image如下:
三,可能遇到的问题的解决方法
(大家要是遇到其他问题可以私信我或者评论,我来看看怎么修改代码,我第一次写,写完发现模块做的不是特别好,子函数也还没完全写完,可能整体没问题,但是模块模块之前存在bugbug负负得正的情况)
问题一
我需要的文件夹不是701015或者601015怎么办?
进入dcm_select.py文件,把里面的判断语句改成你需要的文件夹即可。
问题二
索引数组超出范围?
可能是由于特定的文件名称不匹配(因为重新分类文件用了原文件名的部分来重命名)以下划线截断,取最后一段字符作为新文件名称的部分,所以可能导致报错。
所以请至少保证患者的dcm文件名称有一个下划线,或者也可以修改代码,把文件名称修改一下。
在dcm_select.py中,把f_new_name中split_root部分删除(确保和原来名字无关),如果还有问题可以私信我
问题三
我只需要单独的Yolo或者UNet数据,希望代码快一点怎么办?
目前还没有编写单独的函数,有需求的话后续继续编写。