医学图像处理(一)使用U-Net进行MRI的肝脏分割_chaos数据集

本文介绍了如何使用Python进行医学图像处理,包括将训练集划分为训练和测试集,提取肝脏部分,将dicom转换为png,使用Augmentor进行数据增强,构建U-Net网络模型,并自定义数据集。同时,讨论了GPU优化和知识体系的重要性。
摘要由CSDN通过智能技术生成
            i += 1
        else:
            patient_dir = os.path.join(root, sub_dir)
            ground_paths, inphase_paths = collect_T1_name(patient_dir)
            for num in range(len(ground_paths)):
                dst_groundpath = os.path.join(dst_TestGround, "T1\_Patient%s\_No%d.png" % (sub_dir, num))
                shutil.copy(ground_paths[num], dst_groundpath)

            for num in range(len(inphase_paths)):
                dst_inphasepath = os.path.join(dst_TestData, "T1\_Patient%s\_No%d.dcm" % (sub_dir, num))
                shutil.copy(inphase_paths[num], dst_inphasepath)

            i += 1

该段程序的作用就是将训练集中T1/InPhase 的20个病例划分成16个训练集,4个测试集,并重新存储到自定义的文件夹下. 对于图像文件也进行了命名规范,对第i个病人的第j张slice,命名规则为**T1\_Patienti\_Noj.dcm**


## 分离出肝脏


GroundTruth的图像是多器官的,根据灰度范围进行判断。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200806143226468.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MDAzODc2,size_16,color_FFFFFF,t_70)  
 从自带的config文件中可以查看灰度范围:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200806143343610.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MDAzODc2,size_16,color_FFFFFF,t_70)  
 因为GroundTruth是png格式,我们使用OpenCV做一下简单的阈值处理就可以提取肝脏部分了.



“”"
@ Date: 2020/6/29
@ Author: Xiao Zhuo
@ Brief: Extract liver part from GroundTruth and set white color
@ Filename: extract_only_liver_2.py
“”"

-*- coding: utf-8 -*-

import os
import cv2

def makedir(dir):
if not os.path.exists(dir):
os.mkdir(dir)

def extract_liver(dataset_dir):
src_names = os.listdir(dataset_dir)
if src_names[0] == ‘Liver’:
src_names.remove(‘Liver’)
src_count = len(src_names)
dst_dir = os.path.join(dataset_dir, “Liver”)
makedir(dst_dir)
for num in range(src_count):
src_path = os.path.join(dataset_dir, src_names[num])
src = cv2.imread(src_path) # OpenCV读进来要指定是灰度图像,不然默认三通道。这里之前忘记指定了
# flag = 0
flag = 1
for i in range(src.shape[0]):
for j in range(src.shape[1]):
for k in range(src.shape[2]):
if 55 <= src.item(i, j, k) <= 70:
flag = 1 # 表示有肝脏
src.itemset((i, j, k), 255)
else:
src.itemset((i, j, k), 0)
if flag == 1:
dst_path = os.path.join(dst_dir, src_names[num])
cv2.imwrite(dst_path, src)

if name == ‘__main__’:
train_dir = os.path.join(“data”, “train”, “Ground”)
test_dir = os.path.join(“data”, “val”, “Ground”)
extract_liver(train_dir)
extract_liver(test_dir)


提取后的肝脏二值化掩膜如图所示:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200806143648297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MDAzODc2,size_16,color_FFFFF
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值