资源简介

使用python语言,实现CT图像的肺实质分割,提取肺实质模板。

资源截图

代码片段和文件信息

import numpy as np
from glob import glob
import os
import SimpleITK as sitk
from skimage.morphology import disk binary_erosion binary_closing
from skimage.measure import labelregionprops
from skimage.filters import roberts
from skimage.segmentation import clear_border
from scipy import ndimage as ndi



def get_filename(file_list case):
    for f in file_list:
        if case in f:
            return(f)


            
def segment_lung(scr_path output_lung_path):
#对CT数据集进行肺实质分割
    file_list=glob(scr_path+“*“)
    for img_file in file_list:
        file_name = str(img_file).split(“/“)[-1]
        print (“on image“ img_file)
        # load the data once
        reader = sitk.ImageSeriesReader()
        dicom_names = reader.GetGDCMSeriesFileNames(img_file)
        reader.SetFileNames(dicom_names)
        image = reader.Execute()
        imgs_array = sitk.GetArrayFromImage(image) # z y x

        
        final_lungs = np.ndarray([imgs_array.shape[0]imgs_array.shape[1]imgs_array.shape[2]]dtype=np.float32)
#        final_lungmasks = np.ndarray([imgs_array.shape[0]imgs_array.shape[1]imgs_array.shape[2]]dtype=np.float32)
        for i in range(len(imgs_array)):
            img = imgs_array[i]
            binary = img < -500  #Convert into a binary image.
            cleared = clear_border(binary)  #Remove the blobs connected to the border of the image.
            label_image = label(cleared)  #Label the image.
            areas = [r.area for r in regionprops(label_image)]  #Keep the labels with 2 largest areas.
            areas.sort()
            if len(

评论

共有 条评论