.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连接sql server乱码的解决方法
Jan 28 Python
python中as用法实例分析
Apr 30 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
pyshp创建shp点文件的方法
Dec 31 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python assert的用处示例详解
Apr 01 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
Python中的类与类型示例详解
Jul 10 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php以post形式发送xml的方法
2014/11/04 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python 时间处理datetime实例
2008/09/06 Python
Python格式化压缩后的JS文件的方法
2015/03/05 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python数据结构之翻转链表
2017/02/25 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
numpy返回array中元素的index方法
2018/06/27 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python实现网页录音效果
2020/10/26 Python
Python 求向量的余弦值操作
2021/03/04 Python
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
自荐信如何制作?
2014/02/21 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
营销经理工作检讨书
2014/11/03 职场文书
财政局长个人总结
2015/03/04 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python