.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 中的列表解析和生成表达式
Mar 10 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python3 pygame实现接小球游戏
May 14 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
python爬虫之遍历单个域名
Nov 20 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
基于python实现操作git过程代码解析
Jul 27 Python
Django+Django-Celery+Celery的整合实战
Jan 20 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
javascript知识点收藏
2007/02/22 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
Python实现端口复用实例代码
2014/07/03 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
python实现求最长回文子串长度
2018/01/22 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python对文件的操作方法汇总
2020/02/28 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
党委书记个人对照检查材料
2014/09/15 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
陕西导游词
2015/02/04 职场文书
合理化建议书
2015/02/04 职场文书
大连星海广场导游词
2015/02/10 职场文书
销售辞职信范文
2015/03/02 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
离职信范文
2015/06/23 职场文书
校园安全教育心得体会
2016/01/15 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
Python re.sub 反向引用的实现
2021/07/07 Python