.dcm格式文件软件读取及python处理详解


Posted in Python onJanuary 16, 2020

要处理一些.DCM格式的焊接缺陷图像,需要读取和显示.dcm格式的图像。通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件。

若要查看dcm格式文件,可下Echo viewer 进行查看。

若用过pycharm进行处理,可选用如下的代码:

# -*-coding:utf-8-*-
import cv2
import numpy
import dicom
from matplotlib import pyplot as plt

dcm = dicom.read_file("dcm")
dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept

slices = []
slices.append(dcm)
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)

img2 = slices[int(len(slices) / 2)].image.copy()
img2[(img == 0)] = -2000

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()

也可用如下代码:

import pydicom
import os
import numpy
from matplotlib import pyplot, cm
# 用lstFilesDCM作为存放DICOM files的列表
PathDicom = "dicom/2" #与python文件同一个目录下的文件夹
lstFilesDCM = []
for dirName,subdirList,fileList in os.walk(PathDicom):
  for filename in fileList:
    if ".dcm" in filename.lower(): #判断文件是否为dicom文件
      print(filename)
      lstFilesDCM.append(os.path.join(dirName,filename)) # 加入到列表中
## 将第一张图片作为参考图
RefDs = pydicom.read_file(lstFilesDCM[0])  #读取第一张dicom图片
# 建立三维数组
ConstPixelDims = (int(RefDs.Rows),int(RefDs.Columns),len(lstFilesDCM)) # 得到spacing值 (mm为单位)
ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness))
# 三维数据
x = numpy.arange(0.0, (ConstPixelDims[0]+1)*ConstPixelSpacing[0], ConstPixelSpacing[0]) # 0到(第一个维数加一*像素间的间隔),步长为constpixelSpacing
y = numpy.arange(0.0, (ConstPixelDims[1]+1)*ConstPixelSpacing[1], ConstPixelSpacing[1]) #
z = numpy.arange(0.0, (ConstPixelDims[2]+1)*ConstPixelSpacing[2], ConstPixelSpacing[2]) #
ArrayDicom = numpy.zeros(ConstPixelDims, dtype=RefDs.pixel_array.dtype)
for filenameDCM in lstFilesDCM:
  ds = pydicom.read_file(filenameDCM)
  ArrayDicom[:, :, lstFilesDCM.index(filenameDCM)] = ds.pixel_array # 轴状面显示
  pyplot.figure(dpi=300)
  pyplot.axes().set_aspect('equal', 'datalim')
  pyplot.set_cmap(pyplot.gray())
  pyplot.pcolormesh(x, y, numpy.flipud(ArrayDicom[:, :, 2])) # 第三个维度表示现在展示的是第几层
  pyplot.show()

这两个代码都是可以进行读取的。但是不知道为什么在焊接检测中的dcm图像却无法进行读取。

以上这篇.dcm格式文件软件读取及python处理详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的生成器和yield详细介绍
Jan 09 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
python两个_多个字典合并相加的实例代码
Dec 26 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python如何急速下载第三方库详解
Nov 02 Python
用python解压分析jar包实例
Jan 16 #Python
Python3 实现爬取网站下所有URL方式
Jan 16 #Python
python3爬取torrent种子链接实例
Jan 16 #Python
Python 实现自动获取种子磁力链接方式
Jan 16 #Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 #Python
Python简单实现区域生长方式
Jan 16 #Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 #Python
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
javascript的BOM汇总
2015/07/16 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Python构造函数及解构函数介绍
2015/02/26 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python读取网页内容的方法
2015/07/30 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2014年接待工作总结
2014/11/26 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python