Python对Dicom图像进行处理,离不开pydicom,opencv-python,matplotlib,numpy四个代码库,安装完成这四个代码库后,

可以读取Dicom图像,并对图像进行处理,显式处理后的结果,下面就举例说明:

import cv2
import numpy
import dicom
from matplotlib import pyplot as plt# 读取单张Dicom图像
dcm = dicom.read_file("../Data/vhm.420.dcm")
dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept# 获取图像中的像素数据
slices = []
slices.append(dcm)# 复制Dicom图像中的像素数据
img = slices[ int(len(slices)/2) ].image.copy()# 对图像进行阈值分割
ret,img = cv2.threshold(img, 90,3071, cv2.THRESH_BINARY)
img = numpy.uint8(img)# 提取分割结果中的轮廓,并填充孔洞
im2, contours, _ = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
mask = numpy.zeros(img.shape, numpy.uint8)
for contour in contours:cv2.fillPoly(mask, [contour], 255)
img[(mask > 0)] = 255# 对分割结果进行形态学的开操作
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2,2))
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# 根据分割mask获取分割结果的像素数据
img2 = slices[ int(len(slices)/2) ].image.copy()
img2[(img == 0)] = -2000# 显式原始数据,mask和分割结果
plt.figure(figsize=(12, 12))
plt.subplot(131)
plt.imshow(slices[int(len(slices) / 2)].image, 'gray')
plt.title('Original')
plt.subplot(132)
plt.imshow(img, 'gray')
plt.title('Mask')
plt.subplot(133)
plt.imshow(img2, 'gray')
plt.title('Result')
plt.show()

运行后的结果:

本例子以单张Dicom图像为例,分割图像中的骨骼信息,也可以同时读取多张Dicom图像,分割其他组织器官。

转载于:https://www.cnblogs.com/xuhui24/p/7091937.html

Python对DICOM图像进行阈值分割相关推荐

  1. 7.2 Python图像处理之图像分割-单阈值分割

    7.2 Python图像处理之图像分割-单阈值分割 文章目录 7.2 Python图像处理之图像分割-单阈值分割 1 算法原理 2 代码 3 效果 1 算法原理 单阈值分割算法原理: 单阈值分割是指将 ...

  2. 图像的阈值分割(Optimum Thresholding)

    摘    要:本实验主要实现最优阈值.图像分割就是把图像中具有特殊涵义的不同区域分开来,这些区域是互不相交的,每个区域都满足特定区域的一致性.图像分割是图像处理中的重要问题,也是计算机视觉研究中的一个 ...

  3. 红外目标图像中阈值分割方法的比较与研究

    红外目标图像中阈值分割方法的比较与研究   摘要:本文主要以红外图像目标检测技术为背景,在图像阈值分割中以最大熵准则及遗传算法为基础,研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值. ...

  4. python+OpenCV图像处理(五)图像的阈值分割

    图像的阈值处理 一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群.这是研究灰度变换 ...

  5. c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】...

    " 前言:安利Python来开发OpenCV的原因其实细心的小伙伴早在?[视觉与图像]Python+OpenCV教程入门篇就找到了想要的答案.(点蓝字即可打开) " 今天周五了! ...

  6. matlab中图像的阈值分割,基于MATLAB的图像阈值分割技术汇总

    数字图像处理课程论文 基于MATLAB的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB的分析.通过双峰法,迭 代法以及OUTS法三种算法来实现图像阈值分割,并且就这三种算法做了 ...

  7. 图像的阈值分割(迭代法选择阈值)

    迭代法阈值选择算法是对双峰法的改进,他首先选择一个近似的阈值T,将图像分割成两个部分,R1和R2,计算出区域R1和R2的均值u1和u2,再选择新的 阈值T=(u1+u2)/2; 重复上面的过程,知道u ...

  8. C++ opencv基于OTSU图像多阈值分割

    vector<double> sub(vector<int> A, vector<double> B) //减法 {vector<double> C;C ...

  9. 图像阈值分割:最大熵法

    图像最大熵阈值分割的原理:使选择的阈值分割图像目标区域.背景区域两部分灰度统计的信息量为最大. 具体描述: 1. 根据信息熵定义,计算原始图像的信息熵H0,选择最大.最小灰度灰度的均值为初始阈值T0: ...

最新文章

  1. 原码、补码、反码、1的补码
  2. Unity3D 游戏引擎之平面小球重力感应详解【转】
  3. hibernate mysql分页_求struts+hibernate实现mysql分页的详细代码
  4. 按值传递时 php必须复制值,PHP笔试题汇总
  5. php 转义取消,php如何取消转义
  6. unity3d常用组件及分析
  7. win7 mysql php apache myadmin_windows下Apache+mysql+php+phpMyAdmin的安装及配置 | 学步园
  8. Lecture 9 Random built Binary Search Trees BSTs
  9. Android笔记进程优先级
  10. 一元多项式的相加(单链表的应用)
  11. MFC中新建类在classview中没有显示问题
  12. 大家马致远是哪个朝代的,马致远作品赏析
  13. python为什么叫爬虫-Python为什么叫爬虫
  14. 课程《设计模式之美》笔记之关于java四大特性
  15. 如何利用caffe自带的工具包绘制accuracy/loss曲线
  16. 可以删除电脑文件的c语言程序,win7c盘哪些文件可以删除?其删除方法介绍
  17. 博客实现浏览量统计次数
  18. 溴PEG溴,Br-PEG-Br
  19. PhoenixFD 液体
  20. C/C++——vector的基本操作总结

热门文章

  1. c# 对各数据库、数据集链接字符串
  2. PHP如何防止远程提交,PHP如何防止远程提交
  3. java解析c的结构体_解析C语言中结构体struct的对齐问题
  4. python 百分比输出_获取Linux系统负荷百分比的python脚本
  5. nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
  6. 帷幕的帷是什么意思_公务员最低服务年限是什么意思,被录用后辞职,还能考公务员吗...
  7. webpack 4 入门教程一
  8. ksd文件怎么导入存档_DAY5-step5 Python 示例说明 ZIP 压缩文件
  9. matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真
  10. 用有穷状态自动机描述计算机网络的传输层协议,计算机网络基椽—第八章(传输层)(全).ppt...