.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 Tkinter简单布局实例教程
Sep 03 Python
Python字符串处理函数简明总结
Apr 13 Python
详解Python的Django框架中的templates设置
May 11 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
获取python文件扩展名和文件名方法
Feb 02 Python
django缓存配置的几种方法详解
Jul 16 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
python删除csv文件的行列
Apr 06 Python
python批量创建变量并赋值操作
Jun 03 Python
python基础之错误和异常处理
Oct 24 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
PHP脚本的10个技巧(3)
2006/10/09 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
php表单处理操作
2017/11/16 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
jQuery 位置插件
2008/12/25 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
js抽奖转盘实现方法分析
2020/05/16 Javascript
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
python实现图像全景拼接
2020/03/27 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
感恩寄语大全
2014/04/11 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers