.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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
python中的多线程实例教程
Aug 27 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
简单了解什么是神经网络
Dec 23 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
点球小游戏python脚本
May 22 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
python 贪心算法的实现
Sep 18 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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 如何向 MySQL 发送数据
2006/10/09 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Python实现一个数组除以一个数的例子
2019/07/20 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
美国Max仓库:Max Warehouse
2020/05/31 全球购物
帮一个朋友写的求职信
2014/08/09 职场文书
班级团队活动方案
2014/08/14 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
2014年度工作总结报告
2014/12/15 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python