开发环境 jupyter notebook/pycharm

# 肺有效区域提取
import SimpleITK
from scipy import ndimage as ndi
from skimage.segmentation import clear_border
from skimage.measure import label, regionprops
from skimage.morphology import disk, dilation, binary_erosion, binary_closing
from skimage.filters import roberts, sobel
import cv2def get_pixels_hu_by_simpleitk(dicom_dir):'''读取某文件夹内的所有dicom文件,并提取像素值(-4000 ~ 4000):param src_dir: dicom文件夹路径:return: image array'''reader = SimpleITK.ImageSeriesReader()dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir)reader.SetFileNames(dicom_names)image = reader.Execute()img_array = SimpleITK.GetArrayFromImage(image)img_array[img_array == -2000] = 0return img_arraydef normalize_hu(image):'''将输入图像的像素值(-4000 ~ 4000)归一化到0~1之间:param image 输入的图像数组:return: 归一化处理后的图像数组'''MIN_BOUND = -1000.0MAX_BOUND = 400.0image = (image - MIN_BOUND) / (MAX_BOUND - MIN_BOUND)image[image > 1] = 1.image[image < 0] = 0.return imagedef get_segmented_lungs(im):'''对输入的图像进行肺部区域分割,提取有效的肺部区域,用于模型训练:param 输入的图像:return: 返回分割结果'''binary = im < -400                      # Step 1: 转换为二值化图像cleared = clear_border(binary)          # Step 2: 清除图像边界的小块区域label_image = label(cleared)            # Step 3: 分割图像areas = [r.area for r in regionprops(label_image)]  # Step 4: 保留2个最大的连通区域areas.sort()if len(areas) > 2:for region in regionprops(label_image):if region.area < areas[-2]:for coordinates in region.coords:label_image[coordinates[0], coordinates[1]] = 0binary = label_image > 0selem = disk(2)                         # Step 5: 图像腐蚀操作,将结节与血管剥离binary = binary_erosion(binary, selem)selem = disk(10)                        # Step 6: 图像闭环操作,保留贴近肺壁的结节binary = binary_closing(binary, selem)edges = roberts(binary)                 # Step 7: 进一步将肺区残余小孔区域填充binary = ndi.binary_fill_holes(edges)get_high_vals = binary == 0             # Step 8: 将二值化图像叠加到输入图像上im[get_high_vals] = -2000print('lung segmentation complete.')return im, binaryif __name__ == '__main__':dicom_dir = './data/dicom_demo/'# 提取dicom文件中的像素值image = get_pixels_hu_by_simpleitk(dicom_dir)      #图片像素提取im, binary = get_segmented_lungs(image[133])       #肺部区域分割org_img = normalize_hu(image[133])                 #【0,1】归一化cv2.imwrite('./temp_dir/chapter3_segmentation_im.png', org_img*255)cv2.imwrite('./temp_dir/chapter3_segmentation_binary.png', binary*255)

基于深度学习的CT图像肺结节自动检测技术三—肺有效区域提取相关推荐

  1. 基于深度学习的CT图像肺结节自动检测(系列放在一起)

    PS 为了方便查找,将SongpingWang的肺结节系列博客放在一起.(刚好公司要我开始接手这一块)感谢大神 具体链接: 0 :https://blog.csdn.net/wsp_113888611 ...

  2. 目标检测YOLO实战应用案例100讲-基于深度学习的航拍图像YOLOv5目标检测研究及应用(论文篇)

    目录 基于深度学习的航拍图像目标检测研究 航拍图像目标检测 评价指标与数据集

  3. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

  4. 高精度肺结节自动检测方案 | 算法解析

    随着经济的发展,以及人口老龄化.环境污染的加剧,肺癌已经成为全球发病率和死亡率最高的癌症之一[1]. 肺癌没有明显的早期症状.虽然肺癌的早期切除可以有效提高患者的生存率,但多数自然就诊的患者发现肺癌时 ...

  5. 基于深度学习的自然图像和医学图像分割:网络结构设计

    来源:知乎.极市平台.深度学习爱好者作者丨李慕清@知乎 https://zhuanlan.zhihu.com/p/104854615 本文约5100字,建议阅读10分钟 本文首先介绍一些经典的语义分割 ...

  6. 基于深度学习的2D图像目标检测

    参见第一部分网址1,第二部分网址2 目前学术和工业界出现的目标检测算法分成3类:(参见一文读懂目标检测:R-CNN.Fast R-CNN.Faster R-CNN.YOLO.SSD) 1. 传统的目标 ...

  7. 基于深度学习的指针式仪表图像智能读数方法

    针对传统图像处理的仪表识别方法鲁棒性较差,难以满足复杂环境下的指针式仪表图像读数,而深度学习的方法通过样本的训练能够适应更多的复杂场景,越来越多的仪表读数解决方案更偏向于使用深度学习的方法.而现在的基 ...

  8. 无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现...

    参加 2018 AI开发者大会,请点击 ↑↑↑ 作者:申泽邦(Adam Shan),兰州大学在读硕士研究生,主要研究方向无人驾驶,深度学习:兰大未来计算研究院无人车团队负责人,自动驾驶全栈工程师. 近 ...

  9. 基于深度学习的高精地图的自动生成与标注

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章:Automatic Building and Labeling of HD Maps with ...

最新文章

  1. 技术 | Bengio终结Theano不是偶然,其性能早在Keras支持的四大框架中垫底
  2. php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
  3. 大工20春计算机文化基础在线测试2,大工20春《计算机文化基础》在线测试2
  4. 聚类算法:kmeans
  5. 容器技术Docker K8s 8 容器服务ACK Pro版集群
  6. Linux chmod 命令 设置权限
  7. 如何制作纯文字视频快闪视频
  8. 黑客专用文本编辑器Emacs中文手册
  9. MySQL感悟_Mysql学习感悟
  10. 贝叶斯算法-情感分类
  11. 蒸汽式粉条机发展和销售乱象
  12. 微信聊天记录没有备份可以恢复吗?吐血整理分享
  13. vim 安装YouCompleteMe 自动补全插件
  14. [2021绿城杯] [Misc] 流量分析 + cobaltstrike 流量解密
  15. 漳州市计算机报名时间,漳州市计算机操作员证怎么考要什么条件考试需要多久...
  16. Lua 错误之 attempt to index a function value
  17. 仅键盘洒水还不能证明联想笔记本安全品质
  18. 【OS笔记 20】经典同步问题——理发师睡觉问题(信号量解决方案)
  19. 【树莓派入门】从零开始在树莓派上运行YOLOV5项目实战教程
  20. 火狐浏览器 如何设置成 打开一个新的页面,原有的页面继续存在

热门文章

  1. TCGA数据库下载及全流程分析(更新中)
  2. 上篇博文的终端命令记录,以供查阅
  3. r语言rank降序_R语言速成之第一章 向量(编辑,排序,10个基本函数)
  4. windows下安装mindoc文档服务器
  5. ORBSLAM中单应矩阵求解
  6. 新婚一个月(大图,无码,内详)
  7. JQuery表格分页
  8. Moodle-3.1.2 (Ubuntu 16.04 )
  9. Python的数据分析中超参数调优方法:网格搜索
  10. 单精度浮点数 float、双精度浮点数 double