.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 相关文章推荐
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python删除文本中行数标签的方法
May 31 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
python实现简单图片物体标注工具
Mar 18 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
python通过链接抓取网站详解
Nov 20 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
python之django路由和视图案例教程
Jul 26 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 str_pad 函数使用详解
2009/01/13 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
Yii中表单用法实例详解
2016/01/05 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
DOM相关内容速查手册
2007/02/07 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
分享Python文本生成二维码实例
2016/01/06 Python
Python使用爬虫猜密码
2016/02/19 Python
python使用thrift教程的方法示例
2019/03/21 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
五年后的职业生涯规划
2014/03/04 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers